0.0687

五煦查题

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

mooc程序设计入门——C语言_3章节答案(mooc完整答案)

36 min read

mooc程序设计入门——C语言_3章节答案(mooc完整答案)

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

第1周单元测验

1、程序以下关于C语言的设计特点,正确的入门是 。
A、语言章表达能力强且灵活;
B、节答可移植性好
C、案m案提供了丰富的整答数据类型,允许程序员定义各种类型的程序变量指针和函数指针;
D、以上答案都对

2、设计C源程序的入门基本单位是:
A、程序行
B、语言章语句
C、节答函数
D、案m案字符

3、整答以下叙述不正确的程序是().
A、一个C源程序可由一个或多个函数组成
B、一个C源程序必须包含一个main()函数
C、C程序的基本组成单位是函数
D、在C程序中,注释说明只能位于一条语句的后面

4、下列叙述中错误的是
A、计算机不能直接执行用C语言编写的源程序
B、C程序经C编译程序编译后, 生成扩展名为obj的文件是一个二进制文件
C、扩展名为obj的文件,经连接程序生成扩展名为exe的文件是一个二进制文件
D、扩展名为obj和exe的二进制文件都可以直接运行

5、设b=1234 , 执行printf(“%%d@%d”,b) 语句,输出结果为:
A、1234
B、%1234
C、%%d@1234
D、%d@ 1234

6、C源程序是由多个函数组成的,程序的执行是按书写顺序进行的。

7、一个C程序可以由一个文件组成,也可由若干文件组成。

8、C程序由函数组成

9、C 程序的每一行结束都有一个” ; ”

10、c语言源程序的扩展名是_____

11、结构化程序设计所规定的三种基本控制结构是____、_____、_____

12、c程序的基本组成单位是___

13、一个C源程序是由若干个函数构成,其中必须有一个是( ) 函数。(请用英文单词回答)

第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、a=b+=c+5,若b=1,c=2,则a的值是 。
A、1
B、7
C、8
D、出错

4、以下选项中正确的整型常量是:
A、12.
B、-20
C、1,000
D、4 5 6

5、指出下面正确的输入语句是 .
A、scanf (“a=b=%d”,&a,&b);
B、scanf (“a=%d,b=%f”,&m,&f );
C、scanf (“%3c”,c);
D、scanf (“%5.2f”, &f);

6、若x是int型变量,y是float型变量,所用scanf语句为 scanf(“x=%d,y=%f”,&x,&y);正确的输入操作是 。
A、x=10,y=66.6<回车>
B、10 66.6<回车>
C、10<回车>66.6<回车>
D、x=10<回车>y=66.6<回车>

7、scanf ( )函数的地址表列是用( ) 符号加上变量名表示变量的地址。
A、%
B、&
C、#
D、!

8、给定: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);

9、以下哪些是有效的变量名?
A、main
B、4ever
C、monkey_king
D、__int

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

11、在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式

12、有a=3,b=5。执行a=b,b=a后,已使a的值为5,b的值为3。

13、在C中所用的变量必须先说明后使用

14、执行表达式a=b后,在内存中a和b存储单元中的原值都将被改变,a的值已由原来的改变为b的值,b的值由原来改变为0

15、C语言中的标识符只能由三种字符组成,它们是____、_____、_____(答案之间间隔一个空格)

16、写出以下表达式的结果 6 + 5 / 4 - 2

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

18、若k为int整型变量且赋值11。请写出运算k++后表达式得值_____ 和变量的值____(答案之间用一个空格分隔)

19、写出以下表达式的结果 2 + 2 * (2 * 2 - 2) % 2 / 3

20、写出以下表达式的结果 10 + 9 * ((8 + 7) % 6) + 5 * 4 % 3 * 2 + 3

21、写出以下表达式的结果 1 + 2 + (3 + 4) * ((5 * 6 % 7 / 8) - 9) * 10

22、若想通过输入语句”scanf(“a=%d,b=%d”,&a,&b);”给a赋值1,给b赋值2,则输人数据的形式应该是______。

23、C语言规定对所用到的变量要( ) 。

第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、以下代码段的输出是什么? int i=10; for ( ; i> 1; i /=2 ) { printf("%d ", i++); }

第3周单元测验

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、下列程序的功能是 。 int main ( void) { int i,s=0; for(i=1;i<10; i+=2) s+=i+1: printf(%d”,s); return 0: }
A、自然数1~9的累加和
B、自然数1~10的累加和
C、自然数1~9中的奇数之和
D、自然数1~ 10中的偶数之和

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

4、当执行以下程序段时,供选择的答案是___________。 x=-1; do { x=x*x; } while(!x)
A、循环体将执行一次
B、循环体将执行两次
C、循环体将执行无限次
D、系统提示有语法错误

5、下列程序的运行结果是。 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

6、下列条件语句中,功能与其他语句不同的是____。
A、if(a) printf(“%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)printf(“%d\n”, x); else printf(“%d\n”,y);
D、if( a== 0) printf(“%d\n”, x); else printf(“%d\n”, y);

7、设变量已正确定义,则以下能正确计算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;

8、以下起到注释功能的是
A、/* */
B、//
C、rem
D、\\

9、为先判断后执行的循环是
A、for( ){ ....}
B、while( ){ ....}
C、do{ ....}while( );
D、if( ){ ....}

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

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

12、若k是int型变量,且有下面的程序段: k=-3; if (k<=0) printf(“####”); else printf(“&&&&”); 上面程序段的输出结果是 #### 。

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

14、do { ……} while(0); 程序块至少会执行一次

15、语句 for(i=0;i=10;i++) { ---}; 将循环10次.

16、写出判断x是否为偶数?(注意直接写出判断表达式)

17、若从键盘输入58,则以下程序段的输出结果是____ int main( void) { int a; scanf(“%d”,&a); if (a>50) printf (“%d”, a); if ( a>40) printf (“%d”,a); if (a>30) print f (“%d”,a); return 0;}

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

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

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

21、以下for语句的循环次数是____次。 for(x=0;x <= 4;x++) x=x+1;

22、以下程序当键盘输入1 2 3 4 5 -1<回车>时,运行结果是: #include “stdio.h” main() { int k=0,n; do{ scanf("%d”,&n);k+=n;} while (n!=-1); printf(“k=%d n=%d\n”,k,n); }

23、以下程序段的输出结果是__。 int a=1,b=2,c=3; if (c =a) printf (“%d\n”,c); else printf (“%d\n”, b);

24、以下程序的功能是输入三个数,输出三个数中的最大值。请填空。(两个答案之间用一个空格分开,请使用有大于符号,不要使用大于等于符号) #include <stdio. h> int main ( void) { int x, y, z, u, v; scanf (“%d%d%d”, &x, &y, &z); if(_____) u=x;else u =y; i f(_____)v=u; else v=z; printf (“%d\n”, v); return 0; }

25、若s的当前值为0,执行循环语句”for(i=1;i<= 10; i=i+3)s=s+i;”后,i的值为__。

第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、在C语言中,能代表逻辑值"真"的是
A、true
B、大于0的数
C、非0整数
D、非0的数

2、逻辑运算符两侧运算对象的数据类型是
A、只能是0或1
B、只能是0或非0正数
C、只能是整型或字符型数据
D、可以是任何类型的数据

3、以下for循环是: for(x=0,y=0;(y!=123)&&(x<4);x++);
A、无限循环
B、循环次数不变
C、执行4次
D、执行3次

4、在C语言的if语句中,用作判断的表达式为( )
A、关系表达式
B、逻辑表达式
C、算术表达式
D、任意表达式

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

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

7、下列程序段运行后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

8、假设所有变量均为整型,有表达式(a=2,b=5,a>b?a++:b++,a+b)的值是:( )
A、7
B、8
C、9
D、2

9、在以下运算符中,优先级最高的运算符是( )
A、!
B、=
C、+
D、||

10、执行下列程序段后,变量i的正确结果是( ) int i=10,j=0; do { switch(i) { case 9 : i++; case 10 : i++; case 11 : i++; defaut : i++; } } while (j);
A、10
B、11
C、12
D、13

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

12、若给定条件表达式(M)?(a++):(a--),则其中表达式M( )
A、和(M==0)等价
B、和(M==1)等价
C、和(M!=0)等价
D、和(M!=1)等价

13、设a为整型变量,能正确表达数学关系: 10<a<15的C语言表达式是 ( )
A、10<a<15
B、a==11||a==12||a==13||a==14
C、a>10&&a<15
D、!(a<=10)&&!(a>=15)

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

15、有定义语句“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;

16、对for(表达式1;;表达式3)可理解为for(表达式1;1;表达式3)

17、for(;;)表示无限循环.

18、设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c>d)后n的值为0。

19、下列程序段执行循环二次 x=-1; do { x=x*x;}while(!x);

20、求一批整数中的最大,最小数分别是多少的程序如下: #include “stdio.h” main() { int n,i,max,min,p; scanf(“%d %d”, &n,&p); for (i=1,max=p,min=p; i<n; i++) { scanf(“%d”, &p); if (p>max) max=p; if (p<min) min=p; } printf(“max=%d,min=%d”,max,min); }

21、在a&&b表达式中,若a已经为0,则不再算b,这种现象叫短路。

22、在a||b表达式中,若a已经为1,则不再算b,这种现象叫短路。

23、为表示关系x3y3z,应使用C语言表达式是 (

24、有int i,j,k;则执行”for(i=0,j=10;i<=j;i++,j--) k=i+j;”循环后k的值为___。

25、1. 下列程序段的输出结果是____。 int main (void) { int a=3,b=4,c=5,t=99; if(b<a&&a<c) t=a; a=c; c=t; if( a<c&&b<c) t=b, b=a,a=t; printf ("%d %d %d\n",a,b,c); return 0;}

26、下列程序段的输出结果是___。 int main ( void) { int a=5, b=4, c=3,d=2; if (a>b>c) printf (“%d\n”,d); else if((c-1>=d) ==1) printf (“%d\n”, d+1); else printf (“%d\n”, d+2); return 0;}

27、C语言中要实现多分支结构,除了用嵌套的if语句实现外,还可以用____语句实现

28、以下程序段的输出结果是____。 int main ( void) { int i, m=0,n=0,k=0; for (i=9; i<=11;i++) switch(i/10) { case 0: m++; n++; break; case 1: n++; break; default: k++; n++;} printf(“%d %d %d\n”, m, n, k); return 0;}

29、以下代码的输出结果是: int i=1; switch ( i%3 ) { case 0: printf("zero"); case 1: printf("one"); case 2: printf("two"); }

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

31、表示条件:10<x<100或x<0的C语言表达式是( )(注意:表达式中不要出现空格)

32、设x,y,z为int型变量,请写出描述“x或y中有一个小于z”的表达式是( ) (注意:表达式中不要出现空格)

33、以下程序的运行结果是( ) main() { int x,y,z; x=3; y=z=4; printf(“%d,”,(x>=y>=z)?1:0); printf(“%d”,z>=y&&y>=x); }

34、int a=7,b=9,t; t=(a>b)?a:b; t的值为( )

35、若int x=5,y=0;则if (x) if (y) printf(“1”); else printf(“2”);的运行结果是( )

第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、以下程序的输出结果是( ) #include “stdio.h” main() { int i; for ( i=1;i<=5;i++) { if (i%2) printf(“*”); else continue; printf(“#”); } printf(“$\n”); }
A、#*#*#*$
B、*#*#*#$
C、*#*#$
D、#*#*$

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

3、执行下面的程序后变量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、8
B、7
C、6
D、5

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

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

6、以下程序段的输出结果是____。 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、10 11

7、以下程序段的输出结果是___。 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

8、在下列选项中,构成死循环的程序段,供选择的答案是()
A、int i=100; while (1) { i=i%100+1; if(i>100) break; }
B、for ( ; ; );
C、int k=1000; do { ++k;} while (k>=10000);
D、int s=36; while (s); --s;

9、若变量已正确定义,要求程序段完成求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);

10、continue语句是终止整个循环的执行.

11、break语句是终止整个循环的执行.

12、break语句是终止当前循环的执行.

13、下列程序的运行结果为( ) main() { int i,j,sum,m,n=4; sum=0; for(i=1;i<=n;i++) { m=1; for(j=1;j<=i;j++) m=m*j; sum=sum+m; } printf(“sum=%d\n”,sum); }

14、以下程序运行后从键盘上输入1298,则输出结果为____。 int main ( void) { int n1, n2; scanf (“%d”,&n2); while (n2!= 0) { n1=n2%10; n2= n2 /10; printf (“%d”,n1); } return 0; }

15、下面程序的功能是输出以下形式的金字塔图案。请填空。(两个答案之间用1个空格隔开) * *** ***** 慕课答案大全

* 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;}

16、下面程序段的功能是:输出100以内能被3整除且个位数为6明所有整数。请填空。(两个答案之间用1个空格隔开) int i,j; for (i=0;_______;i++) { j =i* 10+6; if (______) continue; printf (“%d “, j); }

17、执行下列语句: for (i=1,s=0; i<=2; i++) for (j=1; j<=3; j++) { s=s+i+j; } 后,s的值为( )

18、下列程序段的运行结果是: for(i=4;i>=1;i--) for(j=1;j<=i;j++) printf(“#”);

19、下面程序段的运行结果是【1】 . i=1 ;s=3 ; do{ s+=i++ ; if(s%7==0) continue ; else ++i; }while(s<15) ; printf("%d",i);

20、下面程序的功能是计算1至10之间的奇数之和及偶数之和。请填空。(两个答案之间用1个空格隔开) int main ( void) { int a, b,c,i; a=c=0; for (i=0;i<=10; i+=2) { a+=i; __________________; c+=b; } printf(“偶数之和=%d\n”,a); printf(“奇数之和=%d\n”,_____); return 0; }

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

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

第5周编程练习

1、素数和

2、念整数

第6周:数组与函数

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

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; }

第6周单元测验

1、以下代码片段的输出是: 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、****

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

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

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

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

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

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

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

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

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

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

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

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

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

15、下列程序的输出结果是____。 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

16、下列程序的输出结果是____ 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、10, 20, 30
C、456, 567,678
D、678,567,456

17、下列程序的输出结果是____。 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

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

19、C语言的程序是从 ____开始执行的。
A、程序的第一条语句
B、程序的第一个函数
C、程序的main( )函数
D、包含文件中的第一个函数

20、在C语言程序中,说法正确的是____。
A、函数的定义可以嵌套,但函数的调用不可以嵌套
B、函数的定义不可以嵌套,但函数的调用可以嵌套
C、函数的定义和函数的调用都不可以嵌套
D、函数的定义和函数的调用都可以嵌套

21、函数调用语句 si(v1+v2,(v3+v4+v5),v6)含有_____个参数。
A、3
B、4
C、5
D、6

22、C语言规定,函数返回值的类型是由______
A、return语句中的表达式类型所决定
B、调用该函数时的主调函数类型所决定
C、调用该函数时系统临时决定
D、在定义该函数时所指定的函数类型所决定

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

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

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

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

27、1. 对于以下代码: 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"

28、下列可用于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

29、对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)

30、以下哪个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++);

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

32、数组的下标必须是整数,那么字符可以做下标吗?比如: int a[255]; a['A'] = 1; 这样的代码可行吗?

33、C允许对数组的大小作动态定义,即可用变量定义数组的大小。

34、数组定义 int a[10]; 也可以写成 int a(10);

35、在对一维数组全部数组元素赋初值时,可以不指定数组长度。

36、定义单精度s为5×6(5行6列)的数组可写成 float a[5][6];

37、数组定义 int a[10]; 表示数组名为a,此数组有10个元素。

38、数组定义 int a[10]; 表示数组名为a,此数组有10个元素。第10个元素为a[10]。

39、形参只有在被调用时才分配存储空间。

40、函数调用可以作为一个函数的形参。

41、形参可以是常量、变量或表达式。

42、在调用函数时,实参传值给形参,调用结束时,形参值传给实参。

43、所有函数定义都是并行的,相互独立的。

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

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

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

47、以下代码的输出是 : 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);

48、以下程序的输出是什么? 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; }

49、以下函数的功能是求x的y次方。请填空。 double fun ( double x, int y) { int i; double z; for (i=1, z=x; i<y; i++) ________; return z; }

50、若有以下定义: double w[10]; 则w数组元素下标的上限为 ( ),下限为 ( )。(两个答案之间用一个空格分开)

51、以下定义 int a[10]={ 1}; 只初始化数组元素( ),其它数组元素的值为( )。(两个答案之间用一个空格分开)

52、若有定义int a[3][4]={ { 1,2},,{ 4,6,8,10}};则a[1][2]初值为( )。

53、若有定义int a[3][4]={ { 1,2},,{ 4,6,8,10}};则a[2][1]初值为( )。

54、在C语言中,二维数组元素在内存中的存放顺序是( )

55、凡不要求带回函数值的函数,一般应定义为________类型。

56、C程序在________函数中结束整个程序的运行。

57、在C语言中,一个函数一般由____和_______两个部分组成。(两个答案之间用一个空格分开)

第6周编程练习

1、高精度小数

第7周:数组运算

1 数组运算随堂测验

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 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

2、以下程序的输出结果是____。 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

3、定义如下变量和数组: int i; int x[3][3]={ 1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是( )。 for (i=0;i<3;i++) printf(“%d,”,x[i][2-i]);
A、1,5,9,
B、1,4,7,
C、3,5,7,
D、3,6,9,

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

5、以下程序片段的输出结果是: 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、能编译,但运行时数组下标越界了

6、以下程序的输出结果是____。 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

7、若有以下说明: int a[12]={ 1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是 ( ) 。
A、a[g-c]
B、a[3]
C、a['d'-'c']
D、a['d'-c]

8、数组定义 int a[10]; 表示数组名为a,此数组有10个元素。

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

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

11、下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。(一共四个空,答案之间用一个空格隔开) int main( void) { float x[1000] , sum=0.0, ave, a; int n=0,i; printf ("Enter mark:\n"); scanf("%f", &a); while (a>=0.0&& n<1000) { sum+=_______; x[n] =_______; n++; scanf ("%f",&a); } ave=_______ ; printf ( "Output: \n"); printf ( "ave=%f \n", ave); for (i=0; i<n; i++) if (___________) printf ("%f\n", x[i] ); return 0;}

12、下程序从键盘读入20个数据到数组中,统计其中正数的个数,并计算它们之和。请填空。(一共2个空,答案之间用一个空格隔开) int main( void) { int i, a[ 20] , sum, count; sum= count=0; for (i=0; i<20; i++) scanf (”%d”,____); for (i=0;i<20;i++) if (a[i]>0) { count++; sum+=_____;} printf (“sum=%d, count=%d\n”, sum, count); return 0; }

13、#include <stdio.h> #define N 8 main() { int i,j,min,temp,a[N]; printf(" 请输入八个数:\n"); for (i=0;i<N;i++) { printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); for (i=0;i<N;i++) printf("%5d",a[i]); printf("\n"); /* 数据整理 */ for (i=0;i<N-1;i++) { min=i; for (j=i;j<N;j++) if(a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } /* 输出数据 */ for (i=0;i<N;i++) printf("%5d",a[i]); } 假设输入的8个数据为:-5 10 20 40 –100 0 –50 60 该程序的运行结果是: (注意答案之间的空格数)

第7周编程练习

1、多项式加法

2、鞍点

第8周:指针与字符串

1 指针随堂测验

1、对于:int a[] = { 5, 15, 34, 54, 14, 2, 52, 72}; int *p = &a[5]; 则: p[-2]的值是?
A、编译出错,因为数组下标越界了
B、运行出错,因为数组下标越界了
C、54
D、2

2、如果:int a[] = ; int *p = a; 则以下哪些表达式的结果为真?
A、p == a[0]
B、p == &a[0]
C、*p == a[0]
D、p[0] == a[0]

3、以下变量定义: int* p,q; 中,p和q都是指针。

4、对于:int a[] = { 5, 15, 34, 54, 14, 2, 52, 72}; int *p = &a[1]; 则: p[2]的值是?

期末考试

期末试卷

1、以下哪个表达式表示“当 x 的取值在 [-10, 0] 的范围内,结果为真,否则为假”
A、x>=-10&&x<=0
B、x<=0&&x>=-10
C、!(x<-10||x>0)
D、-10 <=x<=0
E、-10 <x<0
F、x in [-10, 0]

2、若变量已正确定义,执行 scanf("%d%c%f", &op1, &op, &op2); 输入什么之后,op1的值为1,op的值为’*’,op2的值为2.0.
A、1*2
B、1* 2
C、1*2.0
D、1*2.
E、1* 2.
F、1 *2
G、1 *2.0
H、1 *2.
I、1 * 2
J、1 * 2.0
K、1 * 2.

3、下面的这个循环的循环次数是 for(int i=0,j=10; i=j=10; i++,j--) ;
A、无限次
B、编译错误
C、10次
D、1次

4、以下哪句不能编译?
A、if ( a==b ) else printf("no");
B、if ( a==b ); else printf("no");
C、if ( a==b ) { } else printf("no");
D、if ( a==b ) printf("no");

5、循环语句while (!x&&!y)中的循环条件表达式等价于
A、!(x || y)
B、!(x!=0||y!=0)
C、x=0 && y=0
D、!(x==0 || y==0)
E、!(x==0 && y==0)

6、以下哪个循环并非重复5次?
A、int i; for (i=0; i<=5; i++) { }
B、int i; for (i=0; i<5; i++) { }
C、int i; for (i=1; i<=5; i++) { }
D、int i; for (i=1; i<6; i++) { }

7、对于 int x, y; 语句 if (x < 0) y = -1; else if (!x) y = 0; else y = 1;等价于
A、y=0; if (x!=0) if(x>0) y=1; else y=-1;
B、if (x>=0) y=0; if(x) y=1; else y=-1;
C、y=0; if (x>=0) if(x) y=1; else y=-1;
D、if (x != 0) if (x > 0) y = 1; else y = -1;

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

9、要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确实现此功能的函数是
A、void funa(int *x , int *y) { int t = *x; *x = *y; *y = t; }
B、void funa(int *x , int *y) { int *p; *p=*x;*x=*y;*y=*p; }
C、void funa(int x , int y) { int t; t=x;x=y;y=t; }
D、int funa(int *x , int *y) { *x=*y;*y=*x; }

10、语句while(x%3) a++;中的表达式x%3等价于_______.
A、x%3!=0
B、x%3==0
C、x%3==1
D、x%3==2

11、下列数组定义,不正确的是 _______.
A、int x[2][]={ 1,2,4,6};
B、int a[1][3];
C、int x[2][2]={ 1,2,3,4};
D、int m[][3]={ 1,2,3,4,5,6};

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

13、对于以下代码: char ch = -1; printf("%d\n", ch); 输出结果是?
A、-1
B、255
C、65535
D、32768
E、因为类型不匹配导致运行时刻错误
F、因为类型不匹配导致编译错误

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

15、给定以下原型: void f(double dd); 和如下变量定义: double a; 哪个函数调用是不能被编译的?
A、f(&a);
B、f(1.0);
C、f(1);
D、f(a);
E、f(sizeof(a));

16、以下哪个不是C语言的关键字?
A、define
B、main
C、then
D、printf
E、scanf
F、goto
G、if
H、typedef
I、struct
J、while
K、do
L、auto
M、else
N、switch
O、case
P、return

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

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

19、假设字符变量ch中存放有大写英文字母,将其转换为相应的小写英文字母的表达式是
A、ch=ch+32
B、ch+=32
C、ch=ch+'a'-'A'
D、ch+='a'-'A'
E、ch=tolower(ch)
F、ch=ch-'A'+'a'
G、ch-='A'-'a'
H、toupper(ch)
I、tolower(ch)
J、ch=ch-32
K、ch-=32
L、ch = ch-'a'-'A'
M、ch -= 'a'-'A'

20、有以下定义: double a,b,c; 则以下哪个表达式与a/b/c不等价?
A、a/(b/c)
B、(a/b)/c
C、a/(b*c)
D、a/c/b

21、以下哪个循环能编译?
A、for ( i=10 ; i++; ) { }
B、for ( i=10 ; i<100 ) { }
C、for ( i=10 ; i++ ) { }
D、for ( i=10 ,i<100, i++ ) { }

22、有函数原型为void f(int, int *);,主函数中有变量定义:int a=2, *p=&a; 则下列函数调用正确的是
A、f(*p, &a);
B、f(a, p);
C、f(*p, p);
D、f(a, &a);
E、f(a, *p);
F、f(a, &p);
G、f(*p, a);
H、f(p,a);

23、以下哪个是无效的C语言变量名?
A、4ever
B、int
C、struct
D、main
E、printf
F、_a

24、以下哪个函数是不能编译的?
A、void f(int i) { return i; }
B、int f() { }
C、int f() { return 0; }
D、void f() { }
E、int f(void) { return 0; }

25、对于以下代码: char ch = -1; printf("%d\n", ch); 输出结果是?
A、-1
B、255
C、未定义的输出
D、编译错误
E、运行时刻异常

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

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

28、若有以下说明: int a[12]={ 1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是 ( ) 。
A、a[g-c]
B、a[3]
C、a['d’-'c']
D、a['d'-c]
E、a[4]
F、a[2]

29、对两个静态数组A和B进行如下初始化: char A[]=“ABCDEF”; char B[]={ ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’}; 则下列叙述正确的是( )
A、A和B完全相同。
B、A和B只是长度相等。
C、A数组长度比B数组短。
D、A数组长度比B数组长。
E、A数组的元素个数比B数组的元素个数多
F、A数组的元素个数和B数组的元素个数一样多
G、A数组的元素个数比B数组的元素个数一样少

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

31、语句if (4/5 > 3/4) a=1; else a=0; 运行后,a的值是

32、表达式 !!"2010-01-27"的值为(以1表示真,0表示假)

33、现有 int x=0,y=4; 则表达式 -10<x&&y<0 的结果是

34、表达式 (double)(10/4*4) 的结果是: (如果认为结果是浮点数,请以小数点后一位小数来表示)

35、若有 int x = 5; 则 ! x<10 的结果(以整数表达)是

36、若变量已正确定义并赋值,则表达式(-10<x<0)的值为

37、表达式(double)(10/4)的值为 (如果认为结果是浮点数,请以小数点后一位小数来表示)

38、若int a = 6, b = 0, c = 3;,则表达式 a && b || b - c的结果是(以1表示真,0表示假)

39、以下代码段的输出是:char a[20]="cehiknqtw"; char *s="fbla",*p; int i, j; for(p=s; *p; p++) { j=0; while (*p>=a[j] && a[j]!='\0') j++; for(i=strlen(a); i>=j; i--) a[i+1] = a[i]; a[j]=*p; } printf("%s", a);

40、下列代码段的输出结果是:char s[]="Zhejiang"; s[strlen(s)/2-1]=0; printf("%lu#%s#",strlen(s),s);

41、以下代码段的输出是: int number, right_digit; number = 15292; if ( number ==0 ) { printf("0"); } else while ( number != 0 ) { right_digit = number % 10; printf("%d", right_digit); number /= 10; }

42、若有 int x = 5; 则 ! x<10 的结果(以整数表达)是

43、表达式'B'+'8'-'3'表示的字符是(请仅输入单个字符,不要加前后的引号等其他符号)

44、以下代码的输出是 : void swap( int *pa, int *pb ) { int pt; pt = *pa, *pa = *pb, *pb = pt; } int main(void) { int x=1, y=2; swap(&x, &y); printf("%d %d", x, y); } (答案之间用一个空格分隔)

45、表达式-17%4的结果是

46、有下面的说明:char a[10]="China"; 则strlen(a)的值为多少?

期末考试编程题

1、最简分式