当前位置:首页 >> IT认证 >>

四川省23次机试试题及参考答案


四川省第二十三次等级考试二级 C 与 C++语言 (2005 年 10 月 16 日)

机试试卷 参考答案

23-1 套 参考答案:
一、程序调试题(文件名为 test1-1.c) (40 分) 磁盘上有一个名为 test1-1.c 的 C 程序文件,其功能是:输入一个字符串,将其中的每一个连续的数字 序列看作一个整数,将这些整数检索出来后依次放入一个 long int 型数组中。请改正程序中的错误,使程 序能得出正确的结果。 注意:不要增加或删除行,不要修改程序结构。 #include <stdio.h> #include <string.h> /* 改为: math.h */ main() { char str[100], *p=str, help[15]; static long int num[50]; int i=0, k=0, m, sign=0; printf("\ninput the string:"); scanf("%s", p); do { if(*p>=0 && *p<=9) /* 改为:*p>=’0’ && *p<=’9’ 或 *p>=48 && *p<=57 */ { sign=1; help[k++]=*p; } else if(sign=1) /* 改为:==*/ { int n=0; while(--k>=0) num[i]+=(help[k]-48)*((long int)pow(n++,10)); /* 改为:pow(10,n++) */ i++; k=0; sign=0; } else /* 改为:else; */ p++; }while(*(p-1)!='\0'); for(m=0; m<i; m++) printf("%d,", num[m]); /* 改为:%ld (即长整型格式输出)*/ } 评分标准:每改对一处得 6 分,结果正确得 4 分 二、编程题(程序文件取名为 test1-2.c) (60 分) 、编写程序( 程序文件名取为 test1-2.c ) (60 分) 请用函数调用方式编写程序,要求能实现: (1)在被调函数中求出 1 到 1000 之内能被 7 或 11 整除、但不能被 7 或 11 同时整除的所有整数,并 把它们放到数组 a 中。 (2)在主函数中将符合上述条件的整数个数和所有整数输出到屏幕以及文件 test1-2.dat 中。 (要求每 行输出 10 个数) 评分标准: 1.被调函数 fun 编写正确 3.函数调用正确

20 分 5分

2.文件打开和关闭正确 4.屏幕输出和文件输出正确

10 分 15 分

第 1 页 共 7 页

四川省第二十三次等级考试二级 C 与 C++语言 (2005 年 10 月 16 日)

机试试卷 参考答案

5.输出格式正确

5分

6.程序结构合理

5分

参考程序:
# include <stdio.h> # define M 1000 int fun(int *a) { int m,k=0; for(m=1;m<=M;m++) if( (m%7==0 && m%11!=0) || (m%7!=0 && m%11==0) ) a[k++]=m; return k; } main() { int a[M],n,k; FILE *fp; clrscr(); /*清屏函数*/ fp=fopen("test1-2.dat","w"); n=fun(a); printf("%d\n",n); fprintf(fp,"%d\n",n); for(k=0;k<n;k++) { printf("%5d",a[k]); fprintf(fp,"%5d",a[k]); if( (k+1)%10 == 0 ) { printf("\n"); fprintf(fp,"\n"); } } fclose(fp); }

23-2 套 参考答案:
一、程序调试题(文件名 test2-1.c)( 40 分 ) 磁盘上有一个名为 test2-1.c 的 C 程序文件,其功能是:求出数组中值最大的元素在数组中的下标,并 将最大值增添在数组的最后。如: 876 675 896 101 301 401 980 431 451 777 (原数组) 876 675 896 101 301 401 980 431 451 777 980 (增添后的数组) 请改正程序中的错误,使程序能得出正确的结果。 注意:不要增加或删除行,不要修改程序结构。 #include <stdio.h> #define N 80 void fun(int *s, int *t, int k) { int i,m; *k=0; m=*s; for(i=1;i<(*t-1);i++)

/* 改为 *k */

第 2 页 共 7 页

四川省第二十三次等级考试二级 C 与 C++语言 (2005 年 10 月 16 日)

机试试卷 参考答案

if(m<s+i) { m=*(s+i); k=i; } s[i+1]=m; *t++ ;

/* 改为 *(s+i) */ /* 改为 *k */

/* 改为 (*t)++ */

} main() { int a[N]={876,675,896,101,301,401,980,431,451,777}; int i, n=10, mi; fun(a[N], &n, &mi); /* 改为 a */ printf("\nThe index of max is:%d\n",mi); printf("The result:\n"); for(i=0;i<n;i++) printf("%4d", &a[i] ); /* 改为 a[i] */ } 评分标准:每改对一处得 6 分,结果正确得 4 分 二、编程题(程序文件取名为 test2-2.c) (60 分) 在三位整数(100 至 999)中寻找其中有两位数字相同的完全平方数,例如,144、676 等,它们既是 完全平方数,又有两位数字相同,将符合条件的整数依次从小到大存入数组 aa 中。要求: (1)编制函数 fine()实现寻找满足条件的完全平方数, 并将满足条件的完全平方数的个数通过函数 fine() 返回。 (2)在 main()函数中把符合要求的完全平方数及个数输出到屏幕上和文件 test2-2.dat 中。 评分标准: 1.被调函数 fun 编写正确 3.函数调用正确 5.输出格式正确

20 分 5分 5分

2.文件打开和关闭正确 4.屏幕输出和文件输出正确 6.程序结构合理

10 分 15 分 5分

参考程序:
# include <stdio.h> # define M 1000 int fun(int *a) { int m,k=0; for(m=1;m<=M;m++) if( (m%7==0 && m%11!=0) || (m%7!=0 && m%11==0) ) a[k++]=m; return k; } main() { int a[M],n,k; FILE *fp; clrscr(); /*清屏函数*/ fp=fopen("test1-2.dat","w"); n=fun(a); printf("%d\n",n); fprintf(fp,"%d\n",n);

第 3 页 共 7 页

四川省第二十三次等级考试二级 C 与 C++语言 (2005 年 10 月 16 日)

机试试卷 参考答案

for(k=0;k<n;k++) { printf("%5d",a[k]); fprintf(fp,"%5d",a[k]); if( (k+1)%10 == 0 ) { printf("\n"); fprintf(fp,"\n"); } } fclose(fp); }

23-3 套 参考答案:
一、程序调试题(文件名 test3-1.c)( 40 分 ) 磁盘上有一个名为 test3-1.c 的 C 程序文件,其功能是:实现将字符串中字母以外的其他字符去掉组成 新的字符串输出。运行结果为:abcdEEEa 请改正程序中的错误,使程序能得出正确的结果。 注意:不要增加或删除行,不要修改程序结构。 源程序如下: #include <stdio.h> #include <string.h> /* 改为 ctype.h */ void fun(char s) /* 改为 *s */ { int i,j; for(i=j=0;s[i];i++); /* 改为 去掉分号 ;*/ if(isalpha(s[i])) s[j] =s[i]; /* 改为 s[j++] */ s[i] ='\0'; /* 改为 s[j] */ } void main() { char str[80]="a*b$c(d!EEE !!a."; fun(str[80]); /* 改为 str */ printf("\n"); puts(str); } 评分标准:每改对一处得 6 分,结果正确得 4 分 二、编程题(程序文件取名为 test3-2.c) (60 分) 编写 main 函数,从键盘输入任意 5 个 4 位正整数存入数组 aa 中,调用函数 sort(),函数 sort()的功能 是: 按每个数后三位的大小进行升序排列,并将结果依次存入数组 bb 中,如果后三位的数组相等,则按 4 位正整数的大小进行降序排列。 例如:输入:6012,5099,9012,7025,8088,则输出结果为:9012,6012,7025,8088,5099。 最后,在 main()函数中把排序后的结果输出到文件 test3-2.dat 中。 注意:程序中不得使用全局变量。 评分标准:

第 4 页 共 7 页

四川省第二十三次等级考试二级 C 与 C++语言 (2005 年 10 月 16 日)

机试试卷 参考答案

1.文件定义、打开、关闭正确 3.函数调用正确 5.结果正确

10 分 5分 10 分

2.数据讲稿和文件写入正确 4.函数定义和参数使用正确 6.程序结构合理

10 分 20 分 5分

参考程序:
#include <stdio.h> void sort(int aa[],int bb[]) { int i,j,data; for(i=0;i<5;i++) for(j=i+1;j<5;j++) { if(aa[i]%1000>aa[j]%1000) { data=aa[i]; aa[i]=aa[j]; aa[j]=data; } else if(aa[i]%1000==aa[j]%1000) if(aa[i]<aa[j]) { data=aa[i]; aa[i]=aa[j]; aa[j]=data; } } for(i=0;i<5;i++) bb[i]=aa[i]; } void main() { int aa[5],bb[5]; FILE *out; int i; printf("\nplease input 5 numbers:"); for(i=0;i<5;i++) scanf("%d",&aa[i]); sort(aa,bb); out=fopen("test3-2.dat","w"); printf("\n"); for(i=0;i<5;i++) { printf("%5d",bb[i]); fprintf(out,"%5d",bb[i]); } fclose(out); }

23-4 套 参考答案:
一、程序调试题(文件名 test4-1.c)( 40 分 ) 磁盘上有一个名为 test4-1.c 的 C 程序文件,其功能是:从 s 所指向的串中,找出包含有 t 所指字符串 的个数。例如:s 所指向的串为 abcdabfab,t 所指字符串为 ab,则所求个数为 3。请改正程序中的错误, 使程序能输出正确的结果。

第 5 页 共 7 页

四川省第二十三次等级考试二级 C 与 C++语言 (2005 年 10 月 16 日)

机试试卷 参考答案

注意:不得增行或删行,也不得更改程序的结构。 #include <stdio.h> #include <string.h> int fun(char s, char t) /* 改为 char *s, char *t */ { int n=0 ; char *p , *r ; while(*s) { p=s; r=t ; while(*r) if(*r=*p) /* 改为 == */ { r++; p++; } else continue; /* 改为 break */ if(r=='\0') /* 改为 *r */ n++; r++; /* 改为 s++ */ } return *s; /* 改为 n */ } main() { int m ; char s[100], t[100]; printf("\nPlease enter string s:"); gets(s); printf("\nPlease enter string t:" ); gets(t); m=fun(s,t); printf("\nThe result is: m= %d\n",m); } 评分标准:每改对一处得 6 分,结果正确得 4 分 二、编程题(程序文件取名为 test4-2.c) (60 分) 在 main 函数中定义一个二维数组 a,从已给文件 test4-2.in 中读入 n×n 个整数到二维数组 a 中,其中 n 的大小由用户在运行程序过程中从键盘上输入(要求 n<=5) ,调用 fun 函数,fun 函数实现: (1)数组主对角线上各元素的值加 1。 (2)其余元素以主对角线划分,右上角各元素的值乘以 3,左下角各元素的值乘以 2。 最后,在主函数中将修改后的数组按 n 行 n 列的格式输出到屏幕和磁盘文件 test4-2.out 中。

评分标准: 1.被调函数编写正确 3.文件打开和关闭正确 5.N 输入和屏幕输出正确

20 分 5分 10 分

2.函数调用正确 4.文件读、写正确 6.程序结构合理

5分 15 分 5分

参考程序:

第 6 页 共 7 页

四川省第二十三次等级考试二级 C 与 C++语言 (2005 年 10 月 16 日)

机试试卷 参考答案

#include<stdio.h> #define N 5 void fun(int a[N][N],int n) { int i,j; for(i=j=0;i<n;i++,j++) a[i][j]=a[i][j]+1; for(i=1;i<n;i++) for(j=0;j<i;j++) a[i][j]=a[i][j]*2; for(i=0;i<n;i++) for(j=i+1;j<n;j++) a[i][j]=a[i][j]*3; } main() { int a[N][N],i,j,n; FILE *fp; clrscr(); printf(“*****input n *****\n”); scanf(“%d”,&n); fp=fopen("test4-2.in","r"); if(fp==NULL) { printf("file test4-2.in not open"); exit(0); } for(i=0;i<n;i++) for(j=0;j<n;j++) fscanf(fp,"%d",&a[i][j]); fclose(fp); fun(a,n); fp=fopen("test4-2.out","w"); if(fp==NULL) { printf("file test4-2.in not open"); exit(0); } for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%5d",a[i][j]); fprintf(fp,"%d",a[i][j]); } printf("\n"); fprintf(fp,"\n"); } }

第 7 页 共 7 页


赞助商链接
相关文章:
最新四川省大竹县中学2015初三中考3月月考数学试题及答案
暂无评价|0人阅读|0次下载 最新四川省大竹县中学2015初三中考3月月考数学试题及答案_数学_初中教育_教育专区。四川省大竹县中学 2015 初三中考 3 月模拟考试 数学...
四川省成都市彭州市五校联考高一化学下学期期中试卷(含...
暂无评价|0人阅读|0次下载 | 举报文档 四川省成都...参考答案试题解析 一、单项选择(每题只有一个选项...【点评】本题考查元素周期表的结构及应用,为高频...
四川省攀枝花市高一化学1月月考试题
四川省攀枝花市高一化学1月月考试题_理化生_高中...23 Mg-24 Al-27 第Ⅰ卷(选择题 共 40 分) ...参考答案及评分标准 一、选择题(每题只有一个选项...
四川省成都市高一化学4月月考试题
暂无评价|0人阅读|0次下载 | 举报文档 四川省成都市高一化学4月月考试题_理化...试卷共 100 分,时间 90 分钟,将答案填写在答卷页上 第Ⅰ卷 选择题 选择题(...
人教版九年级物理联考试卷
3、计算题要有必要的公式和计算过程,只写答案的不...2008 年 5 月 12 日 14 时 28 分,四川省汶川...12、 用电流表测电流时, 某同学接入电路的是 0~...
...四川省眉山市高三第一次诊断性考试政治试题及答案20...
最新-2018届四川省眉山市高三第一次诊断性考试政治试题及答案2018 精品 - 眉山市高中 2018 届第一次诊断性考试 文科综合·政治 第Ⅰ卷(选择题 48 分) 1. 图...
...年高一政治上学期期末考试试题扫描版(含详细答案)
暂无评价|0人阅读|0次下载 四川省雅安市2017_2018...思想政治试题参考答案 一、单项选择题(每题 2 分,...D 22、B 11、 23、 9 家发展全局的核心位置。 ...
四川省凉山州2018年中考文综(思想品德部分)试卷(word版...
暂无评价|0人阅读|0次下载 四川省凉山州2018年中考文综(思想品德部分)试卷(word版含答案)_政史地_初中教育_教育专区。四川省凉山州 2018 年中考文综(思想品德部...
2017-2018学年四川省遂宁市高一下学期期末考试化学(答案)
2017-2018学年四川省遂宁市高一下学期期末考试化学(答案) - 遂宁市高中 2020 级第二学期期末教学水平监测 化学试题参考答案及评分意见 一、选择题(每题只有一个...
湖南省岳阳市2018年中考地理试题及答案解析(Word版)
湖南省岳阳市2018年中考地理试题及答案解析(Word版)...月至 10 月,中国科考队进行第 8 次北极科学考察...四川省 D.甘肃省 14.三江源中的“三江”除长江外...
更多相关标签: