题目
2.10若运行下程序,从键盘输入2473<回车>,则下面程序的结果是( A )。#include<stdio.h>void main()( int c;while((c=getchar())!=’n’ )switch(c-’2’){ case 0:case 1: putchar( c+4 );case 2: putchar( c+4 ); break;case 3: putchar( c+3 );default: putchar( c+2 ); break;)printf(“n”);}A. B. C) D) C. )。 D. while、do…while、for循环中的循环体语句都至少被执行一次。 E. do…while循环中,while(表达式)后面的分号可以省略。 F. while循环中,一般要有能使while后面表达式的值变为“假”的操作。 G. do…while循环中,根据情况可以省略while。语言的do…while循环中,循环由do开始,用while结束;而且在while表达式后面的(B)不能丢,它表示do…while循环的结束。n“;”“%” D) “。”)。int x=3;hile(!(--x));1 23 22 31 -25.2.14下面程序的功能是计算正整数2345的各位数字的平方和,请选择填空。h>in()( int n=2345,sum=0;o[1] B );[2] C )hile(n);printf(“sum=%d”,sum);)[1] A) n%10 B) (n%10)*(n%10)n/10(n/10)*(n/10)[2] A) n/1000 B) n/100n/10n%10)。死循环循环执行2次 C) 循环执行一次 D) 有语法错误[1])。do(i=1;s=1;s=s*i;i++) while(i<=10);do(i=1;s=0;s=s*i;i++) while(i<=10);i=1;s=1; do(s=s*i;i++) while(i<=10);i=1;s=0; do(s=s*i;i++) while(i<=10);5.2.17下面程序的功能是从键盘输入若干学号,然后输出学号中百位数字式3的学号(输入0时结束循环),请选择填空。h>in()( long int num;nf(“%ld”,num);o[1] B) printf(“%ld”, num);nf(“%ld”,num);[2] C )))[1] A) num%100/10==3 B) num/100%10==3num%10/10==3num/10%10==3[2] A) !num B) num<0==0 C) !num==0 D) !num!=0)。for(表达式;0;表达式3)for(表达式;1;表达式3)for(表达式;表达式1;表达式3)for(表达式;表达式3;表达式3))。break语句不能用于循环语句和switch语句外的任何其他语句在switch语句中使用break语句或continue语句的作用相同在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行。在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环。无限次0次 C) 1次 D) 2次)。for循环中设置if(条件)break,当条件成立时中止程序执行。for循环中设置if (条件)continue,当条件成立时中止本层循环。for循环中设置if (条件)break,当条件成立时中止本层循环。for循环中设置if (条件) continue,当条件成立时暂停程序执行。)。for循环只能用于循环次数已经确定的情况。for循环是先执行循环体语句,后判断表达式。在for循环中,不能用break语句跳出循环体。for循环的循环体语句中,可以包含多条语句。。5次6次1次 D) 无限)。int x,i;or(i=1;i<=100;i++)I; if(++x%2==0) if(++x%3==0) if(++x%7==0) printf(“%d”,x); }39 8142 84 C) 26 68 D) 28 70)。goto语句只能用于退出多层循环switch语句不能出现continue语句只能用continue语句来终止本次循环在循环中break语句不能独立出现)for(y=0,x=1;x>++y; x=i++) i=x;for(; ; x++=i);while(1) ( x++; )for(i=10; ; i- -) sum+=i;)。int i,sum;or(i=1;i<=10;i++) sum+=sumn”, i);10915 D) 11)。n”),x);**3##3##3**3##4编辑程序驱动程序 C) 诊断程序 D) 编译程序[2]。C语言比其他语言高级C语言可以不用编译就能被计算机识别执行C语言以接近英语国家的自然语言[3]和数学语言作为语言的表达形式C语言出现的最晚,具有其他语言的一切优点。C程序中注释部分可以出现在程序中任意合适的地方花括号“(”和“)”只能作为函数体的定界符构成C程序的基本单位是函数,所有函数名都可以由用户命名分号是C语句之间的分隔符,不是语句的一部分。C语言的源程序[4]不必通过编译就可以直接运行C语言中的每条可执行语句最终都将被转换成二进制[5]的机器指令[6]C源程序经编译形成的二进制代码可以直接运行C语言中的函数不可以单独进行编译语言编写的代码程序(B)。可立即执行是一个源程序经过编译即可执行经过编译解释才能执行)。在C语言中,main函数必须位于程序的最前面C语言的每行中只能写一条语句C语言本身没有输入输出语句在对一个C程序进行编译的过程中,可以发现注释中的拼写错误语言关键字的选项是( A )。definegetcincludewhileIF char scanf gose pow语言关键字的选项是(B)。autoswitchsignedif##4 **4 **4##5 **5**5 ##5)。34 C) 5 D) 不定。int i,j,k;or(i=2;i<6;i++,i++)( k=1;or(j=i; j<6; j++) k+=j; )n”,k);4510 D) 7)。or( t=1; t<=100; t++)nf(“%d”, x);If(x<0) continue;printf(”%3d”,t);}当x<0时整个循环结束x>=0时什么也不执行printf函数永远也不执行最多允许输出100个非负数。=0;or(i=0;i<2;i++)k; a++;} a+reak; a++;} a++; }n”,a);4 B) 5 C) 6 D) 7。h>in()( int i,j,x=0;or(i=0;i<2;i++){ x++;or(j=0;j<=3;j++){ if(j%2) continue; x++; )x++; }n”,x); }x=4x=8x=6x=12。h>in()( int i;or(i=1; i<=5; i++){ if(i%2) printf(”*”);lse continue;printf(“#”);)n”);}*#*#*##*#*#**#*##*#*5.2.35有一堆零件(100~200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分9个零件一组,则多5个零件。下面程序是求这堆零件的总数,请选择填空。h>in( )( int i;or(i=100; i<201; i++)if((i-2)%4==0)if(!(i-3)%7))printf(”%d”, i);)i%9=5i%9!=5(i-5)%9!=0i%9==5习题六6.1填空题语言中,数组名代表 数组首地址 。6.1.2 在c语言中,引用数组元素时,其数组下标的数据类型[7]允许是 整型常量[8][常量表达式] 。[][3]=(1,2,3,4,5,6,7); 则a数组第一维的大小是 3 。6.1.5 下面程序段[9]的运行结果是 f 。r a[7]="abcdef"; r b[4]="ABC"; ,b); [5]); 6.1.6 下面程序段的运行结果是 3 。r c[]="tv0willn"; printf("%d",strlen(c)); 6.1.7 假设字符串s1和s2均定义过并初始化,判断字符串s1是否大于字符串s2,应当使用语句为:if( strcmp(s1,s2)>0)rr[5]=(1,2,3);则引用数组元素a[4]的值是: 0 。N,则可以访问的数组下标范围为: 0~(N-1) 。6.1.10数组元素引用时,下标为整型的表达式,可以使用 变量 。6.2选择题。int a[ ]=”string”;int a[5]=(0,1,2,3,4,5);char a=”string”;char a[ ]=(0,1,2,3,4,5);。输出abcd输出a输出abcd u u u u u编译不通过。a[0][0],a[0][1],a[1][0],a[1][1]a[0][0],a[1][0],a[0][1],a[1][1]a[1][1],a[1][2],a[2][1],a[2][2]a[1][1],a[2][1],a[1][2],a[2][2]。tic char x [ ]=“12345”; static char y[ ]=(‘1’,‘2’,‘3’,‘4’,‘5’);x数组和y数组的长度相同。x数组长度大于y数组长度。x数组长度小于y数组长度x数组等价于y数组。。char str[10];gets(str);char*str;str=“a”;char*str;str=‘a’;charstr[10];strcpy(str,“hello”);[3][5]是一个二维数组,则最多可使用的元素个数为(C)810155[3][4]; 则对a数组元素的非法引用是(D)。a['B'-'A'][2*1]a[1][3]a[4-2][0]a[0][4]tic char str[10]=(“china”);printf(“%d”,strlen(str)); 则输出结果是5 C.china D.6。9 B.10 C.7 D.8。tic char ch[ ]=“623”,s=0;for(a=0;ch[a]>=‘0’ch[a]<=‘9’;a++)[a]-‘0’;-4705623600326习题七答案习题七7.1选择题语言程序构成中,较完整的描述是()由主程序与子程序[10]构成由多个主函数与多个子函数构成由主函数与子函数构成由一个主函数与多个子函数构成语言在程序开始执行时,其正确的描述是(B )由编写程序语句的顺序格式执行在主函数main()开始处执行在第一个子函数处执行由人随机选择执行)C语言中允许函数嵌套定义C语言中允许函数递归调用[11]调用函数时,实参[12]与形参的个数、类型需完全一致C语言函数的缺省数据类型是int类型语言中,各个函数之间具有的关系是()不允许直接递归调用,也不允许间接递归调用允许直接递归调用,不允许间接递归调用不允许直接递归调用,允许间接递归调用允许直接递归调用,也允许间接递归调用语言中,函数的返回值的类型是由()C语言的编译程序,在程序编译时[13]决定由调用该函数的主调函数所决定由return语句的表达式的类型所决定由定义该函数时指定的函数类型所决定)数组的首元素数组的首地址数组每个元素的地址数组每个元素中的值)h>void f(int n); /*函数说明*/in()( void f(int n); /*函数说明*/(5);)void f(int n)n",n); }若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f要求函数f无返回值,所以可用void将其类型定义为无值型在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f对于上面程序的说明,编译时系统会提示出错信息:提示对f函数重复说明)。long fun( int n)( long s;if(n==1 || n==2) s=2;lse s=n-fun(n-1);return s;)in()n", fun(3)); }12 C) 3 D) 4)。int f1(int x,int y)( return x>y?x:y; )int f2(int x,int y)( return x>y?y:x; )in()=4,b=3,c=5,d,e,f;,b); d=f1(d,c);,b); e=f2(e,c);+b+c-d-e;n",d,f,e);}3,4,55,3,45,4,33,5,47.1.10设有以下函数;( int b=0;tic int c=3;++;c++;+b+c);))。in()=2, i;n",f(a));}
2.10若运行下程序,从键盘输入2473<回车>,则下面程序的结果是( A )。
#include<stdio.h>
void main()
{ int c;
while((c=getchar())!=’\n’ )
switch(c-’2’)
{ case 0:
case 1: putchar( c+4 );
case 2: putchar( c+4 ); break;
case 3: putchar( c+3 );
default: putchar( c+2 ); break;
}
printf(“\n”);
}
A.B. C) D)
C. )。
D. while、do…while、for循环中的循环体语句都至少被执行一次。
E. do…while循环中,while(表达式)后面的分号可以省略。
F. while循环中,一般要有能使while后面表达式的值变为“假”的操作。
G. do…while循环中,根据情况可以省略while。
语言的do…while循环中,循环由do开始,用while结束;而且在while表达式后面的(B)不能丢,它表示do…while循环的结束。
\n
“;”
“%” D) “。”
)。
int x=3;
hile(!(--x));
1 2
3 2
2 3
1 -2
5.2.14下面程序的功能是计算正整数2345的各位数字的平方和,请选择填空。
h>
in()
{ int n=2345,sum=0;
o
[1] B );
[2] C )
hile(n);
printf(“sum=%d”,sum);
}
[1] A) n%10 B) (n%10)*(n%10)
n/10
(n/10)*(n/10)
[2] A) n/1000 B) n/100
n/10
n%10
)。
死循环
循环执行2次 C) 循环执行一次 D) 有语法错误[1]
)。
do(i=1;s=1;s=s*i;i++) while(i<=10);
do(i=1;s=0;s=s*i;i++) while(i<=10);
i=1;s=1; do(s=s*i;i++) while(i<=10);
i=1;s=0; do(s=s*i;i++) while(i<=10);
5.2.17下面程序的功能是从键盘输入若干学号,然后输出学号中百位数字式3的学号(输入0时结束循环),请选择填空。
h>
in()
{ long int num;
nf(“%ld”,num);
o
[1] B) printf(“%ld”, num);
nf(“%ld”,num);
[2] C ))
}
[1] A) num%100/10==3 B) num/100%10==3
num%10/10==3
num/10%10==3
[2] A) !num B) num<0==0 C) !num==0 D) !num!=0
)。
for(表达式;0;表达式3)
for(表达式;1;表达式3)
for(表达式;表达式1;表达式3)
for(表达式;表达式3;表达式3)
)。
break语句不能用于循环语句和switch语句外的任何其他语句
在switch语句中使用break语句或continue语句的作用相同
在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行。
在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环
。
无限次
0次 C) 1次 D) 2次
)。
for循环中设置if(条件)break,当条件成立时中止程序执行。
for循环中设置if (条件)continue,当条件成立时中止本层循环。
for循环中设置if (条件)break,当条件成立时中止本层循环。
for循环中设置if (条件) continue,当条件成立时暂停程序执行。
)。
for循环只能用于循环次数已经确定的情况。
for循环是先执行循环体语句,后判断表达式。
在for循环中,不能用break语句跳出循环体。
for循环的循环体语句中,可以包含多条语句。
。
5次
6次
1次 D) 无限
)。
int x,i;
or(i=1;i<=100;i++)
I; if(++x%2==0) if(++x%3==0) if(++x%7==0) printf(“%d”,x); }
39 81
42 84 C) 26 68 D) 28 70
)。
goto语句只能用于退出多层循环
switch语句不能出现continue语句
只能用continue语句来终止本次循环
在循环中break语句不能独立出现
)
for(y=0,x=1;x>++y; x=i++) i=x;
for(; ; x++=i);
while(1) { x++; }
for(i=10; ; i- -) sum+=i;
)。
int i,sum;
or(i=1;i<=10;i++) sum+=sum
\n”, i);
10
9
15 D) 11
)。
\n”),x);
**3
##3
##3
**3##4
编辑程序
驱动程序 C) 诊断程序 D) 编译程序[2]
。
C语言比其他语言高级
C语言可以不用编译就能被计算机识别执行
C语言以接近英语国家的自然语言[3]和数学语言作为语言的表达形式
C语言出现的最晚,具有其他语言的一切优点
。
C程序中注释部分可以出现在程序中任意合适的地方
花括号“{”和“}”只能作为函数体的定界符
构成C程序的基本单位是函数,所有函数名都可以由用户命名
分号是C语句之间的分隔符,不是语句的一部分
。
C语言的源程序[4]不必通过编译就可以直接运行
C语言中的每条可执行语句最终都将被转换成二进制[5]的机器指令[6]
C源程序经编译形成的二进制代码可以直接运行
C语言中的函数不可以单独进行编译
语言编写的代码程序(B)。
可立即执行
是一个源程序
经过编译即可执行
经过编译解释才能执行
)。
在C语言中,main函数必须位于程序的最前面
C语言的每行中只能写一条语句
C语言本身没有输入输出语句
在对一个C程序进行编译的过程中,可以发现注释中的拼写错误
语言关键字的选项是( A )。
define
getc
include
while
IF char scanf go
se pow
语言关键字的选项是(B)。
auto
switch
signed
if
##4 **4 **4##5 **5
**5 ##5
)。
3
4 C) 5 D) 不定
。
int i,j,k;
or(i=2;i<6;i++,i++)
{ k=1;
or(j=i; j<6; j++) k+=j; }
\n”,k);
4
5
10 D) 7
)。
or( t=1; t<=100; t++)
nf(“%d”, x);
If(x<0) continue;
printf(”%3d”,t);
}
当x<0时整个循环结束
x>=0时什么也不执行
printf函数永远也不执行
最多允许输出100个非负数
。
=0;
or(i=0;i<2;i++)
k; a++;} a+
reak; a++;} a++; }
\n”,a);
4 B) 5 C) 6 D) 7
。
h>
in()
{ int i,j,x=0;
or(i=0;i<2;i++)
{ x++;
or(j=0;j<=3;j++)
{ if(j%2) continue; x++; }
x++; }
\n”,x); }
x=4
x=8
x=6
x=12
。
h>
in()
{ int i;
or(i=1; i<=5; i++)
{ if(i%2) printf(”*”);
lse continue;
printf(“#”);
}
\n”);
}
*#*#*#$
#*#*#*$
*#*#$
#*#*$
5.2.35有一堆零件(100~200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分9个零件一组,则多5个零件。下面程序是求这堆零件的总数,请选择填空。
h>
in( )
{ int i;
or(i=100; i<201; i++)
if((i-2)%4==0)
if(!(i-3)%7)
)
printf(”%d”, i);
}
i%9=5
i%9!=5
(i-5)%9!=0
i%9==5
习题六
6.1填空题
语言中,数组名代表 数组首地址 。
6.1.2 在c语言中,引用数组元素时,其数组下标的数据类型[7]允许是 整型常量[8]
[常量表达式] 。
[][3]={1,2,3,4,5,6,7}; 则a数组第一维的大小是 3 。
6.1.5 下面程序段[9]的运行结果是 f 。
r a[7]="abcdef";
r b[4]="ABC";
,b);
[5]);
6.1.6 下面程序段的运行结果是 3 。
r c[]="\t\v\\\0will\n";
printf("%d",strlen(c));
6.1.7 假设字符串s1和s2均定义过并初始化,判断字符串s1是否大于字符串s2,应当使用语句为:
if( strcmp(s1,s2)>0)
rr[5]={1,2,3};则引用数组元素a[4]的值是: 0 。
N,则可以访问的数组下标范围为: 0~(N-1) 。
6.1.10数组元素引用时,下标为整型的表达式,可以使用 变量 。
6.2选择题
。
int a[ ]=”string”;
int a[5]={0,1,2,3,4,5};
char a=”string”;
char a[ ]={0,1,2,3,4,5};
。
输出abcd
输出a
输出abcd u u u u u
编译不通过
。
a[0][0],a[0][1],a[1][0],a[1][1]
a[0][0],a[1][0],a[0][1],a[1][1]
a[1][1],a[1][2],a[2][1],a[2][2]
a[1][1],a[2][1],a[1][2],a[2][2]
。
tic char x [ ]=“12345”; static char y[ ]={‘1’,‘2’,‘3’,‘4’,‘5’};
x数组和y数组的长度相同。
x数组长度大于y数组长度。
x数组长度小于y数组长度
x数组等价于y数组。
。
char str[10];gets(str);
char*str;str=“a”;
char*str;str=‘a’;
charstr[10];strcpy(str,“hello”);
[3][5]是一个二维数组,则最多可使用的元素个数为(C)
8
10
15
5
[3][4]; 则对a数组元素的非法引用是(D)。
a['B'-'A'][2*1]
a[1][3]
a[4-2][0]
a[0][4]
tic char str[10]={“china”};printf(“%d”,strlen(str)); 则输出结果是
5 C.china D.6
。
9 B.10 C.7 D.8
。
tic char ch[ ]=“623”
,s=0;for(a=0;ch[a]>=‘0’ch[a]<=‘9’;a++)
[a]-‘0’;
-4705
623
600
326
习题七答案
习题七
7.1选择题
语言程序构成中,较完整的描述是(
)
由主程序与子程序[10]构成
由多个主函数与多个子函数构成
由主函数与子函数构成
由一个主函数与多个子函数构成
语言在程序开始执行时,其正确的描述是(B )
由编写程序语句的顺序格式执行
在主函数main()开始处执行
在第一个子函数处执行
由人随机选择执行
)
C语言中允许函数嵌套定义
C语言中允许函数递归调用[11]
调用函数时,实参[12]与形参的个数、类型需完全一致
C语言函数的缺省数据类型是int类型
语言中,各个函数之间具有的关系是(
)
不允许直接递归调用,也不允许间接递归调用
允许直接递归调用,不允许间接递归调用
不允许直接递归调用,允许间接递归调用
允许直接递归调用,也允许间接递归调用
语言中,函数的返回值的类型是由(
)
C语言的编译程序,在程序编译时[13]决定
由调用该函数的主调函数所决定
由return语句的表达式的类型所决定
由定义该函数时指定的函数类型所决定
)
数组的首元素
数组的首地址
数组每个元素的地址
数组每个元素中的值
)
h>
void f(int n); /*函数说明*/
in()
{ void f(int n); /*函数说明*/
(5);
}
void f(int n)
\n",n); }
若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
要求函数f无返回值,所以可用void将其类型定义为无值型
在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
对于上面程序的说明,编译时系统会提示出错信息:提示对f函数重复说明
)。
long fun( int n)
{ long s;
if(n==1 || n==2) s=2;
lse s=n-fun(n-1);
return s;}
in()
\n", fun(3)); }
1
2 C) 3 D) 4
)。
int f1(int x,int y)
{ return x>y?x:y; }
int f2(int x,int y)
{ return x>y?y:x; }
in()
=4,b=3,c=5,d,e,f;
,b); d=f1(d,c);
,b); e=f2(e,c);
+b+c-d-e;
\n",d,f,e);
}
3,4,5
5,3,4
5,4,3
3,5,4
7.1.10设有以下函数;
{ int b=0;
tic int c=3;
++;c++;
+b+c);
}
)。
in()
=2, i;
\n",f(a));
}
题目解答
答案
一般 if if if if 退出 D \n C 10 ; i x 堆 int i; i<201 D 数组首地址 整型常量 [ 常量表达式 ] 3 f 3 if( strcmp(s1,s2)>0) 0 数组的长度若为 N ,则可以访问的数组下标 范围 为 : 0 ~ (N-1) 。 数组元素引用时,下标为整型的表达式,可以使用 变量 。 D . char a[ ]={0,1,2,3,4,5}; A .输出 abcd A . a[0][0],a[0][1],a[1][0],a[1][1] B . x 数组长度大于 y 数组长度。 C . char*str;str=‘a’; C . 15 D . a[0][4] B . 5 B . 623