尔雅C编程方法学_1章节答案(学习通2023完整答案)

司法问答2024-05-19 05:36:1549398抢沙发
尔雅C编程方法学_1章节答案(学习通2023完整答案)摘要: 第1讲 初识C语言C语言概述随堂测验1、下列叙述中正确的是 )。A、算法必须要有输入和输出操作。B、算法可以没有输入,但必须要有输出操作。C、算法可以没有输出,但必须要有输入操作。D、算法可以既没有输 ...

尔雅C编程方法学_1章节答案(学习通2023完整答案)

第1讲 初识C语言

C语言概述随堂测验

1、尔雅下列叙述中正确的程方是( )。
A、法学算法必须要有输入和输出操作。章节整答
B、答案算法可以没有输入,学习但必须要有输出操作。通完
C、尔雅算法可以没有输出,程方但必须要有输入操作。法学
D、章节整答算法可以既没有输入,答案也没有输出操作。学习

2、通完以下关于程序、尔雅数据结构和算法的关系,描述正确的是 ( ) 。
A、算法=数据结构=程序
B、算法=数据结构+程序
C、程序=数据结构+算法
D、数据结构=算法+程序

3、算法的有穷性是指( )。
A、算法程序的运行时间是有限的。
B、算法程序所处理的数据量是有限的。
C、算法程序的长度是有限的
D、算法只能被有限的用户使用

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

第2讲 基本数据类型和运算符

常量和变量随堂测验

1、下列( )是C语言中的合法常量。
A、'\045'
B、08
C、e1
D、1.0e0.5

2、下面正确的字符常量是( )。
A、"c"
B、'\\'’
C、'W'
D、""

3、C 语言规定 : 定义符号常量时必须用大写字母。

运算符与表达式随堂测验

1、有如下语句 float x=2.5, y=4.7; int a=7; printf(“%.1f”, x+a%3*(int)(x+y)%2/4); 输出结果是( )。
A、3.5
B、2.8
C、2.5
D、3.8

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

3、已知字母A的ASCII码为十进制数65,且ch为字符型变量,则执行语句ch='A'+'6'-'3';后,ch中的值为( )。
A、D
B、68
C、C
D、不确定

运算符与表达式随堂测验

1、设x 、y均为f1oat型变量,则以下不合法的赋值语句是 ( )
A、y=1+x;
B、y=(x%2)/10;
C、x*=y+8;
D、x=y=0;

2、若x、i、j和k都是int型变量,则执行下面表达式 x = (i = 4, j = 16, k = 32)后x的值为( )。
A、4
B、16
C、32
D、52

3、设x和y均为int型变量,则以下语句:x+=y; y=x-y; x-=y;的功能是( )。
A、把x和y按从大到小排列
B、把x和y按从小到大排列
C、无确定结果
D、交换x和y中 的值

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

5、下列两条语句: int a=1,b=2,c; c=1.0/b*a; 执行后变量c中的值是( )。
A、0.5
B、1
C、0
D、2

6、下面哪一句是正确的赋值语句?
A、x=y=87;
B、x++
C、x=6*y=13;
D、x=int n;

7、设有float a=4,则a+=a/=a*a的值是( )。
A、0.5
B、1.5
C、2.5
D、3.5

8、设a和n都已定义为整型变量,a=12, n=5,写出表达式 a/=a+a 运算后a的值( )

运算符与表达式随堂测验

1、已知int i, a; 执行语句i=(a=2*3,a*5),a+6;后,变量i的值是( )。
A、6
B、12
C、30
D、36

运算符与表达式随堂测验

1、若有定义#define T 8和int a,b;,下面正确的表达式是( )。
A、++b--
B、21+'a'
C、a+2++
D、T++

2、设有int x, a;,则执行a=(x=1, x++, x+2)后,a的值为( )。

第3讲 程序中的输入与输出

scanf()格式化输入函数随堂测验

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、给定:int a,b,c; scanf("%d,%d,%d",&a,&b,&c);则以下哪个输入方式是正确的?
A、2030,40
B、20,30,40
C、20 30 40
D、20,30 40

3、执行下面的语句:char c1=97,c2=98; printf("%d %c",c1,c2; 其输出结果是( )。(字符'a'的ASCII码为97)
A、97 98
B、97 b
C、a 98
D、a b

第4讲 基本控制结构与控制运算符

控制运算符随堂测验

1、对条件表达式(M)?(a++):(a--)来说,其中表达式M等价于______。
A、M==0
B、M==1
C、M!=0
D、M!=1

控制运算符随堂测验

1、能正确地用逻辑关系表示: ”10<a<15”的C语言表达式是______。
A、10<a<15
B、10<a && a<15
C、10<a||a< 15
D、10<=a && a<=15

2、对于 int x=10, y=100; 以下逻辑表达式的值为0的是( )。
A、( x > 100 | | y < 10 ) && y == 100
B、( x > 0 && y > 0 ) | | x < 100
C、( x > 10 | | y > 10 ) && x == 10
D、x > 100 | | y < 10 | | y > 10

3、能正确表示a和b同时为正或同时为负的逻辑表达式是( )。
A、a*b>0
B、(a>0||b>0)&&(a<0||b<0)
C、(a>0&&b>0)&&(a<0&&b<0)
D、(a+b>0)&&(a+b<0)

控制运算符随堂测验

1、表达式:a=1 || a>b+5 || a<1 的值是______ 。

控制运算符随堂测验

1、以下运算符中优先级最高的运算符是______。
A、&&
B、||
C、!=
D、!

2、设i、j、k是 int 型变量,且i = 3, j = 4, k = 5,则以下值为0的表达式是( )
A、i || j + k && j - k
B、! ( ( i < j ) && ! k || 1 )
C、'i' && 'j'
D、i <= j

3、有定义:int a = 3, b = 4, c = 5 ; 则表达式 a || b + c && b - c 的值为________。

4、执行以下程序段后的b的值是( )。 int a=5,b=6,c=1,x=2,y=3,z=4; c=(a=c>x)&&(b=y>z);

【测验1】数据类型、运算符表达式及顺序结构

1、C语言表达式中,对于实数,下面正确的实型常量指数形式是( )。
A、1e-6
B、e-6
C、10e-6
D、1.0e-6.0

2、设有float a=2;,则a/=a*a的值是( )。
A、0.5
B、0
C、1
D、1.0

3、若有定义int a=10;,下面正确的表达式是( )。
A、-a++
B、++a--
C、a+2++
D、(a+2)++

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

5、如果变量 x、y 、t 已经正确定义,下列哪个选项的语句不能正确将x、y的值进行交换?
A、x=t, t=y, y=x;
B、x=x+y, y=x-y, x=x-y;
C、t=x, x=y; y=t;
D、t=y, y=x, x=t;

6、若变量已正确定义并赋值,符合C语言语法的表达式是( )。
A、a = 3 , 5
B、a = 2 ++
C、a = a + 1 = 3
D、12.3 % 4

7、若变量已正确定义,表达式 ( j=3, j++) 的值是____。
A、4
B、3
C、5
D、6

8、下列叙述中错误的是( )。
A、计算机可以直接运行扩展名为c的文件。
B、扩展名为obj的文件不能直接运行。
C、连接是指将扩展名为obj的文件,经连接程序生成扩展名为exe可执行文件的操作。
D、编译是指C源程序经编译程序编译,生成扩展名为obj的目标文件的操作。

9、一个字长为8位的有符号二进制数能表示的十进制数值范围是( )。
A、0~255
B、1~255
C、-127 ~ 127
D、-128 ~ 127

10、若有int x=50;,则下列语句( ) 会输出“50%”。
A、printf("%d%%",x);
B、printf("%%d",x);
C、printf("%d%",x);
D、printf("%d%%");

11、若有: int a; float c; 现要按下面格式输入这2个数,以下哪个输入语句是正确的。 100 12.34
A、scanf("%d%f", &a, &c);
B、scanf("%d%f", a, c);
C、scanf("%d,%f", &a, &c);
D、scanf("%d %d", &a, &c);

12、表达式:(int)((double)34/4-2)%5的值是( )。
A、4
B、3
C、1
D、5

13、以下程序段执行后,输出结果是( )。 double x,y; x=2; y=x+3/2; printf("%lf",y);
A、3.500000
B、3
C、2.000000
D、3.000000

14、有表达式:(double)(1/2)+(int)(1/2.0),运算后结果是( )。
A、0
B、0.0
C、0.5
D、1.0

15、有定义: int a = 10; float x = 2.8, y = 3.9; 则,下面算术表达式的值为( )。 x + a / 3 * ( int )( x + y + 0.9 ) % 5 / 4
A、2.8
B、表达式有错误,不能对实数作%求余运算
C、3.0
D、3.8

16、语句 printf("%.2f",1/3);输出结果为 0.33。

17、a=b=4+c=6 是一个合法的赋值表达式。

18、C 语言规定 : 定义符号常量时宏名的命名可以用任何符号。

19、设有int x, a;,则执行a=(x=5, x++, x+2)后,a的值为( )。

20、设int a=2;,写出表达式 a /= a + a 运算后 a 的值( )。

21、int a=10,b=4,c; c=1.0/b*a; 执行上面语句后变量c的值是( )。

第5讲 程序中的选择结构

if语句随堂测验

1、int a=1,b=2,c=3; if(a>c)b=a;a=c;c=b;则c的值为_______。
A、2
B、1
C、3
D、不一定

2、int a=3,b=2,c=1; if(a>b>c) a=b; else a=c;则a的值为_______。
A、1
B、3
C、2
D、0

3、假定所有变量均已正确定义,下列程序段运行后x的值是_______。 k1=1; k2=2; k3=3; x=15; if(!k1) x--; else if(k2) x=4; else x=3;
A、4
B、14
C、15
D、3

4、以下程序段运行后的输出结果是( )。 int a=0,b=0,c=0,d=0; if(a=1) b=1; c=2; else d=3; printf("%d,%d,%d,%d",a,b,c,d);
A、有编译错误
B、1,1,2,0
C、0,0,0,3
D、0,1,2,0

5、执行以下代码段后,输出结果是 ( ) 。 float x=2,y; if(x<0) y=0; else if(x<10) y=1.0/10; else y=1; printf("%.1f\n",y);
A、0.1
B、0.100000
C、0.0
D、1.0

6、if(a=5) 是合法的。

7、在C语言中,if语句后的一对圆括号中,用以决定分支流程的表达式只能用逻辑表达式或关系表达式。

嵌套的if语句随堂测验

1、以下程序段运行后的输出结果是( )。 int x=1,y=0; if(!x) y++; else if(x==0) if (x) y+=2; else y+=3; printf("%d\n",y);
A、0
B、3
C、2
D、1

2、float a,b; scanf("%f",&a); if(a<0.0) b=0.0; else if((a<0.5)&&(a!=2.0)) b=1.0/(a+2.0); else if(a<10.0) b=1.0/a; else b=10.0; printf("%f\n",b); 若以上程序段运行时输入为2.0(回车), 则上面程序的输出结果是( ) 。
A、0.500000
B、0.5
C、0
D、0.0

3、当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是 ( ) 。if(a<b) if(c<d) x=1; else if(a<c) if(b<d) x=2; else x=3; else x=6; else x=7;
A、2
B、1
C、3
D、6

switch语句随堂测验

1、下列叙述中正确的是( )。
A、在switch语句中,不一定使用break语句。
B、在switch语句中必须使用default。
C、break语句必须与switch语句中的case配对使用。
D、break 语句只能用于switch语句。

2、若有定义: float x=1.5; int a=1,b=3,c=2; 则正确的switch语句是( )。
A、switch(a+b) { case 1: printf("*\n"); case 2+1: printf("**\n"); }
B、switch((int)x); { case 1: printf("*\n"); case 2: printf("**\n"); }
C、switch(x) { case 1.0: printf("*\n"); case 2.0: printf("**\n"); }
D、switch(a+b) { case 1: printf("*\n"); case c: printf("**\n"); }

3、case语句后如果没有break,则顺序向下执行。

【测验2】选择结构

1、执行下面程序片段后,变量a,b,c的值分别是( )。 int a,b,c; int x=8,y=10; a=(x++==y--)?x:y; b=++x; c=--y;
A、a=9, b=10, c=8
B、a=8, b=8, c=10
C、a=9, b=8, c=10
D、a=9, b=9, c=8

2、分析下面程序片段,下面输出结果正确的是( )。 int a=0,b=0,c=1; c=a++&&(b=1); printf("a=%d,b=%d,c=%d\n",a,b,c);
A、a=1,b=0,c=0
B、a=1,b=1,c=0
C、a=1,b=0,c=1
D、a=1,b=1,c=1

3、对于 int x=10, y=100; 以下逻辑表达式的值为0的是( )。
A、( x > 100 | | y < 10 ) && y == 100
B、( x > 0 && y > 0 ) | | x < 100
C、( x > 10 | | y > 10 ) && x == 10
D、x > 100 | | y < 10 | | y > 10

4、设 i、j、k是 int 型变量,且 i = 3, j = 4, k = 5,则以下值为0的表达式是( )。
A、!((i<j)&&!k||1)
B、'i'&&'j'
C、i<=j
D、i||j+k&&j-k

5、执行以下程序段后的b的值是( )。 int a=5,b=6,c=1,x=2,y=3,z=4; c=(a=c>x)&&(b=y>z);
A、6
B、0
C、1
D、5

6、对条件表达式(M)?(a++):(a--)来说,其中表达式 M 等价于( )。
A、M != 0
B、M == 0
C、M == 1
D、M != 1

7、能正确表示关系x≤y≤z的C语言表达式为( )。
A、( x <= y ) && ( y <= z )
B、( x <= y ) AND ( y<= z )
C、( x <= y <= z )
D、( x <= y ) & ( y <= z )

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

9、以下程序段运行后的输出结果是( )。 int x=1,y=0; if(!x) y++; else if(x==0) if (x) y+=2; else y+=3; printf("%d\n",y);
A、0
B、1
C、2
D、3

10、以下程序段运行后的输出结果是( )。 int a=0,b=0,c=0,d=0; if(a=1) b=1; c=2; else d=3; printf("%d,%d,%d,%d",a,b,c,d);
A、编译有错
B、1,1,2,0
C、0,0,0,3
D、0,1,2,0

11、有如下嵌套的if语句 if(a<b) if(a<c) k=a; else k=c; else if(b<c) k=b; else k=c; 以下选项中与上述语句等价的语句是( )。
A、k = ( a < b ) ? ( ( a < c ) ? a : c ) : ( ( b < c ) ? b : c ) ;
B、k = ( a < b ) ? ( ( b < c ) ? a : b ) : ( ( b > c ) ? b : c ) ;
C、k = ( a < b ) ? a : b ; k= ( b < c ) ? b : c ;
D、k = ( a < b ) ? a : b ; k = ( a < c ) ? a : c ;

12、有以下程序段运行时从键盘输入9<回车>, 则输出结果是( )。 int a; scanf("%d",&a); if(a++>9) printf("%d\n",a); else printf("%d\n",a+1);
A、11
B、8
C、9
D、10

13、若有定义: float x=1.5; int a=1,b=3,c=2; 则正确的switch语句是( )。
A、switch(a+b) { case 1: printf("*\n"); case 2+1: printf("**\n"); }
B、switch((int)x); { case 1: printf("*\n"); case 2: printf("**\n"); }
C、switch(x) { case 1.0: printf("*\n"); case 2.0: printf("**\n"); }
D、switch(a+b) { case 1: printf("*\n"); case c: printf("**\n"); }

14、下列叙述中正确的是( )。
A、在switch语句中,不一定使用break语句。
B、在switch语句中必须使用default。
C、break语句必须与switch语句中的case配对使用。
D、break 语句只能用于switch语句。

15、设有说明:int a=11, b=10;,执行语句 a %= b + ( a && b ); 后,a的值为( )。
A、0
B、11
C、1
D、22

16、能正确表示a和b同时为正或同时为负的逻辑表达式是( )。
A、a*b>0
B、( a>0 || b>0 ) && ( a<0 || b<0 )
C、( a>0 && b>0 ) && ( a<0 && b<0 )
D、( a+b>0 ) && ( a+b<0 )

17、在下面条件语句中(其中S1和S2表示C语言语句),只有( )在功能上与其他三个语句不等价。
A、if ( a==0 ) S1; else S2;
B、if ( a ) S1; else S2;
C、if ( a==0 ) S2; else S1;
D、if (a != 0 ) S1; else S2;

18、如果要求: if 后一对括号中的表达式表示 a 不等于 0 时值为“真”,则不能正确表示这一关系的表达式为( )。
A、! a
B、a
C、a !=0
D、! ! a

19、以下程序段运行时,输入的x值在( )范围时才会有输出结果。 int x; scanf("%d",&x); if(x<=3); else if(x!=10) printf("%d",x);
A、大于3且不等于10的整数
B、不等于10的整数
C、大于3且等于10的整数
D、小于3的整数

20、表达式( )不能用于判断“x和y不同时为零”。
A、!(x==0 || y==0)
B、x!=0 || y!=0
C、x || y
D、!(x==0 && y==0)

21、下列选项中用于判断ch是否是英文字母的表达式是( )。
A、( ch >= 'a' && ch <= 'z' ) || ( ch >= 'A' && ch <= 'Z' )
B、( 'a' <= ch <= 'z' ) || ( 'A' <= ch <= 'Z' )
C、( 'a' <= ch <= 'z' ) && ( 'A' <= ch <= 'Z' )
D、( ch >= 'a' && ch <= 'z' ) && ( ch >= 'A' && ch <= 'Z' )

22、case语句后如没有break,顺序向下执行。

23、if ( a = 5 ) 是允许的。

24、在 if 语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{ }括起来组成一个复合语句

25、有定义:int a = 3, b = 4, c = 5 ; 则表达式 a || b + c && b - c 的值为________。

26、表达式:a=1 || a>b+5 || a<1 的值是______ 。

27、float a,b; scanf("%f",&a); if(a<0.0) b=0.0; else if((a<0.5)&&(a!=2.0)) b=1.0/(a+2.0); else if(a<10.0) b=1.0/a; else b=10.0; printf("%f\n",b); 若以上程序段运行时输入为2.0(回车), 则上面程序的输出结果是 。

28、执行以下代码段后,输出结果是 。 float x=2,y; if(x<0) y=0; else if(x<10) y=1.0/10; else y=1; printf("%.1f\n",y);

29、当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是 。 if(a<b) if(c<d) x=1; else if(a<c) if(b<d) x=2; else x=3; else x=6; else x=7;

30、表达式8>6>3值是( )。

第6讲 程序中的循环结构

循环引言及while语句随堂测验

1、int x=1; while(x<5); x++; 执行上面程序段,下面说法正确的是( )。
A、程序执行出现死循环。
B、程序段执行结束后,x 值为6。
C、程序段执行结束后,x 值为5。
D、程序段执行结束后,x 值为2。

2、下面循环结束后 x 值为 。 int x=1; while(x++<5);

do-while语句随堂测验

1、执行以下程序段时,( )。 x=-1; do{ x=x*x; } while(!x);
A、循环体将执行无限次
B、循环体将执行2次
C、循环体将执行1次
D、系统将提示有语法错误

for语句随堂测验

1、语句for (表达式1; ; 表达式3)等价于( )。
A、for (表达式1; 0 ; 表达式3)
B、for (表达式1; 1 ; 表达式3)
C、for (表达式1; 表达式1; 表达式3)
D、for (表达式1; 表达式3; 表达式3)

2、下面的这个循环的循环次数是( )。 for(int i=0,j=5; i=j=10; i++,j--)
A、1
B、10
C、无限次
D、语法错误,不能执行

3、在for(exp1;exp2;exp3)中,exp3可以是逗号表达式。

4、下面的循环语句,循环体执行的次数是 次。 for(a=0; a<10; a++ ) a++;

break与continue语句随堂测验

1、在循环体中如果执行到break语句,则立即结束该循环,而不再判断执行当前循环的条件是否成立。

2、在循环体中如果执行到continue语句,则立即结束该循环,而不再判断执行当前循环的条件是否成立。

多重循环随堂测验

1、以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出。程序运行后结果不正确,调试中发现有1条语句在程序的位置不正确。这条语句是( )。 #include <stdio.h> int main() { 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、第13行,printf("NO%d:%f\n", n, ave);
B、第12行,ave=sum/4.0;
C、第11行,sum+=score;
D、第6行,sum=0.0;

2、对于并列的循环结构中,控制循环执行的变量名字可以相同。

3、双重循环中,内循环中的continue语句的作用是结束内循环,并继续执行外循环。

4、在多层循环中, 一个break语句只能结束其当前所在层次的循环结构。

【测验3】循环结构

1、下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的个数,请在下划线处填空( )? #include <stdio.h> int main() { int m=0,n=0; char c; while ((_______) !='\n') { if(c>='A' && c<='Z') m++; if(c>='a' && c<='z') n++; } printf("%d %d",m,n); return 0; }
A、c=getchar( )
B、getchar( )
C、c==getchar( )
D、scanf("%c",&c)

2、以下程序段运行时,若输入1 2 3 4 5 0<回车>,输出结果是( )? int s; scanf("%d",&s); while(s>0) { switch(s) { case 1:printf("%d",s+5); case 2:printf("%d",s+4); break; case 3:printf("%d",s+3); default:printf("%d",s+1); break; } scanf("%d",&s); }
A、6566456
B、66656
C、66666
D、6666656

3、执行while(表达式)循环的条件是( )。
A、当表达式的值为非0时
B、当表达式的值为0时
C、仅当表达式的值为1时
D、当表达式的值不为1时

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

5、语句for (表达式1; ; 表达式3)等价于?( )
A、for ( 表达式1; 1 ; 表达式3 )
B、for ( 表达式1; 0 ; 表达式3 )
C、for ( 表达式1; 表达式1; 表达式3 )
D、for ( 表达式1; 表达式3; 表达式3 )

6、以下不会构成死循环的语句或语句组是?( )
A、n=0; do{ ++n; }while(n<=0);
B、n=0; while(1) { n++; }
C、n=10; while(n); { n--; }
D、for(n=0,i=1; ;i++) n+=i;

7、以下程序段的循环次数是?( ) for(i=2; i==0; ) printf("%d",i--);
A、0次
B、无限次
C、1次
D、2次

8、若变量已正确定义,要求程序段完成求5! 的计算,不能完成此操作的程序段是哪一个?( )
A、for(i=1; i<=5; i++) { p=1; p*=i; }
B、for(i=1,p=1; i<=5; i++) 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);

9、若有以下程序段,正确的描述是什么?( )  for(m=1; m<=100; m++) {  scanf("%d", &y);   if(y<0)    continue; printf("%d", m); }
A、最多允许输出100个非负整数
B、当y<0时整个循环结束
C、y>=0时什么也不输出
D、printf函数永远也不执行

10、下面程序段执行后,n的值是( )。 int i, n=0; for(i=2; i<5; i++) { do { if(i%3) continue; n++; } while(!i); n++; }
A、4
B、5
C、2
D、3

11、下面程序的功能是输出以下形式的金字塔图案,划线处应该填入的是?( ) #include <stdio.h> int main() { int i,j; for(i=1; i<=4; i++) { for(j=1; j<=4-i; j++) printf(" "); for(j=1; j<=_______; j++) printf("*"); printf("\n"); } return 0; }
A、2*i-1
B、i
C、2*i+1
D、i+2

12、变量m的初值是55,执行完以下程序段后,m的值为( )。 for(i=1; i<=3; i++) for(j=3; j<=i; j++) m=m%j;
A、1
B、0
C、2
D、3

13、有整型变量a和b,若运行以下程序段时从键盘输入:18,11<回车>,循环结束时变量a、b的值分别为( )。 scanf("%d,%d",&a,&b); while(a!=b) { while(a>b) a-=b; while(b>a) b-=a; }
A、1 1
B、1 2
C、1 3
D、1 4

14、#include <stdio.h> int main() { int k=2; while(k=0) { printf("%d",k); k--; } return 0; }则下面描述中正确的是?( )
A、循环体语句一次也不执行
B、while循环执行10次
C、是无限循环
D、循环体语句执行一次

15、运行下面程序段后,输出结果是?( )int i=6; while(i--) printf("%d",--i);
A、420
B、531
C、654321
D、死循环

16、设int m;,与while(!m)等价的是下面哪个?( )
A、while(m==0)
B、while(m!=0)
C、while(m==1)
D、while(m!=1)

17、下面循环的循环次数是( )。 for(int i=0,j=10; i=j=10; i++,j--)
A、无限次
B、语法错误,不能执行
C、10
D、1

第7讲 一维数组

一维数组的定义与初始化随堂测验

1、在C语言中,引用数组元素时,其数组下标的数据类型不允许是( )。
A、整型常量
B、整型表达式
C、整型常量或整型表达式
D、实型表达式

2、对于已定义的数组,以下描述正确的是( )。
A、数组的大小是可变的,但所有数组元素的类型必须相同。
B、数组的大小是固定的,但可以有不同类型的数组元素。
C、数组的大小是固定的,所有数组元素的类型必须相同。
D、数组的大小是可变的,可以有不同类型的数组元素。

3、有定义:”int x[10]={ 0,2,4};” ,则数组x在内存中所占字节数是_____。
A、12
B、40
C、3
D、10

4、执行下面的语句段后 ,变量k的值为( )。 int k=3,s[2]; s[0]=k; k=s[1]*10;
A、10
B、30
C、33
D、不定值

5、若有下面的数组定义,关于数组a元素个数的选项哪个是错误的( )。 int a[]={ 0,1,2,3,4,5,6,7,8,9};
A、9
B、10
C、sizeof(a)/sizeof(int)
D、sizeof(a)/sizeof(a[0])

一维数组的引用及基本操作随堂测验

1、下面输出结果正确的是( )。 int a[5]={ 1,2,3,4,5}; int i; for(i=0;i<5;i++) printf("%d",a[i]);
A、1 2 3 4 5
B、1 2 3 4 5
C、12345
D、1,2,3,4,5

2、下面程序中有错误的行是( )。 #include <stdio.h> int main() { int a[3]={ 1}; int i; scanf("%d",&a); for(i=1;i<3;i++) { a[0]=a[0]+a[i]; printf("a[0]=%d\n",a[0]); } return 0; }
A、3
B、6
C、7
D、8

第8讲 二维数组

二维数组的定义随堂测验

1、二维数组中的数组元素可以是不同的数据类型。

2、若有以下定义: double a[3][5];,则数组a占用字节数为( )字节。

二维数组的初始化随堂测验

1、以下能对二维数组y进行初始化的语句是( )。
A、int y[2][]={ { 1,0,1},{ 5,2,3}};
B、int y[][3]={ { 1,2,3},{ 4,5,6}};
C、int y[2][4]={ { 1,2,3},{ 4,5},{ 6}};
D、int y[][3]={ { 1,0,1,0},{ },{ 1,1}};

2、若有说明 int a[3][4]=;,则下面正确的叙述是(  )。
A、只有元素a[0][0]可得到初值0。
B、数组a中每个元素均可得到初值0。
C、数组a中各元素都可得到初值,但其值不一定为0。
D、此说明语句不正确。

3、若有定义:int a[][5]={ { 3,15,6},{ 11,12}};,则a[0][7]的值为( )。

二维数组的一维表示与引用随堂测验

1、若有说明 int a[3][4];,则对a数组元素的正确引用是(  )。
A、a[2][4]
B、a[1,3]
C、a[1+1][0]
D、a(2)(1)

2、若有定义: int a[2][2];,则以下赋值语句正确的是( )。
A、a[1][1]=5;
B、a[2][2]=3;
C、a[1,1]=4;
D、a={ 1,2,3,4};

3、c语言中,二维数组在内存中的存放也是二维的。

【测验4】一维与二维数组

1、若有定义: int a[5]={ 1,2,3,4,5}; char b='c', c; 则下面表达式值为 2 的是_____。
A、a[b-'b']
B、a[2]
C、a[c-b]
D、a[b]

2、下面程序的功能是求数组中所有元素之和,根据现有代码,请问修改哪一行代码可以解决所求问题( )。#include <stdio.h> int main() { float array[5]=; float sum=0; int i; for(i=0;i<5;i++) scanf("%f",&array[i]); for(i=1;i<=5;i++) sum+=array[i]; printf("sum=%f\n",sum); return 0; }
A、第10行 sum+=array[i];
B、第4行 float array[5]=;
C、第5行 float sum=0;
D、第7行 for(i=0;i<5;i++)

3、若有以下数组说明,则数值最小的元素和值最大的元素下标分别是( )。 int a[12] ={ 1,2,3,4,5,6,7,8,9,10,11,12};
A、0,11
B、1,12
C、1,11
D、0,12

4、若有说明 int a[3][4]=;,则下面正确的叙述是(  )。
A、数组a中每个元素均可得到初值0
B、只有元素a[0][0]可得到初值0,其它元素值不确定
C、该语句不正确
D、数组a中各元素都可得到初值,但其值不一定为0

5、分析下列程序段的输出结果是( )。int a[4][4]= { { 1,-2,3},{ 0,5,-7,8},{ -3,7,0,4},{ 9,0,-8,2}}; int i,j,s=0; for(i=0; i<4; i++) for(j=0; j<4; j++) { if(a[i][j]<0) continue; if(a[i][j]==0) break; s+=a[i][j]; } printf("%d",s);
A、20
B、2
C、4
D、15

6、有下面的数组定义,a[2][2]的值是( )。 int a[][3]={ 1,2,3,4,5,6,7,8,9,10};
A、9
B、0
C、1
D、5

7、以下定义语句错误的是( )。
A、int y[5]={ 0,1,3,5,7,9};
B、double x[5]={ 2.0,4.0,6.0,8.0,10.0};
C、char c2[]={ 'x10','xa','x8'};
D、char c1[]={ '1','2','3','4','5'};

8、int型占4个字节,若有下面的数组定义,则数组a在内存中占用的字节数是( )。 int a[][3]={ 0,1,2,3,4,5,6,7,8,9};
A、48
B、10
C、36
D、40

9、若有下面的数组定义,则数组a的元素个数是( )。 int a[][3]={ 0,1,2,3,4,5,6,7,8,9};
A、sizeof(a)/sizeof(int)
B、9
C、10
D、sizeof(a)/sizeof(a[0])

10、下面程序中有错误的行是( )。 int main() { int x[3]={ 1}; int k; scanf("%d",&x); for(k=1;k<3;k++) x[0]=x[0]+x[k]; printf("x[0]=%d\n",x[0]); return 0; }
A、第5行 scanf("%d",&x);
B、第3行 int x[3]={ 1};
C、第6行 for(k=1;k<3;k++)
D、第7行 x[0]=x[0]+x[k];

11、在int a[ ][3] = { { 1,4}, { 3,2}, { 4,5,6}, };中,a[2][1]的值是( )。
A、5
B、4
C、2
D、3

12、有说明语句int a[4][5];,则a[2]+3表示__。
A、a数组行下标为2、列下标为3的元素的地址
B、a数组行下标为2、列下标为3的元素的值
C、a数组第2行的首地址
D、a数组第3行的首地址

13、以下数组定义中错误的是( )。
A、int x[2][3]={ { 1,2},{ 3,4},{ 5,6}};
B、int x[][3]=;
C、int x[][3]={ { 1,2,3},{ 4,5,6}};
D、int x[2][3]={ 1,2,3,4,5,6};

14、若二维数组a有m列,则计算任一元素 a [ i ] [ j ] 在数组中映射关系为()
A、a[0][i*m+j]
B、a[0][j*m+i]
C、a[0][i*m+j-1]
D、a[0][i*m+j+1]

15、设数组a中的元素均为正整数,以下程序是求数组a中偶数的个数和偶数的平均值,以下哪个选项能填在划线处?int main() { int a[10]={ 1,2,3,4,5,6,7,8,9,10}; int k,s,i; float ave; for(k=s=i=0;i<10;i++) { if(a[i]%2!=0) ______________; s+=a[i]; k++; } if(k!=0) { ave=s/k; printf("%d,%f\n",k,ave); } return 0; }
A、continue
B、break
C、k++
D、k=0

16、若有下面的数组定义,关于数组a元素个数的选项哪个是错误的( )。 int a[ ]={ 0,1,2,3,4,5,6,7,8,9};
A、9
B、10
C、sizeof(a)/sizeof(int)
D、sizeof(a)/sizeof(a[0])

第9讲 字符数组与字符串

字符数组的定义与初始化随堂测验

1、字符 '\0' 与字符 '0' 是指同一个字符。

2、可以通过对数组名赋值的方式为字符数组赋值。例如: char a[10]; a="abcde";

3、字符数组定义后,系统自动为数组各元素赋值为0。

4、在C语言中,字符串不能存放在一个变量中,而是存放在一个 中。

5、字符'\0 '是字符串的结束标记,其ASCII码值为

6、字符'0 '的ASCII码值为 。

字符数组的输入与输出随堂测验

1、下面程序段的运行结果是( ) char c[5]={ 'a','b','','c',''}; printf("%s",c);
A、ab c
B、ab
C、ab,c
D、ab c

2、设有char a[]="ABCD ";,则printf("%c ",*a)的输出是 。

字符串处理函数随堂测验

1、执行以下程序段后,输出结果为( )。 char p[]="def",str[20]="abc"; strcpy(str+1,p); printf("%s\n",str);
A、abcdef
B、abc
C、adef
D、def

2、如果要比较两个字符串是否相同,可使用的库函数是 。

第10讲 指针与数组

指向数组的指针随堂测验

1、若有定义int a[5],*p=a;,则错误引用数组a[0]元素的表达式是( )。
A、p+0
B、*p
C、a[p-a]
D、*a

2、执行下面程序段后,*p等于( )。 int a[5]={ 1,3,5,7,9}, *p=a; p++;
A、1
B、3
C、5
D、7

指针与数组随堂测验

1、设char s[10], *p=s;,以下不正确的表达式是( )。
A、p=s+5
B、s=p+s
C、s[2]=p[4]
D、*(p+1)=s[0]

【测验5】字符数组与指针

1、字符串"2019-05-11"在存储单元中占( )个字节。
A、11
B、10
C、12
D、9

2、以下程序段中,会出现编译错误的选项是(  )。
A、char s[10]; s="abcdefg";
B、char s[10]="abcdefg";
C、char t[]="abcdefg";
D、char s[10]; strcpy(s,"abcdefg");

3、有如下的语句: char p[]="hello!"; char q[10]={ 'h','e','l','l','o','!'}; printf("%d %d",strlen(p),strlen(q)); 则下面输出正确的是( )。
A、6 6
B、6 10
C、7 7
D、7 10

4、s1和s2分别表示两个字符串,若要求当s1所指字符串大于s2所指字符串时,输出ok,则以下选项正确的是( )。
A、if(strcmp(s1,s2)>0) printf("ok");
B、if(strcmp(s2,s1)>0) printf("ok");
C、if(s1>s2) printf("ok");
D、if(strcmp(s1,s2)) printf("ok");

5、以下程序段的输出结果是() char str[12]={ 's','t','d','i','o'}; printf("%d\n",strlen(str));
A、5
B、6
C、11
D、12

6、若有定义:int x,*p;则以下正确的赋值表达式是( )
A、p=&x
B、p=x
C、*p=&x
D、*p=*x

7、执行下列程序段后,*(p+5)的值为() char str[]="World"; char *p; p=str;
A、'\0'
B、'd'
C、不确定的值
D、'd'的地址

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

9、执行下面程序段后,a的值为( )。 int *p,a=10,b=1; p=&a; a=*p+b;
A、11
B、10
C、12
D、编译出错

10、以下程序段执行后,a的值是( )。 int a,k=4,m=6,*p1=&k,*p2=&m; a=p1==p2; printf("%d\n",a);
A、0
B、1
C、4
D、6

11、若有定义char cc[ ]="12345",sizeof(cc)的值为( )。
A、6
B、2
C、5
D、1

12、下述语句中,( )可以在字符串s1和s2相等时显示"Equal."。
A、if(!strcmp(s1,s2)) puts(“Equal.”);
B、if(s1==s2) puts(“Equal.”)
C、if(*s1==*s2) puts(“Equal.”)
D、if(strcmp(s1,s2)) puts(“Equal.”);

13、下列程序片段中不正确的字符串赋值或初始化方式是( )。
A、char str[10]; str=”string”;
B、char *str; str=”string”;
C、char str[7]={ ’s’,’t’,’r’,’i’,’n’,’g’,’’};
D、char str[ ]=”string”;

14、有关下面程序段的输出结果,正确的判断是( )。 char s[]="ABCD",*p=s; printf("%d\n",p[4]);
A、输出0
B、p[4]引用下标越界,不能输出
C、输出值不定
D、输出68

第11讲 模块化编程与函数定义

函数的定义与声明随堂测验

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

函数的参数与返回值随堂测验

1、在一个被调用函数中,关于 return 语句使用的描述,错误的是( )。
A、被调用函数中可以不用 return 语句。
B、被调用函数中可以使用多个 return 语句。
C、被调用函数中,一个 return 语句可以返回多个值给调用函数。
D、被调用函数中,如果有返回值,就一定要有 return 语句。

第12讲 函数调用与变量存储

函数的参数传递与调用随堂测验

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

2、下列程序的输出结果是( )。#include <stdio.h> void func(int a,int b,int c) { a=123; b=456; c=789; } int main() { int x=10,y=20,z=30; func(x,y,z); printf("%d,%d,%d\n",x,y,z); return 0; }
A、30,20,10
B、123,456,789
C、789,456,123
D、10,20,30

3、下列程序的输出结果是( )。#include <stdio.h> void f(int x,int y) { int t; t=x; x=y; y=t; } int main() { int x=10,y=20,z=30; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); printf("%d,%d,%d",x,y,z); return 0; }
A、10,20,30
B、30,10,20
C、10,30,20
D、20,30,10

变量的作用域与存储类别随堂测验

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

2、下列程序中的输出结果是( )。int f(int n) { static int m=3; m+=n; return m; } int main() { int x=2,y=1,z; z=f(x); z=f(y); printf("%d",z); return 0; }
A、3
B、4
C、6
D、9

3、下列程序的输出结果是( )。#include <stdio.h> int a=30,b=40; fun(int x,int y) { a=x; x=y; y=a; } int main() { int m=10,n=20; fun(m,n); fun(a,b); printf("%d,%d,%d,%d",m,n,a,b); return 0; }
A、10,20,30,40
B、10,20,10,40
C、20,10,30,40
D、30,40,10,20

【测验6】函数与变量存储属性

1、以下程序的输出结果是____。 #include <stdio.h> int a, b; void fun() { a = 100; b = 200; } int main() { int a = 5, b = 7; fun(); printf("%d, %d", a, b); return 0; }
A、5, 7
B、100, 200
C、200, 100
D、7, 5

2、下面关于形参和实参的说法中,正确的是____。
A、实参与它所对应的形参占用不同的存储单元
B、形参是虚设的,所以它始终不占存储单元。
C、实参与它所对应的形参占用同一个存储单元。
D、实参与它所对应的形参同名时可占用同一个存储单元。

3、有如下函数调用语句,函数调用语句中,含有的实参个数是____。 func(rec1, rec2+rec3, (rec4, rec5));
A、3
B、4
C、5
D、有语法错误

4、定义的函数有返回值,则以下关于该函数调用的叙述中错误的是____。
A、调用可以作为一个函数的形参。
B、调用可以作为独立的语句存在。
C、调用可以作为一个函数的实参。
D、调用可以出现在表达式中。

5、以下程序运行后,输出结果是____。int func(int a, int b) { static int m = 0, i = 2; i += m + 1; m = i + a + b; return(m); } int main() { int k = 4, m = 1, p; p = func(k, m); printf("%d, ", p); p = func(k, m); printf("%d\n", p); return 0; }
A、8, 17
B、8, 16
C、8, 8
D、8, 15

6、有如下函数定义:long fib(int n) { if(n > 2) return (fib(n - 1) + fib(n - 2)); else return 2; }在主函数中执行下面语句,输出结果是( )。 printf("%d", fib(3));
A、4
B、2
C、6
D、8

7、int f(int a) { auto int b = 0; static int c = 3; b = b + 1; c = c + 1; return ( a + b + c ); } 如果有 int i, j; 则执行下面两次调用后,i, j 值为____。i = f ( 2 ); j = f ( 2 );
A、i = 7, j = 8
B、i = 7, j = 7
C、i = 8, j = 7
D、i = 8, j = 8

8、在一个被调用函数中,关于 return 语句使用的描述,错误的是( )。
A、被调用函数中,一个 return 语句可以返回多个值给调用函数
B、被调用函数中可以不用 return 语句
C、被调用函数中可以使用多个 return 语句
D、被调用函数中,如果有返回值,就一定要有 return 语句

9、C语言中函数返回值的类型是由( )决定的。
A、定义函数时所指定的函数类型
B、return语句中的表达式类型
C、调用该函数的主调函数的类型
D、调用函数时临时决定

10、如果要一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,则这个变量的存储类型应该被说明为( )。
A、static 静态变量
B、auto 自动变量
C、extern 外部变量
D、register 寄存器变量

11、以下叙述中正确的是( )。
A、C语言规定必须用main作为主函数名,程序将从主函数开始执行。
B、可以在程序中由用户指定任意一个函数作为主函数,程序将从此函数开始执行。
C、C语言程序将从源程序中第一个函数开始执行。
D、main的各种大小写拼写形式都可以作为主函数名,如MAIN,Main等。

12、在不同的函数中可以定义名字相同的变量。

13、函数的形参都属于全局变量。

14、定义语句中未赋初值的 auto 变量和 static 变量的初值都是随机值。

第14讲 结构体与共用体

结构化定义、初始化和使用随堂测验

1、C语言中,定义结构体的保留字是( )。
A、struct
B、union
C、enum
D、typedef

2、C语言结构体类型变量在程序执行期间( )。
A、只有一个成员驻留在内存中
B、部分成员驻留在内存中
C、没有成员驻留在内存中
D、所有成员一直驻留在内存中

3、结构体类型的定义允许嵌套是指( )。
A、成员可以重名
B、成员是已经或正在定义的结构体型
C、结构体型可以派生
D、定义多个结构体型

4、相同结构体类型的变量之间,可以( )。
A、相加
B、比较大小
C、赋值
D、地址相同

5、以下对结构体类型变量的定义中不正确的是( )。
A、struct{ int num; float age; }student; struct student std1;
B、#define STUDENT struct student STUDENT{ int num; float age; }std1;
C、int num; float age; }std1;
D、struct{ int num; float age; }std1;

共用体随堂测验

1、以下对C语言用体类型数据的叙述正确的是( )。
A、可以对共用体变量名直接赋值
B、一个共用体变量中不可能同时存放其所有成员
C、一个共用体变量中可以同时存放其所有成员
D、共用体类型定义中不能出现结构体类型的成员

2、定义共用体的关键字是( )。
A、union
B、enum
C、struct
D、typedef

3、使用共用体变量,不可以( )。
A、节省存储空间
B、同时访问所有成员
C、进行动态管理
D、简化程序设计

【测验7】结构体与共用体

1、C语言结构体类型变量在程序执行期间( )。
A、所有成员一直驻留在内存中
B、只有一个成员驻留在内存中
C、部分成员驻留在内存中
D、没有成员驻留在内存中

2、当定义一个结构体变量时,系统分配给它的内存是( )。
A、各成员所需内存量的总和
B、结构中第一个成员所需内存量
C、成员中占内存量最大者所需的容量
D、结构中最后一个成员所需内存量

3、相同结构体类型的变量之间,可以( )。
A、相加
B、赋值
C、比较大小
D、地址相同

4、若有以下说明,则对结构体变量stud1中成员age的不正确引用方式为( )。 struct Student{ int age; int num; }stud1,*p; p=&stud1;
A、stud1.age
B、*p.age
C、p->age
D、(*p).age

5、已知学生记录描述如下,设变量s中的“生日”应是“1984年11月11日”,下列对生日的正确赋值方式是( )。 struct student{ int no; char name[20]; char set; struct{ int year; int month; int day; } birth; }; struct student s;
A、year=1984;month=11;day=11;
B、birth.year=1984; birth.month=11; birth.day=11
C、s.year=1984;s.month=11;s.day=11
D、s.birth.year=1984;s.birth.month=11; s.birth.day=11;

6、设有以下说明语句,则下面的叙述不正确的是( )。 struct stu{ int a; float b; }stutype;
A、struct是结构体类型的关键字
B、struct stu是用户定义的结构体类型
C、stutype是用户定义的结构体类型名
D、a和b都是结构体成员名

7、当说明一个共用体变量时系统分配给它的内存是( )。
A、各成员所需内存量的总和
B、结构中第一个成员所需内存量
C、成员中占内存量最大者所需的容量
D、结构中最后一个成员所需内存量

8、以下对C语言用体类型数据的叙述正确的是( )。
A、可以对共用体变量名直接赋值
B、一个共用体变量中可以同时存放其所有成员
C、一个共用体变量中不可能同时存放其所有成员
D、共用体类型定义中不能出现结构体类型的成员

9、若有以下定义和语句,则以下语句正确的是( )。 union data{ int i; char c; float f; }a; int n;
A、a=5;
B、a={ 2,'a',1.2};
C、printf("%d\n",a);
D、n=a;

10、C语言共用体型变量在程序运行期间( )。
A、所有成员一直驻留在内存中
B、只有一个成员驻留在内存中
C、部分成员驻留在内存中
D、没有成员驻留在内存中

11、下面说法中错误的是( )。
A、共用体变量的地址和它各成员的地址都是同一地址
B、共用体内的成员可以是结构变量,反之亦然
C、在任一时刻,共用体变量的各成员只有一个有效
D、函数可以返回一个共用体变量

期末考试

客观题

1、表达式__的值是0。
A、3%5
B、3/5.0
C、3/5
D、3<5

2、下列运算符中,优先级最低的是____。
A、*
B、!=
C、+
D、=

3、表达式5>3>1值是__.
A、0
B、1
C、3
D、表达式语法错误

4、以下关于switch语句和break语句的描述中正确的是( )
A、在switch语句中必须使用break语句
B、break语句只能用于switch语句体中
C、break语句只能用于循环语句中
D、在switch语句中可以不使用break语句

5、
A、if(x > 0) y = 1; else if(x == 0) y = 0; else y = -1;
B、y = 0; if(x > 0) y = 1; else if(x < 0) y = -1;
C、y = 0; if(x >= 0); if(x > 0) y = 1; else y = -1;
D、if(x >= 0) if(x > 0) y = 1; else y = 0; else y = -1;

6、以下程序运行时,输入的x值在( )范围时才会有输出结果。
A、不等于10的整数
B、大于3且不等于10的整数
C、大于3且等于10的整数
D、小于3的整数

7、对条件表达式(M)?(a++):(a--)来说,其中表达式 M 等价于( )。
A、M != 0
B、M == 0
C、M == 1
D、M != 1

8、定义FILE *fp; 则文件指针fp 指向的是()。
A、文件类型结构体
B、整个磁盘文件
C、文件在缓冲区上的读写位置
D、文件在磁盘上的读写位置

9、执行while(表达式)循环的条件是?( )
A、当表达式的值为非0时
B、当表达式的值为0时
C、仅当表达式的值为1时
D、当表达式的值不为1时

10、以下程序段的循环次数是?( )
A、无限次
B、0次
C、1次
D、2次

11、有如下定义: struct Student{ char name[10]; int age; char gender; }std[3], *p=std; 则以下各输入语句中错误的是( )。
A、scanf("%d",&(*p).age);
B、scanf("%c",&std[0].gender);
C、scanf("%c",&(p->gender));
D、scanf("%s",&std.name);

12、C语言中while和do-while循环的主要区别是()。
A、do-while的循环体至少无条件执行一次
B、while的循环控制条件比do-while的循环控制条件严格
C、do-while允许从外部转到循环体内
D、do-while的循环体不能是复合语句

13、设有如下定义,则对data中的a成员的错误引用是()。 struct sk{ int a; float b; } data, *p=&data;
A、(*p).data.a
B、(*p).a
C、p->a
D、data.a

14、C语言中函数返回值的类型是由( )决定的。
A、定义函数时所指定的函数类型
B、调用函数时临时决定
C、调用该函数的主调函数的类型
D、return语句中的表达式类型

15、语句for (表达式1; ; 表达式3)等价于?( )
A、for ( 表达式1; 0 ; 表达式3 )
B、for ( 表达式1; 表达式3; 表达式3 )
C、for ( 表达式1; 表达式1; 表达式3 )
D、for ( 表达式1; 1 ; 表达式3 )

16、以下定义语句中错误的是__。
A、int y[5]={ 0,1,3,5,7,9};
B、char c1[]={ '1', '2', '3', '4', '5'};
C、char c2[]={ 'x10', 'xa', 'x8'};
D、double x[5]={ 2.0, 4.0, 6.0, 8.0, 10.0};

17、以下叙述中正确的是( )。
A、C语言规定必须用main作为主函数名,程序将从此开始执行。
B、可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行。
C、C语言程序将从源程序中第一个函数开始执行。
D、main的各种大小写拼写形式都可以作为主函数名,如MAIN,Main等。

18、在一个被调用函数中,关于 return 语句使用的描述,错误的是( )。
A、被调用函数中可以不用 return 语句
B、被调用函数中可以使用多个 return 语句
C、被调用函数中,如果有返回值,就一定要有 return 语句
D、被调用函数中,一个 return 语句可以返回多个值给调用函数

19、若有说明:int a[][3]={ 1,2,3,4,5,6,7}; 则数组a第一维大小是 ____.
A、2
B、3
C、4
D、不确定

20、s1和s2已正确定义并分别表示两个字符串,若要求当s1所指字符串大于s2所指字符串时,输出ok,则以下选项中正确的是( )。
A、if(strcmp(s1,s2)>0) printf("ok");
B、if(strcmp(s2,s1)>0) printf("ok");
C、if(s1>s2) printf("ok");
D、if(strcmp(s1,s2)) printf("ok");

21、对于已正确定义的二维数组a, *(a[i]+j)与a[i][j]的含义相同。

22、以“a”方式打开一个文件时,文件指针指向文件首。

23、结构体成员的类型必须是基本数据类型。

24、在多层循环中, 一个break语句只向外跳一层。

25、C语言的三种循环不可以互相嵌套。

26、if(a=5) 是允许的。

27、C语言程序是从源文件的第一条语句开始执行的。

28、局部变量如果没有指定初值,则其初值不确定。

29、若 a=3,b=2,c=1 则关系表达式" a>b==c " 的值为1。

30、语句 printf("%d",1/5);输出为 0.2。

期末考试编程题

1、输入n个整数,求集合数据的均方差。

2、根据学生成绩评价等级。

3、输出满足条件的学生信息。

学习通C编程方法学_1

在计算机编程领域中,C语言是一种被广泛使用的编程语言。C语言是一种基于结构化编程的编程语言,在许多操作系统、编译器和应用程序中都使用C语言来编写。C语言的编程方法学是学习C语言编程过程中最重要的部分之一。

C语言编程方法学是指学习C语言编程过程中的方法、技巧以及正确的编程思维方式。在C语言编程领域,学习正确的编程方法学非常重要,因为它可以帮助程序员更好地组织自己的代码,提高程序的可读性和可维护性。

学习C语言编程方法学的重要性

在C语言编程领域中,学习正确的编程方法学非常重要。以下是几个重要的原因:

  • 提高代码可读性:正确的编程方法学可以帮助程序员更好地组织自己的代码,使代码更加易于理解和维护。
  • 提高代码质量:正确的编程方法学可以帮助程序员编写更加高效、可靠的代码。
  • 提高编程效率:正确的编程方法学可以帮助程序员更好地组织自己的代码,减少代码的冗余。

C语言编程方法学的基本知识

在学习C语言编程方法学时,需要掌握一些基本的知识和技巧。以下是一些常用的方法和技巧:

  • 模块化编程:模块化编程是将程序分解为多个相互独立的模块,每个模块负责完成特定的任务。这样做可以使程序更加易于理解和维护。
  • 变量命名:变量命名应该具有描述性,易于理解。应该避免过于简单或容易混淆的变量名。
  • 注释:注释是编写程序时必不可少的部分。注释应该清晰明了,能够解释代码的含义以及逻辑结构。
  • 错误处理:错误处理是编写程序时必不可少的部分。程序应该能够检测和处理错误,并且向用户提供有用的错误信息。
  • 调试:调试是查找程序中错误的过程。程序员应该掌握一些调试技巧和工具,以便更快地找到程序中的错误。

学习C语言编程方法学的步骤

以下是学习C语言编程方法学的基本步骤:

  • 了解C语言的语法和基本概念:在学习C语言编程方法学之前,需要先掌握C语言的语法和基本概念。
  • 阅读经典的C语言编程书籍:经典的C语言编程书籍是学习C语言编程方法学的重要资源。最好选择一本经典的C语言编程书籍来学习。
  • 编写小程序进行练习:练习编写小程序是学习C语言编程方法学的重要部分。通过编写小程序来巩固和加深对C语言编程的理解。
  • 参加编程社区:参加编程社区可以让你与其他程序员分享你的代码,并且获得有用的反馈和建议。

总结

学习C语言编程方法学是学习C语言编程过程中最重要的部分之一。通过学习C语言编程方法学,程序员可以提高代码的可读性、可维护性和编程效率,从而更好地完成工作。

文章版权及转载声明

本文地址:http://www.zzxhsh.org/51c799324.html发布于 2024-05-19 05:36:15
文章转载或复制请以超链接形式并注明出处五煦查题

评论列表 (暂无评论,44人围观)参与讨论