0.0994

五煦查题

快速找到你需要的那道考题与答案

中国大学程序设计基础_4章节答案(mooc完整答案)

84 min read

中国大学程序设计基础_4章节答案(mooc完整答案)

第1周:程序设计与C语言

第1周选择题

1、中国章节下列叙述中错误的大学答案答案是?
A、计算机不能直接执行用C语言编写的程序源程序
B、C程序经C编译程序编译后,设计生成扩展名为obi的基础文件是一个二进制文件
C、扩展名为obj的完整文件,经连接程序生成扩展名为exe的中国章节文件是一个二进制文件
D、扩展名为obj和exe的大学答案答案二进制文件都可以直接运行

2、下列叙述中正确的程序是?
A、C语言程序将从源程序中第一个函数开始执行
B、设计可以在程序中由用户指定任意一个函数作为主函数,基础程序将从此开始执行
C、完整C语言规定必须用main作为主函数名,中国章节程序将从此开始执行,大学答案答案在此结束
D、程序main可作为用户标识符,用以命名任意一个函数作为主函数

3、以下叙述中正确的是?
A、C程序中的注释只能出现在程序的开始位置和语句的后面
B、C程序书写格式严格,要求一行内只能写一个语句
C、C程序书写格式自由,一个语句可以写在多行上
D、用C语言编写的程序只能放在一个程序文件中

4、下列叙述中正确的是?
A、用C程序实现的算法必须要有输人和输出操作
B、用C程序实现的算法可以没有输出但必须要有输人
C、用C程序实现的算法可以没有输人但必须要有输出
D、用C程序实现的算法可以既没有输人也没有输出

5、下列叙述中错误的是?
A、用户所定义的标识符允许使用关键字
B、用户所定义的标识着应尽量做到“见名知意”
C、用户所定义的标识符必须以字母或者下划线开头
D、用户定义的标识符中,大、小写字母代表不同标识

6、下列不合法的用户标识符是?
A、j2_KEY
B、Double
C、4d_a
D、_8_

7、以下选项中合法的用户标识符是?
A、long
B、_2Test
C、3Dmax
D、A.dat

8、结构化程序由三种基本结构组成,三种基本结构组成的算法:
A、可以完成任何复杂的任务
B、只能完成部分复杂的任务
C、只能完成符合结构化的任务
D、只能完成一些简单的任务

9、下列叙述中错误的是?
A、C语言源程序经编译后生成扩展名为obj的目标程序
B、C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C、用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D、C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

10、下列选项中不属于结构化程序设计方法的是?
A、自顶向下
B、逐步求精
C、模块化
D、可复用

第1周编程练习

1、输出“Hello World”

第2周:计算

1 变量随堂测验

1、给定: int a,b; 以下哪些scanf的使用是正确的?
A、scanf("%d", &a); scanf("%d", &b);
B、scanf("%d %d", &a, &b);
C、scanf("%d, %d", &a, &b);
D、scanf("%d %d", a, b);

2、以下哪些是有效的变量名?
A、main
B、4ever
C、monkey-king
D、__int

3、给定: int a,b; scanf("%d %d", &a, &b); 则以下哪些输入方式是正确的?
A、1 2
B、1,2
C、1(回车)2
D、1、2

4、给定以下代码段: int a,b=0; 则a的初始值是0

2 数据类型随堂测验

1、写出下式的运算结果: 10/3.0*3 (如果认为结果是浮点数,请以小数点后一位小数来表示)

2、写出下式的运算结果: 10/3*3.0 (如果认为结果是浮点数,请以小数点后一位小数来表示)

3 表达式随堂测验

1、写出以下代码执行后,t1和t2的值,以空格隔开: int a=14; int t1 = a++; int t2 = ++a;

2、写出以下表达式的结果,结果之间间隔一个空格: 6 + 5 / 4 - 2 2 + 2 * (2 * 2 - 2) % 2 / 3 10 + 9 * ((8 + 7) % 6) + 5 * 4 % 3 * 2 + 3 1 + 2 + (3 + 4) * ((5 * 6 % 7 / 8) - 9) * 10

第2周选择题

1、C语言中,运算对象必须是整型数的运算符是
A、%
B、\
C、%和\
D、/

2、以下能正确地定义整型变量a, b和c并为它们赋初值5的语句是
A、int a=b=c=5;
B、int a, b, c=5;
C、a=5, b=5, c=5;
D、int a=5, b=5, c=5;

3、如下程序的执行结果是 int main (void) { int i, sum=0; for (i=1; i<=3; sum++) sum += i; printf("%d\n", sum); return 0; }
A、6
B、3
C、死循环
D、0

4、下列两条语句"int c1=1, c2=2, c3; c3=1.0/c2*c1;" 执行后变量c3中的值是
A、0
B、0.5
C、1
D、2

5、下列程序的功能是: 给输入数据后计算半径为r的圆面积s。程序在编译时出错,原因是 int main(void) /* hangzhou */ { int r; float s; scanf ("8a",&r); s = PI * r * r; printf("s=%f\n", s); return 0; }
A、注释语句书写位置错误
B、存放圆半径的变量r不应该定义为整型
C、输出语句中格式描述符非法
D、计算圆面积的赋值语句中使用了非法变量

6、设变量已正确定义,则以下能正确计算f=n!的程序段是
A、f=0; for (i=1; i<=n; i++) f *= i;
B、f=1; for (i=1; i<n; i++) f *= i;
C、f=1; for (i=n; i>1; i++) f *= i;
D、f=1; for(i=n; i>=2; i--) f *= i;

7、下列条件语句中,功能与其他语句不同的是
A、if(a) prinf("%d\n", x); else printf("%d\n", y);
B、if(a==0) printf("%d\n", y); else printf("%d\n", x);
C、if(a!=0) print("%d\n", x); else printf( "%d\n", y);
D、if(a==0) printf("%d\n", x); else printf("%d\n", y);

8、下列程序的功能是 int main (void) { int i, s=0; for (i=1; i<10; i+=2) s += i+1; printf("%d\n", s); return 0; }
A、自然数1-9的累加和
B、自然数1-10累加和
C、自然数1-9的奇数之和
D、自然数1-10中的偶数之和

9、下列程序的运行结果是 int main (void){ int a, b, c; a=20; b=30; c=10; if (a<b) a=b; if (a>=b) b=c; c=a; printf("a=%d, b=%d, c=%d", a, b, c); return 0; }
A、a=20, b=10, c=20
B、a=30, b=10, c=20
C、a=30, b=10, c=30
D、a=30, b=10, c=20

10、等比数列的第一项a=1, 公比q=2, 下面程序段计算前n项和小于100的最大n。程序划线处应填 int main (void){ int a, q, n, sum; a=1; q=2; for (n=sum=0; sum<100; n++) { sum += a; a *= q; } ____________; printf ("n=%d\n", n); return 0; }
A、空行
B、n -= 2;
C、n--;
D、n++;

第2周编程练习

1、逆序的三位数

第3周:判断与循环

1 判断随堂测验

1、以下语句是否可以通过编译: if ( 1<=n<=10 );

2、以下语句是否表示n属于[1,10]: if ( 1<=n<=10 );

3、写出程序的输出结果: int i,j,k; i=5; j=10; k=1; printf("%d", k>i<j);

4、写出程序的输出结果: int i,j,k; i=2;j=3; k = i*j==6; printf("%d\n", k);

5、写出程序的输出结果: int i,j,k; i=3;j=2;k=1; printf("%d", i<j == j<k);

2 循环随堂测验

1、以下哪个循环和其他三条循环不等价(假设循环体都是一样的)?
A、for ( i=0; i<10; i++ ) { ...}
B、for ( i=0; i<10; ++i ) { ...}
C、for ( i=0; i++<10; ) { ...}
D、for ( i=0; i<=9; i++ ) { ...}

2、while循环的条件满足的时候循环继续,而do-while的条件满足的时候循环就结束了

3、以下代码片段执行结束后,变量i的值是多少?int i =10; while ( i>0 ) { i /=2; }

4、以下代码片段执行结束后,变量i的值是多少?int i = 1; do { i += 5; } while (i<17);

5、以下代码段的输出是什么?for ( int i=10; i> 1; i /=2 ) { printf("%d ", i++); }

第3周选择题

1、若变量x、y都为int型数,以下表达式中不能正确表示数学关系|x-y|<10的是
A、abs(x-y)<10
B、x-y>-10 && x-y<10
C、(x-y)<-10 || !(y-x)>10
D、(x-y)*(x-y)<100

2、若a、b、c1、c2、x、y均是整型变量,以下正确的swich语句是
A、swich(a+b): { case 1: y = a+b; break; case 0: y = a-b; break; }
B、switch(a*a+b*b): { case 3: case 1: y = a+b; break; case 3: y = b-a; break; }
C、switch(a): { case c1: y = a-b; break; case c2: x = a*d; break; default: x = a+b; }
D、switch(a-b): { default: y = a*b; break; case 3: case 4: x = a+b; break; case 10: case 11: y = a-b; break; }

3、下列程序段的输出结果是 int main (void) { int i; for (i=0; i<3; i++) switch (i) { case 1: printf("%d", i); case 2: printf("%d", i); default: printf("%d", i); } return 0; }
A、011122
B、012
C、012020
D、120

4、下列程序段的输出结果是 int main (vold) { int m, k=0, s=0; for (m=1; m<=4; m++) { switch(m%4) { case 0: case 1: s+=m; break; case 2: case 3: s-=m; break; } k+=s; } printf("%d", k); return O; }
A、10
B、-2
C、-4
D、-12

5、有定义语句"int a=1, b=2, c=3, x", 则以下各程序段执行后,x的值不为3的是
A、if(c<a) x=1; else if(b<a) x=2; else x=3;
B、if(a<3) x=3; else if(a<2) x=2; else x=1;
C、if(a<3) x=3; if(a<2) x=2; if(a<1) x=1;
D、if(a<b) x=b; if(b<c) x=c; if(c<a) x=a;

6、下面程序运行时如果输人"-1 2 3 3 6 2<回车>",则输出结果是 int main (void) { int t, a, b, i; for(i=1; i<=3; i++) { scanf ("%d%d", &a, &b); if(a>b) t = a-b; else if(a==b) t = 1; else t = b-a; printf("%d", t); } return 0; }
A、304
B、314
C、134
D、316

7、下列程序运行时输人"7mazon<回车>",则输出结果是 int main (void) { char c; int i; for(i=1; i<=5; i++) { c = getchar(); if(c>='a' && c<='u') c+=5; else if(c>='v' && c<='z') c='a'+c-'v'; putchar(c); } return 0; }
A、7rfet
B、7rfets
C、rfet
D、rfets

8、下列程序段运行时从键盘上输人"2.0<回车>",则输出结果是 int main(void) { float x, y; scanf("%f", &x); if(x<0.0) y = 0.0; else if((x<5.0) && (x!=2.0)) y = 1.0/(x+2.0); else if(x<10.0) y = 1.0/x; else y=10.0; printf ("%f\n", y); return 0; }
A、0.000000
B、0.250000
C、0.500000
D、1.000000

9、下列程序段的输出结果是 int main (void){ int x=100, a=10, b=20, ok1=5, ok2=0; if(a<b) if(b!=15) if(!ok1) x=1; else if(ok2) x=10; x=-1; printf("%d\n", x); return 0; }
A、-1
B、0
C、1
D、不确定的值

10、下列程序段运行后x的值是 int a=0, b=0, c=0, x=35; if(!a) x--; else if(b); if(c) x=3; else x=4;
A、34
B、4
C、35
D、3

第3周编程练习

1、时间换算

2、分队列

第4周:进一步的判断与循环

3 多路分支随堂测验

1、写出程序的输出:int i=1; switch ( i%3 ) { case 0: printf("zero"); case 1: printf("one"); case 2: printf("two"); }

4 循环的例子随堂测验

1、以下哪种运算能从变量x中取得十进制最低位的数字
A、x /10
B、x % 10
C、x * 10
D、10 / x

2、当需要累加一些值的时候,用来记录累加结果的变量应该被初始为:

第4周选择题

1、执行下面的程序后变量a的值为 int main (void) { int a, b; for(a=1,b=1; a<=100; a++){ if (b>10) break; if (b%3 == 1) { b+=3; continue; } b-=3; } return 0; }
A、13
B、7
C、5
D、10

2、下列程序段的输出结果是 int main (void) { int i, j, x=0; for (i=0; i<2: i++) { for (j=0; j<=3; j++) { if(j%2) continue; x++; } x++; } printf("x=%d\n", x); return 0; }
A、x=4
B、x=8
C、x=6
D、x=12

3、3. 以下程序段的输出结果是 int main (void) { int i=0, s=0; do { if (i%2){ i++; continue; } i++; s+=i; } while(i<7); printf("%d\n",s); return 0; }
A、16
B、12
C、28
D、21

4、以下程序段若要使输出值为2,则应该从键盘给n输人的值是 int main (void) { int s=0, a=1, n; scanf("%d", &n); do { s+=1; a=a-2; } while(a!=n); printf("%d\n",s); return 0; }
A、-1
B、-3
C、-5
D、0

5、要求以下程序的功能是计算: s=1 + 1/2 + 1/3 + ... + 1/10, 但运行后输出结果错误,导致错误结果的程序行是 int main (void){ int n; float s; s=1.0; for(n=10; n>1; n--) s=s+1/n; printf("%6.4f\n",s); return 0; }
A、int n; float s;
B、for(n=10; n>1; n--) s=s+1/n;
C、s=s+1/n;
D、s=1.0;

6、以下程序段的输出结果是 int i,j; for (i=1; i<4; i++){ for(j=i; j<4; j++) printf("%d*%d=%d", i, j, i*j); printf("\n"); }
A、1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3
B、1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9
C、1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9
D、1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9

7、以下程序段的输出结果是 for(int i=1; i<=5; i++) { if(i%2) printf("<"); else continue; printf(">"); } printf("$");
A、<><><>$
B、<<<$
C、<><>$
D、<<<>>>$

8、若i, j已定义为int类型,则以下程序段中内循环体的总的执行次数是 for(i=5; i; i--) for(j=0; j<4; j++){ ...}
A、20
B、25
C、24
D、30

9、以下程序段的输出结果是 int i, j; for(j=10; j<11; j++) for(i=9; i==j-1; i++) printf("%d", j);
A、11
B、10
C、9
D、1011

10、以下程序段的输出结果是 int n=9; while (n>6){ n--; printf("%d", n); }
A、987
B、876
C、8765
D、9876

11、以下程序段的输出结果是 int x=23; do { printf("%d", x--); } white (!x);
A、321
B、23
C、22
D、死循环

12、以下程序的功能是: 按顺序读人10名学生4门课程的成绩,计算每位学生的平均分并输出,但运行后结果不正确,调试中发现有一条语句出现的位置不正确。这条语句是 int main (void) { int n, k; float score, sum, ave; sum=0.0; for(n=1; n<=10; n++) { for(k=1; k<=4; k++) { scanf("%f", &score); sum+=score; } ave=sum/4.0; printf("NO%d:%f\n", n, ave); } return 0; }
A、sum=0.0;
B、sum+score;
C、ave=sun/4.0;
D、printf ("NO%d:%f\n", n, ave);

13、在下列给出的表达式中,与while(E)中的(E)不等价的表达式是
A、(!E==0)
B、(E>0||E<0)
C、(E==0)
D、(E!=0)

14、要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,下列程序段正确的是 A. 【答案】 B. C. D.
A、while((ch=getchar())!='N') printf("%c", ch);
B、while(ch=getchar()!='N') printf("%c", ch);
C、while(ch=getchar()=='N') printf("%c", ch);
D、while((ch=getchar())=='N') prinf("%c", ch);

15、若变量已正确定义,要求程序段完成求5!的计算,以下不能完成此操作的是
A、for(i=1, p=1; i<=5; i++) p*=i;
B、for(i=1; i<=5; i++){ p=1; p*=i;}
C、i=1; p=1; while(i<=5){ p*=i; i++;}
D、i=1; p=1; do{ p*=i; i++;}while(i<=5);

第4周编程练习

1、奇偶个数

2、数字特征值

第5周:循环控制

2 多重循环随堂测验

1、以下代码段的输出是: int sum = 0; for ( int i=0; i<10; i++ ) { if ( i%2 ) continue; sum += i; } printf("%d\n", sum);

2、以下代码段的输出是: int sum = 0; for ( int i=0; i<10; i++ ) { if ( i%2 ) break; sum += i; } printf("%d\n", sum);

第5周选择题

1、以下程序的功能是: 键盘上输人若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输人,①、②、③处的正确语句分别为: int main(void) { float x, amax, amin; scanf("%f", &x); amax=x; amin=x; while( ① ) { if(x>amax) amax=x; if( ② ) amin=x; ③ ; } printf ("\namax=%f\namin=%f\n”, amax, amin); return 0; }
A、x == -1 x < amax scanf("%f", &x)
B、x != -1 x < amin scanf("%lf", &x)
C、x > 0 x < amin scanf("%lf", &x)
D、x >= 0 x < amin scanf("%f", &x)

2、以下程序运行后的输出结果是: int main(void) { int i=10, j=0; do{ j=j+1; i--; }while (i>2); printf ("%d\n", j); return 0; }
A、52
B、8
C、54
D、10

3、以下程序运行后从键盘上输人1298,则输出结果为: int main(void) { int n1. n2; scanf ("%d", &n2); while (n2! =0) { n1=n2 % 10; n2=n2/10; printf("%d", n1); } return 0; }
A、1298
B、8921
C、2198
D、9821

4、下列程序运行时, 输人“1234567890<回车>", 则其中while循环体将执行的次数是: int main(void) { char ch; while((ch=getchar()) =='0') { printf("#"); } return 0; }
A、10
B、11
C、1
D、0

5、下面程序运行时输人"-1 0", 输出结果是: int main(void) { int a, b, m=1, n=1; scanf("%d%d", &a, &b); do { if(a>0) { m=2*n; b++; }else{ n=m+n; a+=2; b++; } }while(a==b); printf("m=%d n=%d", m, n); return 0; }
A、m=2 n=4
B、m=2 n=2
C、m=4 n=2
D、m=4 n=4

6、有下列程序段,且变量已正确定义和赋值 for(s=1.0, k=1; k<=n; k++) s=s+1.0/(k*(k+1)); printf("s=%f\n\n", s); 使下列程序段与上述程序段功能完全相同,则①、②处的正确语句分别为: s=1.0; k=1; while( ① ) { s=s+1.0/(k*(k+1)); ②; } printf("s=%f\n\n", s);
A、k<=n n++
B、n<=k n++
C、k<=s k++
D、k<=n k++

7、下面程序的功能是输出以下形式的金字塔图案。则①、②处的正确语句分别为: * *** ***** 作业答案查询

* int main(void) { int i, j; for(i=1; i<=4; i++) { for(j=1; j<=4-i; j++) printf(" "); for(j=1; j<=①; j++) printf("*"); ② ; } return 0; }
A、2*i-1 continue
B、2*i-1 break
C、2*i-1 printf("\n")
D、2*i printf("\n")

8、下面程序段的功能是: 输出100以内能被3整除且个位数为6的所有整数。则①、②处的正确语句分别为: int i, j; for(i=0; ①; i++) { j=i*10+6; if( ② ) continue; printf("%d", j); }
A、i<100 j%6!=0
B、i<10 j%3!=0
C、j<100 j%3!=0
D、j<10 j%6!=0

9、下列程序的功能是输人任意整数给后,输出行由大写字母A开始构成的三角形字符阵列图形(如图),则①、②处的正确语句分别为: 如输人n为5时(n不得大于10),程序运行结果如下: A B C D E F G H I J K L M N O int main(void) { int i, j, n; char ch='A'; scanf("%d", &n); if(n<11) { for (i=1; i<=n; i++) { for(j=1; j<=n-i+1; j++) { printf("%2c", ch); ① ; } ② ; } } else { printf("n is too large!\n"); } printf("\n"); return 0; }
A、printf("\n") ch=ch+1
B、ch=ch+1 printf("\n")
C、ch='A'+j printf("\n")
D、printf("\n") ch='A'+j

10、下列程序输出1至100之间的所有每位数字的积大于每位数字的和的数,则①、②、③处的正确语句分别为: 如23即为符合要求的数字,因为2x3>2+3。 int main(void) { int n, k=1, s=0, m; for(n=1; n<=100; n++) { ① ; m=n; while(m!=0) { ② ; ③ ; m=m/10; } if(k>s) printf("%d", n); } return 0; }
A、k=1; s=0 k=k*(m % 10) s=s+m % 10
B、k=0; s=1 k=k*(m % 10) s=s+m % 10
C、k=0; s=1 s=s*(m % 10) k=k+m % 10
D、k=1; s=0 s=s*(m % 10) k=k+m % 10

第5周编程练习

1、素数和

2、念整数

第6周:函数

2 函数的参数和变量随堂测验

1、以下哪句不是正确的函数原型?
A、int f();
B、int f(int i);
C、int f(int);
D、int f() { }

2、以下哪个函数的定义是错误的?
A、void f() { }
B、void f(int i) { return i+1; }
C、void f(int i) { }
D、int f() { return 0; }

3、对于不返回值而且只有一个int类型的参数的函数,以下哪些函数原型是正确的?
A、void f(int x);
B、void f();
C、void f(int);
D、void f(x);

4、以下程序的输出是什么?void swap(int a, int b); int main() { int a = 5; int b = 6; swap(a,b); printf("%d-%d\n", a, b); return 0; } void swap(int a, int b) { int t = a; a = b; b = t; }

第一次单元测验

1、以下哪个选项是判断ch是否为大写字母的正确形式?
A、ch >= 'A' && ch <='Z'
B、ch <= 'Z' && ch >= 'A'
C、'A' <= ch <= 'Z'
D、ch >= 'A' || ch <= 'Z'
E、ch >='A' AND ch <='Z'
F、ch BETWEEN 'A' AND 'Z"

2、以下代码片段的输出是: int j=4; for ( int i=j; i<=2*j; i++ ) { switch ( i/j ) { case 0: case 1: printf(“*”); break; case 2: printf(“#”); } }
A、****#
B、****##
C、***#
D、*#
E、****

3、下列程序段输出结果为: int x=1, y=012; printf(“%d”,y*x++);
A、10
B、12
C、20
D、24

4、下面程序段的输出结果是? int k; while(k!=0) k=k-1; printf(“%d”, k);
A、0
B、无论k的初值如何,最终都会减到0的。
C、因为k没有初值,所以结果不确定
D、1
E、因为没有给k赋初值,因此程序不能通过编译

5、以下表达式x&&1 用在if的条件中时,和哪个是等价的:
A、x!=0
B、x
C、x==0
D、x==1
E、x!=1

6、以下哪个不是C语言的关键字?
A、include
B、if
C、while
D、int
E、for

7、对于以下代码: unsigned short sht = 0; sht --; 执行后,sht的值是?
A、65535
B、2的16次方-1
C、-1
D、32767
E、65536

8、以下哪个直接量是十进制的124?
A、0174
B、0x7C
C、124
D、0x124
E、0124
F、124d

9、对于以下代码: int i=6; if ( i<= 6 ) printf("hello\n");; else printf("bye-bye\n");; 哪句话是对的?
A、无法编译
B、不能通过编译
C、打印出"hello"
D、打印出"bye-bye"
E、打印出"hello bye-bye"

10、在代码: while ( !e ) 中,!e等价于:
A、e == 0
B、e != 1
C、e!=0
D、e == 1

11、下列可用于C语言程序标识符的一组是(名字间以逗号分隔):
A、For, _abc, IF
B、_if, _123, file
C、void, d, WORD
D、For, -abc, IF
E、2_a, xyz, b1_s
F、void,_2a, 2a

12、对for(表达式1;;表达式3) 可理解为
A、for(表达式1;1;表达式3)
B、for(表达式1;true;表达式3)
C、for(表达式1; 表达式1;表达式3)
D、for(表达式1; 表达式3;表达式3)
E、for(表达式1;0;表达式3)

13、对于以下代码: int i,j=6; 以下哪句话是对的?
A、i不会被初始化,而j是6
B、i和j的初始值都是6
C、i被初始为0,而j是6
D、不能通过编译

14、对于以下代码: char ch = -1; printf("%d\n", ch); 输出结果是?
A、-1
B、255
C、ASCII码表中255那个位置的字符
D、编译错误,因为赋值的时候类型不一致
E、编译错误,因为赋值的时候不能把负数赋给char
F、运行错误,因为%d和ch的类型不匹配

15、对于以下代码: int i; scanf("%d", &i); i %= 4; 执行后,i会有几种可能性?
A、7
B、0
C、1
D、2
E、3
F、不好说

16、对于以下代码: int i=6; do { printf("%d", i--); } while (0); 哪句话是对的?
A、打印出6
B、打印出5
C、因为while(0),无法编译
D、打印不出东西

17、对于以下代码: int i; for ( i=0; i<10; i++) printf("%d", i); for循环结束后,i的值是多少?
A、10
B、9
C、11
D、i没有确定的值
E、i不存在

18、以下哪个for语句是错误的?
A、for (i=0;j=0; i<10; i++ );
B、for (i=0;i<10);
C、for (i=0; i++ );
D、for (;;);
E、for (i=0; i<10; i--);
F、for (i=0; i<10, j<10; i++);
G、for (int i=0; i<10, j<10; i++);

19、表达式ch =‘B’+‘8’-‘3’表示的字符是:

20、以下代码的输出是 _____. int x=0, y=0, z=0; z = (x==1) && (y=2); printf("%d ", y);

21、以下代码段的结果是: int i=10; long long t = sizeof(i++); printf("%d", i);

22、表达式(double)(10/4*4) 的结果是_____

23、以下代码的输出是 : int i,x,y; i=x=y=0; do { ++i; if ( i%2 ) x+=i, i++; y +=i++; } while ( i<=7 ); printf("%d %d %d", i, x, y);

第6周选择题

1、有以下函数定义: void fun(int n, double x){ ......}。若以下选项中的变量都已正确定义并赋值,则对函数fun( )的正确调用语句是
A、fun(int y, double m);
B、k=fun(10, 12.5);
C、fun(x, m);
D、void fun(n, x);

2、以下叙述中不正确的是
A、在不同的函数中可以使用相同名字的变量
B、函数中的形式参数是局部变量
C、在一个函数内定义的变量只在本函数范围内有效
D、在一个函数内的复合语句中定义的变量在本函数范围内有效

3、C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是
A、void
B、int
C、float
D、double

4、下列程序的输出结果是 int MyFunction(int); int main (void) { int entry=12345; printf("%5d", MyFunction(entry)); return 0; } int MyFunction (int Par ) { int result; result=0; do{ result=result*10+Par % 10; Par/=10; }while(Par); return result; }
A、12345
B、543
C、5432
D、54321

5、下列程序的输出结果是 int fun3(int x) { static int a=3; a+=x; return (a); } int main(void) { int k=2, m=1, n; n=fun3(k); n=fun3(m); printf("%d\n", n); return 0; }
A、3
B、4
C、6
D、9

6、下列程序的运行结果是 int x1=30, x2=40; sub(int x, int y) { x1=x; x=y; y=x1; } int main(void) { int x3=10, x4=20; sub(x3, x4); sub(x2, x1); printf("%d,%d,%d,%d\n", x3, x4, x1, x2); return 0; }
A、10, 20, 40, 40
B、10, 20, 30, 40
C、10, 20, 40, 30
D、20, 10, 30, 40

7、下列程序的输出结果是 void fun(int a, int b, int c){ a=456; b=567; c=678; } int main (void) { int x=10, y=20, z=30; fun(x, y, z); printf("%d,%d,%d\n", x, y, z); return 0; }
A、30, 20, 10
B、456, 567, 678
C、10, 20, 30
D、678, 567, 456

8、下列程序的输出结果是 int fun(int x, int y) { static int m=0, i=2; i += m+1; m = i+x+y; return m; } int main (void) { int j=1, m=1, k; k=fun(j, m); printf("%d,", k); k=fun(j, m); printf("%d\n", k); return 0; }
A、5, 5
B、5, 11
C、11, 11
D、11, 5

9、下列程序的输出结果是 void f(int v, int w) { int t; t=v; v=w; w=t; } int main(void){ int x=1, y=3, z=2; if(x>y) f(x, y); else if(y>z) f(y, z); else f(x, z); printf("%d,%d,%d\n", x, y, z); return 0; }
A、1, 2, 3
B、3, 1, 2
C、1, 3, 2
D、2, 3, 1

10、下列程序执行后输出的结果是 int f(int a) { int b=0; static int c=3; a=c++, b++; return (a); } int main(void) { int a=2, i, k; for(i=0; i<2; i++) k=f(a++); printf("%d\n", k); return 0; }
A、3
B、0
C、5
D、4

第6周编程练习

1、高精度小数

2、求最大公约数和最小公倍数

第7周:数组

3 数组运算随堂测验

1、若有定义: int a[2][3]; 则以下选项中不越界的正确的访问有:
A、a[2][0]
B、a[2][3]
C、a[1>2][0]
D、a[0][3]

2、以下程序片段的输出结果是: int m[][3] = { 1,4,7,2,5,8,3,6,9,}; int i,j,k=2; for ( i=0; i<3; i++ ) { printf("%d", m[k][i]); }
A、369
B、不能通过编译
C、789
D、能编译,但是运行时数组下标越界了

3、假设int类型变量占用4个字节,定义数组 int x[10] = { 0,2,4}; 则x在内存中占据几个字节?

4、若有: int a[][3] = { { 0},{ 1},{ 2}}; 则 a[1][2] 的值是?

第7周选择题

1、假定int类型变量占用两个字节,已有定义“int x[10]=[0, 2, 4];”。则数组x在内存中所占字节数是
A、3
B、6
C、10
D、20

2、以下能正确定义数组并正确赋初值的语句是
A、int N=5, b[N][N];
B、int a[1][2]={ { 1}, { 3}};
C、int a[1][2]={ { 1}, { 3}};
D、int d[3][2]={ { 1, 2}, { 34}};

3、下述对C语言字符数组的描述中错误的是
A、字符数组可以存放字符串
B、字符数组中的字符串可以整体输人、输出
C、可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D、不可以用关系运算符对字符数组中的字符串进行比较

4、设有数组定义“char array[] = "China";”。 则数组array所占的空间为
A、4个字节
B、5个字节
C、6个字节
D、7个字节

5、有定义“char x[]="abedefg"; char y[]={ 'a', 'b', 'c', 'd', 'e', 'f', 'g'};”。 则正确的叙述为
A、数组x和数组y等价
B、数组x和数组y的长度相同
C、数组x的长度大于数组y的长度
D、数组x的长度小于数组y的长度

6、下列能正确定义字符串的语句是
A、char str[] = '\064';
B、char str = "kx43";
C、char str=" ";
D、char str[ ]="\0";

7、下列程序的输出结果是 int main (void) { int n[3], i, j, k; for(i=0; i<3; i++) n[i]=0; k=2; for(i=0; i<k; i++) { for(j=0; j<k; j++) { n[j]=n[i]+1; } } printf("%d\n", n[1]); return 0; }
A、2
B、1
C、0
D、3

8、以下程序的输出结果是 int main (void) { int a[3][3])={ { 1,2},{ 3,4},{ 5,6}}, i, j, s=0; for(i=1; i<3; i++) { for(j=0; j<=i; j++) { s += a[i][j]; } } printf("d\n", s); return 0; }
A、18
B、19
C、20
D、21

9、以下程序的输出结果是 int main(void){ int k; char w[][10] = { "ABCD","EFGH", "IJKO", "MNOP"}; for(k=1; k<3; k++){ printf("%s\n, w[k]); } return 0; }
A、ABCD FGH KL
B、ABCD EFGH IJKL
C、EFG JKL
D、EFGH IJKL

10、以下程序的输出结果是 int main (void) { int m[][3] = { 1, 4, 7, 2, 5, 8, 3, 6, 9}; int i, j, k=2; for(i=0; i<3; i++) { printf("%d", m[k][i]); } return 0; }
A、456
B、258
C、369
D、789

11、下列程序运行时输人“123<空格>456<空格>789<回车>”,则输出结果是 int main (void) { char s[100]; int c, i; scanf("%c", &c); scanf("%d", &i); scanf("%s", s); printf("%c,%d,%s\n",c, i, s); return 0; }
A、123,456,789
B、1,456,789
C、1,23,456,789
D、1,23,456

12、以下程序的输出结果是 int main (void){ int p[8] = { 11, 12, 13, 14, 15, 16, 17, 18}, i=0, j=0; while(i++<7) if(p[i]%2) j += p[i]; printf("%d\n", j); return 0; }
A、42
B、45
C、56
D、60

13、有下列程序,则下列叙述中正确的是 int main(void){ char p[] = { 'a', 'b', 'c'}, q[10] = { 'a', 'b', 'c'}; printf("%d%d\n", strlen(p), strlen(q)); return 0; }
A、在给p和q数组赋初值时,系统会自动添加字符串结束符,故输出的长度都为3
B、由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3
C、由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3
D、由于p和q数组中都没有字符串结束符,故长度都不能确定

14、以下程序的输出结果是 int main (void) { int x[] = { 1, 3, 5, 7, 2, 4, 6, 0}, i, j, k; for(i=0; i<3; i++) for(j=2; j>=i; j--) if(x[j+1]>x[j]) { k=x[j]; x[j]=x[j+1]; x[j+1]=k; } for(i=0; i<3; i++) for(j=4; j<7-i; j++) if(x[j+1]>x[j]) { k=x[j]; x[j]=x[j+1]; x[j+1]=k; } for(i=0; i<3; i++) for(j=4; j<7-i; j++) if(x[j]>x[j+1]) { k=x[j]; x[j]=x[j+1]; x[j+1]=k; } for(i=0; i<8; i++) printf("%d", x[i]); printf("\n"); return 0; }
A、75310246
B、01234567
C、75310462
D、13570246

15、下列程序的运行结果是 int main(void){ int a[3][3] = { { 1, 2, 3}, { 4, 6, 2}, { 9, 3, 6}}, s=0; int i, j, k=1; for(i=0; i<3; i++) { for(j=0; j<3; j++) a[i][j] = a[i][j]/k; k++; } for(i=0; i<3; i++) s += a[i][i]; printf("%d", s); return 0; }
A、3
B、6
C、7
D、14

第7周编程练习

1、多项式加法

2、鞍点

第8周:数据类型

第8周选择题

1、C语言中最简单的数据类型包括
A、整型、实型、逻辑型
B、整型、实型、字符型
C、整型、字符型、逻辑型
D、整型、实型、逻辑型、字符型

2、下列选项中, 值为1的表达式是
A、1-'0'
B、1-'\0'
C、'1'-0
D、'\0'-'0'

3、下列程序的输出结果是 int main(void) { int k=11; printf("k=%d, k=%o, k=%x\n", k, k, k); return 0; } A. B. C. D. 【答案】
A、k=11, k=12, k=11
B、k=11, k=13, k=13
C、k=11, k=013, k=0xb
D、k=11, k=13, k=b

4、设有定义"int a=1, b=2, c=3, d=4, m=2, n=2;", 则执行表达式"(m=a>b)&&(n=c>d)"后, n的值为
A、1
B、2
C、3
D、0

5、以下选项中, 非法的字符常量是
A、't'
B、'\65'
C、"n"
D、'\t'

6、下列关于单目运算符++、--的叙述正确的是
A、它们的运算对象可以是任何变量和常量
B、它们的运算对象可以是char型变量和int型变量, 但不能是float型变量
C、它们的运算对象可以是int型变量, 但不能是double型变量和float型变量
D、它们的运算对象可以是char型变量、int型变量和float型变量

7、设变量x为float型且已赋值, 则以下语句中能将x中的数值保留到小数点后两位, 并将第三位四舍五入的是
A、x=x*100+0.5/100.0;
B、x=(x*100+0.5)/100.0;
C、x=(int)(x*100+0.5)/100.0;
D、x=(x/100+0.5)*100.0;

8、设有定义"int k=0;", 下列选项的4个表达式中与其他3个表达式的值不相同的是
A、k++
B、k+=1
C、++k
D、k+1

9、已有定义"int x=3,y=4,z=5;", 则表达式"!(x+y)+z-1&&y+z/2"的值是
A、6
B、0
C、2
D、1

10、已知字符"A"的ASCI代码值是65, 字符变量c1的值是"A", c2的值是"D"。执行语句"printf("%d,%d",c1,c2-2);"后, 输出结果是
A、A,B
B、A,68
C、65,66
D、65,68

11、在以下一组运算符中, 优先级最高的运算符是
A、<=
B、=
C、%
D、&&

12、若有定义"char c1='b',c2='e';", 则语句"printf("%d,%c\n",c2-c1,c2-'a'+'A');"的输出结果是
A、2,M
B、3,E
C、2,E
D、格式控制不一致, 结果不确定

13、若有定义"char a; int b; float c; double d;", 则表达式a*b+d-c值的类型为
A、float
B、int
C、char
D、double

14、与语句"y=(x>0?1:x<0?-1:0);"功能相同的if语句是
A、if(x>0)y=1; else if(x<0)y=-1; else y=0;
B、if(x) if(x>0)y=1; else if(x<0)y=-1; else y=0;
C、y=-1; if(x) if(x>0)y=1; else if(x==0)y=0; else y=-1;
D、y=0; if(x>=0) if(x>0)y=1; else y=-1;

15、设有定义"int a=2,b=3,c=4;", 则下列选项中值为0的表达式是
A、(!a==1)&&(!b==0)
B、(a<b)&&!c‖1
C、a&&b
D、a‖(b+b)&&(c-a)

第8周编程练习

1、计算分数精确值

第8周编程练习(请同学们做这个!!!)

1、求100以内的最大素数

第9周:指针

第9周选择题

1、若有定义“int[10]={ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p=a;”, 则值为6的表达式是
A、*p+6
B、*(p+6)
C、*p+=5
D、p+5

2、若有定义“int n1=0, n2, *p=&n2, *q=&n1;", 则与赋值语句“n2=n1”等价的是
A、*p=*q
B、p=q
C、*p=&n1
D、p=*q

3、设有定义“int a[10]={ 1, 2, 3, 4, 5, 6, 7, 8, 9,10}, *p=&a[3], b;”, 则执行语句“b=p[5];”后变量b的值为
A、5
B、6
C、8
D、9

4、以下程序的输出结果是 int main(void){ int a[10]={ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p=&a[3], *q=p+2; printf("%d\n", *p+*q); return 0; }
A、16
B、10
C、8
D、6

5、下列叙述中错误的是
A、改变函数形参的值, 不会改变对应实参的值
B、函数可以返回地址值
C、可以给指针变量赋一个整数作为地址值
D、当在程序的开头包含头文件stdio.h时, 可以给指针变量赋NULL

6、以下程序的输出结果是 void fun(int *x, int *y) { printf("%d%d", *x, *y); *x=3; *y=4; } int main(void) { int x=1, y=2; fun(&y, &x); printf("%d%d", x, y); return 0; }
A、2143
B、1212
C、1234
D、2112

7、以下程序的输出结果是 void fun( char *a, char *b) { a=b; (*a)++; } int main(void) { char c1='A', c2='a", *p1, *p2; p1=&c1; p2=&c2; fun(p1, p2); printf("%c%c\n, c1, c2); return 0; }
A、Ab
B、aa
C、Aa
D、Bb

8、以下程序的输出结果是 void f(int *q) { int i=0; for(;i<5;i++)(*q)++; } int main(void) { int a[5]={ 1, 2, 3, 4, 5}, i; f(a); for(i=0; i<5; i++) printf('%d,",a[i]); return 0; }
A、2,2,3,4,5,
B、6,2,3,4,5,
C、1,2,3,4,5,
D、2,3,4,5,6,

9、下面程序输出数组中的最大值, 由s指针指向该元素, 则划线处条件应该是 int main(void) { int a[10]={ 6, 7, 2, 9, 1, 10, 5, 8, 4, 3}, *p, *s; for(p=a, s=a; p-a<10; p++) if(_____) s=p; printf("The max:%d", *s); return 0; }
A、p>s
B、*p>*s
C、a[p]>a[s]
D、p-a>p-s

10、以下程序的输出结果是 int main(void) { char a="programming", b[]="language"; char *p1=a, *p2=b; int i; for(i=0; i<7; i++) if(*(p1+i)==*(p2+i)) printf("%c", *(p1+i)); return O; }
A、gm
B、rg
C、or
D、ga

11、阅读以下函数, 此函数的功能是 int fun(char * s1, char *s2) { int i=0; while(s1[i]==s2[i]&&s2[i]!='\0') i++; return(s1[i] == '\0' && s2[i] == '\0'); }
A、将s2所指字符串赋给s1
B、比较s1和s2所指字符串的大小, 若s1比s2的大, 函数值为1, 否则函数值为0
C、比较s1和s2所指字符串是否相等, 若相等, 函数值为1, 否则函数值为0
D、比较s1和s2所指字符串的长度, 若s1比s2的长, 函数值为1, 否则函数值为0

12、以下函数的功能是 void fun(char *p2, char *p1) { whi1e((*p2=*p1)!='\0') { p1++; p2++; } }
A、将p1所指字符串复制到p2所指内存空间
B、将p1所指字符串的地址赋给指针p2
C、对p1和p2两个指针所指字符串进行比较
D、检查p1和p2两个指针所指字符串中是否有'\0'

13、以下程序的输出结果是 int fun(char s[]) { int n=0; while(*s<='9'&&*s>='0') { n=10*n+*s-'0'; s++; } return (n); } int main(void) { char s[10]={ '6', '1', '*', '4', '*', '9', '*', '0', '*'}; printf("%d\n", fun(s)); return 0; }
A、9
B、61490
C、61
D、5

14、以下程序的输出结果是 int main(void) { char *p1, *p2, str[50]="ABCDEFG"; p1="abcd"; p2="efgh"; strcpy(str+1, p2+1); strcpy(str+3, p1+3); printf("%s", str); return 0; }
A、AfghdEFG
B、Abfhd
C、Afghd
D、Afgd

15、以下程序的输出结果是 #include <string.h> int main(void) { char p[20]={ 'a', 'b', 'c', 'd'}, q[]="abc", r[]="abcde"; strcpy(p+strlen(q), r); strcat(p, q); printf("%d%d\n", sizeof(p), strlen(p)); return 0; }
A、209
B、99
C、2011
D、1111

第9周编程练习

1、重复数字检查

2、教授的课

第10周:字符串

第10周选择题

1、假如str是字符数组,下面哪个选项与其他选项不等价
A、strcpy(str,"");
B、strcat(str,"");
C、str[0] = '\0';
D、*str = 0;

2、下列数据中为字符串常量的是:
A、A
B、"house"
C、How do you do
D、$abc

3、strlen函数的返回值是:
A、除了空字符以外的字符数
B、包含空字符的字符数
C、字符的ASCII码
D、以上说法都错误

4、下列输出哪个是正确的程序输出 printf( "%d", strspn( "Cows like to moo.", "Ceiklosw " );
A、Nothing.
B、10
C、8
D、e

5、假定string1 = "hello" ,string2 = "hello world" 下列哪一项返回 0 ?
A、strcmp(string1, string2);
B、strcmp(string1, string2, 6);
C、strncmp(string1, string2, 6);
D、strncmp(string1, string2, 5);

6、以下程序的运行结果是 void main ( ) { char str [] = "I love China!"; printf ("%s", str); printf ("%s\n", str + 7); }
A、I love China!China!
B、IChina!
C、I love China! China!
D、I China!

7、有两个定义“char ch1[] = "Hello"; char ch2[6] = { 'H','e','l','l','o'};”, 以下表达式为真的是
A、strlen(ch1) == strlen(ch2) && sizeof(ch1) > sizeof(ch2)
B、strlen(ch1) > strlen(ch2) && sizeof(ch1) > sizeof(ch2)
C、strlen(ch1) == strlen(ch2) && sizeof(ch1) == sizeof(ch2)
D、strlen(ch1) < strlen(ch2) && sizeof(ch1) < sizeof(ch2)

8、有以下字符串定义: ① char str[ ] = { 'c', 'h', 'i', 'n', 'a', ''}; ② char str[ ] = { "china"}; ③ char str[ ] = { 'c', 'h', 'i', 'n', 'a'}; ④ char str[ ] = "china"; 以下说法正确的是
A、① 、②、③ 、④等价
B、① 、②、③ 等价
C、②、③ 、④等价
D、① 、②、④等价

9、以下程序的输出是 int main(void){ char str[ ]= "0123\0456789"; printf ("%d ", strlen(str)); printf ("%d", strlen(&str[5])); }
A、12 7
B、9 4
C、4 4
D、4 7

10、以下程序的运行结果是 int main(void) { char s1[]="hello"; char *s2="hello"; char *s3=s1; s1[0]='H'; s2[0]='H'; printf("%s %s %s", s1, s2, s3); }
A、Hello hello Hello
B、Hello Hello hello
C、Hello Hello Hello
D、程序运行出错

第10周编程练习

1、GPS数据处理

第11周:结构类型

第11周选择题

1、若程序中有下面的说明和定义,则会发生的情况是 struct abc{ int x; char y; } struct abc s1, s2;
A、编译出错
B、程序将顺利编译、连接、执行
C、能顺利通过编译、连接,但不能执行
D、能顺利通过编译,但连接出错

2、以下选项中,不能定义s为合法的结构变量的是
A、struct abc { double a; char b[10]; } s;
B、struct { double a; char b[10]; } s;
C、struct ABC { double a; char b[10]; }; struct ABC s;
D、struct s { double a; char b[10]; };

3、有定义"struct ex { int x; float y; char z;} example;", 下面叙述中不正确的是
A、struct是定义结构类型的关键字
B、example是结构类型名
C、x, y, z都是结构成员名
D、struct ex是结构类型名

4、设有如下定义, struct ss { char name [10]; int age; char sex; } std[3], *p = std; 下面输人语句中错误的是
A、scanf("%d", &(*p).age);
B、scanf("%s", &std.name);
C、scanf("%c", &std[0].sex);
D、scanf("%c", &(p->sex));

5、下列程序的输出结果是 struct S { int n; int a[20]; }; void f(int *a, int n) { int i; for (i=0; i<n-1; i++) a[i] = a[i] + i; } int main(void) { int i; struct S s={ 10, { 2, 3, 1, 6, 8, 7, 5, 4, 10, 9}}; f(s.a, s.n); for (i=0; 1<s.n; i++) printf("%d,", s.a[i]); }
A、2,4,3,9,12,12,11,11,18,9,
B、3,4,2,7,9,8,6,5,11,10,
C、2,3,1,6,8,7,5,4,10,9,
D、1,2,3,6,8,7,5,4,10,9,

6、下列程序的输出结果是 typedef struct { char name[9]; char ex; float score[2]; } STU; void f(STU a) { STU b = { "Zhao", 'm', 85.0, 90.0}; int i; strcpy(a.name, b.name); a.sex = b.sex; for (i=0; i<2; i++) a.score[i] = b.score[i]; } int main(void) { STU c={ "Qian", 'f', 95.0, 92.0}; f(c); printf("%s, %c, %2.0f, %2.0f\n", c.name, c.sex, c.socre[0], c.score[1]; }
A、Qian, f, 95, 92
B、Qian, m, 85, 90
C、Zhao, f, 95, 92
D、Zhao, m, 85, 90

7、下列程序的输出结果是 struct stu { int num; char name[10]; int age; }; void fun(struct stu *p) { printf ("%s\n",(*p).name); } int main(void) { struct stu students[3] = { { 9801,"Zhang", 20},{ 9802,"Wang", 19}, { 9803, "Zhao", 18}}; fun(student+2); }
A、Zhang
B、Zhao
C、Wang
D、18

8、下列程序的输出结果是 struct stu { char num[10]; float score[3]; }; int main(void) { struct stu s[3]={ { "20021", 90, 95, 85}, { "20022", 95, 80, 75}, { "20023", 100, 95, 90}}; struct stu *p=s; int i; float sum=0; for(i=0; i<3; i++) sum=sum + p->score[i]; printf("%6.2f\n", sum); }
A、260.00
B、270.00
C、280.00
D、285.00

9、下列程序的输出结果是 struct STU { char name[10]; int num; }; void f(char *name, int num) { struct STU s[2]={ { "SunDan", 20044}, { "Penghua", 20045}}; num=s[0].num; strcpy(name, s[0].name); } int main(void) { struct STU s[2]={ { "YangSan", 20041},{ "LiSiGuo", 20042}}, *p; p=&s[1]; f(p->name, p->num); printf("%s%d\n", p->name, p->num); }
A、SunDan 20042
B、SunDan 20044
C、LiSiGuo 20042
D、YangSan 20041

10、下列程序的输出结果是 struct STU { char name[10]; int num; }; void f1(struct STU c) { struct STU b={ "Three", 2042}; c=b; } void f2(struct STU * c) { struct STU b={ "Two", 2044}; *c=b; } int main(void) { struct STU a={ "One", 2041}, b={ "Two", 2043}; f1(a); f2(&b); printf("%d%d\n", a.num, b.num); return 0; }
A、20412044
B、20412043
C、20422044
D、20422043

第11周编程练习

1、标准电话号码

第11周编程练习(最新,请同学们做这个)

1、标准电话号码

第12周:程序结构

2 编译预处理和宏随堂测验

1、假设宏定义:#define DOUBLE(x) 2*x 则DOUBLE(1+2)的值是

2、假设宏定义如下: #define TOUPPER(c) ('a'<=(c)&&(c)<='z'?(c)-'a'+'A':(c))设s是一个足够大的字符数组,i是int型变量,则以下代码段的输出是: strcpy(s, "abcd"); i = 0; putchar(TOUPPER(s[++i]));

第12周选择题

1、在宏定义#define PI 3.1415926中,用宏名PI代替一个
A、双精度数
B、常量
C、单精度数
D、字符串

2、以下叙述不正确的是
A、C程序在执行过程中对预处理命令行进行处理
B、在程序中凡是以#开始的语句行都是预处理命令行
C、预处理命令行可以出现在C程序中任意一行上
D、预处理命令行都必须以#开始

3、在“文件包含”预处理命令形式中,当#include后名的文件名用<>(尖括号)括起时,寻找被包含文件的方式是
A、先在源程序所在目录中搜索,再按系统设定的标准方式搜索
B、直接按系统设定的标准方式搜索目录
C、仅仅搜索源程序所在目录
D、仅仅搜索当前目录

4、在任何情况下计算平方数都不会引起二义性的宏定义是
A、#define POWER(x) (x)*(x)
B、#define POWER(x) ((x)*(x))
C、#define POWER(x) (x*x)
D、#define POWER(x) x*x

5、以下程序的运行结果是#include<stdio.h> #define DOUBLE(r) r*r int main ( ) { int x=1,y=2,t; t = DOUBLE(x+y) ; printf ("%d\n",t); return 0; }
A、7
B、6
C、5
D、8

6、若程序中有宏定义“define N 100”,则下列叙述中正确的是
A、宏定义中定义了标识符N的值为整数100
B、在编译程序对C源程序进行预处理时用100替换标识符N
C、对C源程序进行编译时用100替换标识符N
D、在运行时用100替换标识符N

7、在C语言中,函数返回值的类型最终取决于
A、函数定义时在函数首部所说明的函数类型
B、return语句中表达式值的类型
C、调用函数时主调函数所传递的实参类型
D、函数定义时形参的类型

8、若函数调用时的实参为变量,下列关于函数形参和实参的叙述中正确的是
A、函数的实参和其对应的形参共占同一存储单元
B、形参只是形式上的存在,不占用具体存储单元
C、同名的实参和形参占同一存储单元
D、函数的形参和实参分别占用不同的存储单元

9、以下叙述中错误的是
A、用户定义的函数中可以没有return语句
B、用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C、用户定义的函数中若没有return语句,则应当定义函数为void类型
D、函数的return语句中可以没有表达式

10、下列程序执行后输出的结果是 int d=1; void fun(int q) { int d=5; d += q++; printf("%d", d); } int main(void){ int a=3; fun(a); d += a++; printf("%d\n*, d); return 0; }
A、84
B、96
C、94
D、85

11、以下程序的输出结果是 define PT 5.5 define S(x) PT*x*x int main(void) { int a=1, b=2; printf("%4.1f\n", S(a+b)); }
A、49.5
B、9.5
C、22.0
D、45.0

12、设有如下函数定义 int fun(int k) { if(k<1) return 0; else if(k==1) return 1; else return fun(k-1) + 1; } 若执行调用语句“n=fun(3);”, 则函数fun总共被调用的次数是
A、2
B、3
C、4
D、5

13、以下程序的输出结果是 define M(x,y, z) x*y+z int main(void) { int a=1, b=2, c=3; printf("%d\n", M(a+b, b+c, c+a) ); return 0; }
A、19
B、17
C、15
D、12

14、以下程序的输出结果是 int fun(int x, int y) { if(x!=y) return ((x+y)/2); else return (x); } void main( ) { int a=4, b=5, c=6; printf("%d\n", fun(2*a, fun(b, c))); }
A、3
B、6
C、8
D、12

15、以下程序的输出结果是 int fun(int a, int b) { if(b==0) return a; else return (fun(--a, --b)); } int main(void) { printf("d\n", fun(4,2)); return 0; }
A、1
B、2
C、3
D、4

第12周编程题

1、用自己的方法实现pow(x, n)

2、汉诺塔

第13周:文件

第13周选择题

1、下列关于C语言数据文件的叙述正确的是
A、文件由ASCII码字符序列组成,C语言只能读写文本文件
B、文件由二进制数据序列组成,C语言只能读写二进制文件
C、文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D、文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

2、下列关于typedef的叙述销误的是
A、用typedef可以增加新类型
B、typedef只是将已存在的类型用一个新的名字来代表
C、用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名
D、用typedef为类型说明一个新名,通常可以增加程序的可读性

3、下列叙述中正确的是
A、C语言中的文件是流式文件,因此只能顺序存取数据
B、打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被厦盖
C、在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第一个数据
D、当对文件的读(写)操作完成之后,必须将它美闭,否则可能导致数据丢失

4、在C程序中,可把整型数以二进制形式存放到文件中的函数是
A、fprintf函数
B、fread函数
C、fwrite函数
D、fputc函数

5、若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是
A、fopen("A:\user\abc.txt", "r")
B、fopen("A:\\user\\abc.txt", "r+")
C、fopen("A:\user\abc.txt", "rb")
D、fopen("A:\\user\\abc.txt”, "w")

6、若以"a+"方式打开一个已存在的文件。则以下叙述正确的是
A、文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可做添加和读操作
B、文件打开时,原有文件内容不被删除,位置指针移到文件开头,可做重写和读操作
C、文件打开时,原有文件内容被删除,只可做写操作
D、以上各种说法都不正确

7、下列程序的输出结果是 int main(void) { FILE tp; int k, n, a[6]={ 1, 2, 3, 4, 5, 6}; fp=fopen("d2.dat", "w"); fprintf(fp, "%d%d%d\n", a[0], a[1], a[2]); fprintf(fp, "%d%d%d\n", a[3], a[4], a[5]); fclose(fp); fp=fopen("d2.dat", "r"); fscanf(fp,"%d%d", &k, &n); printf("%d%d\n", k, n); fclose (fp); return 0; }
A、12
B、14
C、1234
D、123456

8、下面的程序执行后,文件test中的内容是 void fun(char *fname, char *st) { FILE *myf; int i; myf=fopen (fname, "w"); for(i=0; i<strlen(st); i++) fputc(st[i], myf); fclose(myf); } int main(void){ fun("test", "new world"); fun("test", "hello,"); return 0; }
A、new worldhello,
B、hello,
C、new world
D、hello,rld

9、下列与函数feek(fp, OL, SEEK_SET)有相同作用的是
A、feof(fp)
B、ftell(fp)
C、fgetc(fp)
D、rewind(fp)

10、下列程序的输出结果是 int main(void){ FILE *fp; int i, k, n; fp = fopen("data.dat", "w+"); for(i=1; i<6; i++) { fprintf(fp, "%d", i); if(i%3==0) fprintf(fp, "\n"); } rewind(fp); fscanf(fp, "%d%d", &k, &n); printf("%d%d\n", k, n); fclose(fp); return 0; }
A、00
B、12345
C、14
D、12

第13周编程题

1、颠倒二进制位