全国计算机等级考试二级C改错题答案
计算机等级考试(NCRE)二级c语言改错题
计算机等级考试(NCRE)二级c语言搞错题1、给定程序MODI1.C中,函数fun的功能是求矩阵(二维数组)a[N][N]中每行的最小值,结果存放到数组b中。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>#define N 4void fun(int a[][N], int b[]){ int i, j;for (i=0; i<N; i++){/**********found**********/b[i] = a[i][0];/**********found**********/for (j=1; j<=N-1; j++)/**********found**********/if ( b[i] > a[i][j] )b[i] = a[i][j];}}main(){ int a[N][N]={{1,4,3,2},{8,6,5,7},{11,10,12,9},{13,16,14,15}},b[N]; int i;fun(a,b);for (i=0; i<N; i++) printf("%d,", b[i]);printf("\n");}2、给定程序MODI1.C中规定输入的字符串全部为字母,fun函数的功能是:统计a所指字符串中每个字母在字符串中出现的次数(统计时不区分大小写),并将出现次数最高的字母输出(如果有多个相同,输出一个即可)。
例如对于字符串:dadbcdbabdb,对应的输出应为:b或d。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include<stdio.h>#include <stdio.h>#include <string.h>void fun(char a[]){ int b[26], i, n,max;for (i=0; i<26; i++)/**********found**********/b[i] = 0;n= strlen(a);for (i=0; i<n; i++)if (a[i] >='a' && a[i]<='z')/**********found**********/b[a[i] - 'a']++;else if (a[i] >='A' && a[i]<='Z')b[a[i] -'A']++;max = 0;for (i=1; i<26; i++)/**********found**********/if (b[max] < b[i])max=i;printf("出现次数最多的字符是 : %c\n", max + 'a');}main( ){ char a[200];printf("请输入一个待统计的字符串 : "); scanf("%s", a);fun(a);}3、给定程序MODI1.C中,函数fun()的功能是统计s所指一维数组中0的个数(存在变量zero中)和1的个数(存在变量one中),并输出结果。
全国计算机等级考试二级C改错题答案
答案:(1)double sum=0.0;(2)sum/=c;
所属年份:2011.9
下列给定程序中函数fun和funx的功能是:用二分法求方程 的一个根,并要求绝对误差不超过0.001。
例如,若给m输入-100,n输入90,则函数求得的一个根为2.000。
答案:(1)fun(int x,int y, int z) (2)return j;
所属年份:2011.3
下列给定程序中函数fun的功能是:从N个字符串中找出最长的串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。
答案:(1)char *fun(char (*sq)[M]) (2)return sp;
下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。
例如,若输入252,则输出应该是20。若输入202,则输出应该是0。
答案:(1)long k=1;(2)num /=10;
所属年份:2010.9;2011.9;
下列给定程序中函数fun的功能是:把从主函数中输入的3个数,最大的数放在a中,中间的数放在b中,最小的数放在c中。
答案:(1)return 3;(2)return 1;
所属年份:2010.9;2011.3;2011.9;
下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。
t=1/2-1/3-…-1/m
例如,若输入5,则应输出-0.283333。
答案:(1)t-=1.0/i;(2)return t;
所属年份:2012.3;
下列给定程序中函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
全国计算机二级C语言程序改错题(-100%全中必过)
目录题目一前N项和问题 (3)题目二SS字符串问题 (4)题目三变量互换问题1 (4)题目三变量互换问题2 (5)题目三变量互换问题3 (5)题目四最大公约数问题 (6)题目五长数变短数1 (7)题目五长数变短数2 (7)题目五长数变短数3 (8)题目五长数变短数4 (9)题目五长数变短数5 (9)题目五长数变短数6 (10)题目五长数变短数7 (11)题目五长数变短数8 (11)题目五长数变短数9 (12)题目六斐波拉契数列 (13)题目七链表1 (14)题目七链表2 (15)题目七链表3 (16)题目七链表4 (17)题目八非素数问题 (19)题目九排序问题1 (19)题目九排序问题2 (20)题目九排序问题3 (21)题目九排序问题4 (22)题目九排序问题5 (23)题目九排序问题6 (24)题目九排序问题6 (25)题目九排序问题7 (26)题目十平均值问题1 (26)题目十平均值问题2 (27)题目十平均值问题3 (28)题目十平均值问题4 (29)题目十平均值问题5 (30)题目十一字符串连接1 (30)题目十一字符串连接2 (31)题目十一字符串连接3 (32)题目十一字符串连接4 (32)题目十二求和问题1 (33)题目十二求和问题2 (34)题目十二求和问题3 (35)题目十二求和问题4 (36)题目十二求和问题6 (37)题目十二求和问题7 (38)题目十二求和问题8 (39)题目十二求和问题9 (39)题目十二求和问题10 (40)题目十二求和问题11 (41)题目十二求和问题12 (42)题目十二求和问题13 (42)题目十二求和问题14 (43)题目十二求和问题15 (44)题目十二求和问题16 (44)题目十二求和问题17 (45)题目十二求和问题18 (45)题目十二求和问题19 (46)题目十三整数问题 (47)题目十四字符串逆置 (48)题目十五进制转换1 (48)题目十五进制转换2 (49)题目十六素数问题1 (50)题目十六素数问题2 (50)题目十六素数问题3 (51)题目十六素数问题4 (52)题目十六素数问题5 (53)题目十七删除字符串中指定项1 (53)题目十七删除字符串中指定项2 (54)题目十八最小公倍数问题 (55)题目十九字符串替换问题1 (55)题目十九字符串替换问题2 (56)题目二十找最长字符串 (57)题目二十一数组问题1 (58)题目二十一数组问题2 (59)题目二十一数组问题3 (60)题目二十二求平方根问题 (61)题目二十三短字符串变长字符串1 (61)题目二十三短字符串变长字符串2 (62)题目二十三短字符串变长字符串3 (63)题目二十三短字符串变长字符串4 (64)题目二十四字符串s问题1 (64)题目二十四字符串s问题2 (65)题目二十四字符串s问题3 (66)题目二十五求方程的根 (67)题目二十六求阶乘1 (68)题目二十六求阶乘2 (69)题目二十七方阵问题 (70)题目二十八查找字符串中某元素的数目 (71)题目二十九最大值问题1 (72)题目二十九最大值问题2 (72)题目二十九最大值问题3 (73)题目三十大小写转换1 (74)题目三十大小写转换2 (75)题目三十大小写转换3 (76)题目三十一:计算数字位数的问题1 (77)题目三十一:计算数字位数的问题2 (78)题目三十一:计算数字位数的问题3 (79)题目三十一:计算数字位数的问题4 (80)题目三十二统计字母数字个数问题1 (81)题目三十二统计字母数字个数问题2 (82)题目三十二统计字母数字个数问题3 (83)题目三十二统计字母数字个数问题4 (83)题目三十三对角线问题 (84)题目三十四比较字符串大小 (85)题目一前N项和问题.下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。
国家计算机等级考试上二级C-改错题
1 下列给定程序中函数fun()的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。
例如,当s中的数为4576235时,t中的数为4725。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:#include#include/**********************found***********************/int fun(long s,long *t){long s1=10;*t=s ;while(s>0){/**********************found***********************/s=s 0;*t=s *s1+*t;s1=s1*10;}}main(){long s, t;clrscr();printf("\nPlease enter s: ");scanf("%ld",&s);fun(s,&t);printf("The result is: %ld\n ",t);}答案及评析:(1)错误:int fun(long s,long *t)正确:void fun(long s,long *t)(2)错误:s=s 0;正确:s=s/100;【解析】错误1:函数由指针来完成参数的传递,所以没有返回值,应定义函数的类型为void。
错误2:此处要注意特殊运算符号"%"--取余和"/"--整除的区别。
将一个数整除100则可得到由其百位数以上的数组成的新数字,将一个数整除100取余则可得到由十位数和个位数组成的新数。
2下列给定的程序中,函数fun()的功能是:计算并输出k以内最大的6个能被7或11整除的自然数之和。
K的值由主函数传入,若k的值为500,则函数的值为2925。
国家计算机C语言二级考试改错题库
1 下列给定程序中,函数fun 的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。
例如,当n 为5时,函数值应为10.407143。
f(x)函数定义如下:f(x)=(1)(2)0002(1)(2)0x x x x x x x x ⎧+/->⎪==⎨⎪-/-<⎩或请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。
试题程序:#include <stdlib.h> #include <conio.h> #include <stdio.h> #include <math.h>/*************found**************/ f(double x)2 下列给定程序中,fun 函数的功能是:根据形参m,计算下列公式的值:t=1+1/2+1/3+1/4+…+1/m例如,若输入5,则应输出2.283333。
3 下列给定程序中,函数fun 的功能是:分别统计字符串中大写字母和小写字母的个数。
例如,给字符串s 输入:AaaaBBb123CCccccd,则应输出结果:upper=5,lower=9。
4 下列给定程序中函数fun 的功能是:计算正整数num 各位上的数字之积。
例如,若输入252,则输出应该是20。
若输入202,则输出应该是0。
5 下列给定程序中函数fun 的功能是:计算n!。
例如,给n 输入5,则输出120.000000。
6 下列给定的程序中,函数fun 的功能是:计算并输出k 以内最大的10个能被13或17整除的自然数之和。
k 的值由主函数传入,若k 的值为500,则函数的值为4622。
7 下列给定程序中,函数fun()的功能是:根据整型形参m 的值,计算如下公式的值:t=1-1/(22)1/(33)...1/()m m ⨯-⨯--⨯8 在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。
全国计算机等级考试二级C改错题答案
所属年份:下列给定程序中,函数的功能是:先将字符串中的字符按正序存放到字符串中,然后把中的字符按逆序连接到字符串的后面。
例如,当中的字符串为""时,则中的字符串应为""。
答案: () ( ; <) ()[*]'\'所属年份:;下列给定程序中,函数的功能是:读入一个字符串(长度<),将该字符串中的所有字符按码值升序排序后输出。
例如,若输入"",则应输出""。
答案: ()((); >; ) () ([] > [])所属年份:下列给定程序中函数的功能是:统计所指的子符串在所指的字符串中出现的次数。
例如,若字符串为 ,子字符串为,则应输出。
答案: ()([]) ()([] '\')所属年份:;下列给定程序中函数的功能是:用冒泡法对个字符串进行升序排列。
答案: () ( ; < ; ) ()*( ) *( );所属年份:下列给定程序中函数的功能是:根据整型形参,计算如下公式的值。
例如,若的值为,则应输出。
答案: ()(<) ()(*);所属年份:;下列给定程序中函数的功能是:删除指针所指字符串中的所有空白字符(包括制表符、回车符及换行符)。
输入字符串时用''结束输入。
答案: ()([]) ()[] '\';所属年份:;下列给定程序中,函数的功能是:根据整型参数,计算如下公式的值。
=(×)+(×)+(×)+…+(×)例如,若=,则应输出。
答案: () ( ) ()(<)所属年份:下列给定程序中,函数的功能是:根据整形参的值,计算如下公式的值。
例如,若中的值为,则应输出。
答案: ()( ; < ; ) () ( * );所属年份:; 下列给定程序中函数的功能是:求三个数的最小公倍数。
例如,若给主函数中的变量、、分别输入 ,则输出结果应当是。
二级C上机改错题答案
(2)r++;
24.下列给定程序中函数fun的功能是:从N个字符串中找出最长的串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!
例如,当s中的数为87653142时,t中的数:8642。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!
【参考答案】
(1)if(d%2==0)
(2)s/=10;
18.下列给定程序中函数fun的功能是:计算并输出high以内最大的10个素数的和。high的值由主函数传给fun函数。
(2)(pstr + I) = *(pstr + j) ;
10.下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。
例如,若输入252,则输出应该是20。若输入202,则输出应该是0。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!
【参考答案】
(1)for(i=0;str[i];i++)
(2)if(substr[k+1]== ′\0′)
3.下列给定程序中函数fun的功能是:实现两个变量值的交换,规定不允许增加语句和表达式。
例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。
请改正程序中的错误,使它得出正确的结果。
例如,当s所指字符串中的内容为"abcdabfab",t1所指子串中的内容为"ab",t2所指子串中的内容为"99"时,在w所指的数组中的内容应为"99cd99f99"。
二级c语言上机考试改错题总结 (1)
二级C语言上机考试改错题总结——张官祥根据本人多年研究全国计算机等级考试二级C语言,发现很多考生对上机考试存在很大的问题。
现将本人在教学当中对二级C语言上机考试题库总结的经验和大家分享,希望能对我们考生的考试有所帮助,顺利通过考试!以下是对上机考试改错题的做题方法和总结,改错题的错误主要分为以下几类:1、if或while语句若错误行是if或者while语句,则要注意以下点:1)首先判断是否正确书写if或while关键字;2)然后看有没有用小括号把整个表达式括起来,若没有则加上小括号;3)若条件表达式中有指针变量而且没有指针运算符时,则加上指针运算符;4)若if条件表达式中只有一个等于号即数学等号(=),则要改写成两个等于号即逻辑等号(= =);5)若if条件表达式为其他的比较运算符,则一般是进行逆转或加一个等于号;2、for语句若错误行是for语句,则要注意以下几点:1)首先判断for有没有书写正确;2)然后看for中的表达式是不是用分号(;)隔开,若不是则改为分号。
记住是分号(;),不是逗号(,)!3)再者,分析for中的三个表达式,是否符合题意;第一个表达式表示起始条件,第二个表达式表示终止条件,第三个表达式表示循环变量的变化。
3、return语句若错误行为return语句,则要注意以下几点:1)首先看是不是正确书写return关键字;2)然后看是不是缺少分号,若是则加上分号即可;3)再者判断return后的变量或表达式是否正确;这种错误需要根据题意来分析,分析返回变量或表达式的值和类型。
4、赋值语句若错误行是赋值语句,则要看赋值是否正确,然后看赋值运算符是否写正确。
5、定义语句若错误行是定义语句,则要注意:1)首先分析变量类型名是否写对;2)然后分析给变量赋初值是否正确;3)若以上均不是,则看是不是少定义了某个变量或少了花括号;6、表达式错误问题:若错误行中有整数1除以某个表达式或变量时,必须把整数1改为1.0;若变量或表达式是整型时,则只能进行强制类型转换。
全国计算机等级考试二级教程--C语言程序设计课后习题答案范文
《全国计算机等级考试二级教程--C语言程序设计》课后习题答案第一章1.1 EXE1.2 C OBJ EXE1.3 顺序选择循环第二章一. 选择题2.1 B 2.2 D 2.3 B 2.4 A 2.5 C 2.6 A 2.7 B2.8 B 2.9 D 2.10 C 2.11 B 2.12 B 2.13 A二. 填空题2.14 11 122.15 4.2 4.22.16 { } 定义执行语句2.17 关键字用户标识符2.18 int float double2.19 float a1=1; float a2=1;2.20 存储单元2.213.52.22 (a*b)/c a*b/c a/c*b2.23 把常量10赋给变量s2.24 位1或02.25 8 127 -1282.26 32767 -32768 000002.27 10 8 16三. 上机改错题2.28#include "stdio.h"; 删除行尾的";"main(); / * main function * / 删除")"后的";",注释中的*要紧靠“/”,即应为“/*”和“*/”函数开始处遗失了一个“{”float r,s ; /*/*r is radius*/,/* s is area of circuilar*/*/ 注释符号不可嵌套使用r = 5.0 ;s = 3.14159 * r * r ;printf("%f\n",s) 行尾遗失了“;”函数结束处遗失了一个“}”2.29#include "stdio.h"main /* main function */ main后遗失了“()”{float a,b,c,v; /*a,b,c are sides, v is volume of cube */a=2.0; b=3.0; c=4.0 行尾遗失了“;”printf("%f\n", v) 行尾遗失了“;”}第三章一. 选择题3.1 C 3.2 C 3.3 D 3.4 C 3.5 D 3.6 B 3.7 C 3.8 D 3.9 A 3.10 B3.11 C 3.12 D 3.13 D 3.14 A 3.15 C 3.16 C 3.17 C 3.18 无答案3.19 C 3.20 B二. 填空题3.21 (1)-(2)i=-200,j=2500(3)i=-200j=25003.22 12 0 03.23 一条语句;3.24 ;3.25 100,25.81,1.89234 100 25.81 1.89234 100 25.81 1.892343.26 x=127,x= 127,x= 177,x= 7f,x= 1273.27 x=127,x=127 ,x=$127 ,x=$,x=%06d3.28 a=513.,a= 513.79,a= 513.,a= 513.三. 编程题和改错题3.29 修改后的程序如下:main(){double a,b,c,s,v;printf("input a,b,c:");scanf("%lf%lf%lf",&a,&b,&c);s =a*b;v=a*b*c;printf("a=%f,b=%f,c=%f\n", a,b,c);printf("s=%f,v=%f\n",s,v);}3.30#includemain(){int a=560,b=60;printf("560 minute is %d hour and %d minute.\n",a/b,a%b);}3.31#includemain(){a=1500;b=350;printf("a div b is : %d\n",a/b);printf("a mod b is : %d\n",a%b);}3.32#includemain(){double a,b,c,ave;printf ("input 3 double number : \n");scanf ("%lf%lf%lf",&a,&b,&c);printf ("%.1f\n",(a+b+c)/3);}3.33#includevoid main(){int a,b,c,t;printf("请依次输入整数a,b,c:");scanf("%d%d%d",&a,&b,&c);printf("\n你输入的值是: a=%d,b=%d,c=%d\n",a,b,c);t=b;b=a;a=c;c=t;printf("交换之后的值是:a=%d,b=%d,c=%d\n",a,b,c);}第四章一. 选择题4.1 A 4.2 A 4.3 A 4.4 D 4.5 C 4.6 A 4.7 B 4.8 C 4.9 D 4.10 C二. 填空题4.11 非0 04.12 < > >= <=同级== !=同级4.13 ! && ||4.15 !4.16 a == b || a < c x > 4 || x < -44.17 14.18 x <= 0 1 > 04.19 3 2 24.20 *#三. 编程题4.21 略4.22/* 检查日期的合法性*/int checkdate(int year, int month, int day){if(year < 1900 || year > 2005){printf("输入的年份无效!\n");return 0;}else if(month < 0 && month > 12){printf("输入的月份无效!\n");return 0;}else if(day <= 0 && day > 31){printf("输入的日期无效!\n");return 0;}else{switch(month){case 4:case 6:case 9:case 11:if(day > 30){printf("输入的日期无效!\n");return 0;}break;case 2:if((year%4 == 0 && year%100 != 0) || year%400 == 0) {if(day > 29){printf("输入的日期无效!\n");return 0;}}elseif(day > 28){printf("输入的出生日期无效!\n"); return 0;}}break;}/* end of switch(m0)*/}return 1;}void main(){int y0, m0, d0; /* 生日*/int y1, m1, d1; /* 当前日期*/int years, months, days; /* 实足年龄*/printf("请输入学生的生日:");scanf("%d%d%d", &y0,&m0,&d0);if(checkdate(y0, m0, d0)){printf("请输入当前日期:");scanf("%d%d%d", &y1,&m1,&d1);/*当前日期合法性检查*/if(!checkdate(y1, m1, d1)){return;}else if(y0 > y1){printf("出生年份比当前年份晚!\n"); return;}else if(y0 == y1){if(m0 > m1){printf("出生年月比当前年月晚!\n"); return;}else if(m0 == m1)if(d0 > d1){printf("出生年月日比当前年月日晚!\n");return;}}}}/* 计算实足年龄*/years = y1 - y0;months = m1 - m0;days = d1 - d0;/* 修正实足年龄天数*/if(days < 0){months--;switch(m1){case 1:case 5:case 7:case 10:case 12:days += 30;break;case 2:case 4:case 6:case 8:case 9:case 11:days += 31;break;case 3:if((y1%4 == 0 && y1%100 != 0) || y1%400 == 0) {days += 29;}else{days += 28;break;}/* end of switch(m1) */}/* end of if(days < 0) *//* 修正实足年龄月数*/if(months < 0){months += 12;years--;}/* end of if(months < 0) */printf("出生日期: %d年%d月%d日\n", y0, m0, d0);printf("当前日期: %d年%d月%d日\n", y1, m1, d1);printf("实足年龄: %d年%d月%d日\n", years, months, days);return;}4.23#includevoid main(){int a;printf ("请输入一个整数:");scanf ("%d",&a);if (a%2==0){printf ("%d 是偶数\n", a);}else{printf ("%d 是奇数\n", a);}}4.24#includevoid main(){int a,b,c,temp,max;printf ("请输入三个整数:");scanf ("%d %d %d",&a,&b,&c);temp=(a>b)? a:b;max=(temp>c)? temp:c;printf ("\n");printf ("你输入的数中最大的是%d.\n",max); }4.25(1)不嵌套的if语句#includevoid main(){int x,y;printf("input x :");scanf("%d",&x);if ( x>-5 && x<0 ){printf("y is %d\n",y=x);}if ( x==0 ){printf("y is %d\n",y=x-1);}if ( x>0 && x<10 ){printf("y is %d\n",y=x+1);}if ( x>=10 || x<=-5){printf("error\n");}}(2)嵌套的if语句#includevoid main(){int x,y;printf("input x :");scanf("%d",&x);printf("\n");if(x < 0){if(x > -5){printf("y is %d.\n",y=x); }else{printf("error!\n");}}if(0 == x){printf("y is %d.\n",y=x-1); }if(x > 0){if(x < 10){printf("y is %d.\n",y=x+1); }else{printf("error!\n");}}}(3)if_else语句#includevoid main(){int x,y;printf("input x :");scanf("%d",&x);if( x>-5 && x<0 ){printf("y is %d.\n",y=x); }else if( x==0 ){printf("y is %d.\n",y=x-1); }else if( x>0 && x<10 ) {printf("y is %d.\n",y=x+1); }else{printf("error!\n");}}(4)switch语句#includevoid main(){int x,y;printf("input x : ");scanf("%d",&x);switch (x){case -4:case -3:case -2:case -1:printf("y is %d.\n",y=x); break;case 0:printf("y is %d.\n",y=x-1); break;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:printf("y is %d.\n",y=x+1); break;default:printf("error!\n");}}第五章一. 选择题5.1 D 5.2 C 5.3 B 5.4 C 5.5 C 5.6 B 5.7 D 5.8 A 5.9 D 5.10 D二. 填空题5.11 5 4 65.12 死循环5.13 -15.14 115.15 d=1.0 k++ k<=n5.16 x>=0 x三. 编程题5.17#includevoid main(){int i;int sig = 1;int sum = 0;for(i=1; i<=101; i++,i++){sum += sig*i;sig *= -1;}printf("sum=%d\n", sum);}5.18(1)#includevoid main(){int i;double m=1.0;double e = 1.0;for(i=1; i<50; i++){m *= i;e += 1/m;}printf("e=%f\n",e);}(2)#includevoid main(){int i=1;double m=1.0;double e = 1.0;while(1/m >= 0.0004){m *= i;e += 1/m;i++;}printf("e=%f\n",e);}5.19#includevoid main(){int year;int col = 0;for(year=1600; year<=2000; year++){if((year%4 == 0 && year%100 != 0) || year%400 == 0) {printf("%d\t", year);col++;if(col%5 == 0){printf("\n");}}}printf("\n");}5.20#include#define N 7void main(){int i;int j;int m;int k = N/2;for(i=0; i {m = i-k;if(m < 0){m *= -1;}for(j=0; j {printf(" ");}for(j=0; j<2*(k-m)+1; j++){printf("*");}printf("\n");}}第六章一. 选择题6.1 B 6.2 D 6.3 A 6.4 A 6.5 B 6.6 D 6.7 D 6.8 B 6.9 A 6.10 A 6.11 C二. 填空题6.12 -16.13 16.14 ctype.h6.15 16.16 10A 20B 30C 40D6.177.29 101.298AB6.18 A7.29B101.2986.19 A B C (每个字符后有三个空格)三. 编程题6.20#include#define N 80void main(){int iLoop = 0;gets(str);while(str[iLoop]){printf("%c-%d\t", str[iLoop],str[iLoop]); iLoop++;if(iLoop%3 == 0){printf("\n");}}printf("\n");}6.21#include#define N 80void main(){char str[N];int num = 0;int iLoop = 0;gets(str);while(str[iLoop]){if(str[iLoop] >= '0' && str[iLoop] <= '9') {num = 10*num + (str[iLoop] - '0');}iLoop++;}printf("%d\n",num);}6.22#include#include#define N 80void main(){char str[N];do{gets(str);num++;}while(strcmp(str, "EOF"));printf("您输入了%d行字符!\n",num);}6.23#include#define N 80void main(){char str[N];int iLoop = 0;int num = 0;gets(str);while(str[iLoop] && iLoop < N){if(str[iLoop] >= 'a' && str[iLoop] <= 'z'){num++;}iLoop++;}printf("您输入了字符中有%d个小写字母!\n",num); }6.24#includevoid main(){int line;int iLoop1;int iLoop2;printf("请输入图案的行数(不大于26):");scanf("%d", &line);for(iLoop1 = 0; iLoop1 < line; iLoop1++){for(iLoop2 = 0; iLoop2 < line - iLoop1; iLoop2++){printf(" ");}for(iLoop2 = 0; iLoop2 < 2*iLoop1+1; iLoop2++) {printf("%c",iLoop1 + 'A');}printf("\n");}}第七章一. 选择题7.1 C 7.2 C 7.3 B 7.4 C 7.5 A 7.6 D 7.7 A二. 填空题7.8 127.9 9.7.10 47.11 n=1 s7.12 <=y z*x7.13 1 s*i 0 f(k)三. 程序调试和编程题7.14fun(int n){ int k,yes;for(k=2; k<=n/2; k++){if(n%k == 0) { yes = 0; break;}else yes = 1;}return yes;}7.15int mymod(int a, int b){return a%b;}7.16double fun(int n){double sum = 0;int iLoop;int sig = -1;for(iLoop=1; iLoop<=n; iLoop++){sig *= -1;sum += sig*1.0/iLoop;}return sum;}7.17double fun(int n){double t = 1.0;int iLoop;long tmp;for(iLoop=2; iLoop<=n; iLoop++){tmp = iLoop*iLoop;t -= 1.0/tmp;}return t;}7.18#include#includedouble fun(double x){return x*x + 5*x + 4;}void main(){int x = 2;printf("y1=%f\n", fun(x));printf("y2=%f\n", fun(x+15));printf("y3=%f\n", fun(sin(x)));}第八章一. 选择题8.1 A 8.2 B 8.3 B 8.4 C 8.5 B 8.6 B 8.7 C 8.8 D 8.9 B 8.10 C 8.11 C 8.12 C8.13 1108.14 7 18.15 (1)char *p=&ch; (2) p=&ch; (3)scanf("%c",p); (4)*p='A'; (5)printf("%c",*p);8.16 (1)s=p+3; (2)s=s-2 (3)50 (4)*(s+1) (5)2 (6)10 20 30 40 50三. 编程题8.17void fun(double x, double y, double *sum, double *div){*sum = x + y;*div = x - y;return;}8.18void fun(double x, double y, double z, double *max, double *min){*max = x;*min = x;if(*max < y){*max = y;}if(*max < z){*max = z;}if(*min > y){*min = y;}if(*min > z){*min = z;}return;}第九章一. 选择题9.1 D 9.2 A 9.3 A 9.4 C 9.5 C 9.6 A 9.7 B 9.8 D 9.9 C 9.10 C9.11 C 9.12 D 9.13 D 9.14 A 9.15 A 9.16 A 9.17 C 9.18 C二. 填空题9.20 69.21 129.22 39.23 27219.24 -850,2,09.25 k=p k9.26 (c=getchar()) c-'A'三. 编程题9.27#include#define N 81int main(){int counter[10] = {0};int iLoop = 0;char str[N];gets(str);while(str[iLoop]){if(str[iLoop] >= '0' && str[iLoop] <= '9') {counter[str[iLoop] - '0']++;}iLoop++;}for(iLoop=0; iLoop < 10; iLoop++){printf("%d - %d\n", iLoop, counter[iLoop]); }return 0;}9.28void fun(int array[], int arraysize, int start) {int iLoop;if(start < arraysize-1){if(start <=0){start = 1;}for(iLoop = start; iLoop < arraysize; iLoop++){array[iLoop-1] = array[iLoop];}}for(iLoop = 0; iLoop < arraysize; iLoop++){printf("No.%d = %d\n", iLoop, array[iLoop]);}}9.29int fun(int arry1[], int arry2[], int arrysize){int iLoop;int counter = 0;for(iLoop = 0; iLoop < arrysize; iLoop++){if(arry1[iLoop] % 2){arry2[counter++] = arry1[iLoop];}}return counter;}9.30void fun(char array[], int arraysize){int iLoop1;int iLoop2;char temp;/* 冒泡排序*/for(iLoop1 = 0; iLoop1 < arraysize - 1; iLoop1++){for(iLoop2 = 0; iLoop2 < arraysize - 1 - iLoop1; iLoop2++) {if(array[iLoop2] < array[iLoop2 + 1]){temp = array[iLoop2];array[iLoop2] = array[iLoop2 + 1];array[iLoop2 + 1] = temp;}}}}#includevoid fun(int array[], int arraysize, int inertNumber) {int iLoop;int iLoop2;if(array[0] < array[arraysize-1]){for(iLoop = 0; iLoop< arraysize; iLoop++){if(array[iLoop] > inertNumber){for(iLoop2 = arraysize - 1; iLoop2 >= iLoop; iLoop2--) {array[iLoop2 + 1] = array[iLoop2];}array[iLoop] = inertNumber;break;}}if(iLoop >= arraysize){array[arraysize] = inertNumber;}}else{for(iLoop = 0; iLoop< arraysize; iLoop++){if(array[iLoop] < inertNumber){for(iLoop2 = arraysize - 1; iLoop2 >= iLoop; iLoop2--) {array[iLoop2 + 1] = array[iLoop2];}array[iLoop] = inertNumber;break;}}if(iLoop >= arraysize){array[arraysize] = inertNumber;}}int main(){int iLoop;int a[20] = {7,6,5,3,2,1};for(iLoop = 0; iLoop < 6; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");fun(a, 6, 0);for(iLoop = 0; iLoop < 7; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");fun(a, 7, 4);for(iLoop = 0; iLoop < 8; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");fun(a, 8, 8);for(iLoop = 0; iLoop < 9; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");return 0;}9.32int fun(int number, int array[]) {int iLoop = 0;int iLoop2;int binLen;int midNumber;int div;int remain;midNumber = number;dodiv = midNumber/2;remain = midNumber%2;midNumber = div;array[iLoop++] = remain;}while(midNumber);binLen = iLoop;for(iLoop2 = 0, iLoop = binLen - 1; iLoop2 < iLoop; iLoop2++, iLoop--) {midNumber = array[iLoop2];array[iLoop2] = array[iLoop];array[iLoop] = midNumber;}return binLen;}9.33#include#include#define N 15void fun(int array[], int arraysize){int x;int iLoop;int iLoop2;for(iLoop = 0; iLoop < arraysize; iLoop++){iLoop2 = 0;x = rand()%20;do{if(x == array[iLoop2] && iLoop > 0){x = rand()%20;iLoop2 = 0;}iLoop2++;}while(iLoop2 < iLoop);array[iLoop] = x;}}int main(){int a[N];int iLoop;fun(a, N);for(iLoop = 0; iLoop < N; iLoop++){printf("%d\n", a[iLoop]);}return 0;}第十章一. 选择题10.1 C 10.2 B 10.3 C 10.4 B 10.5 C 10.6 A 10.7 C 10.8 A 10.9 C 10.10 C二. 填空题10.11 GFEDCB10.12 XYZ10.13 SO10.14 1010.15 Itis10.16 strlen(str)-1 j--10.17 310.18 goodgood!三. 编程题10.19char* mygets(char *str){int iLoop = 0;char ch;while((ch=getchar()) != '\n'){str[iLoop++] = ch;}str[iLoop] = '\0';return str;}char * myputs(char *str)int iLoop = 0;while(str[iLoop]){putchar(str[iLoop++]);}putchar('\n');return str;}10.20#include#includeint fun(char *str){int len;int iLoop1;int iLoop2;int result = 1;len = strlen(str);for(iLoop1 = 0, iLoop2 = len - 1; iLoop1 < iLoop2; iLoop1++, iLoop2--) {if(str[iLoop1] != str[iLoop2]){result = 0;break;}}return result;}int main(){char a[20] = "ABCDCBA";char b[20] = "ABCDEBA";printf("%d\n", fun(a));printf("%d\n", fun(b));return 0;}10.21char fun(char *str, int pos){int len;int iLoop;char ch;len = strlen(str);if(pos > len){return NULL;}ch = str[pos];for(iLoop = pos; iLoop < len - 1; iLoop++) {str[iLoop] = str[iLoop + 1];}str[len-1] = '\0';return ch;}第十一章一. 选择题11.1 D 11.2 B 11.3 A 11.4 C二. 填空题11.5 IJKLEFGHABCD11.6 711.7 811.8 *(s+j) i+1 i11.9 1711.10 (*fun)() (*fun)(a+i*h)/h mypoly三. 编程题11.11#include#include#define N 81int main(int argc, char **argv){char sig;int dig;int pos;char str[N] = {'\0'};char outStr[N] = {'\0'};if(argc < 2){sig = '-';dig = 10;}else{sig = argv[1][0];dig = argv[1][1] - '0';}printf("请输入一个字符串:"); gets(str);if(sig == '-'){pos = strlen(str) - dig;if(pos <= 0){pos = 0;}strcpy(outStr, str + pos);}else if(sig == '+'){strcpy(outStr, str);pos = strlen(outStr);if(pos > dig){pos = dig;}outStr[pos] = '\0';}printf("处理后的字串为:"); printf("%s\n", outStr);return 0;}11.12#include#includevoid movebin(char *bin){int len;int iLoop;len = strlen(bin);for(iLoop = len; iLoop > 0; iLoop--) {bin[iLoop] = bin[iLoop - 1];}return;}void fun(int n, char *bin){int pos;pos = strlen(bin);if(n == 0){return;}if(n == 1){movebin(bin);bin[0] = '1';return;}movebin(bin);bin[0] = (n%2) + '0';n /= 2;fun(n, bin);return;}int main(){int a = 4;char bin[50] = {""};fun(a, bin);printf("%s\n", bin);return 0;}11.13long fun(int n){if(n == 1){return n;}else{return fun(n-1) + n;}}int main(){int num;int sum;printf("请输入一个自然数:"); scanf("%d", &num);sum = fun(num);printf("结果是:%d\n", sum);return 0;}11.14#includeint fun(int n){if(n == 0 || n == 1){return 1;}else{return fun(n-1) + fun(n-2); }}int main(){int result;printf("请输入一个自然数:");scanf("%d", &num);result = fun(num);printf("斐波拉契级数为:%d\n", result);return 0;}第十二章一. 选择题12.1 B 12.2 B 12.3 A 12.4 C 12.5 D 12.6 B 12.7 A 12.8 A二. 填空题12.9 2,5,1,2,3,-212.10 2468第十三章一. 选择题13.1 A 13.2 C 13.3 B 13.4 C 13.5 D 13.6 D 13.7 D二. 填空题13.8 ar=9 ar=9 ar=1113.9 int* s *b三. 编程题13.10#define MYALPHA(C) ((C>='A' && C<='Z') || (C>='a' && C<='z')) ? 1 : 0 13.11#define SWAP(t,x,y) {t tmp; tmp=x; x=y; y=tmp;}13.12#include#includeint main(){int *p;int tmp;int iLoop;int iLoop2;p = (int *)malloc(sizeof(int)*3);scanf("%d%d%d", p,p+1,p+2);for(iLoop = 0; iLoop < 2; iLoop++){for(iLoop2 = 0; iLoop2 < 2 - iLoop; iLoop2++){if(*(p + iLoop2) > *(p + iLoop2 + 1)){tmp = *(p + iLoop2);*(p + iLoop2) = *(p + iLoop2 + 1);*(p + iLoop2 + 1) = tmp;}}}printf("%d %d %d\n", *p, *(p+1), *(p+2));free(p);p = NULL;return 0;}第十四章一. 选择题14.1 D 14.2 D 14.3 D 14.4 A 14.5 C 14.6 C 14.7 C 14.8 B二. 填空题14.9 struct link *next14.10 p->next m>p->data14.11 (struct list*) struct list struct list* struct list return h三. 编程题14.12#include#define N 3struct stud{char num[5], name[10];int s[4];double ave;};void readrec(struct stud array[], int size)int iLoop;for(iLoop=0; iLoop {scanf("%s%s%d%d%d%d", array[iLoop].num, array[iLoop].name, &array[iLoop].s[0], &array[iLoop].s[1],&array[iLoop].s[2], &array[iLoop].s[3]);array[iLoop].ave = (array[iLoop].s[0] + array[iLoop].s[1] +array[iLoop].s[2] + array[iLoop].s[3])/4.0;}return;}void writerec(struct stud array[], int size){int iLoop;for(iLoop=0; iLoop{printf("%s\t%s\t%d\t%d\t%d\t%d\t%f\n",array[iLoop].num,array[iLoop].name,array[iLoop].s[0],array[iLoop].s[1],array[iLoop].s[2],array[iLoop].s[3],array[iLoop].ave);}return;}int main(){struct stud stu[N];readrec(stu, N);writerec(stu, N);return 0;}14.13#include#include#define N 100struct node{int data;struct node* next;int seekMaxValue(struct node *pNode){int max;struct node* pMove;pMove = pNode;max = pMove->data;pMove = pMove->next;while(pMove){if(max < pMove->data){max = pMove->data;}pMove = pMove->next;}return max;}struct node* seekMaxValueAddress(struct node *pNode) {int max;struct node* maxAddress;struct node* pMove;pMove = pNode;max = pMove->data;maxAddress = pMove;pMove = pMove->next;while(pMove){if(max < pMove->data){max = pMove->data;maxAddress = pMove;}pMove = pMove->next;}return maxAddress;}int main()struct node* head;struct node* pNode;int iLoop;head = (struct node*)malloc(sizeof(struct node)); pNode = head;pNode->next = NULL;for(iLoop=0; iLoop {pNode->next = (struct node*)malloc(sizeof(struct node)); pNode = pNode->next;pNode->next = NULL;pNode->data = iLoop;}printf("%d\n", seekMaxValue(head->next));printf("%d\n", seekMaxValueAddress(head->next));return 0;}第十五章一. 选择题15.1 D 15.2 A 15.3 B 15.4 A二. 填空题15.515.6 a^a15.7 a|0xffff15.8 x|0xff0015.9 a=(>>2)15.10 ch|0x20第十六章一. 选择题16.1 B 16.2 C二. 填空题16.3 3 !feof(f1) f2 fclose(f1) fclose(f2)16.4 fopen(fname,"w") ch16.5 "r" !feof(fp) fgetc(fp)16.6 CCCCBBBBAAAA三. 编程题16.7#include#define N 10#define LEN 81int main(){char *str[N] = {"AAAAAAAAA", "BBBBBBBBB", "CCCCCCCCC", "DDDDDDDDD", "EEEEEEEEE", "FFFFFFFFF", "GGGGGGGGG", "HHHHHHHHH","IIIIIIIII","JJJJJJJJJ"};char str2[N][LEN];FILE *fp;int iLoop;fp = fopen("str.txt", "w");if(fp == NULL){printf("创建文件失败!\n"); return 1;}else{for(iLoop = 0; iLoop < N; iLoop++) {fputs(str[iLoop], fp);fputs("\n",fp);}}fclose(fp);fp = fopen("str.txt", "r");if(fp == NULL){printf("打开文件失败!\n"); return 1;}else{for(iLoop = 0; iLoop < N; iLoop++) {fgets(str2[iLoop], LEN - 1, fp);}}fclose(fp);for(iLoop = 0; iLoop < N; iLoop++) {printf("%s", str2[iLoop]);}return 0;}16.8#include#define N 10int main(){float num;int iLoop;FILE *fp;fp = fopen("num.bin", "wb+");if(fp == NULL){printf("创建文件失败!\n"); return 1;}/* 从键盘读入10个数并写文件*/ printf("请输入%d个数:", N);for(iLoop = 0; iLoop < N; iLoop++) {scanf("%f", &num);fwrite(&num, sizeof(num), 1, fp); }/* 文件指针回到开始处*/ rewind(fp);/* 从文件读出10个数并显示*/ for(iLoop = 0; iLoop < N; iLoop++) {fread(&num, sizeof(num), 1, fp); printf("%f\n", num);}/* 移文件指针到第四个数开始处*/ fseek(fp, 3L*sizeof(num), SEEK_SET); /* 读入一个新数据*/printf("请输入一个新数据:");scanf("%f", &num);fwrite(&num, sizeof(num), 1, fp);/* 文件指针回到开始处*/rewind(fp);/* 从文件读出10个数并显示*/for(iLoop = 0; iLoop < N; iLoop++) {fread(&num, sizeof(num), 1, fp); printf("%f\n", num);}/* 关闭文件*/fclose(fp);return 0;}。
C语言计算机二级改错题
功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
------------------------------------------------------*/#include "stdio.h"#define N 11main(){int i,j,t,number,a[N]={1,2,4,6,8,9,12,15,149,156};printf("please enter an integer to insert in the array:\n");/**********ERROR**********/scanf("%d",&number)printf("The original array:\n");for(i=0;i<N-1;i++)printf("%5d",a[i]);printf("\n");/**********ERROR**********/for(i=N-1;i>=0;i--)if(number<=a[i])/**********ERROR**********/a[i]>=a[i-1];else{a[i+1]=number;/**********ERROR**********/exit;}if(number<a[0]) a[0]=number;printf("The result array:\n");for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n");}1.scanf("%d",&number);2.for(i=N-2;i>=0;i--)for(i=N-2;0<=i;i--)3.a[i+1]=a[i];4.break;功能:用下面的和式求圆周率的近似值。
全国计算机等级考试二级C++模拟试题及解析10套
全国计算机等级考试二级C++模拟试题及解析(1)一、选择题1.算法的有穷性是指()。
答案:AA)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用2.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。
答案:DA)快速排序B)冒泡排序C)直接插入排序D)堆排序3.下列关于栈的叙述正确的是()。
答案:BA)栈按"先进先出"组织数据B)栈按"先进后出"组织数据C)只能在栈底插入数据D)不能删除数据4.一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是()。
答案:B A)12345ABCDEB)EDCBA54321C)ABCDE12345D)54321EDCBA5.下列叙述中正确的是()。
答案:DA)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D)循环队列中元素的个数是由队头指针和队尾指针共同决定6.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。
答案:C7.下列叙述中正确的是()。
答案:AA)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表D)链式存储结构比顺序存储结构节省存储空间8.在数据管理技术发展的三个阶段中,数据共享最好的是()。
答案:CA)人工管理阶段B)文件系统阶段C)数据库系统阶段D)三个阶段相同9.下列叙述中正确的是()。
答案:DA)栈是“先进先出”的线性表B)队列是“先进后出”的线性表C)循环队列是非线性结构D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构10.支持子程序调用的数据结构是()。
计算机等级考试二级C语言程序改错题(一)
一、下列给定程序中函数proc的功能是:取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。
例如,当s中的数为123456789时,t中的数为2468。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:#include <stdio.h>// ****found****void proc(long s,long *t){long sl=10;s/=10;*t=s%10;// ****found****while (s>0){s=s/100;*t=s%10*sl+*t;sl=sl*10;}}int main(){long s,t;printf("Please enter s:");scanf("%ld",&s);proc(s,&t);printf("The result is:%ld\n",t);return 0;}参考答案:(1)错误:void proc(long s,long t)正确:void proc(long s,long *t)(2)错误:while (s<0)正确:while (s>0)【解析】从主函数中实参可知,形参的第二个变量是长整型的指针变量。
因此“void proc(long s,long t)”应改为“void proc(long s,long *t)”;要从低位开始取出长整型变量s 中偶数位上的数,每次变量S要除以100,然后判断其是否大于0来决定是否要继续,因此“while(s>0)”。
给定程序中,函数proc()的功能是:使数组中的元素的值缩小5倍。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:#include <stdio.h>// ****found****void proc(double m[]){int i;for (i=0; i<10;i++){// ****found****m[i]=m[i]/5;}}int main(){int i;double m[10];printf("before calling\n");for (i=0;i<10;i++){m[i]=i+20;printf("%lf ",m[i]);}proc(m);printf("\nafter calling\n");for(i=0; i<10; i++)printf("%lf ",m[i]);printf("\n");return 0;}参考答案:(1)错误:int proc(int m[])正确:void proc(int m[])(2)错误:m[i]=m[i]%5;正确:m[i]=m[i]/5;【解析】由主函数中的函数调用可知,函数proc()没有返回值。
二级C改错题答案
29、下列给定程序中,函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给num1和num2分别输入49和21,则输出的最大公约数为7;若给num1和num2分别输入27和81,则输出的最大公约数为27。
32、下列给定程序中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。
第2处:y-=1/(i*i);应改为y-=1.0/(i*i);
7、下列给定程序中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。
第1处:p=j应改为p=j;
第2处:p=i;应改为p=j;
8、下列给定程序中,函数fun的功能是:在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用fun函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容为eABCDFGH。
第1处:b=a;应改为a=b;
第2处:return(a);应改为return(b);
30、下列给定程序中函数fun的功能是:计算正整数num的各位上的数字之积。例如,若输入252,则输出应该是20。若输入202,则输出应该是0。
第1处:long k;应改为long k=1;
第2处:num\=10;应改为num/=10;
第3处:return p;应改为return h;
计算机二级C语言改错题答案
第1题void fun (char *s, char *t){ int i, sl;sl = strlen(s);/************found************/for( i=0; i<=s1; i ++)t[i] = s[i];for (i=0; i<sl; i++)t[sl+i] = s[sl-i-1];/************found************/t[sl] = '\0';}答案:(1)for( i=0; i<=sl-1; i ++) (2)t[sl+i] = '\0'; 第2题/************found************/void fun (long s, long t){ long sl=10;*t = s % 10;while ( s > 0){ s = s/100;*t = s%10 * sl + *t;/************found************/sl = sl*100;}}main(){ long s, t;printf("\nPlease enter s:"); scanf("%ld", &s);fun(s, &t);printf("The result is: %ld\n", t);}答案:(1)void fun (long s, long *t) (2)sl = sl*10;第3题void fun ( int n, int *a ){ int i, j, p, t;for ( j = 0; j<n-1 ; j++ ){ p = j;/************found************/for ( i=j+1; i<n-1 ; i++ )if ( a[p]>a[i] )/************found************/t=i;if ( p!=j ){ t = a[j]; a[j] = a[p]; a[p] = t; }}}答案:(1)for ( i=j+1; i<n ; i++ ) (2)p=i; 第4题void fun (long s, long *t){ int d;long sl=1;*t = 0;while ( s > 0){ d = s%10;/************found************/if (d%2=0){ *t=d* sl+ *t;sl *= 10;}/************found************/s \= 10;}}答案:(1)if (d%2 = = 0) (2)s /= 10;第5题long fun (long num){/************found************/long k;do{ k*=num%10 ;/************found************/num\=10 ;} while(num) ;return (k) ;}答案:(1)long k=1; (2)num /=10 ;第6题/************found************/fun (char a){ if ( *a ){ fun(a+1) ;/************found************/printf("%c" *a) ;}}main( ){ char s[10]="abcd";printf("处理前字符串=%s\n处理后字符串=", s);fun(s); printf("\n") ;}答案:(1)fun (char *a) (2)printf("%c", *a) ; 第7题void fun(int a[], int n){ int i, j, t, p;for (j = 0 ;j < n-1 ;j++) {/************found************/p = jfor (i = j+1;i < n; i++)if(a[i] < a[p])/************found************/p = j;t = a[p] ; a[p] = a[j] ; a[j] = t;}}答案:(1)p = j ;(2)p = i;第8题fun ( char *p){ int i,t; char c[80];/************found************/For (i = 0,t = 0; p[i] ; i++)if(!isspace(*(p+i))) c[t++]=p[i];/************found************/c[t]="\0";strcpy(p,c);}答案:(1)f or (i = 0,t = 0; p[i] ; i++) (2)c[t]='\0'; 第9题char * fun (char *s, char *t ){char *p , *r, *a;/************found************/a = Null;while ( *s ){ p = s; r = t;while ( *r )/************found************/if ( r == p ){ r++; p++; }else break;if ( *r == '\0' ) a = s;s++;}return a ;}答案:(1) a = NULL; (2)if ( *r == *p ) 第10题void fun (char *s, char *t1, char *t2 , char *w) {char *p , *r, *a;strcpy( w, s );while ( *w ){ p = w; r = t1;/************found************/while ( r )if ( *r == *p ) { r++; p++; }else break;if ( *r == '\0' ){ a = w; r = t2;while ( *r ){/************found************/*a = *r; a++; r++}w += strlen(t2) ;}else w++;}}答案:(1)while ( *r ) (2)*a = *r; a++; r++; 第11题int fun (char *s, char *t){int n; char *p , *r;n = 0;while ( *s ){ p = s; r = t;while ( *r )if ( *r == *p ) {/************found************/r++; p++}else break;/************found************/if ( r == '\0' )n++;s++;}return n;}答案:(1)r++; p++;(2)if ( *r == '\0' )第12题/************found************/IsPrime ( int n );{ int i, m;m = 1;for ( i = 2; i < n; i++ )/************found************/if !( n%i ){ m = 0; break ; }return ( m );}main( ){ int j, k;printf( "\nPlease enter an integer number between 2 and 10000: " ); scanf( "%d", &k );printf( "\n\nThe prime factor(s) of %d is( are ):", k );for( j = 2; j <= k; j++ )if( ( !( k%j ) )&&( IsPrime( j ) ) ) printf( "\n %4d", j );printf("\n");}答案:(1)IsPrime ( int n ) (2)if ( n%i = =0)第13题long fun ( int k){/************found************/if k > 0return (k*fun(k-1));/************found************/else if ( k=0 )return 1L;elsereturn 1L;}答案:(1)if ( k > 0 )(2)else if ( k= =0 )第14题void fun ( char str[][10], int m, char *pt ){/************found************/Int k, q, i ;for ( k = 0; k < m; k++ ){ q = strlen ( str [k] );for (i=0; i<q; i++)/************found************/pt[i] = str[k,i] ;pt += q ;pt[0] = 0 ;}}答案:(1)i nt k, q, i ;if ( k > 0 )(2)pt[i] = str[k][i] ;第15题/**********found**********/void fun ( int a, b ){ int t;/**********found**********/t = b; b = a ; a = t;}main ( ){ int a, b;printf ( "Enter a , b : "); scanf ( "%d,%d", &a, &b );fun ( &a , &b ) ;printf (" a = %d b = %d\n ", a, b );}答案:(1)void fun ( int *a, int *b ) (2)t = *b; *b = *a ; *a = t; 第16题void fun ( int * a, int n ){ int i, m, t, k ;for(i=0;i<2;i++) {/**********found**********/m=0;for(k=i+1;k<n;k++)/**********found**********/if(a[k]>a[m]) k=m;t=a[i];a[i]=a[m];a[m]=t;}}答案:(1)m= i ; (2)if(a[k]>a[m]) m=k;第17题/**********found**********/void fun(char str, char ch ){ while ( *str && *str != ch ) str++;/**********found**********/if ( *str = = ch ){ str [ 0 ] = ch;/**********found**********/str[1] = '0';}}main( ){ char s[81], c ;printf( "\nPlease enter a string:\n" ); gets ( s );printf ("\n Please enter the character to search : " );c = getchar();fun(s, c) ;printf( "\nThe result is %s\n", s);}答案:(1)void fun(char *str, char ch ) (2)if (*str!= ch) (3)str[1] = '\0';评析】(1)fun函数中先设置了二个循环从字符串str中寻找字符ch,如果找到则中断循环并保留字符ch的地址,否则一直循环到串尾"。
《全国计算机等级考试二级教程——C语言程序设计》课后习题详细答案
《全国计算机等级考试二级教程——C语言程序设计》习题分析与详细解答第一章程序设计基本概念习题分析与解答1.1 【参考答案】 EXE1.2 【参考答案】[1] .C [2] .OBJ [3] .EXE1.3 【参考答案】[1]顺序结构[2]选择结构[3]循环结构第二章 C程序设计的初步知识习题分析与解答一、选择题2.1 【参考答案】 B)2.2 【参考答案】 D)2.3 【参考答案】 B)2.4 【参考答案】 A)2.5 【参考答案】 C)2.6 【参考答案】 A)2.7 【参考答案】 B)2.8 【参考答案】 B)2.9 【参考答案】 D)2.10 【参考答案】 C)2.11 【参考答案】 B)2.12 【参考答案】 B)2.13 【参考答案】 A)二、填空题2.14 【参考答案】[1] 11 [2] 122.15 【参考答案】[1] 4.2 [2] 4.22.16 【参考答案】[1] { [2] } [3]定义[4]执行2.17 【参考答案】[1]关键字[2]用户标识符2.18 【参考答案】[1] int [2] float [3] double2.19 【参考答案】 float a1=1.0, a2=1.0;或float a1=1, a2=1;(系统将自动把1转换为1.0)2.20 【参考答案】存储单元2.21 【参考答案】 3.52.22 【参考答案】[1] a*b/c [2] a/c*b [3] b/c*a2.23 【参考答案】把10赋给变量s2.24 【参考答案】[1]位[2] 1位二进制数据(0或1)2.25 【参考答案】[1] 8 [2]127 [3]01111111 [4]-128 [ 5 ] 10000000 2.26 【参考答案】[1] 32767 [2] -32768 [3] 10000000000000002.27 【参考答案】[1]十[2]八[3]十六三、上机改错题2.28 【分析与解答】第1行的错误:(1) include是一个程序行,因此在此行的最后不应当有分号(;)。
计算机二级C语言100套上机填空题答案和改错题答案
填空题答案第1题答案第1处填空:n>1或1<n第2处填空:n-1第3处填空:1或1l或1L第2题答案第1处填空:n==0或0==n或!n第2处填空:n==1或1==n第3处填空:fun(n-1)+fun(n-2)或fun(n-2)+fun(n-1)第3题答案第1处填空:n--或--n或n-=1或n=n-1第2处填空:s[i]=s[n]或*(s+i)=*(s+n)第3处填空:s[n]=t或*(s+n)=t第4题答案第1处填空:i<=n或n>=i第2处填空:||第3处填空:1.0或(double)1第5题答案第1处填空:r*r第2处填空:&x第3处填空:x第6题答案第1处填空:<=第2处填空:n++或n+=1或n=n+1 第3处填空:return s或return (s) 第7题答案第1处填空:n%10第2处填空:break第3处填空:break第8题答案第1处填空:&num[i]或num+i第2处填空:max<num[i]?或num[i]>max?第3处填空:num[i]!=0或0!=num[i] 第9题答案第1处填空:(*a)++或++(*a)或*a=*a+1或*a+=1第2处填空:(*b)++或++(*b)或*b=*b+1或*b+=1第3处填空:upper,lower第10题答案第1处填空:max=a第2处填空:max=b第3处填空:max=c第11题答案第1处填空:1第2处填空:s[k]或*(s+k)第3处填空:c 第12题答案第1处填空:tt[i]<='Z'或'Z'>=tt[i]第2处填空:32或'a'-'A'第3处填空:tt第13题答案第1处填空:char*fun(int n)第2处填空:2第3处填空:n%i==0或!(n%i)或0==n%i第14题答案第1处填空:*p或*p!='\0'或*p!=0第2处填空:i++或++i或i+=1或i=i+1第3处填空:'\0'或0第15题答案第1处填空:!=第2处填空:str[1]或*(str+1)第3处填空:s,c第16题答案第1处填空:n%100!=0或n%100或0!=n%100第2处填空:n%400==0或!(n%400)或0==n%400第3处填空:flag第17题答案第1处填空:n第2处填空:else第3处填空:a,b第18题答案第1处填空:*p==t或t==*p第2处填空:bb[n++]=i第3处填空:n第19题答案第1处填空:score[i]或*(score+i)第2处填空:below第3处填空:below[i]或*(below+i)第20题答案第1处填空:i第2处填空:j第3处填空:aa,&n第21题答案第1处填空:j++或++j或j+=1或j=j+1第2处填空:s[i]=t1[i]第3处填空:j第22题答案第1处填空:&&第2处填空:0第3处填空:s[j]或*(s+j)第23题答案第1处填空:int x[]或int*x第2处填空:sum+=x[i]或sum=sum+x[i]第3处填空:sum/n第24题答案第1处填空:a第2处填空:a第3处填空:b第25题答案第1处填空:n/2第2处填空:i第3处填空:a[n-i-1]第26题答案第1处填空:i=1第2处填空:&&第3处填空:--j或j-1第27题答案第1处填空:j=2第2处填空:i第3处填空:j第28题答案第1处填空:1第2处填空:s*i或i*s第3处填空:0第4处填空:s+fun(k)或fun(k)+s第29题答案第1处填空:0第2处填空:i<=x或x>=i第30题答案第1处填空:--i或i--或i-=1或i=i-1第2处填空:s[i]-'0'第3处填空:t*10+k或k+t*10或10*t+k或k+10*t第31题答案第1处填空:*(p1+i)或p1[i]或*(p1+i)!=0或p1[i]!=0第2处填空:*p2或p2[0]或*p2!=0或p2[0]!=0第3处填空:*p2++第32题答案第1处填空:sum+=x[i]或sum=sum+x[i]第2处填空:avg*1000或1000*avg第3处填空:(avg+5)/10或(5+avg)/10第33题答案第1处填空:1第2处填空:i第3处填空:a[p+i]或*(a+p+i)第34题答案第1处填空:bb[i]=0或*(bb+i)=0第2处填空:bb[5]++或++bb[5]或bb[5]=bb[5]+1或bb[5]+=1第3处填空:p++;或++p;或p+=1;或p=p+1;第35题答案第1处填空:i<*num或*num>i第2处填空:n++或++n或n+=1或n=n+1第3处填空:*num=n第36题答案第1处填空:&&第2处填空:s[i]-'0'第3处填空:n第37题答案第1处填空:xx[i]%10第2处填空:bb[n++]=xx[i]第3处填空:n第38题答案第1处填空:n/100%10第2处填空:"yes!"第3处填空:"no!"第39题答案第1处填空:"%d",&n第2处填空:str2[i]=str1[i];第3处填空:str2第40题答案第1处填空:"%s",str1第2处填空:%c第3处填空:str2第41题答案第1处填空:"%ld",&n第2处填空:n=-n;或n*=-1;第3处填空:"%ld",n第42题答案第1处填空:*p或p[0]第2处填空:default:b[10]++;第3处填空:p++;或p+=1;或p=p+1;或++p;第43题答案第1处填空:*p或*p!=0或0!=*p 第2处填空:bb[*p-'0']++或bb[*p-'0']+=1第3处填空:num[j]=bb[i]第44题答案第1处填空:0第2处填空:||第45题答案第1处填空:s1-i-1或s1-1-i第2处填空:2*s1或s1*2第46题答案第1处填空:*k第2处填空:s[i]>max或max<s[i] 第3处填空:i第47题答案第1处填空:xx[i]%10第2处填空:bb[n++]=xx[i]第3处填空:n第48题答案第1处填空:n>0或0<n第2处填空:n%10+'0'或'0'+n%10第3处填空:str[i]='\0'或str[i]=0第49题答案第1处填空:disc<0或0>disc第2处填空:sqrt第3处填空:sqrt第50题答案第1处填空:s第2处填空:*p++第3处填空:*(p)或*p或*p!=0第51题答案第1处填空:x>y或y<x第2处填空:x>z或z<x第3处填空:y>z或z<y第52题答案第1处填空:"out52.dat","w"第2处填空:fputc(ch,fp)第3处填空:fclose(fp)第53题答案第1处填空:i第2处填空:p->next=s第3处填空:p->next第54题答案第1处填空:*p1<*p2或*p2>*p1第2处填空:*p1>*p2或*p2<*p1第3处填空:'\0'或0第55题答案第1处填空:flag=1第2处填空:j%i==0或0==j%i或!(j%i)第3处填空:flag==1或1==flag第56题答案第1处填空:&&第2处填空:fputc(ch,fp1)第3处填空:fclose(fp)第57题答案第1处填空:double第2处填空:j第3处填空:1.0/t或(double)1/t第58题答案第1处填空:&n第2处填空:i=1第3处填空:f*=i或f=f*i或f=i*f第59题答案第1处填空:sum=0第2处填空:sum+=n或sum=sum+n或sum=n+sum第3处填空:ld第60题答案第1处填空:i<n或n>i第2处填空:j<n-1或n-1>j第61题答案第1处填空:bb[i]=0或*(bb+i)=0第2处填空:bb[i]+=score[i][j]或bb[i]=bb[i]+score[i][j]或bb[i]=score[i][j]+bb[i]第62题答案第1处填空:"%c",&str[i]或"%c",str+i第2处填空:str[i]!='*'或*(str+i)!='*'第3处填空:"%c",str[j]或"%c",*(str+j)第63题答案第1处填空:STU第2处填空:h第3处填空:h第64题答案第1处填空:str1[i]!=''或''!=str1[i]第2处填空:i++或++i或i+=1或i=i+1第65题答案第1处填空:bb[i][j]=1第2处填空:bb[i][j]=0第66题答案第1处填空:j>i或i<j第2处填空:bb[j]=bb[j-1]第3处填空:break第67题答案第1处填空:p=str第2处填空:p[i]++或++p[i]或p[i]+=1或p[i]=p[i]+1第3处填空:s[i]='\0'或s[i]=0第68题答案第1处填空:break第2处填空:'\0'或0第3处填空:*p++第69题答案第1处填空:<第2处填空:*p2或p2[0]第3处填空:str1第70题答案第1处填空:*(pstr+j)或pstr[j]第2处填空:pstr[j]或*(pstr+j)第3处填空:p第71题答案第1处填空:std[3]或std[]或*std第2处填空:PERSON第3处填空:std第72题答案第1处填空:N第2处填空:M第3处填空:bb[i]/N或*(bb+i)/N第73题答案第1处填空:bb[i][j]=0第2处填空:1第3处填空:j==n-1-i或j==n-i-1 第74题答案第1处填空:*std或std[0]第2处填空:std[i].age第3处填空:第75题答案第1处填空:&n第2处填空:t*i或i*t第3处填空:s+t或t+s第76题答案第1处填空:i第2处填空:s[j]=s[i]第77题答案第1处填空:N-1第2处填空:bb[n++]=aa[i]第3处填空:i,bb[i]第78题答案第1处填空:fun(char s[],int n)或fun(char*s,int n)第2处填空:j=0第3处填空:s[j]='\0'或s[j]=0第79题答案第1处填空:aa[i]%2==0或0==aa[i]%2或aa[i]%2第2处填空:i<k或k>i第80题答案第1处填空:--i或i--或i-=1或i=i-1 第2处填空:bb[j]=bb[i]第81题答案第1处填空:sum=0第2处填空:t[i][i]第3处填空:1第82题答案第1处填空:i%10第2处填空:g*g*g==i或i==g*g*g 第83题答案第1处填空:break;第2处填空:i++或++i或i+=1或i=i+1第3处填空:'\0'或0第84题答案第1处填空:&&第2处填空:i,j第85题答案第1处填空:[N]第2处填空:t[i][j]第3处填空:t[j][i]第86题答案第1处填空:N第2处填空:N-1第3处填空:0第87题答案第1处填空:&& 第2处填空:g+第88题答案第1处填空:s[i]或s[i]!=0或0!=s[i]第2处填空:s[i]==ch或ch==s[i]第3处填空:return n第89题答案第1处填空:s[i]!='\0'或s[i]或s[i]!=0第2处填空:32或'a'-'A'第3处填空:i++或++i或i+=1或i=i+1第90题答案第1处填空:STU第2处填空:std[i].num第3处填空:std[i]第91题答案第1处填空:i=1,j=0或j=0,i=1第2处填空:bb[j++]=i第3处填空:return j第92题答案第1处填空:str[i+1]或str[i+1]!='\0'或str[i+1]!=0第2处填空:str[i]=ch第93题答案第1处填空:aa[max]<aa[i]或aa[i]>aa[max]第2处填空:aa[min]>aa[i]或aa[i]<aa[min]第3处填空:aa[max]=aa[min]第94题答案第1处填空:i++或++i或i+=1或i=i+1第2处填空:s[j++]=s[i]第3处填空:s[j]='\0'或s[j]=0第95题答案第1处填空:0.0或0或(double)0第2处填空:n第3处填空:s第96题答案第1处填空:aa[k++]=t或aa[k]=t,k++或aa[k]=t;k++第2处填空:i<j或j>i第97题答案第1处填空:break第2处填空:t[i]第3处填空:u[ul]第98题答案第1处填空:s[i]!='\0'或s[i]或s[i]!=0第2处填空:25第3处填空:1第99题答案第1处填空:j%i==0或!(j%i)或0==j%i第2处填空:flag==1或flag或1==flag第3处填空:aver/n第100题答案第1处填空:k=0第2处填空:||第3处填空:s[k]='\0'或s[k]=0改错题答案第1题答案第1处:IsPrime(int n);应改为IsPrime(int n)第2处:if!(n%i)应改为if(!(n%i))第2题答案第1处:int k=1;应改为int k=0;第2处:while(*p!=*q)应改为while(*p||*q)第3题答案第1处:s[j]=s[i];应改为s[j++]=s[i];第2处:s[j]="\0";应改为s[j]='\0';第4题答案第1处:void fun(char*s,int a,int b)应改为void fun(char*s,int*a,int*b)第2处:a++;应改为(*a)++;第3处:b++;应改为(*b)++;第5题答案第1处:a[i+1]=a[i];应改为a[i]=a[i+1];第6题答案第1处:for(i=2;i<m;i++)应改为for(i=2;i<=m;i++)第2处:y-=1/(i*i);应改为y-=1.0/(i*i);第7题答案第1处:p=j应改为p=j;第2处:p=i;应改为p=j;第8题答案第1处:void fun(char*p);应改为void fun(char*p)第2处:p=q+i;应改为q=p+i;第9题答案第1处:t=s[k];应改为t+=s[k];第2处:*aver=&ave;应改为*aver=ave;第10题答案第1处:void fun(char*s,*t1,*t2,*w)应改为voidfun(char*s,char*t1,char*t2,char*w)第2处:while(r)应改为while(*r)第11题答案第1处:n=*p-'o';应改为n=*p-'0';第2处:n=n*7+*p-'o';应改为n=n*8+*p-'0';第12题答案第1处:a=NuLL;应改为a=NULL; 第2处:if(r==p)应改为if(*r==*p) 第13题答案第1处:t+=1.0/k;应改为t+=1.0/i; 第2处:应填return t;第14题答案第1处:int r;应改为double r;第2处:while(fabs(n-m)<0.001)应改为while(fabs(n-m)>0.001)第15题答案第1处:void fun(char str,char ch)应改为void fun(char*str,char ch)第2处:if(*str==ch)应改为if(*str=='\0')第3处:str[1]='0';应改为str[1]='\0';或str[1]=0;第16题答案第1处:p->next=NULL;应改为p=s; 第2处:s->data=rand()%m;应改为s->data=rand()%(m-1);第3处:return p;应改为return h; 第17题答案第1处:if((k%13=0)||(k%17=0))应改为if((k%13==0)||(k%17==0))第2处:应填}第18题答案第1处:void fun(int a,int b)应改为void fun(int*a,int*b)第2处:t=b;b=a;a=t;应改为t=*b;*b=*a;*a=t;第19题答案第1处:void fun(long s,long t)应改为void fun(long s,long*t)第2处:while(s<0)应改为while(s>0) 第20题答案第1处:void fun(int a[],int m)应改为int fun(int a[],int m)第2处:if(m>=a[mid])应改为if(m>a[mid])第21题答案第1处:p=h;应改为p=h->next;第2处:p=h->next;应改为p=p->next;第22题答案第1处:for(i=2;i<m;i++)应改为for(i=2;i<=m;i++)第2处:y+=1/(i*i);应改为y+=1.0/(i*i);第23题答案第1处:int fun(n)应改为int fun(int n)第2处:if(n=1)应改为if(n==1)第24题答案第1处:if(r==p)应改为if(*r==*p) 第2处:if(r=='\0')应改为if(*r=='\0')第25题答案第1处:if n==0应改为if(n==0)第2处:result=n--;应改为result*=n--;第26题答案第1处:应填sum=0;第2处:scanf("%d,",a[i][j]);应改为scanf("%d,",&a[i][j]);第27题答案第1处:t=0;应改为t=1.0;第2处:while(t<=eps)应改为while(t>=eps)第28题答案第1处:s=p;应改为p=s;第2处:应填p++;或++p;或p+=1;或p=p+1第3处:a[i]='0';应改为a[i]='\0';或a[i]=0;第29题答案第1处:b=a;应改为a=b;第2处:return(a);应改为return(b);第30题答案第1处:long k;应改为long k=1;第2处:num\=10;应改为num/=10;第31题答案第1处:if((tt[i]>='a')||(tt[i]<='z'))应改为if((tt[i]>='a')&&(tt[i]<='z'))第2处:tt[i]+=32;应改为tt[i]-=32;第32题答案第1处:if(i+1%5==0)应改为if((i+1)%5==0)第33题答案第1处:while(*s!='@')应改为while(*s)或while(*s!='\0')或while(*s!=0)第2处:(*s)++;应改为s++;第34题答案第1处:t=0;应改为*t=0;第2处:if(d%2==0)应改为if(d%2!=0)第35题答案第1处:if(p=='')应改为if(*p=='')第2处:*p=toupper(*(p-1));应改为*(p-1)=toupper(*(p-1));第36题答案第1处:j=1;应改为j=0;第2处:while(t!=0&&m!=0&&n!=0)应改为while(t!=0||m!=0||n!=0)第37题答案第1处:*r=t;应改为r=t;或r=&t[0];第2处:应填r=t;或r=&t[0];第38题答案第1处:t=x;x=y;应改为t=*x;*x=y;第2处:return(y);应改为return(t);或return t;第39题答案第1处:void fun(char s,char t)应改为void fun(char*s,char*t)第2处:t[2*d-1]='\0';应改为t[2*d]='\0';或t[d+i]='\0';或t[2*d]=0;或t[d+i]=0;第40题答案第1处:for(i=j+1;i<n-1;i++)应改为for(i=j+1;i<n;i++)第2处:t=i;应改为p=i;第41题答案第1处:while(p->next)应改为while(p!=NULL)第2处:p=h->next;应改为p=p->next;第42题答案第1处:if(i%2&&s[i]%2==0)应改为if(i%2||s[i]%2==0)或if(i%2!=0||s[i]%2==0)第2处:t[i]='\0';应改为t[j]='\0';或t[j]=0;第43题答案第1处:k=n;应改为k=i;第2处:b=k/10;应改为b=k%10;第44题答案第1处:fun(int**a,int m)应改为voidfun(int(*a)[M],int m)第2处:a[j][k]=k*j;应改为a[j][k]=(k+1)*(j+1);第45题答案第1处:void fun(char*s,t1,t2,w)应改为voidfun(char*s,char*t1,char*t2,char*w)第2处:while(w)应改为while(*w)第46题答案第1处:fun(int n)应改为doublefun(int n)第2处:return sum应改为returnsum;第47题答案第1处:void fun(int*a,int n);应改为void fun(int*a,int n)第2处:m=0;应改为m=i;第48题答案第1处:fun(char(*sq)[N])应改为char*fun(char(*sq)[M])第2处:return sq;应改为return sp;第49题答案第1处:*t=malloc(sizeof(STU));应改为t=(STU*)malloc(sizeof(STU)*m);第2处:t[k].num=b[j].num;应改为strcpy(t[k].num,b[j].num);第50题答案第1处:t[i]=s[s1-i];应改为t[i]=s[s1-i-1];或t[i]=s[s1-1-i];第51题答案第1处:void fun(char str[][],int m,char*pt)应改为void fun(char str[][10],int m,char*pt)第2处:pt[i]=str[k,i];应改为pt[i]=str[k][i];第52题答案第1处:int fun(double x[],int n)应改为int fun(double x[],int n){第53题答案第1处:switch(g);应改为switch(g) 第2处:case 1;应改为case 1:第54题答案第1处:double fun(char*s,char*t)应改为char*fun(char*s,char*t)第2处:(*ss)++;应改为ss++;第3处:(*tt)++;应改为tt++;第55题答案第1处:y=0;应改为y=1;第2处:d=i-a;应改为d=a-i;第56题答案第1处:void fun(char(*pstr)[6])应改为void fun(char*pstr[6])第2处:if(strcmp(*(pstr+i),pstr+j)>0)应改为if(strcmp(*(pstr+i),*(pstr+j))>0)第3处:*(pstr+i)=pstr+j;应改为*(pstr+i)=*(pstr+j);第57题答案第1处:while(i>j)应改为while(i<j)或while(j>i)第2处:c=0;应改为*c='\0';或*c=0; 第58题答案第1处:for(i=0;i<=s1;i++)应改为for(i=0;i<s1;i++)第2处:t[s1]='\0';应改为t[2*s1]='\0'; 第59题答案第1处:void fun(char*s,int num[5]);应改为void fun(char*s,int num[5]) 第2处:num[i]=0;应改为num[k]=0; 第3处:switch(s)应改为switch(*s) 第60题答案第1处:if(i%k!=0)应改为if(i%k==0)第2处:if(k<i)应改为if(k>=i)第61题答案第1处:fun(int m)应改为double fun(int m)第2处:for(i=100,i<=m,i+=100)应改为for(i=100;i<=m;i+=100) 第62题答案第1处:break应改为break;第63题答案第1处:i=1;应改为i=0;第2处:while(i<3||*p)应改为while(i<3&&*p)第3处:b[k]='';应改为b[k++]='';第64题答案第1处:c=c-32;应改为c=c+32;第2处:c=c-5;应改为c=c+5;第65题答案第1处:void fun(long s,long t)应改为void fun(long s,long*t)第2处:s1=s1*100;应改为s1=s1*10;第66题答案第1处:fun(int n)应改为doublefun(int n)第2处:b+=c;应改为b=c;第67题答案第1处:fun(double a,double x0)应改为double fun(double a,double x0)第2处:if(abs(x1-x0)>=1e-6)应改为if(fabs(x1-x0)>=1e-6)第68题答案第1处:return 1;应改为return 3;第2处:return 3;应改为return 1;第69题答案第1处:void upfst(char p)应改为void upfst(char*p)第70题答案第1处:int fun(int*b);应改为intfun(int*b)第2处:for(k=10;k<=55;k++)应改为for(k=1;k<55;k++)第3处:return k;应改为return i;第71题答案第1处:if k>1应改为if(k>1)第72题答案第1处:int fun(char*str,*substr)应改为int fun(char*str,char*substr)第2处:for(i=0,str[i],i++)应改为for(i=0;str[i];i++)第73题答案第1处:t=1.0-1/i;应改为t-=1.0/i;或t=t-1.0/i;或t-=(double)1/i;第2处:应填return t;第74题答案第1处:c=aa[i];应改为ch=aa[i];第75题答案第1处:int fun(int m,int xx[][])应改为int fun(int m,int xx[][M])第2处:printf("%4f",xx[i][j]);应改为printf("%4d",xx[i][j]);第76题答案第1处:long s1=0;应改为long s1=1;第2处:s\=10;应改为s/=10;第77题答案第1处:void fun(char a)应改为voidfun(char*a)第78题答案第1处:k++应改为k++;第2处:if(m=k)应改为if(m==k)第79题答案第1处:c[t]="\0";应改为c[t]='\0';第80题答案第1处:fun(int n)应改为doublefun(int n)第2处:s=s+(Double)a/b;应改为s=s+(double)a/b;第81题答案第1处:fun(int n)应改为doublefun(int n)第2处:for(i=2;i<n;i++)应改为for(i=2;i<=n;i++)第82题答案第1处:result*=--n;应改为result*=n--;第2处:应填return result;第83题答案第1处:void fun(int x,int y)应改为void fun(int*x,int*y)第2处:t=x;x=y;y=t;应改为t=*x;*x=*y;*y=t;第84题答案第1处:void fun(int m,int k);应改为void fun(int m,int k)第2处:aa[i]=m/k;应改为aa[i]=m%k;第3处:printf("%d",aa[i]);应改为printf("%d",aa[i-1]);第85题答案第1处:s[j]=s[i];应改为s[j++]=s[i];第2处:s[i]='\0';应改为s[j]='\0';第86题答案第1处:float*k;应改为float k;第2处:if(*s<*p)应改为if(*s>*p)第87题答案第1处:void fun(int a)应改为voidfun(int a[M])或void fun(int a[])或void fun(int*a)第2处:a[j]=a[j+1];应改为a[j]=a[j-1];第88题答案第1处:for(i=0;i<=3;i++)应改为for(i=1;i<=3;i++)第2处:if(k>=1&&k<=6)应改为if(k>=0&&k<=6)*zero=count; 第89题答案第1处:for(i=1;i<y;i++)应改为for(i=1;i<=y;i++)第2处:t=t/1000;应改为t=t%1000;第90题答案第1处:d=0;应改为d=1;第2处:s=1;应改为s=0;第3处:s=s/10;应改为d=d/10;第91题答案第1处:for(i=strlen(t);i;i--)应改为for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)第2处:if(t[j]<t[j+1])应改为if(t[j]>t[j+1])第92题答案第1处:long s=0,t=1;应改为longs=0,t=0;第2处:for(j=0;j<=n;j++)应改为for(j=0;j<n;j++)第3处:t=t%10;应改为t=t/10;第93题答案第1处:while(t>=num)应改为while(fabs(t)>=num)第2处:t=s%n;应改为t=s/n;第94题答案第1处:int sum=0.0;应改为doublesum=0.0;第2处:sum\=c;应改为sum/=c;第95题答案第1处:s=s+(n+1)/n;应改为s=s+(double)(n+1)/n;第2处:return s;应改为return t;第96题答案第1处:fun(int k)应改为doublefun(int k)第2处:return s应改为return s;第97题答案第1处:f(double x)应改为doublef(double x)第2处:return s应改为return s;第98题答案第1处:#define FU(m,n)(m/n)应改为#define FU(m,n)(m)/(n)第2处:Return(value);应改为return(value);第99题答案第1处:int i,j,k,sum;应改为inti,j=0,k,sum;第2处:if(sum%4=2)应改为if(sum%4==2)第100题答案第1处:if(t=0)应改为if(t==0)第2处:zero=count;应改为。
《全国计算机等级考试二级教程C语言程序设计》
《全国计算机等级考试二级教程——C语言程序设计》课后题及参考答案第一章程序设计基本概念1.1 在TRUBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是______。
答案:.exe1.2 C语言源程序文件的后缀是_____,经过编译后,生成文件的后缀是_____,经过连接后,生成文件的后缀是__ ___。
答案:.c .obj .exe1.3 结构化程序由_____、_____、_____三种基本结构组成。
答案:顺序、选择、循环第二章 C程序设计的初步知识一、选择题2.1 以下选项中正确的整型常量是A)12. B)-20 C)1,000 D)4 5 6答案:B2.2 以下选项中正确的实型常量是A)0 B)3. 1415 C)0.329×10(2)(10的2次方)D).871答案:D2.3 以下选项中不正确的实型常量是A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2答案:B2.4 以下选项中不合法的用户标识符是A)abc.c B)file C)Main D)PRINTF答案:A2.5 以下选项中不合法的用户标识符是A)_123 B)printf C)A$ D)Dim答案:C2.6 C语言中运算对象必需是整型的运算符是A)% B)/ C)! D)**答案:A2.7 可在C程序中用作用户标识符的一组标识符是A)void define WORDB)as_b3 _123 IfC)For -abc caseD)2c DO SIG答案:B2.8 若变量已正确定义并赋值,符合C语言语法的表达式是A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b答案:B2.9 以下叙述中正确的是A)a是实型变量,C允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值。
B)在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
所属年份:2010.9;2011.3;2012.3下列给定程序中,函数fun 的功能是:先将字符串s 中的字符按正序存放到字符串t 中,然后把s 中的字符按逆序连接到字符串t 的后面。
例如,当s 中的字符串为"ABCDE"时,则t 中的字符串应为"ABCDEEDCBA"。
答案: (1)for ( i =0; i<sl ;i ++) (2)t[2*s1]='\0'所属年份:2012.3;下列给定程序中,函数fun 的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII 码值升序排序后输出。
例如,若输入"edcba",则应输出"abcde"。
答案: (1)for(i =strlen(t)-1; i>0; i --) (2)if (t[j] > t[j +1])所属年份:2010.9;2012.3下列给定程序中函数fun 的功能是:统计substr 所指的子符串在str 所指的字符串中出现的次数。
例如,若字符串为aaas 1kaaas ,子字符串为as ,则应输出2。
答案: (1)for(i =0;str[i];i ++) (2)if(substr[k +1]== '\0')所属年份:2011.9;2012.3;下列给定程序中函数fun 的功能是:用冒泡法对6个字符串进行升序排列。
答案: (1)for (j = i + 1; j < 6; j ++) (2)*(pstr + i ) = *(pstr + j);所属年份:2011.9;2012.3下列给定程序中函数fun 的功能是:根据整型形参m ,计算如下公式的值。
例如,若m 的值为5,则应输出1.463611。
答案: (1)for(i =2;i<=m ;i ++) (2)y +=1.0/(i*i);所属年份:2010.9;2011.3;2012.3;下列给定程序中函数fun 的功能是:删除指针p 所指字符串中的所有空白字符(包括制表符、回车符及换行符)。
输入字符串时用'#'结束输入。
答案: (1)for(i =0,t =0;p[i];i ++) (2)c[t]= '\0';所属年份:2011.3;2011.9;下列给定程序中,函数fun 的功能是:根据整型参数m ,计算如下公式的值。
y =1/(100×100)+1/(200×200)+1/(300×300)+…+1/(m×m)例如,若m =2000,则应输出0.000160。
答案: (1)double fun(int m) (2)for(i =100;i<=m ;i +=100)所属年份:2012.3下列给定程序中,函数fun 的功能是:根据整形参m 的值,计算如下公式的值。
例如,若m 中的值为5,则应输出0.536389。
答案: (1)for(i = 2 ; i<= m ; i ++) (2)y -= 1.0/(i * i);所属年份:2010.9;2011.3; 下列给定程序中函数fun 的功能是:求三个数的最小公倍数。
11111223344y m m =+++++⨯⨯⨯⨯……11112233t m m =----⨯⨯⨯L例如,若给主函数中的变量x1、x2、x3分别输入15112,则输出结果应当是330。
答案: (1)fun(int x,int y, int z) (2)return j;所属年份:2011.3下列给定程序中函数fun的功能是:从N个字符串中找出最长的串,并将其地址作为函数值返回。
各字符串在主函数中输入,并放入一个字符串数组中。
答案: (1)char *fun(char (*sq)[M]) (2)return sp;所属年份:2011.3下列给定程序中函数fun的功能是:根据以下公式求π值,并作为函数值返回。
例如,当给指定精度的变量eps输入0.0005时,应输出Pi=3.140578。
π/2=1+1/3+1/3×2/5+1/3×2/5×3/7+1/3×2/5×3/7×4/9+……答案: (1)t=1.0; (2)return(s*2);所属年份:2011.3;2011.9下列给定程序中,函数fun的功能是:计算整数n的阶乘。
答案: (1)result*=n--; (2)return result;所属年份:2011.3下列给定程序中,函数fun的功能是:根据输入的三个边长(整型值),判断能否构成三角形。
若能构成等边三角形,则返回3;若是等腰三角形,则返回2;若能构成三角形则返回1;若不能,则返回0。
答案: (1)return 3; (2)return 1;所属年份:2010.9;2011.3;2011.9;下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。
t=1/2-1/3-…-1/m例如,若输入5,则应输出-0.283333。
答案: (1)t-=1.0/i; (2)return t;所属年份:2012.3;下列给定程序中,函数fun的功能是:求S的值。
S=(22/(1×3))×(42/(3×5))×(62/(5×7))×…×(2k)2/((2k-1)×(2k+1))例如,当k为10时,函数的值应为1.533852。
答案: (1)double fun(int k) (2)return s ;所属年份:2012.3;已知一个数列从0项开始的前3项:0、0、1,以后的各项都是其相邻的前3项之和。
下列给定的程序中,函数fun的功能是:计算并输出该数列前n项的平方根之和sum。
n的值通过形参传入。
例如,当n=10时,程序的输出结果应为23.197745。
答案: (1)double fun(int n) (2)return sum ;所属年份:2012.3;下列给定程序中函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如,当s中的数为87653142时,t中的数为7531。
答案: (1)*t=0; (2)if(d%2!=0)所属年份:2010.9;2011.3;2012.3下列给定程序中函数fun 的功能是:计算正整数num 各位上的数字之积。
例如,若输入252,则输出应该是20。
若输入202,则输出应该是0。
答案: (1)long k =1; (2)num /=10;所属年份:2010.9;2011.9;下列给定程序中函数fun 的功能是:把从主函数中输入的3个数,最大的数放在a 中,中间的数放在b 中,最小的数放在c 中。
例如,若输入的数为:55 12 34,输出的结果应当是:a =55.0,b =34.0,c =12.0。
答案:(1)float k ; (2)if(*a< *c)所属年份:2011.3下列给定程序中函数fun 的功能是:逐个比较p 、q 所指两个字符串对应位置上的字符,并把ASCII 值大或相等的字符依次存放到c 所指的数组中,形成一个新的字符串。
例如,若主函数中a 字符串为"aBCDeFgH",b 字符串为"Abcd",则c 中的字符串应为"aBcdeFgH"。
答案: (1) int k=0; (2)while (*p||*q)所属年份:2011.9;2012.3在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。
下列给定程序中函数fun 的功能是:计算数组元素中所有值为正数的平均值(不包括0)。
例如:数组中元素中的值依次为:39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。
答案:(1)double sum =0.0; (2)sum/=c ;所属年份:2011.9下列给定程序中函数fun 和funx 的功能是:用二分法求方程的一个根,并要求绝对误差不超过0.001。
例如,若给m 输入-100,n 输入90,则函数求得的一个根为2.000。
答案:(1)double r ; (2)while (fabs(n -m) >0.001)所属年份:2010.9;2012.3; 下列给定程序中函数fun 的功能是:先将s 所指字符串中的字符按逆序存放到t 所指字符串中,然后把s 所指串中的字符按正序连接到t 所指串之后。
例如:当s 所指的字符串为"ABCDE"时,t 所指的字符串应为"EDCBAABCDE"。
答案:(1)int i, sl ; (2)t[i]=s[sl -i -1];所属年份:2011.3;数列中,第一项为3,后一项都比前一项的值增5。
下列给定程序中,函数fun 的功能是:计算前n(4≤n ≤50)项的累计和。
在累加过程中把那些被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回。
例如,当n 的值为20时,该数列为3、8、13、18、23、28、…、93、98,符合此条件的累加值应为42、126、366、570、1010。
答案: (1)int i ,j =0,k ,sum ; (2)if(sum%4==2)所属年份:2011.3下列给定的程序中,函数fun 的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。
3224360x x x -+-=答案: (1)y =1; (2)d =a -i ;所属年份:2011.3;2011.9下列给定程序中,函数fun 的功能是:先从键盘上输入一个3行、3列的矩阵的各个元素的值,然后输出主对角线元素之和。
答案: (1)sum =0; (2)scanf("%d",&a[i][j]);所属年份:2011.3;2011.9;给定程序MODI1.C 中规定输入的字符串全部为字母,fun 函数的功能是:统计a 所指字符串中每个字母在字符串中出现的次数(统计时不区分大小写),并将出现次数最高的字母输出(如果有多个相同,输出一个即可)。
例如对于字符串:dadbcdbabdb ,对应的输出应为:b 或d 。
答案: (1)b[i] = 0; (2)b[a[i] - 'a']++; (3)if (b[max] < b[i])所属年份:2011.3;2012.3下列给定程序中fun 函数功能是:将n 个无序整数从小到大排序。