C语言练习题及答案行健Word下载.docx
《C语言练习题及答案行健Word下载.docx》由会员分享,可在线阅读,更多相关《C语言练习题及答案行健Word下载.docx(78页珍藏版)》请在冰豆网上搜索。
![C语言练习题及答案行健Word下载.docx](https://file1.bdocx.com/fileroot1/2022-11/23/f338fd53-113f-4cad-a82f-8db8f87aa40b/f338fd53-113f-4cad-a82f-8db8f87aa40b1.gif)
A)#include<
stdio.h>
B)#include<
math.h>
C)#include<
malloc.h>
D)#include<
string.h>
8、以下程序的输出结果是()
voidaverage(float*p,intn)
{inti;
floatsum;
for(i=0,sum=0;
i<
n;
i++,p++)sum+=(*p);
%.2f\n"
sum/n);
}
main()
{floatscore[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}};
average(*score,12);
}
A)
0B)82.25
C)98.00D)99.00
9、在下列叙述中,正确的一条是()
A)表达式1+2<
<
3和sizeof(3.8)的结果分别为24和8
B)函数fputc(c,stdout)与putchar(c)的结果相同
C)语句intpointer中的pointer是指针变量名
D)主函数和其它函数可以互相调用
10、以下程序的输出为()
structs1
{char*s;
intn;
structs1*sip;
};
{
staticstructs1a[]={{"
abcd"
1,a+1},{"
efgh"
2,a+2},{"
ijkl"
3,a}};
structs1*p=a;
intm=0;
%s%s%s"
a[0].s,p->
s,a[2].sip->
s);
%d%d"
m+2,--a[m].n);
%c\n"
++a[m].s[3]);
A)abcdabcdabcd20eB)abcdefghijkl20e
C)abcdefghijkl21eD)abcdabcdabcd21e
11、下列函数中定义不正确的是()
A)intmax(){intx,y,z;
z=x>
y?
x:
y;
B)intmax(intx,inty){intz;
return(z);
C)intmax(x,y){intx,y,z;
D)intmax(){}
12、C语言中函数返回值的类型是由()决定。
A)定义函数时的第一个形参类型B)调用函数的主调函数类型
C)调用函数时临时D)定义函数时所指定的函数类型
13、运行以下程序后,如果从键盘上输入china#<
回车>
则输出结果为()
A)2,3B)3,5
C)2,5D)5,2
#include<
{intv1=0,v2=0;
charch;
while((ch=getchar())!
='
#'
)
switch(ch)
{case'
a'
:
case'
h'
v1++;
default:
v2++;
%d,%d\n"
v1,v2);
14、下面函数的功能是()
sss(char*s,char*t)
{while((*s)&
(*t)&
(*t++==*s++))};
return(*s-*t);
A)求字符串的长度B)比较两个字符串的大小
C)将字符串s复制到字符串t中D)将字符串s接续到字符串t中
15、有如下程序
{inti,sum=0;
for(i=1;
=3;
sum++)sum+=i;
%d\n"
sum);
该程序的执行结果是()
A)6B)3C)死循环D)0
16、能正确表示a和b同时为正或同时为负的逻辑表达式是()
A)(a>
=0‖b>
=0)&
(a<
0‖b<
0)
B)(a>
=0&
b>
0&
b<
C)(a+b>
0)&
(a+b<
=0)
D)a*b>
17、下述程序的输出结果是()。
main()
{chars1[10]="
abc"
*s2="
ABC"
s3[50]="
123456789"
;
strcpy(s3+4,strcat(s1,s2));
%s\n"
s3);
A)1234abcABCB)56789abcABCD
C)abcABCD)以上都不是
18、若已定义:
inta[9],*p=a;
并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是()
A)p+1B)a+1C)a++D)++p
19、下列定义数组正确的是()
A)#definesize10B)intn=5;
charstr1[size],str2[size+2];
inta[n][n+2];
C)charstr[];
D)intnum['
10'
];
20、以下程序的功能是计算:
s=1+1/2+1/3+……+1/10
{intn;
floats
s=1.0;
for(n=10;
n>
1;
n--)
s=s+1/n;
%6.4f\n"
s);
程序运行后输出结果错误,导致错误结果的程序行是
A)s=1.0;
B)for(n=10;
C)s=s+1/n;
D)printf("
21、以下说法正确的是()
A)输入项可以为一个实型常量,如scanf("
%f"
3.5);
B)只有格式控制,没有输入项,也能进行正确的输入,如scanf("
a=%d,b=%d"
);
C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("
%4.2f"
f);
D)当输入数据时,必须指明变量的地址,如scanf("
22、设x=2.5、a=7,则算术表达式x+2*++a/3%3的值为()。
A)2.5B)3.5
C)4.5D)5.5
23、若有说明:
inta[3][4]={0};
则下面正确的叙述是()
A)只有元素a[0][0]可得到初值0
B)此说明语句不正确
C)数组a中个元素都可以得到初始值,但其值不一定为0
D)数组a中个元素都可得到初值0
24、设a=3,b=4,c=5,则表达式!
(a+b)+c-1&
b+c/2的值为()。
A)6.5B)6
C)0D)1
25、设x是整型变量,pb是基类型是整型的指针变量,则正确的赋值表达式是()
A)pb=x;
B)*pb=&
x;
C)pb=&
D)*pb=*x;
26、下面程序的输出结果是()
{int**k,*j,i=100;
j=&
k=&
j;
%d"
**k);
A)运行错误B)100
C)i的地址D)j的地址
27、在下列有关#include命令的叙述中,错误的一条是()
A)在#include命令中,文件名可以用双引号或尖括号括起来
B)在一个包含文件中又可以包含另一个被包含文件
C)在一个#include命令中可以指定一个包含文件
D)在一个#include命令中可以指定多个包含文件
28、以下程序的输出结果为()
{inta[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};
Thevalueis%d"
the_value(3,4,a));
the_value(intm,intn,intarr[][4])
inti,j,val=arr[0][0];
for(i=0;
m;
i++)
for(j=0;
j<
j++)
if(val<
arr[i][j])val=arr[i][j];
return(val);
A)Thevalueis15B)Thevalueis7
C)Thevalueis34D)Thevalueis8
29、在下列叙述中,正确的一条是()
A)表达式1+2<
B)函数fputc(c,stdout)与putchar(c)的结果相同
C)语句intpointer中的pointer是指针变量名
D)主函数和其它函数可以互相调用()
30、以下不正确的if语句形式是()
A)if(x>
y&
x!
=y);
B)if(x==y)x+=y;
C)if(x!
=y)scanf("
x)elsescanf("
y);
D)if(x<
y){x++;
y++;
31、有如下程序
{intx=1,a=0,b=0;
switch(x){
case0:
b++;
case1:
a++;
case2:
b++;
a=%d,b=%d\n"
a,b);
该程序的输出结果是
A)a=2,b=1B)a=1,b=1
C)a=1,b=0D)a=2,b=2
32、阅读以下程序:
{intx;
scanf("
x);
if(x--<
5)printf("
,x);
elseprintf("
,x++);
程序运行后,如果从键盘上输人5,则输出结果是
A)3B)4C)5D)6
33、以下叙述中正确的是()
A)全局变量的作用域一定比局部变量的作用域范围大
B)静态(static)类别变量的生存期贯穿于整个程序的运行期间
C)函数的形参都属于全局变量
D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值
34、请阅读以下程序:
{inta=5,b=0,c=0;
if(a=b+c)printf("
***\n"
elseprintf("
$$$\n"
以上程序()
A)有语法错误不能通过编译B)可以通过编译但不能通过连接`
C)输出***D)输出$$$
35、执行以下程序段时()
x=-1;
do{x=x*x;
}while(!
x);
A)循环体将执行一次B)循环体将执行两次
C)循环体将执行无限次D)系统将提示有语法错误
36、有如下说明
inta[10]={1,2,3,4,5,6,7,8,9,10},*P=a;
则数值为9的表达式是
A)*P+9B)*(P+8)C)*P+=9D)P+8
37、有如下程序
#defineN2
#defineMN+1
#defineNUM2*M+1
{inti;
=NUM;
i++)printf("
i);
该程序中的for循环执行的次数是
A)5B)6C)7D)8
38、以下程序的输出为()
structst
int*y;
}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&
dt[0],60,&
dt[1],70,&
dt[2],80,&
dt[3]};
{p=aa;
++p->
%d"
(++p)->
++(*p->
y));
A)102020B)506021
C)516021D)607031
39、若x是int型变量,且有下面的程序片段:
for(x=3;
x<
6;
x++)printf((x%2)?
("
**%d"
):
##%d\n"
),x);
上面程序片段的输出结果是
A)**3B)##3C)##3D)**3##4
##4**4*4##5**5
**5##5
40、有以下程序
intfun(intx,inty,int*cp,int*dp)
{*cp=x+y;
*dp=x-y;
{inta,b,c,d;
a=30;
b=50;
fun(a,b,&
c,&
d);
c,d);
输出结果是
A)50,30B)30,50
C)80,-20D)80,20
41.设int类型的数据长度为2个字节,则unsignedint类型数据的取值范围是()。
A.0至255B.0至65535
C.-32768至32767D.-256至255
42.以下叙述正确的是()。
A.C语言本身没有输入输出语句
B.C程序的每行中只能写一条语句
C.在C程序中,main函数必须位于程序的最前面
D.在对一个C程序进行编译的过程,可发现注释中的拼写错误
43.以下程序的输出结果是()。
main()
{intx=10,y=10;
%d%d\n"
x--,--y);
A.1010B.99
C.910D.109
44.在C语言中,要求参加运算的数必须是整数的运算符是()。
A./B.!
C.%D.==
45.有如下定义的变量和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是()。
inta1,a2;
charc1,c2;
scanf(“%d%d”,&
a1,&
a2);
scanf(“%c%c”,&
c1,&
c2);
A.10□20AB<
B.10□20□A□B<
C.10□20<
AB<
D.10□20□AB<
46.运行以下程序时,从键盘输入7654<
,则屏幕显示的结果是()。
voidmain(){
intc;
while((c=getchar())!
='
\n'
switch(c-'
4'
{case0:
case1:
putchar(c+4);
case2:
putchar(c+3);
break;
case3:
putchar(c+2);
default:
putchar(c+1);
}}
A.7654B.99987
C.989988D.9899887
47.下面的程序()。
main(){
intx=0,y=0,z=0;
if(x=y+z)printf("
****"
####"
A.有语法错误不能通过编译B.输出****
C.可以通过编译,但是不能通过连接,因而不能运行D.输出####
48.数组名作为函数参数时被处理为()。
A.该数组的长度B.该数组的首地址
C.该数组的所有元素的值D.该数组的第一个元素
49、若有数学公式
,其正确的C语言表达式是()。
A.sqrt(fabs(cos(x*3.14/180)))B.sqrt(fabs(cos(x*π/180)))
C.sqrt(|cos(x)|)D.sqrt(|cos(x*3.14/180)|)
50.执行下列程序时输入:
1234567,程序的运行结果为()。
main(){
intx,y;
%2d%*2d%2d"
%d\n"
x+y);
A.17B.46C.68D.语法错误
51.已知字母a的ASCII码为97,下面的程序输出是()。
voidmain(){
charc1,c2;
c1='
+'
6'
-'
2'
c2='
+6-'
3'
%c,%d\n"
c2,c1);
A.输出格式有误不能通过编译B.d,e
C.100,101D.d,101
52.下面程序中()。
(每行前面数字为行号)
1main()
2{inti;
3floata[8]={0.0};
4for(i=0;
i<
8;
i++)scanf("
a[i]);
5for(i=1;
i++)a[0]=a[0]+a[i];
6printf("
%f,"
a[0]);
A.没有错误B.第3行有错误C.第5行有错误D.第6行有错误
53.若有以下说明和语句,则()不是字符串strcpy的正确调用。
char*str1="
copy"
str2[10],*str3="
hijkmn"
*str4,*str5="
;
A.strcpy(str2,str1);
B.strcpy(str3,str1);
C.strcpy(str4,str1);
D.strcpy(str5,str1);
54.执行下列语句后,输出值为()
#defineM5
#defineNM+1
#defineNNN*N/2
main(){
NN);
A.8B.10C.12D.18
55.以下的程序输出的结果是()。
voidmain(){
inti;
=3;
i++){
if(i%2)putchar('
'
elsecontinue;
putchar('
>
}
A.<
>
<
#B.>
#C.<
#D.>
#
56.若有如下结构体定义:
structexample{intx;
inty;
则()是正确的引用或定义。
A.structexamplev=10;
B.examplev;
v.x=10;
C.structv;
D.structexamplev={10};
57.下述的程序输出结果是()。
chara=3,b=6,c;
c=a^b<
2;
\n%d"
c);
A.27B.10C.20D.28
58.以下是关于数组的描述,其中不正确地是()。
A.数组是有序数据的集合,数组中的每一个元素都属于同一个数据类型;
B.在对全部数组元素赋初值时,可以不指定数组的长度;
C.inta[10],*p=a;
则语句for(;
p<
a+10;
p++)printf("
%d\n"
*p);
输出数组中的所有数据;
D.inta[10],*p;
则语句for(p=a;
10;
59.C语言可以处理的文件类型是()。
A..文本文件和数据文件B.文本文件和二进制文件
C.数据文件和二进制文件D.数据代码文件
60.已有说明float*p,m=3.1416;
要建立如图所示的存储结构的赋值语句是()。
A.p=m;
B.*p=m;
pm
C.p=&
D.*p=&
61.以下关于C语言叙述中,不正确的是()。
A.语言简洁、紧凑,使用方便灵活;
B.语法限制严格,能检查出几乎所有的语法错误;
C.生成目标代码质量高,程序执行效率高;
D.既具有高级语言的功能,又具有低级语言的许多功能。
62.变量X不大于0且不等于10的表达式是()
A.X!
0&
X≠10B.X<
=0&
X<
10
C.X<
X!
=10D.X<
=0andX≠10
63.对以下说明语句的正确理解是()。
inta[10]={6,7,8,9,10};
A.将5个数值依此赋给a[0]至a[4],