2015高考C语言题 下载本文

}

第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 #include #include #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 #include #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; } }