C语言经典试题(二)

92 篇文章 9 订阅 ¥9.90 ¥99.00
本文提供了C语言的经典试题,包括选择题和程序分析题,涉及变量赋值、程序流程控制、字符串处理、数组操作等内容,旨在帮助读者巩固C语言的基础知识和编程技巧。
摘要由CSDN通过智能技术生成

C语言程序设计 样题



单选题


1:下面程序段的输出结果是(   )。
int i=40000;
printf("%d\n",i);( 2 分)
A:40000
B:32767
C:程序出错
D:不确定的数

答案:D


2:以下程序是把文本文件myfile.txt中内容读出,并且显示在屏幕上,则程序中画线的部分应该为(  )。
#include "stdio.h"
main()
{
FILE *fp;
char ch;
fp=fopen("d:\\myfile.txt","r")
while (______________)
putchar(ch);
fclose(fp);
}
A. B. C. D.( 2 分)
A:(ch=fgetc(fp))!=EOF
B:(ch=fgetc(fp))==EOF
C:(ch=putc(fp))!=EOF
D:(ch=putc(fp))==EOF

答案:A


3:下列各组字符常量中,两个都合法的一组的字符常量是 (   )。( 2 分)
A:"a" , '\\'
B:'\111', '\xfe'
C:'\t' , '\018'
D:'\0xaa' , '\x1g'

答案:B


4:执行下列程序后,变量i的正确结果是(  )。
int i=20;
switch(i)
{
case 19:i+=1;
case 20:i+=1;
case 21:i+=1;
case 22:i+=1;
}( 2 分)
A:20
B:21
C:22
D:23

答案:D


5:下列程序运行结束后,sum与count值有三个均相同,只有程序(  )与其他程序不同。( 2 分)
A:sum=0;
count=0;
while(count〈=100)
sum+=count++;
B:sum=0;
count=0;
while(count++〈100)
sum+=count;
C:sum=0;
count=0;
while(count〈100)
sum+=++count;
D:sum=0;
count=0;
while(++count〈=100)
sum+=count;

答案:C


6:下面程序运行的结果是(   )。
main( )
{int a[6][6],i,j;
for (i=1;i〈6;i++)
for (j=1;j〈6;j++)
a[i][j]=(i/j)*(j/i);
for (i=1;i〈6;i++)
{ for (j=1;j〈6;j++)
printf(“%2d”,a[i][j]);
printf(“\n”);}}( 2 分)
A:1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
B:0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 1 0 0 0
1 0 0 0 0
C:1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
D:1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 1 0 1 0
1 0 0 0 1

答案:C


7:若有以下定义,则*(p+5)表示 (  ) 。
int a[10],*p = a;( 2 分)
A:元素a[5]的地址
B:元素a[6]的地址
C:元素a[5]的值
D:元素a[6]的值

答案:C


8:以下程序输出的结果为(  )。
main( )
{ int i,f1,f2;
f1=f2=1;
for(i=0;i〈4;i++)
{ printf(“%d  %d  ”,f1,f2);
f1+=f2;
f2+=f1;
}
}( 2 分)
A:1 2 3 4 5 6 7 8
B:1 1 2 3 5 8 13 21
C:1 1 3 5 7 9 11 13
D:1 3 5 7 9 11 13 15

答案:B


9:请读程序:
main()
{ int num = 0;
while(num 〈 =2)
{num + +; printf(“%d \ n”,num);}
}
上面程序的输出结果是(   )。( 2 分)
A:1
B:1
2
C:1
2
3
D:1
2
3
4

答案:C


10:已知x = 3、y = 2,则表达式 x*=y + 8的值为(  )。( 2 分)
A:3
B:2
C:30
D:10

答案:C


11:下列程序把数组元素最大的放入a[0]中,则在if语句中的条件表达式应该是(   )。
main( )
{int a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i;
for(i=0;i〈10;i++,p++)
if( ) *a=*p;
printf(“%d”,*a);
}( 2 分)
A:p〉a
B:*p〉a[0]
C:*p〉*a[0]
D:*p[0]〉*a[0]

答案:B


12:若x 为int型变量,则执行以下语句后,x的值是(  ) 。
x = 6;
x += x- = x * x;( 2 分)
A:36
B:-60
C:60
D:-24

答案:B


13:若执行下面的程序时从键盘上输入5,则输出是(  )。
main()
{ int x;
scanf("%d",&x);
if(x++〉5) printf("%d\n",x);
else printf("%d\n",x--);
}( 2 分)
A:7
B:6
C:5
D:4

答案:B


14:以下程序在输入5,2之后的执行结果是 (  )。
main()
{int s,t,a,b;
scanf(“%d,%d”,&a,&b);
s = 1; t = 1;
if(a〉0) s = s + 1;
if(a〉b) t = s + t;
else if(a = =b) t = 5;
else t= 2*s;
printf(“s = %d,t = %d\n”,s,t);
}( 2 分)
A:s =2,t =5
B:s = 1,t =3
C:s = 2,t =3
D:不能确定

答案:C


15:若已定义x为int类型变量,说明指针变量p的正确语句是(   ) 。( 2 分)
A:int p = &x;
B:int *p = x;
C:int *p ; p= &x ;
D:*p = *x ;

答案:C


16:设a,b,c为整型数,且a = 2,b= 3,c = 4,则执行完以下语句后,a的值是 (   ) 。
a*=16+(b++)—(++c)( 2 分)
A:28
B:14
C:32
D:30

答案:A


17:下面程序的输出结果是 (  )。
main()
{ int **k,*j,i = 100;
j = &i;k = &j;
printf(“%d \ n”,**k);( 2 分)
A:运行错误
B:100
C:i的地址
D:j的地址

答案:B


18:若运行时给变量x 输入12,则以下程序的运行结果是(  ) 。
main()
{ int x,y;
scanf(“%d”,&x);
y = x 〉 12?x + 10:x -12;
printf(“%d”,y);
}( 2 分)
A:0
B:2
C:12
D:10

答案:A


19:以下程序的输出结果是(   )。
main( )
{int num=0;
while(num〈=2)
{ num++;printf(“%d\n”,num);}
}( 2 分)
A:1
2
3
4
B:1
2
3
C:1
2
D:1

答案:B


20:以下程序的运行结果是 (  )。
# define PI 3.141593
main()
{
printf("PI = %f \ n",PI);
}( 2 分)
A:3.141593 = 3.141953
B:PI = 3.141953
C:3.141953 = PI
D:程序出错,无结果

答案:B


21:下列 (   )表达式不满足:当x的值为偶数时值为“真”,为奇数时值为“假”。( 2 分)
A:x%2==0
B:!x%2!=0
C:(x/2*2–x)==0
D:!(x%2)

答案:B


22:下面程序的运行结果是 (   ) 。
main()
{ int i;
for(i= 1;i〈=5;i++)
{ if(i%2) printf(“*”);
else continue;
printf(“#”);
}
printf(“¥\n”);
}( 2 分)
A:* # * # * # ¥
B:# * # * # * ¥
C:* # * # ¥
D:# * # * ¥

答案:A


23:执行下面的程序后,b的值为(   )。
main()
{ int a,b;
for (a=1,b=1;a〈100;a++)
{ if (b〉=20) break;
if (b%3==1)
{ b+=3; continue; }
b-=5;
}
}( 2 分)
A:8
B:22
C:9
D:24

答案:B


24:若i是int型变量,且有下面的程序片段:
i= 322;
if(i%2= =0) printf(“# # # # ”);
else printf(“* * * *”);
上面程序片段的输出结果是(   )。( 2 分)
A:# # # #
B:* * * *
C:# # # # * * * *
D:不确定值

答案:A


25:假定w,x,y,z和m均为int型变量,有如下程序段:
w = 1;x = 2;y = 3;z = 4;
m =(w 〈 x)?w:x; m =(m 〈 y)?m:y; m =(m 〈 z)?m:z;
则该程序段执行后,m的值为(   ) 。( 2 分)
A:4
B:3
C:2
D:1

答案:D


26:对以下说明语句的正确理解是 (  )。
int a[10] = {6,7,8,9,10};( 2 分)
A:将5个初值依次赋给 a[1] 至 a[5]
B:将5个初值依次赋给 a[0] 至 a[4]
C:将5个初值依次赋给 a[6] 至 a[10]
D:因为数组长度与初值的个数不相同,所以此语句不正确;

答案:B


27:下列程序的执行结果是(   ) 。
main()
{int a,b,c;
a = 2; b = 3; c = 1;
if(a〉b)
if(a〉c)
printf(“%d\n”,a);
else
printf(“%d \n”,b);
printf(“end\n”);
}( 2 分)
A:2
B:3
C:1
D:end

答案:D


28:有如下程序段
FILE *fp;
if ((fp=fopen(_____________))==NULL)
{
printf("Can't open file.\n");
exit(0);
}
该程序用来为读而打开E盘根目录下一个名为myfile.dat的二进制文件,则程序中划线部分应该为 (  )。( 2 分)
A:"e:\\myfile.dat","r"
B:"e:\\myfile.dat","rb"
C:"e:\myfile.dat"," r "
D:"e:\myfile.det","rb"

答案:B


29:设有
static char str[]="Nan Jing";
则执行
printf ("%d\n",strlen(strcpy(str,"China")));
后的输出结果为(   )。( 2 分)
A:5
B:7
C:8
D:9

答案:A


30:假定w,x,y,z和m均为int型变量,有如下程序段:
w=1;x=2;y=3;z=4;
m=(w〈x)?w:x; m=(m〈y)?m:y; m=(m〈z)?m:z;
则该程序段执行后,m的值为(  )。( 2 分)
A:4
B:3
C:2
D:1

答案:D


31:在以下程序的运行结果为(   ) 。
#define PRICE 30
main()
{ int num,total;
num = 10;
total = num*PRICE;
printf(“total = %d \ n”,total);
}( 2 分)
A:total = 100
B:total = 200
C:total = 300
D:total = 400

答案:C


32:执行下面程序时,欲将25和2.5分别赋给a和b,正确的输入方法是(  )。
int a;
float b;
scanf("a=%d,b=%f",&a,&b);( 2 分)
A:25 2.5
B:25,2.5
C:a=25,b=2.5
D:a=25 b=2.5

答案:C


33:有程序段:
char s[]=”Wang”;
int s1,s2;
s1=strlen(s);
s2=sizeof(s);
printf(“s1=%d,s2=%d\n”,s1,s2);
以上程序段输出的结果是(   )。( 2 分)
A:s1=4,s2=4
B:s1=4,s2=5
C:s1=5,s2=4
D:s1=5,s2=5

答案:B


34:现已定义整型变量int i=0;执行循环语句“while(i〈10) i++;”后,i的值为(   )。( 2 分)
A:0
B:10
C:11
D:以上三个答案均不正确

答案:B


35:请阅读程序片段:
int a [ ]={1,2,3,4},*p;
int i;
p = a;
*(p + 3)+=2;
printf(“%d”,*(p+3));
上面程序片段的输出结果是(   )。( 3 分)
A:0
B:6
C:a [3]的地址
D:不确定值

答案:B


36:现已定义整型变量int i=0;执行循环语句“while(i++〈10);”后,i的值为(  )。( 3 分)
A:0
B:10
C:11
D:以上三个答案均不正确

答案:C


37:下面程序的运行结果是(  )。
#include 〈stdio.h〉
main( )
{int i;
for(i=1;i〈=5;i++)
switch(i%5)
{ case 0:printf(“*”);break;
case 1:printf(“#”);break;
default:printf(“\n”);
case 2:printf(“&”);
}
}( 3 分)
A:#&&&*
B:#&
&
&*
C:#
&
&
&
*
D:#&

*

答案:B


38:以下程序段的运行结果是 (  ) 。
int a = 3,b = 3;
a = - -b+1;
printf(“%d  %d”,a,b);( 3 分)
A:3 3
B:4 2
C:3 2
D:2 3

答案:C


39:在下列字符序列中,不可能作为C语言标识符的是(   )。( 3 分)
A:student_num
B:class
C:#88
D:month_12

答案:C


40:现已定义整型变量int i=0;执行循环语句“while(i〈10) ++i;”后,i的值为(  )。( 3 分)
A:0
B:10
C:11
D:以上三个答案均不正确

答案:B


41:下面程序的输出是 (  )。
main()
{int a [10] = {1,2,3,4,5,6,7,8,9,10};
int *p = a;
printf(“%d \ n”,*(p+2));
}( 3 分)
A:3
B:4
C:1
D:2

答案:A


42:设有定义:
int k=2;
int *ptr1,*ptr2;
且ptr1和ptr2均已指向k,下列不正确的是(   )。( 3 分)
A:k=*ptr1+*ptr2;
B:ptr2=k;
C:ptr1=ptr2
D:k=*ptr1*(*ptr2);

答案:B


43:若有说明语句:int a,b,c,*d=&c;则能正确从键盘读入三个整数分别赋给变量a,b,c的语句是(   )。( 3 分)
A:scanf(“%d%d%d”,&a,&b,d);
B:scanf(“%d%d%d”,&a,&b,&d);
C:scanf(“%d%d%d”,a,b,d);
D:scanf(“%d%d%d”,a,b,*d);

答案:A


44:C语言规定,程序中各函数之间(  )。( 3 分)
A:既允许直接递归调用也允许间接递归调用
B:不允许直接递归调用也不允许间接递归调用
C:允许直接递归调用不允许间接递归调用
D:不允许直接递归调用允许间接递归调用

答案:A


45:有以下的for循环语句: for (x=0, y=3, i=0;(y〉3)&&(x〈4);x++,y++) i++;则执行上述语句后,i的值为(   )。( 3 分)
A:0
B:1
C:2
D:7

答案:A


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值