#include
int abstract(char s[],int frica[][2]) {
/**********Program**********/
/********** End **********/ }
void sort(int frica[][2],int n) {
/**********Program**********/
/********** End **********/ }
int main() {
char s[]=\ int frica[10][2],i,n; FILE *fp;
if((fp=fopen(\ {
printf(\ exit(0); }
n=abstract(s,frica); sort(frica,n); for(i=0;i printf(\ fprintf(fp,\ } printf(\ fprintf(fp,\ fclose(fp); getch(); return 0; } 答案:int i,k,sum; sum=0; for(k=i=0;s[i];i++) { if(isdigit(s[i])) { sum=sum*10+s[i]-'0'; if(s[i+1]=='/' || s[i+1]==' ') { frica[k/2][k%2]=sum; k++; sum=0; } } } return k/2; int i,j,t; for(i=0;i if(frica[j][0]*frica[j+1][1]>frica[j+1][0]*frica[j][1]) { t=frica[j][0];frica[j][0]=frica[j+1][0];frica[j+1][0]=t; t=frica[j][1];frica[j][1]=frica[j+1][1];frica[j+1][1]=t; } } 第3题 (30.0分) 题号:545 难度:中 第1章 /*------------------------------------------------------- 【程序设计】 --------------------------------------------------------- 主函数main()的char s[]中为测试数据,保存了形如 \字符 串。将字符串中类似\这样的子串视为一个学生的语文 和数学成绩,将其转换为整数59和63,其中59为语文成绩, 63为数学成绩。将这两个成绩分别保存在二维数组score的第 一列和第二列。并根据总成绩和语文成绩的大小,对score数 组进行降序排序。 编写函数: 1.编写函数int abstract(char s[],int score[][2]),将s 字符串中类似\这样的子串转换成两个整数,分别存放 在score数组第一列和第二列,函数返回这样的子串个数(即 学生的人数)。 2.编写函数void sort(int score[][2],int n),对score数 组中n个成绩进行降序排序,排序依据是:先按总成绩降序排 序,如总成绩相同,则再按语文成绩降序排序。 --------------------------------------------------------- 注意:请勿改动主函数main()中的任何语句。 ---------------------------------------------------------*/ #include int abstract(char s[],int score[][2]) { /**********Program**********/ /********** End **********/ } void sort(int score[][2],int n) { /**********Program**********/ /********** End **********/ } int main(){ char s[]=\ int score[10][2],i,n; FILE *fp; if((fp=fopen(\ { printf(\ exit(0); } n=abstract(s,score); sort(score,n); for(i=0;i printf(\ fprintf(fp,\ } printf(\ fprintf(fp,\ fclose(fp); return 0; } 答案:int i,k,sum; for(k=i=0;s[i];i++) { if(isdigit(s[i])) { sum=0; for(;isdigit(s[i]);i++) sum=sum*10+s[i]-'0'; if(s[i]==',') score[k][0]=sum; else score[k++][1]=sum; } } return k; int i,j,t; int s1,s2; for(i=0;i s1=score[j][0]+score[j][1]; s2=score[j+1][0]+score[j+1][1]; if(s1 t=score[j][0];score[j][0]=score[j+1][0];score[j+1][0]=t; t=score[j][1];score[j][1]=score[j+1][1];score[j+1][1]=t; }