}
第4题 (30.0分) 题号:546 难度:中 第1章 /*------------------------------------------------------- 【程序设计】
---------------------------------------------------------
主函数main()的char s[]中为测试数据,保存了形如 \字符串。将字符串 中类似\这样的子串视为一个等差数列的3个参数:首 项、公差、项数。将该子串转换成三个整数分别保存在二维 数组ser一行的前三列中,并根据这3个参数计算等差数列的和, 保存在ser数组的第四列。
例如:
子串\转换为13 2 4三个整数,和为64。 子串\转换为1 12 5三个整数,和为125。
编写函数:
1.编写函数int abstract(char s,int ser[][4]),将s字符 串中类似\这样的子串转换成三个整数,分别存放在 ser数组的第一、第二、第三列,函数返回这样的子串个数。 2.编写函数void sum(int ser[][4] , int n),计算ser数 组中n组等差数列的和,将其保存在ser数组各行第四列。 计算等差数列和的公式为:
项数*首项+项数*(项数-1)*公差/2。
--------------------------------------------------------- 注意:请勿改动主函数main()中的任何语句。
---------------------------------------------------------*/ #include
int abstract(char s[],int ser[][4]) {
/**********Program**********/
/********** End **********/ }
void sum(int ser[][4] , int n){
/**********Program**********/
/********** End **********/ }
int main() {
char s[]=\ int i,j,n,ser[10][4]; FILE *fp;
if((fp=fopen(\ {
printf(\ exit(0); }
n=abstract(s,ser); sum(ser,n); for(i=0;i printf(\ fprintf(fp,\ } printf(\ fprintf(fp,\ } fclose(fp); getch(); 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]==',') ser[k][0]=sum; else if(s[i]==';') ser[k][1]=sum; else ser[k++][2]=sum; } return k; int i; for(i=0;i ser[i][3]=ser[i][2]*ser[i][0]+ser[i][2]*(ser[i][2]-1)*ser[i][1]/2; } 第5题 (30.0分) 题号:547 难度:中 第1章 /*------------------------------------------------------- 【程序设计】 --------------------------------------------------------- 主函数main()中二维数组int num[6][3]为测试数据,num数 组各行第一、二列已经赋值为 {{4,12},{0,11},{6,-3},{12,7},{5,1},{13,9}}。 程序计算num数组各行第三列数据,并根据第三列数的大小 对num数组进行升序排序。 num数组各行第三列数等于下列a、b两个整数之和: a=该行第一列数+最小非负整数,使得a为3的倍数, 例如,num数组第一行第一列数为4,则最小非负整数为2; 第二行第一列数为0,则最小非负整数为0; 第五行第一列数为5,则最小非负整数为1; b=该行第二列数*该数所在行、列下标之和。 编写函数: 1)编写函数void cal(int num[][3],int n),根据上述计算 方法,计算num数组各行第三列数。 2)编写函数void sort(int num[][3],int n),根据num数组 第三列数据的大小,对num数组进行升序排序。 --------------------------------------------------------- 注意:请勿改动主函数main()中的任何语句。 ---------------------------------------------------------*/ #include void cal(int num[][3],int n) { /**********Program**********/ /********** End **********/ } void sort(int num[][3],int n) { /**********Program**********/ /********** End **********/ } int main() { int num[6][3]={{4,12},{0,11},{6,-3},{12,7},{5,1},{13,9}}; int i; FILE *fp; if((fp=fopen(\ { printf(\ exit(0); } cal(num,6); sort(num,6); for(i=0;i<6;i++){ printf(\ fprintf(fp,\ } fclose(fp); return 0; } 答案:int i,k; for(i=0;i if((k=num[i][0]%3)==0) num[i][2]=num[i][0]; else num[i][2]=num[i][0]+3-k; num[i][2]+=(i+1)*num[i][1]; } int i,j,t; for(i=0;i if(num[j][2]>num[j+1][2]) { t=num[j][0];num[j][0]=num[j+1][0];num[j+1][0]=t; t=num[j][1];num[j][1]=num[j+1][1];num[j+1][1]=t; t=num[j][2];num[j][2]=num[j+1][2];num[j+1][2]=t; } }