2013年上海计算机二级考试-C语言知识试题.doc

举报
资源描述
+- B试卷 1、以下程序的功能是: 输入任意整数n(0 main() { int i,j,n; char (1) ; printf("Please input n:"); scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1; (2) ;j++) { printf("%2c",ch); (3) ; } (4) ; } } 2. 以下程序的功能是: 从一个字符串中截取前面给定长度的子字符串。其中,str1指向原字符串,截取后的字符存放在str2所指的字符数组中,n中存放需截取的字符个数。例如,str1="ABCDEF",n=4,截取后的字符数组str2="ABCD"。请填空完成该程序。 #include #include #define LEN 80 main() { char str1[LEN],str2[LEN]; int n,i; printf("输入字符串:\n"); gets(str1); printf("输入子字符串的长度:"); scanf( "%d", (1) ); for(i=0;i int main() { int n,k,a; printf("请输入一个正整数: "); scanf("%d", n); k=1; do { a=n%10; n=n/10; if ( n%10 <= a ) k=0; }while ( n!=0 ); if ( k = 1 ) printf("各位数字是从小到大排列\n"); else printf("各位数字不是从小到大排列\n"); return 0; } 2. 程序调试题2 调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/***/字样的注释),使其运行能得到正确的结果。将结果(包括B_3_2.C文件和B_3_2.EXE文件)保存到目录C:\KS\中。 功能说明:输入一个以回车符结束的字符串(少于30个字符),若其中的第偶数个字符是小写英文字母,则转换成对应的大写英文字母,最后输出处理后的字符串。例如输入:jdk-7u25-win7<回车>,则输出:jDk-7U25-WiN7 。 带错误原程序(见C:\KS\B_3_2.C): #include #include int main() { char str[30]; int i, n; printf("请输入一个字符串:"); gets(&str); n = strlen(str); for (i=0; i=a && str[i]<=z ) str[i] = str[i] + (a - A); puts(str); return 0; } 3. 程序调试题3 调试要求:下列程序包含4个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/***/字样的注释),使其运行能得到正确的结果。将结果(包括B_3_3.C文件和B_3_3.EXE文件)保存到目录C:\KS\中。 功能说明:以下程序的数组t中存放了某城市7月15日到8月15日共32天每一天的日最高气温,程序的功能是统计并输出最高温度达到40℃或以上的超高温天的天数,以及最高温度在35℃或以上的连续高温天最多有多少天。针对程序中给出的原始数据,程序应输出: 最高温度达到40℃或以上的超高温天有6天 最高温度在35℃或以上的连续高温天最多有12天 带错误原程序(见C:\KS\B_3_3.C): #include int fun(int a[], int n, int *p) { int i, c = d40 = d = 0; for (i=1; i=35 ) { c++; if ( c>d ) d=c; if ( a[i]>=40 ) d40++; } else c=0; } p = d; return d40; } int main() { int t[32]={40,36,34,35,36,37,36,37,38,40,39, 38,37,36,34,36,37,38,36,34,36, 37,38,39,40,40,41,40,39,38,37,36}; int d40,d; d40=fun(t, 32, d); printf("最高温度达到40℃或以上的超高温天有%d天\n", d40); printf("最高温度在35℃或以上的连续高温天最多有%d天\n", d); return 0; } (二)编程题(2小题,共35分,其中第1小题15分,第2小题20分) 1.编程题1 编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括B_4_1.c文件和B_4_1.EXE文件)保存到目录C:\KS\中。 程序功能:输入整数n(设1000≤n≤9999),将n按十进制位分解为各乘式的累加和,格式参见示例,不输出系数为0的乘式。 运行示例1: 输入:1234 输出:1234=1*1000+2*100+3*10+4*1 运行示例2: 输入:2030 输出:2030=2*1000+3*10 2.编程题2 编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括B_4_2.c文件和B_4_2.EXE文件)保存到目录C:\KS\中。 程序功能:按示例格式完成以下要求。 (1) 输入10个整数,保存在数组中。 (2) 计算并输出10个整数的最小值(注:数组中可能存在多个最小值)。 (3) 输出数组中每个最小值的下一个元素及其下标(如果数组的最后一个元素正好为最小值,不输出该元素的下一个元素)。 (4) 计算并输出上述元素的平均值(保留小数点后一位小数,如果数组只有一个最小值且正好是最后一个元素,不输出平均值) 运行示例1: 输入:9 0 2 0 0 1 0 3 6 1 输出:min=0,a[2]=2,a[4]=0,a[5]=1,a[7]=3,ave=1.5 说明:10个元素的最小值为0,共出现4次,元素0的下一个元素依次为2、0、1、3,这4个元素的平均值为1.5。 运行示例2: 输入:60 39 81 90 60 39 90 70 78 39 输出:min=39,a[2]=81,a[6]=90,ave=85.5 说明:10个元素的最小值为39,共出现3次,元素39的下一个元素依次为81、90(最后一个39不存在下一个元素),81与90的平均值为85.5。 运行示例3: 输入:9 0 2 0 0 1 0 3 6 -1 输出:min=-1 说明:最小值为-1,是最后一个元素且只出现一次,不存在下一个元素,也没有平均值。 C试卷 1、以下程序的功能是: 将十进制正整数m转换成k进制(2≤k≤9)数的数字输出。 例如, 若输入18和2, 则应输出10010(即十进制数18转换成二进制表示是10010)。 #include void fun( int m, int k ) { int a[20], i; for( i = 0; m>0; i++ ) { a[i] = _____(1)____ m /= k; } for( ; i>0; _____(2) _____) printf( "%d", _____ (3) _____ ); } main() { int b, n; printf( "\nPlease enter a number and a base:\n" ); scanf( "%d %d", &n, &b ); fun(_____(4_____ ); } 以下程序的功能是:输出下列10行10列的矩阵。请填空完成该程序。 #include void fill(int b[10][10],int n) /*按1,2,3,4,5顺序依次填充数组内容*/ { int i,j; for(i=n-1;i<11-n;i++) for(j=n-1;j< (1) ;j++) b[i][j]= (2) ; } int main( ) { int a[10][10],k,i,j; for(k=1; (3) ;k++) fill( (4) ); for(i=0;i<10;i++) { for(j=0;j<10;j++) printf("%3d",a[i][j]); printf("\n"); } return 0; } (一)程序调试题(3小题,第1、2小题各3处错,第3小题4处错,每改正1处得3分,共30分) 1. 程序调试题1 调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/***/字样的注释),使其运行能得到正确的结果。将结果(包括C_3_1.C文件和C_3_1.EXE文件)保存到目录C:\KS\中。 功能说明:已知Fibonacci数列的前两项均为1,从第三项开始它的值都为它的前两项的和。程序的功能是输出Fibonacci数列前18项每一项的值,不要多输出一项,也不要少输出一项,要求每一行输出6个数,输出结果为: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 带错误原程序(见C:\KS\C_3_1.C): #include int main() { long fib1=fib2=1, fib3; int n; printf("%6ld%6ld", fib1,fib2); for (n=1; n<=18; n++) { fib3=fib1+fib2; printf("%6ld", fib3); if ( n%6=0 ) printf("\n"); fib1=fib2; fib2=fib3; } return 0; } 2. 程序调试题2 调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/***/字样的注释),使其运行能得到正确的结果。将结果(包括C_3_2.C文件和C_3_2.EXE文件)保存到目录C:\KS\中。 功能说明:输入一个以回车符结束的字符串(少于30个字符),将其中的字符 - 替换为字符 + ,所有的数字字符都替换为字符 # ,最后输出处理后的字符串。例如输入:jdk-7u25-win7<回车>,则输出:jdk+#u##+win# 。 带错误原程序(见C:\KS\C_3_2.C): #include int main() { char str[30]; int i; printf("请输入一个字符串:"); gets(str[30]); for (i=0; str[i]!=\0; i++) { if ( str[i] == - ) str[i] = +; else if ( str[i]>=0 && str[i]<=9 ) str[i] = "#"; } puts(*str); return 0; } 3. 程序调试题3 调试要求:下列程序包含4个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/***/字样的注释),使其运行能得到正确的结果。将结果(包括C_3_3.C文件和C_3_3.EXE文件)保存到目录C:\KS\中。 功能说明:入秋标志着夏秋季节完成转换,气候学上入秋的标准是必须要连续5天日平均气温低于22℃,则这连续5天中的第一天为入秋日,程序的功能是判断9月份是否入秋并输出有关信息。若入秋,则输出在哪一天入秋,否则输出9月没有入秋。说明:以下程序的数组t中存放了某城市9月份一个月的日平均气温,数组t中下标为0的元素闲置而没有利用,针对程序中给出的9月份一个月的日平均气温,入秋日为9月25日。 带错误原程序(见C:\KS\C_3_3.C): #include int fun(int *a, n) { int i,c; for (i=1; i<=n; i++) { if ( a[i] < 22 ) { c++; if ( c>5 ) return i-4; } else c=0; } return 0; } int main() { int t[31]={0,25,26,30,28,27,25,26,20,18,18, 23,23,22,23,22,21,20,21,20,24, 26,25,24,23,21,20,18,21,21,23}; int d; d=fun(*t,30); if ( d==0 ) printf("9月没有入秋\n"); else printf("9月%d日开始入秋\n", d); return 0; } (二)编程题(2小题,共35分,其中第1小题15分,第2小题20分) 1.编程题1 编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括C_4_1.c文件和C_4_1.EXE文件)保存到目录C:\KS\中。 程序功能:输入整数n(设1000≤n≤9999),以类似读数拼音的格式输出该数,拼音中"千、百、十"分别使用"Q、B、S"表示,格式要求参见示例。n为1000倍数时不输出百位数、十位数与个位数,n为100倍数时不输出十位数与个位数,n为10的倍数时不输出个位数。 运行示例1: 输入:1234 输出:1Q,2B,3S,4 运行示例2: 输入:9008 输出:9Q,0B,0S,8 运行示例3: 输入:5060 输出:5Q,0B,6S 2.编程题2 编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括C_4_2.c文件和C_4_2.EXE文件)保存到目录C:\KS\中。 程序功能:按示例格式完成以下要求。 (1) 输入整数n(设2≤n≤20),接着输入n个整数(保存在数组a中,设a[i]≥0)。 (2) 计算并输出数组的最大值。 (3) 输出数组中每个最大值的前一个元素及其下标(如果数组的第一个元素正好为最大值,不输出该元素的前一个元素)。 (4) 输出上述元素的累加和。 运行示例1: 输入: 6 81 255 90 255 78 255 输出:max=255,a[0]=81,a[2]=90,a[4]=78,sum=249 说明:输入n为6,接着输入6个元素到数组中,最大值为255,元素255的前一个元素依次为81、90、78,这3个数的累加和为249。 运行示例2: 输入: 12 99 50 99 60 48 99 84 49 99 69 51 99 输出:max=99,a[1]=50,a[4]=48,a[7]=49,a[10]=51,sum=198 说明:输入n为12,接着输入12个元素到数组中,最大值为99,第1个99不存在前一个元素,其余4个99的前一个元素依次为50、48、49、51,这4个数的累加和为198。 D试卷 1、以下程序的功能是: 移动一维数组中的内容,若数组中有n个整数,要求把下标从m到n-1(m≤n-1)的数组元素平移到数组的前面。 例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,m的值为7。移动后,一维数组中的内容应为8,9,10,11,12,13,14,15,1,2,3,4,5,6,7。 #include #define N 80 void fun(int *w, int m, int n) { int i,j,t; for(i=m; (1) ;i++) { /*数组各元素依次向后平移一个位置*/ t= (2) ; for(j=n-2;j>=0;j--) w[j+1]= (3) ; w[0]=t; } } main() { int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; int i, m, n=15; printf("The original data:\n"); for(i=0;i #include #define N 80 void fun(char *s, char t[]) { int i, (1) ; for(i=0; i int main() { int a,b,c; printf("请输入两个正整数: "); scanf("%d%d", &a,&b); if (a,则输出:n=7257 。说明:字符串"jdk-7u25-win7"过滤掉所有的非数字字符后变成十进制字符串"7257",转换成十进制整数是7257 。 带错误原程序(见C:\KS\D_3_2.C): #include int main() { char str[30]; int i, n; printf("请输入一个字符串:"); gets(str); n = 1; for (i=0; str[i]!=\0; i++) if ( 0 <= str[i] <= 9 ) n = n*10 + str[i] - 0; printf("n=%d\n", n); return 0; } 3. 程序调试题3 调试要求:下列程序包含4个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/***/字样的注释),使其运行能得到正确的结果。将结果(包括D_3_3.C文件和D_3_3.EXE文件)保存到目录C:\KS\中。 功能说明:入夏标志着春夏季节完成转换,气候学上入夏的标准是必须要连续5天日平均气温达到22℃或以上,则这连续5天中的第一天为入夏日,程序的功能是判断5月份是否入夏并输出有关信息。若入夏,则输出在哪一天入夏,否则输出5月没有入夏。说明:以下程序的数组t中存放了某城市5月份一个月的日平均气温,数组t中下标为0的元素闲置而没有利用,针对程序中给出的5月份一个月的日平均气温,入夏日为5月16日。 带错误原程序(见C:\KS\D_3_3.C): #include void fun(int a[], int n) { int i,c; c=0; for (i=1; i<=n; i++) { if ( a[i] > 22 ) { c++; if ( c>=5 ) return i-5; else continue; } c=0; } return 0; } int main() { int t[32]={0,20,21,22,22,19,18,18,19,22,23, 22,21,20,21,20,24,22,25,24,23, 21,23,22,21,22,25,26,30,28,27,28}; int d; d=fun(t[],31); if ( d==0 ) printf("5月没有入夏\n"); else printf("5月%d日开始入夏\n", d); return 0; } (二)编程题(2小题,共35分,其中第1小题15分,第2小题20分) 1.编程题1 编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括D_4_1.c文件和D_4_1.EXE文件)保存到目录C:\KS\中。 程序功能:输入整数n(设100≤n≤999),以类似读数拼音的格式输出该数,拼音中"百、十"分别使用"B、S"表示,格式要求参见示例。n为100倍数时不输出十位数与个位数,n为10的倍数时不输出个位数,十位数为0而个位数不为0时省略"S"。 运行示例1: 输入:123 输出:1B2S3 运行示例2: 输入:908 输出:9B08 运行示例3: 输入:560 输出:5B6S 2.编程题2 编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括D_4_2.c文件和D_4_2.EXE文件)保存到目录C:\KS\中。 程序功能:按示例格式完成以下要求。 (1) 连续输入整数直至-1,整数保存在数组中,设整数个数不超过20个。 (2) 判断数组中是否存在"0 0 161 x y z 255"样式的数字子串。 (3) 如果存在,输出x、y和z的值,如果不存在输出"NO DATA"。 运行示例1: 输入:0 0 161 36 55 164 255 -1 输出:DATA:36 55 164 运行示例2: 输入:0 0 161 0 0 161 164 55 36 255 0 -1 输出:DATA:164 55 36 运行示例3: 输入:0 78 0 0 161 55 164 36 250 255 -1 输出:NO DATA 部分答案 二级 C 程序设计 B 场 参考答案 单选题 1. D 2. D 3. D 4. A 5. A 6. D 7. A 8. C 9. C 10. B 程序填空题 1. 1)【ch=A】 2)【j<=n-i+1】【j
展开阅读全文
相关搜索
温馨提示:
taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

当前位置:首页 > 教育专区 > 教案示例


本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁