scanf(\
=======(答案4)======= av2=s2/j
void main() { int fun(int m); int sum;
功能:编写函数fun求1!+2!+3!+ ?? +n!的和,在main函
数中由键盘输入n值,并输出运算结果。{
FILE *IN,*OUT; int i; int iIN;
━━━━━━━━━━━━━━━━ 四、程序改错 共1题 (共计15分) ━━━━━━━━━━━━━━━━ 第1题 (15.0分) 题号:399
/*------------------------------------------------------ 【程序改错】
--------------------------------------------------------
功能:编写函数fun求20以内所有5的倍数之积。
------------------------------------------------------*/ #include
int fun(int m) {
/**********FOUND**********/ int s=0,i; for(i=1;i /**********FOUND**********/ if(i%m=0) /**********FOUND**********/ s=*i; return s; } sum=fun(5); printf(\以内所有%d的倍数之积为: %d\\n\} 答案: =======(答案1)======= int s=1 , i ; =======(答案2)======= if(i%m==0) =======(答案3)======= s=s*i; =========或========= s=i*s; =========或========= s*=i; ━━━━━━━━━━━━━━━━ 五、程序设计 共1题 (共计20分) ━━━━━━━━━━━━━━━━ 第1题 (20.0分) 题号:16 /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 请编写fun 函数。 例如:若n值为5,则结果为153。 ------------------------------------------------*/ #include /**********Program**********/ /********** End **********/ } void main() { long int fun(int n); int n; long int result; scanf(\ result=fun(n); printf(\ wwjt(); } void wwjt() long int iOUT; IN=fopen(\ if(IN==NULL) { printf(\Dir..It May Be Changed\ } OUT=fopen(\ if(OUT==NULL) { printf(\Verify The Current Dir.. It May Be Changed\ } for(i=0;i<10;i++) { fscanf(IN,\ iOUT=fun(iIN); fprintf(OUT,\ } fclose(IN); fclose(OUT); } 答案:---------------------- int i; float f=1,s=0; for(i=1;i<=n;i++) {f=f*i; s=s+f;} return s; ---------------------- 三 ━━━━━━━━━━━━━━━ 一、判断 共10题 (共计20分) ━━━━━━━━━━━━━━━ 果完全相同. 答案:N 第8题 (2.0分) 题号:1243 'm' 是C的合法常量,而\不是C的合法常量. if(a>c)b=a;a=c;c=b;则c的值为()。 A:1 B:2 C:3 D:不一定 C:puts(s1);与puts(s2);结果相同 D:s1不能再指向其它单元 答案:C 第1题 (2.0分) 题号:1237 结构体类型不是系统固有的,它需要用户在程序中先定义,后使用. 答案:Y 第2题 (2.0分) 题号:1245 函数的递归就是反复地进行函数调用. 答案:N 第3题 (2.0分) 题号:1279 循环结构while、do while、for不可以互相嵌套. 答案:N 第4题 (2.0分) 题号:1139 结构体变量占用的内存单元的长度是其各成员占用长度之和. 答案:Y 第5题 (2.0分) 题号:1143 在给变量命名时,C语言不区分大小写字母,即认为SUM和sum是同一个变量. 答案:N 第6题 (2.0分) 题号:1232 在C语言中,INT可以被定义为变量名. 答案:Y 第7题 (2.0分) 题号:1256 while循环结构和do while循环结构的执行结 答案:N 第9题 (2.0分) 题号:1100 假设有int a[10], *p;则p=&a[0]与p=a等价 答案:Y 第10题 (2.0分) 题号:1226 在循环程序设计时,当while循环的条件表达式为常数1时,必然构成死循环. 答案:N ━━━━━━━━━━━━━━━━━ 二、单项选择 共15题 (共计30分) ━━━━━━━━━━━━━━━━━ 第1题 (2.0分) 题号:159 执行下面程序段从键盘给变量a,b,c输入值,正确的输入格式为( ). int a,c; char b; scanf(\A:123,d,45 B:123 d 45 C:123d45 D:a=123b=dc=45 答案:C 第2题 (2.0分) 题号:508 int a=1,b=2,c=3; 答案:B 第3题 (2.0分) 题号:3117 已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'. 执行语句printf(\后,输出结果是 A:A,B B:A,68 C:65,66 D:65,68 答案:C 第4题 (2.0分) 题号:662 C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是()。 A:void B:int C:float D:double 答案:B 第5题 (2.0分) 题号:544 char *s1=\则()。 A:s2指向不确定的内存单元 B:不能访问\ 第6题 (2.0分) 题号:192 对两个数组a和b进行如下的初始化:char a[]={'a', 'b', 'c', 'd', 'e', 'f'};char b[]=\则以下叙述正确的是( ). A:a数组与b数组完全相同 B:a数组与b数组具有相同的长度 C:a数组和b数组的最后一个字符都是字符串结束标志符'\\0' D:a数组的长度比b数组的长度小 答案:D 第7题 (2.0分) 题号:125 下列程序的输出结果是()。 main() {int a=7,b=5; printf(\} A:0 B:5 C:1 D:不确定值 答案:A 第8题 (2.0分) 题号:151 以下程序的运行结果是()。 main() { int i=1,sum=0; while(i<10) sum=sum+1;i++; printf(\} A:i=10,sum=9 B:i=9,sum=9 C:i=2,sum=1 D:运行出现错误 答案:D 第9题 (2.0分) 题号:115 先用语句定义字符型变量c,然后要将字符a赋给c,则下列语句中正确的是()。 A:c='a'; B:c=\C:c=\D:C='97' 答案:A 第10题 (2.0分) 题号:180 以下函数调用语句中实参的个数是()。 func((e1,e2),(e3,e4,e5)); A:2 B:3 C:5 D:语法错误 答案:A 第11题 (2.0分) 题号:165 关于多路分支语句switch,下面说法不正确的是( ). A:switch语句不能嵌套 B:switch语句中可以出现多个空的case子句 C:凡是能用switch语句实现的分支控制都可以用if语句实现 D:一般情况下,当有多路分支时使用switch语句比使用if语句方便 答案:A 第12题 (2.0分) 题号:126 下列( )可以作为用户自定义的变量名使用. A:if B:#a334 C:return D:_example 答案:D 第13题 (2.0分) 题号:175 有程序段如下: int a=1,b=2,c=3; if(a>b)c=a; a=b; b=c;执行该程序段后,变量a、b、c的值是( ). A:a=1,b=2,c=3 B:a=2,b=3,c=3 C:a=2,b=3,c=1 D:a=2,b=3,c=2 答案:B 第14题 (2.0分) 题号:638 设有数组定义: char array [ ]=\则数组 array所占的 空间为()。 A:4个字节 B:5个字节 C:6个字节 D:7个字节 答案:C 第15题 (2.0分) 题号:3561 以下程序中,while循环的循环次数是______ main() { int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; } } A:1 B:4 C:6 D:死循环,不能确定次数 答案:D ━━━━━━━━━━━━━━━━ 三、程序填空 共1题 (共计15分) ━━━━━━━━━━━━━━━━ 第1题 (15.0分) 题号:429 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:从读入的整数数据中,统计大于零的整 数个数和小于零的 整数个数。用输入零来结束输入,程序中用变量i统计大于 零的整数个数,用变量j统计小于零的整数个数。 -------------------------------------------------------*/ #include printf(\ i=j=0; scanf(\ while(n!=0) { /***********SPACE***********/ if(n>0)i=【?】; /***********SPACE***********/ if(n<0)j=【?】; /***********SPACE***********/ scanf(\【?】); } printf(\} 答案: =======(答案1)======= i + 1 =======(答案2)======= j + 1 =======(答案3)======= &n ━━━━━━━━━━━━━━━━ 四、程序改错 共1题 (共计15分) ━━━━━━━━━━━━━━━━ 第1题 (15.0分) 题号:3 【程序改错】 -------------------------------------------------------- 功能:用冒泡法对10个整数从小到大排序。 printf(\答案: =======(答案1)======= void sort(int *x,int n) -5 x>10 ------------------------------------------------*/ #include printf(\Verify The Current Dir.. it May Be Changed\ } for(i=0;i<5;i++) /*------------------------------------------------------ } ------------------------------------------------------*/ #include /**********FOUND**********/ void sort(int x,int n) { int i,j,t; for(i=0;i /**********FOUND**********/ for(j=0;j /**********FOUND**********/ if(x[i]>x[i+1]) { t=x[j]; x[j]=x[j+1]; x[j+1]=t; } } void main() { void sort(int *,int); int i,n,a[100]; printf(\ scanf(\ for(i=0;i /**********FOUND**********/ sort(n,a); printf(\ for(i=0;i<=n-1;i++) printf(\ =========或========= void sort(int x[],int n) =======(答案2)======= for(j=0;j< n -1 -i ;j++) =========或========= for(j=0; n -1 -i >j;j++) =========或========= for(j=0;j =========或========= if(x[ j + 1] =======(答案4)======= sort(a,n); ━━━━━━━━━━━━━━━━ 五、程序设计 共1题 (共计20分) ━━━━━━━━━━━━━━━━ 第1题 (20.0分) 题号:29 /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能:对任意输入的 x,用下式计算并输出 y 的值。 5 x<10 y= 0 x=10 { /**********Program**********/ /********** End **********/ } void main () { int fun(int n); int x,y; printf(\ scanf(\ y=fun(x); printf(\ wwjt(); } void wwjt() { FILE *IN,*OUT; int i; int iIN; long int iOUT; IN=fopen(\ if(IN==NULL) { printf(\Verify The Currernt Dir..it May Be Changed\ } OUT=fopen(\ if(OUT==NULL) { fscanf(IN,\ iOUT=fun(iIN); fprintf(OUT,\ } fclose(IN); fclose(OUT); } 答案: int m; if(n<10) m=5; else if(n==10) m=0; else m=-5; return m; 或 int m; if(n>=10) if(n>10) m=-5; else m=0; else m=5; return m; 四 ━━━━━━━━━━━━━━━ 一、判断 共10题 (共计20分) ━━━━━━━━━━━━━━━ 第7题 (2.0分) 题号:1276 若定义int a[4]={1,2,3,4};若引用最后的元素,写法为a[4]. 答案:N 答案:A 第2题 (2.0分) 题号:504 执行以下程序段后,输出结果和a的值是()。 答案:C 第5题 (2.0分) 题号:156 执行下列语句后的输出为()。 第1题 (2.0分) 题号:24 对于数值型数组,C语言中只能逐个引用数组元素而不能一次引用整个数组。 答案:Y 第2题 (2.0分) 题号:1279 循环结构while、do while、for不可以互相嵌套. 答案:N 第3题 (2.0分) 题号:1150 0x1A、219、0678都是合法的常量. 答案:N 第4题 (2.0分) 题号:1251 在定义链表结点的数据类型中,至少要包括一个指针类型的成员. 答案:Y 第5题 (2.0分) 题号:1234 函数嵌套就是在定义函数的函数体中调用被定义的函数本身. 答案:N 第6题 (2.0分) 题号:1112 字符处理函数strcpy(str1,str2)的功能是把字符串1接到字符串2的后面. 答案:N 第8题 (2.0分) 题号:1282 字符型数据与整型数据之间可以互相赋值和运算. 答案:Y 第9题 (2.0分) 题号:1140 链表中的任何一个结点,必然要包括一个指针域. 答案:Y 第10题 (2.0分) 题号:1273 在if语句的定义:if(表达式) 语句 中,只有当表达式的值为1时才执行其后的语句. 答案:N ━━━━━━━━━━━━━━━━━ 二、单项选择 共15题 (共计30分) ━━━━━━━━━━━━━━━━━ 第1题 (2.0分) 题号:211 下面程序的输出结果是( ) main() {int a[8]={8,7,6,5,4,3,2,1},*p; p=a+3; printf(\} A:3 B:4 C:5 D:2 int a=10; printf(\A:10 和 10 B:10 和 11 C:11 和 10 D:11 和 11 答案:B 第3题 (2.0分) 题号:632 以下叙述正确的是()。 A:do-while语句构成的循环不能用其它语句构成的循环来代替. B:do-while语句构成的循环只能用break语句退出. C:用do-while语句构成的循环,在while后的表达式为非零时结束循环. D:用do-while语句构成的循环,在while后的表达式为零时结束循环 答案:D 第4题 (2.0分) 题号:153 能正确表示数学不等式0≤a≤18的C语言表达式是( ). A:a>=0&a<=18 B:a>=0||a<=18 C:a>=0&&a<=18 D:0≤a&&a≤18 int j=-1; if(j<=1) printf(\ else printf(\A:**** B:%%%% C:%%%%c D:有错,执行不正确 答案:A 第6题 (2.0分) 题号:157 在程序设计中,算法一般都可以用( )控制结构组合而成. A:循环、分支、递归 B:顺序、循环、嵌套 C:循环、递归、分支 D:顺序、分支、循环 答案:D 第7题 (2.0分) 题号:3112 下列语句定义pf为指向float类型变量f的指针,_____是正确的. A:float f, *pf = f; B:float f, *pf = &f; C:float *pf = &f, f; D:float f, pf 答案:B