C语言100练习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言百道练习题
一、填空题
1.C源程序的基本单位是【函数】。

2.一个C源程序至少应该包含一个【main函数】。

3.在一个C源程序中,注释用的分界符是【//】或【/* */】。

4.在C语言中,标准输入操作的库函数是由【scanf()】完成的,标准输出操作的库函数是由【printf()】完成的。

5.在C语言中,标识符只能由【字母】、【数字】和【下划线】组成,且首字符必须是【字母或下划线】。

6.x为double类型,代数式的C语言表达式是
【sqrt(pow(sin(x),2.5))】。

7.数学中一元二次议程的求根公式的C语言表达式为(-b+sqrt(b*b-4*a*c) )/(2*a) 或(-b-sqrt(b*b-4*a*c) )/(2*a) 。

8.梯形的面积公式的C语言表达式为 1.0/2*(a+b)*h 。

9.已知:char a=' a',b=' b',c=' c',i;(已知a的ASCII码值为97)则表达式i=a+b+c的值为294 。

10.C语言中,指针运算符有* 和& 两个。

11.已知int a=12,n=5;则:表达式运算后a和n的值各为0,0 。

a+=a
a-=2
a*=2+3
a/=a+a
n%=(n%=2)
a+=a-=a*=a
12.复合语句是用一对{ } 界定的语句块。

13.一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预编译命令:#include <stdio.h> 。

14.C语言提供三种逻辑运算符,按优先级高低它们分别是! ,&& ,|| 。

15. 将条件“y能被4整除但不能被100整除,或y能被400整除”写成逻辑表达式(y%4==0&&y%100!=0) ||(y%400==0) 。

16. 已知A=7.5,B=2,C=3.6,表达式A>B && C>A || A<B && !C>B的值是F/假。

17. C语言三个循环语句分别是while 语句,do…while 语句和for 语句。

18. 在C语言中,二维数组的元素在内存中的存放顺序是从上到下,从左到右。

19. 若有定义:double x[3][5],则x数组中行下标的下限为0 ,列下标的上限为4 。

20. 若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]的值为0 ,a[2][1]得到的值为8 。

21. 欲将字符串S1复制到字符串S2中,其语句是strcpy(s1,s2) 。

22.以下程序段的输出结果是_11____:
int i=9;
printf("%o\n",i);
23.以下程序运行后的输出结果是_25 21 37______。

main()
{
int a,b,c;
a=25;
b=025;
c=0x25;
printf("%d %d %d\n",a,b,c) ;
}
24.以下程序运行后的输出结果是__24____。

main()
{
int p[7]={11,13,14,15,16,17,18};
int i=0,j=0;
while(i<7 && p[i]%2==1)
j+=p[i++];
printf("%d\n",j);
}
25.以下程序运行后的输出结果是__21_____。

main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:switch(y)
{
case 0:a++;
break;
case 1:b++;
break;
}
case 2:a++;
b++;
break;
}
printf("%d %d\n",a,b);
}
26.以下程序运行后的输出结果是_gae____。

main ()
{ char a[]="Language",b[]="Programe";
char *p1,*p2; int k;
p1=a; p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k)) printf("%c",*(p1+k));
}
27.以下程序运行后的输出结果是_*2*4*6*8*______。

main()
{
char a[]="123456789",*p; int i=0;
p=a;
while(*p)
{
if(i%2==0)
*p='*';
p++;i++;
}
puts(a);
}
28.以下程序中,for循环体执行的次数是__4___。

#define N 2
#define M N+1
#define K M+1*M/2
main()
{
int i;
for(i=1;i<=k i++){ ... }
...
}
29.通过函数求f(x)的累加和,其中f(x)=x2+1。

main()
{
printf("The sum=%d\n",SunFun(10));
}
SunFun(int n)
{
int x,s=0;
for(x=0;x<=n;x++)
s+=F(__x______);
return s;
}
F( int x)
{
return ___x*x+1_________;
}
30.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。

请填空。

main()
{ int i,a[20],sun,count;
sum=count=0;
for(i=0;i<20;i++) scanf("%d", _&a[i]____ );
fro(i=0;i<20;i++)
{
if(a[i]>0)
{
count++;
sum+= _a[i]_____ ;
}
}
printf("sum=%d,count=%d\n",sum,count);
}
31.若变量a、b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的输出语句printf(“a=%d,b=%d\n”,a,b);
32.已知定义了int x,y,z;,通过键盘录入数据时使用了如下语句scanf("x=%d, y=%d, z=%d", &x,&y,&z); 要求能够正确地将10、20、30赋值给x、y、z的录入格式为:x=10, y=20,z=30(回车)
33.若从键盘上输入58,则以下程序输出的结果是585858 。

void main()
{
int a;
scanf("%d",&a);
if(a>50) printf("%dn",a);
if(a>40) printf("%dn",a);
if(a>30) printf("%dn",a);
}
34.若有以下程序
void main()
{
int a=4, b=3, c=5, t=0;
if(a<b) t=a;a=b;b=t;
if(a<c) t=a;a=c;c=t;
printf("%d %d %d\n",a, b, c);
}
执行后输出结果是 5 0 3 。

35.下列程序的功能是:输出a、b两个数中较大者。

void main()
{
int a, b, t;
scanf("%d%d",&a,&b);
if(a>b)
t=a;
else
t=b;
printf("%d\n",t);
}
36.以下程序运行后输出的结果是 1 。

void main()
{
int a=1, b=2, c=3;
if(c=a) printf("%d \n", c);
else printf("%d \n",b);
}
37.以下程序运行后输出的结果是-4 。

void main()
{
int i=0, j=1, k=2;
if(!i) k-=1;
if(j) k-=2;
if(k) k-=3;
printf("%d\n",k);
}
38.以下程序运行后输出的结果是 1 。

void main()
{
int i=1, j=2, k=3;
if(k=i) printf("%d\n",k);
else printf("%d\n",j);
}
39.以下程序运行后输出的结果是 12 。

void main()
{
int i, j,sum=0;
for(i=1;i<5;i++)
for(j=1;j<4;j++)
sum++;
printf("%d\n",sum);
}
40.以下程序运行后输出的结果是 16 。

void main()
{
int x=15;
while(x>10 && x<50){
if(x/3){
x++;
bgreak;
}
x=x+2;
}
printf("%d\n",x);
}
41.下列程序段的功能是: 输出1~100间能被 4整除的数。

void main()
{
int i;
for(i=1;i<=100;i++){
if(i%4!=0) continue;
printf("%3d\n", i);
}
42.有以下程序,运行时如果从键盘上输入Y ?N ?(回车),则输出结果是 X 。

#include <stdio.h>
void main()
{
char c;
while((c=getchar())!='?')
putchar(--c);
}
43.以下isprime 函数的功能是判断形参a 是否为素数,如果是素数,函数返回1,否则返回0。

请填空。

int imprime(int a)
{
int i;
for(i=2;i<a/2;i++)
if(a%i==0) return 0;
return 1;
}
44.与数学式1
23-x x n 对应的C 语言表达式是:)1*2/(),(*3-x n x pow 。

45.以下程序中,函数fun 的功能是计算x 2-3x+6,主函数中将调用 增收函数计算:
Y1=(x+8)2-2(x+8)+6
Y2=sin 2x-2sinx+6
请填空。

#include <stdio.h>
#include <math.h>
void main()
{
double x,y1,y2;
printf("Enter x:");
scanf("%lf",&x);
y1=fun( x+8 );
y2=fun( sin(x) );
printf("y1=%lf,y2=%lf\n",y1,y2);
}
46.以下程序的输出结果是 4 3 3 4 。

#include<stdio.h>
void swap(int x,int y);
void main()
{
int a=3,b=5;
swap(a,b);
printf("%d %d\n",a,b);
}
void swap(int x,int y)
{
int t;
t=x;
x=y;
y=t;
printf("%d %d\n",x,y);
}
47.执行以下程序后,输出的结果是15 。

#include<stdio.h>
int padd(int *a,int *b)
{
int s;
s=*a+*b;
return s;
}
void main()
{
int a=7,b=8,s;
s=padd(&a,&b);
printf("%d\n",s);
}
48.以下程序运行后的输出结果是13715 。

#include<stdio.h>
#define N 10
void main()
{
int a[ ]={0,0,0,0,0};
for(int i=1;i<sizeof(a)/sizeof(int);i++)
{
a[i]=a[i-1]*2+1;
printf("%4d",a[i]);
}
printf("\n");
}
49.以下程序中,数组b中存放的是10名学生某门功课的成绩,该程序的功能是统计出不及格的人数。

main()
{
int i,cnt,b[10]={58,94,60,42,75,64,86,98,100,71};
cnt=0;
for(i=0;i<10;i++)
if(b[i]>=60) cnt++;
printf("cnt=%d\n",cnt);
}
50.下列程序的功能是将数组中的元素按从小到大的顺序排列输出。

main()
{
int i,j,a,b[5]={4,2,8,3,1};
for(i=0;i<5;i++)
{
for(j=i;j<5;j++)
{
if(b[i]>b[j])
{
a=b[i];
b[i]=b[j];
b[j]=a;
}
}
}
for(j=i;j<5;j++)
printf("%4d\n",b[i]);
}
51.以下程序的功能是删除数组中下标为4的元素。

#include<stdio.h>
void main()
{
float a[10 ]={4,2,8,3,1,10,5,6,12,7};
for(int i=4;i<9;i++)
{
a[i]=a[i+1];
}
for(int i=0;i<9;i++)
printf(" %f ", a[i]);
}
52.以下程序的功能是求出数组各元素的和,并求出其平均值。

#include<stdio.h>
#define N 10
void main()
{
float sum=0,aver, a[N ]={4,2,8,3,1,10,5,6,12,7};
for(int i=0;i<N;i++)
{
sum+=a[i];
}
aver=sum/N;
printf("%f,%f\n",sum,aver);
}
53.以下程序的功能是查找数组中某个元素,输出其位置(下标)。

#include<stdio.h>
void main()
{
int i,j=-1,b[10]={4,2,8,3,1,14,12,18,13,11};
for(i=0;i<9;i++)
{
if(b[i]==1)
j=i;
}
printf("%d\n",i);
}
54.运行以下程序后,输出的结果是10 。

void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p=&a[3],*q=p+2;
printf("%d\n",*p+*q);
}
55.运行以下程序后,输出的结果是25 。

void main()
{
int i, s=0, a[ ]={1,2,3,4,5,6,7,8,9};
for(i=0;i<9; i+=2) s+=*(a+1);
printf("%d\n", s);
}
56.填空。

#include<stdio.h>
#define N 3
void fun(int a[][N],int b[][N])
{
int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
b[j][i]=a[i][j] ;
}
void main()
{
int a[N][N]={1,2,3,4,5,6,7,8,9},b[N][N],i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
printf("\n");
printf("\n");
fun(a,b);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%4d",b[i][j]);
printf("\n");
}
}
57.运行以下程序后,输出的结果是136 。

fun(int x)
{
if(x/2>0)
fun(x/2);
printf("%d",x);
}
void main()
{
fun(6);
}
58.以下程序的输出结果是(1)i=10,(2)i=100 。

void main()
{
int i=100,i_sum;
{
float f,f_sum;
int i=10;
printf("(1)i=%d\n",i);
}
printf("(2)i=%d\n",i);
}
59.以下程序的输出结果是0 10 1 11 2 12 。

fun(int a)
{
int b=0;
static int c=3;
b++;
c++;
return a+b+c;
}
void main()
{
int i,a=5;
for(i=0;i<3;i++)
{
printf("%4d%4d\n",i,fun(a));
}
}
60.以下程序的输出结果是20 40 。

int sum;
fun1()
{
sum+=20;
}
int a;
fun2()
{
a=20;
sum+=a;
}
void main()
{
sum=0;
fun1();
a=8;
fun2();
printf("%d %d",a,sum);
}
61.
二、选择题:
31.一个C程序的执行是从A。

A.本程序的main 函数开始,到main 函数结束
B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main 函数开始,到本程序文件的最后一个函数结束
D.本程序文件的第一个函数开始,到本程序的main 函数结束32.以下叙述正确的是 C 。

A.在C程序中,main 函数必须位于程序的最前面
B.C程序的每行中只能写一条语句
C.语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误33.以下叙述不正确的是 D 。

A.一个C源程序可由一个或多个函数组成。

B.一个C源程序必须包含一个main 函数
C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
34.C语言规定,在一个源程序中,的位置 C 。

A.必须在最前面
B.必须在系统调用的库函数的后面
C.可以任意
D.必须在最后
35.下列不是C语言的关键字的是A。

A.IF
B.char
C.while
D.case
36.下列不是C语言的合法标识符的是 C 。

A.A
B._123
C.b-a
D.P_0
37.下列是C语言的关键字的是 D 。

A.IF
B.define
C.type
D.int
38.下列是C语言的合法用户标识符的是 C 。

A._123
B.goto
C.b-a
D.int
39.在下列的选项中,不是合法常量的是 D 。

A.160
B.0xffff
C.011
D.01a
40.在下列的选项中,是合法常量的是A。

A.160
B.0x48eg
C.0f1
D.e2
41.在下列的选项中,是合法转义符的是A。

A.'\''
B.'\"'
C.'xab'
D.'\0180'
42.在下列的选项中,不是合法转义符的是 D 。

A.'\''
B.'\\'
C.'\n'
D.'x1f'
43.已知字母A的ASCII码的十进制数为65,且ch为字符型,则执行ch= 'A'+'9'-'6'; 后,ch中的值为 C 。

A.68
B.C
C.D
D.不确定的值
44.在C语言中,要求运算符必须是整型的是 B 。

A./
B.++
C.!=
D.%
45.若变量num和sum均是整数,且num=sum=7;,则执行sum=num++, sum++, ++num;之后,sum的值为 B 。

A.7
B.8
C.9
D.10
46.在C语言中,数字029是一个 D 。

A.八进制数
B.十六进制数
C.十进制数
D.非法数
47.对于char ch=' \039';语句,正确的是A。

A.不合法
B.ch的ASCII值是33
C.ch的值为四个字符
D.ch的值为三个字符
48.假定x和y为double型,则表达式x=2,y=x+3/2的值是 D 。

A.3.500000
B.3
C.2.000000
D.3.000000
49.以下合法的赋值语句是A。

A.x=y=100
B.d――
C.x+y
D.c=int(a+b)
50.用 scnaf(“%d,%d”,&x,&y) 输入数据时,下列输入方式中正确的是_A___。

A.123,456 B.123 456 C.123;456 D.123/456
51.执行语句“x=(a=5,b=a++)”后,x,a,b的值依次为______。

A. 6,6,5
B. 6,5,5
C. 6,5,6
D. 5,6,5
52.为了表示关系 x≥y≥z,应使用的C语言表达式是__A__。

A.(x>=y) && (y>=z) B.(x>=y) AND (y>=z)
C.(x>=y>=z) D.(x>=y)&(y>=z)
53.与语句"y=(x>0)?1:0;"等价的是_B__。

A. if(x>0) y=1;
B. if(x) y=1;
else y=0;
C. y=1;
if(x<=0) y=0;
D. if(x<=0) y=1;
54.有一函数
y=1 (x>0)
y=0 (x=0)
y=-1 (x<0)
以下程序段中不能根据x的值正确计算出y的值的是__A__。

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;
55. C语言中,关于 while 和 do while 循环语句的正确叙述是__D__。

A. while 语句的循环控制条件为真时结束循环。

B. do while 语句的循环控制条件为真时结束循环。

C. while 循环体中不允许是空语句。

D. do while 的循环体至少被执行一次。

56.逻辑运算符两侧运算对象的数据类型是 D 。

A.只能是0或1
B.只能是0或非0正数
C.只能是整型或字符型数据
D.可以是任何类型的数据
57.下面A是错误的if语句(设int x,a,b;)
A.if (a=b) x++;
B.if (a=<b) x++;
C.if (a-b) x++;
D.if ( x ) x++;
58..以下程序片段,输出结果是 B 。

main ( )
{ int x=0,y=0,z=0;
if (x=y+z)
printf(“***”);
else
printf(“###”);
}
A.有语法错误,不能通过编译
B.输出:***
C.可以编译,但不能通过连接,所以不能运行
D.输出:###
59.下述程序的输出结果是。

main ( )
{ int a=0,b=0,c=0;
if (++a>0 | | ++b>0)
++c;
printf(“%d,%d,%d”,a,b,c);
}
A.0,0,0
B.1,1,1
C.1,0,1
D.0,1,1
60.执行语句for (i=1;i++<4;) ; 后变量i的值是 B 。

A.3
B.4
C.5
D.不定
61.在C语言中,引用数组元素时,其数组下标的数据类型允许是 C 。

A.整型常量
B.整型表达式
C.整形常量或整形表达式
D.任何类型的表达式
62.若有定义:int a[10],则对数组a元素的正确引用是D 。

A.a[10]
B.a[3.5]
C.a(5)
D.a[10-10]
63.若有程序段:
int k,a[3][3]={1,2,3,4,5,6,7,8,9};
for (k=0;k<3;k++) printf(“%d”,a[k][2-k]);
则以下叙述正确的是 B 。

A.a与b数组完全相同
B.a与b长度相同
C.a和b中都存放字符串
D.a数组比b数组长度长
64.下面程序段的输出结果是 B 。

char c[ ]=”\t\v\\\0will\n”;
printf(“%d”,strlen(c));
A.14
C.9
D.6
65.若调用一个函数,且此函数中没有return语句,则正确的说法是A。

A.该函数没有返回值
B.该函数返回若干个系统默认值
C.能返回一个用户所希望的函数值
D.返回一个不确定的值
66.已知一个函数的定义如下:
double fun(int x, double y)
{ …… }
则该函数正确的函数原型声明为 C :
A.double fun (int x,double y)
B.fun (int x,double y)
C.double fun (int ,double );
D.fun(x,y) ;
67. 有以下程序:
main()
{ int m=3,n=4,x;
x=-m++;
x=x+8/++n;
printf("%d\n",x);
}
程序运行后的输出结果是( D )。

A. 3
B. 5
C. -1
D. -2
68.若x和y代表整型数,以下表达式中不能正确表示数学关系 |x-y|<10的是( C )。

A. abs(x-y)<10
B.x-y>-0&& x-y<10
C. (x-y)<-10||!(y-x)>10
D. (x-y)*(x-y)<100
69.有以下程序:
main()
{
int a=3,b=4,c=5,d=2;
if(a>b)
if(b>c)
printf("%d",d++ +1);
else
printf("%d",++d +1);
printf("%d\n",d) ;
程序运行后的输出结果是( A )。

A. 2
B. 3
C. 43
D. 44
70.下列条件语句中,功能与其他语句不同的是( D )。

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);
71.有以下程序:
main()
{ int i=0,s=0;
for (;;)
{
if(i==3||i==5) continue;
if (i==6) break;
i++;
s+=i;
};
printf("%d\n",s);
}
程序运行后的输出结果是( D )。

A. 10
B. 13
C. 21
D. 程序进入死循环72.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是( B )。

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);
73.以下能正确定义二维数组的是( D )。

A. int a[][3];
B. int a[][3]=2{2*3};
C. int a[][3]={};
D. int a[2][3]={{1},{2},{3,4}};
74.有以下程序:
int f(int a)
{ return a%2; }
main()
{ int s[8]={1,3,5,2,4,6},i,d=0;
for (i=0;f(s[i]);i++) d+=s[i];
printf("%d\n",d);
}
程序运行后的输出结果是( )。

A. 9
B. 11
C. 19
D. 21
75.若有以下说明和语句:int c[4][5],(*p)[5];p=c;,能正确引用c数组元素的是( B )。

A. p+1
B. *(p+3)
C. *(p+1)+3
D. *(p[0]+2) 76.有以下程序:
main()
{ int a=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p; p=q;q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}
程序运行后的输出结果是( C )。

A. 8,7,8,7
B. 7,8,7,8
C. 8,7,7,8
D. 7,8,8,7
77. s1和s2已正确定义并分别指向两个字符串。

若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是( AB )。

A. if(s1>s2)S;
B. if(strcmp(s1,s2))S;
C. if(strcmp(s2,s1)<0)S;
D. if(strcmp(s1,s2)>0)S;
78.有如下程序:
#include
main()
{
FILE *fp1;
fp1=fopen("f1.txt","w");
fprintf(fp1,"abc");
fclose(fp1);
}
若文本文件f1.txt中原有内容为good,则运行以上程序后文件f1.txt中的内容为( B )。

A. goodabc
B. abcd
C. abc
D. abcgood
79.有以下说明和定义语句:
struct student
{ int age; char num[8];};
struct student stu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};
struct student *p=stu;
以下选项中引用结构体变量成员的表达式错误的是( D )。

A. (p++)->num
B. p->num
C. (*p).num
D. stu[3].age
80. 有以下程序:
main()
{
char s[]"Y es\n/No",*ps=s;
puts(ps+4);
*(ps+4)=0;
puts(s);
}
程序运行后的输出结果是( B)。

A.n/No
B. /No
C. n/NO
D.
Y es Y es Y es /No /No /No Y es
81.以下不能定义为用户标识符的是( D )
A.scanf
B. V oid
C. _3com_
D. int
82.以下不合法的用户标识符是( C )
A.j2_key
B.Double
C. 4d
D. _8_
83. 以下选项中,可以作为C语言合法整数的是( C )
A.10110B
B.0386
C. 0Xffa
D. x2a2
84.以下选项中不属于C语言类型的是( D )
A.unsigned shortint
B. unsigned long int
C. unsigned int
D. long short
85. 以下选项中合法的实型常量是( C )
A.5E2.0
B.E-3
C. .2E0
D. 1.3E
86. 以下选项中不能作为合法的常量的是( B )
A.1.234e04
B.1.234e0.4
C. 1.234e+4
D. 1.234e0
87. 表达式3.6-5/2+1.2+5%2的值是( D )
A.4.3
B.4.8
C.3.3
D. 3.8
88. 若以下定义语句:double a, b; int w; long c;
若各变量已正确赋值,则下列选项中正确的表达式是( C )
A.a=a+b=b++
B.w%((int)a+b)
C.(c+w)%(int)a
D. w=a%b 89.已知变量n的初值为8,计算表达式n+=n*=n-2的值为(A)
A.96
B.72
C.56
D. 44 90.有以下程序
void main()
{
int m=12,n=34;
printf("%d%d\n",m++,++n);
printf("%d%d\n",n++,++m);
}
程序运行后的输出结果是( B )。

A.12343513
B.12353514
C.12343514
D. 12353513 91.有以下程序
void main()
{
int m=3, n=9;
printf("%d \n", (m , n));
}
程序运行后的输出结果是( B )。

A.3
B.9
C.格式说明符不足,编译出错
D.程序运行时产生出错信息92.有以下程序
void main()
{
int x, y, z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是( C )。

A.2,3,3
B.2,3,2
C.2,3,1
D.2,2,1
93.有以下程序
void main() { int x=666, y=888; printf("%d\n",x,y); }
程序运行后的输出结果是( B )。

A.错误信息 B.666 C.888 D.666,888 94.有以下程序
void main() { int x=32767, y=032767; printf("%d,%o\n",x,y); }
程序运行后的输出结果是( A )。

A.32767,32767 B.32767,032767 C.32767,77777 D.32767,13815 95.有以下程序
void main() { int x=0xabc, y=0xabc; m-=n ; printf("%X\n", m); }
程序运行后的输出结果是( C )。

A.0X0 B.0x0 C.0 D.0XABC 96.设有定义:int a=2, b=3, c=4;,则以下选项中值为0的表达式是( A ) A.(!a= =1)&&(!b= =0) B.(a<b)&&!c||1 C.a&&b D.a||(b+b)&&(c-a) 97.有以下程序
void main() { int i=1, j=2, k=3; if(i++==1&&(++j==3 || k++==3)) printf("%d %d %d\n",i,j,k); }
程序运行后的输出结果是( D )。

A.1 2 3 B.2 3 4 C.2 2 3 D.2 3 3 98.有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x 的值不是3的是( C )。

A. if(c<a) x=1; B. if(a<3) x=3; C. if(a<3) x=3; D.if(a<b) x=b; else if(b<a) x=2; else if(a<2) x=2; if(a<2) x=2; if(b<c) x=c; else x=3; else x=3; if(a<1) x=1; if(c<a) x=a; 99.设变量a 、b 、c 、d 和y 都已经正确地定义并赋值,若有以下if 语句 if(a<b) if(c==d) y=0; else y=1;
该语句表示的含义是( C )。

A.
⎩⎨
⎧==<=b
a d
c b a y 10且 B. ⎩⎨
⎧≠==<=d b a d c b a y c 10且且 C.
⎩⎨
⎧≠<=<=d
b a d
c b a y c 1
0且且
D.
⎩⎨
⎧≠=<=d
d
c b a y c 1
0且
100.运行以下程序段后,k 的值是( C )。

#include <stdio.h> void main() {
int i, n=0; i=0;
do{
i++;
++i;
}while(n!=0);
printf("%d\n",i);
}
A.0
B.1
C.2
D.死循环
101.运行以下程序段后,输出的结果是( B )。

int k=0, a=1, b=2, c=3;
k=a<b?b:a;
k=k>c?c:k;
A.3
B.2
C.1
D.0
102.若变量已经正确定义,则以下能正确计算f=4!的程序段是(D )
A.f=0 ;
B.f=1;
C.f=1;
D.f=1;
for(i=1;i<=4;i++) for(i=1;i<4;i++) for(i=4;i>1;i++) for(i=4;i>=-2;i--) f*=i; f*=i; f*=i; f*=i; 103.以下程序运行后的输出结果是( C )
#include <stdio.h>
void main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 0:printf("%d",i);
case 2:printf("%d",i);
default:printf("%d\n",i);
}
}
A.022111
B.021021
C.000122
D.012
104.以下不合法的字符常量是(A)
A. '\018'
B. '\"'
C. '\\'
D. '\xcc' 105.已经定义了c为字符型变量,则下列语句中正确的是(C )
A. c='97' ;
B. C="97" ;
C.c=97 ;
D. C="a" ; 106.设有以下语句:
unsigned char a=1,b=2,c,d,e;
c=a^(b<<2);
d=7^3;
e=~4&3;
执行后,c d e的值分别是( D )
A.6 7 0
B.7 4 0
C.8 7 3
D. 9 4 3 107.以下函数定义:
void fun(int n,double x){...}
若以下选项中变量都已经正确定义并赋值,则对函数fun的正确调用语句是(C )A.fun(int y, double m) ; B.k=fun(10,12.5) ;
C.fun(x, n) ; D.void fun(x, n) ;
108.若各中所用变量已经正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是(A)。

A.main() B.float fun(int a,int b){......}
{... x=fun(2,10);...} main()
float fun(int a,int b){......} {... x=fun(i,j);...}
C.float fun(int ,int ); D. main()
main() {float fun(int a,int b){......}
{... x=fun(2,10);...} ... x=fun(i,j);...}
float fun(int a,int b){......} float fun(int a,int b){......}
109.若程序中定义了如下函数
double myadd(double a,double b)
{
return a+b;
}
并将其放于调用函数之后,则在调用之前应进行函数声明,以下选项中错误的是(A)A.double myadd(double a,b) ; B.double myadd(double ,double) ;
C.double myadd(double b,double a) ; D.double myadd(double x,double y) ; 110.以下程序运行后的输出结果是( C )
void main()
{
int a=7,b=8,*p=&a,*q=&b,*r;
r=p;
p=q;
q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}
A.8,7,8,7
B.7,8,7,8
C.8 7,7,8
D. 7,8,8,7 111.若要求定义10个int类型元素的一维数组a,则以下定义语句中错误的是( D )A.#define N 10 B.#define n 5 C.int a[5+5]; D.int n=10,a[n];
int a[N]; int a[2*n]
112.以下数组中定义错误的是( B )。

A.int x[][3]={0}; B.int x[2][3]={{1,2},{3,4},{5,6}};
C.int x[][3]={{1,2,3},{4,5,6}} ; D.int x[2][3]={1,2,3,4,5,6};
113.执行以下程序后,输出的结果是( B )。

#include<stdio.h>
void main()
{
int i,a[ ][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++)
printf("%d",a[2-i][i]);
int a[][3]={{1,2,3},{4,5,6}};
}
A.7 5 3 B.3 5 7 C.3 6 9 D.7 5 1 114.有以下程序段
int a[3][2]={1,2,3,4,5,6},*p[3];
p[0]=a[1];
则*(p[0]+1)所代表的数组元素是(C )。

A.a[0][1] B.a[1][0] C.a[1][1] D.a[1][2] 115.以下程序运行后,输出的结果是(A)。

#include <stdio.h>
int fun(int *x,int n)
{
int i, sm=0;
for(i=0;i<n;i++)
sum+=x[i];
return sum;
}
void main()
{
int a[]={1,2,3,4,5},s=0;
s=fun(a,5);
printf("%d\n",s);
}
A.15 B.25 C.20 D.10
116.以下程序运行后,输出的结果是(A)。

void sum(int p[])
{
p[0]=p[-1]+p[1];
}
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
sum(&a[2]);
printf("%d\n",a[2]);
}
A.6 B.7 C.5 D.8
117.设fp为指向某二进制文件的指针,且已读到文件的结尾,则函数feof(fp)的返回值为( B )
A.EOF B.非0值C.0 D.NULL
以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是( D )。

A.feof(fp)B.ftell(fp) C.fgetc(fp) D.rewind(fp) 118.运行如下程序后,输出的结果是( B )。

#include<stdio.h>
void main()
{
FILE *fp;
int i,k,n;
fp=fopen("data.dat","w+");
for(i=1;i<6;i++)
{
fprintf(fp,"%d",i);
if(i%3==0)
fprintf(fp,"\n");
}
rewind(fp);
fscanf(fp,"%d%d",&k,&n);
printf("%d %d",k,n);
fclose(fp);
}
A.0 0 B.123 45 C.1 4 D.1 2
119.执行以下程序后,test.txt文件夹的内容(若文件能正常打开)是(A)。

#include<stdio.h>
#include <stdlib.h>
void main()
{
FILE *fp;
char *s1="Fortran",*s2="Basic";
if((fp=fopen("c:\\test.txt","wb"))==NULL)
{
printf("Can't open test.txt file\n");
exit(1);
}
fwrite(s1,7,1,fp); //把从s1开始的个字符写到fp所指的文件中
fseek(fp,0L,SEEK_SET); //文件指针移动到文件头
fwrite(s2,5,1,fp);
fclose(fp);
}
A.Basican B.BasicFortran C.Basic D.FortranBasic
三、判断题
120.C程序的注释不能是中文文字信息。

【F】
121.可以使用VC++6.0来运行一个C程序。

【T 】
122.在switch语句中,多个case可以执行相同的程序段。

【T】
123.在while循环中允许使用嵌套循环,但只能是嵌套while循环。

【F】
124.for循环括号中的的三个表达式可以任意省略,while,do-while也是如此。

【F】125.在算术运算符中,只有%要求操作数必须都是整型的。

【T】
126.break 和continue语句都只能用于循环语句中,用以提高程序的执行效率。

【F】127.如果用户自定义了一个函数,则必须在定义前先声明原型函数。

【F】
128.如果一个C源程序中只有一个函数,那么这个函数一定是main( )。

【T】
129.对于逻辑运算符&&和||,左右两个表达式的值都必须求出之后才能确定最终的逻辑值。

【F】
四、读程序题
130.#include "stdio.h"
void main()
{
int k=2;
switch(k)
{
case 1: printf("%3d",k++);
break;
case 2: printf("%3d",k++);
case 3: printf("%3d",k++);
break;
case 4: printf("%3d",k++);
default:printf("FULL!\n");
}
}
输出结果___XX2XX3______。

131.#include "stdio.h"
void main()
{
int x=3;
do
{
printf("%2d",x--);
}while(x);
}
输出结果____3,2,1_____________。

132.以下程序输出x,y,z三个数中的最小值,请填空使程序完整。

main ( )
{ int x=4,y=5,z=8 ;
int u,v;
u = x<y ? 【x,y 】;
v = u<z ? 【u,z 】;
printf (“%d”,v);
}
133.写出下面程序运行的结果。

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;
}
printf(“%d\n”,a);
}
134.下述程序用“碾转相除法”计算两个整数m和n的最大公约数。

该方法的基本思想是计算m和n相除的余数,如果余数为0则结束,此时的被除数就是最大公约数。

否则,将除数作为新的被除数,余数作为新的除数,继续计算m和n相除的余数,判断是否为0,等等,请填(3)空使程序完整。

main ( )
{ int m,n,w;
scanf(“%d,%d”,&m,&n);
while (n) {
w=【1 】;
m=【2 】;
n=【3 】;
}
printf(“%d”,m);
}
135.下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填(3)空使程序完整。

main ( )
{ int n,k=1,s=0,m ;
for (n=1 ; n<=100 ; n++) {
k=1 ; s=0 ;
【m=n】;
while (【m<100 】) {
k*=m%10;
s+=m%10;
【3 】;
}
if (k>s) printf(“%d”,n);
}
}
136.下面程序可求出矩阵a的主对角线上的元素之和,请填题中两个空使程序完整。

main ( )
{ int a[3][3]={1,3,5,7,9,11,13,15,17} , sum=0, i, j ;
for (i=0 ; i<3 ; i++)
for (j=0 ; j<3 ; j++)
if (【i==j】)
sum=sum+【a[i][j] 】;
printf(“sum=%d”,sum);
}
五、编程题
137.已知a,b均是整型变量,写出将a,b两个变量中的值互换的程序来。

#include <stdio.h>
void main()
{
int a,b,temp;
scanf("%d%d",&a,&b);
temp=b;
b=a;
a=temp;
printf("%d,%d",a,b);
}
138.某人摘下一些桃子,卖掉一半,又吃了一只;第二天卖掉剩下的一半,又又吃了一只;第三天、第四天、第五天都如此办理,第六天一看,发现就剩下一只桃子了。

编写一个程序,求某人共摘了多少只桃子。

#include <stdio.h>
void main()
{
int i,sum;
for(i=1;i<=6;i++)
{
sum=2*sum+1;
}
printf("共有%d 个桃子。

",sum); } 139.百钱百鸡问题。

中国古代数学家张丘建在他的《算经》中提出了著名的 “ 百钱百鸡问题 ” :鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何 ? 编写一程序解决此问题。

#include <stdio.h>
void main()
{
int cocks,hens,chicken;
for(cocks=100/5;cooks>=0;cocks- -){
for(hens=100/3;hens>=0;hens- -){
for(chicken=100;chicken>=0;chicken- -){
if(cooks+hens+chicken!=cooks85+hens83+chicken/3)
continues;
else
printf("有公鸡:%d 只,母鸡:%d 只,小鸡:%d 只。

",cocks,hens,chicken);
}
}
} }
140. 有一函数:
⎪⎩⎪⎨⎧≥-<≤-<=)10(113)
101(12)
1(x x x x x x y
编写一程序,输入 x ,输出 y 值。

141. 编写整型函数max,返回三个整数中的最大者,并编写程序测试这个函数。

142. 给出百分制成绩,要求输出成绩等级 'A','B','C','D','E'。

90分以上为 'A',81-89分为 'B' ,70-79 分为 'C',60-69分为 'D',60分以下为 'E'。

143. 假设m 是一个三位数,则写出将m 的个位,十位,百位反序而成的三位数(例如:123反序为321)的C 语言表达式。

144. 设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。

用scanf 输入数据,输出计算结果;输出时要求有文字说明,取小数点后2位数字,请编写程序。

145.读下列程序,将结果填写在线上,空格用X表示。

#include <stdio.h>
void main()
{
printf("%4d",45);
printf("%4o",45);
printf("%4x",45);
printf("%4d",045);
printf("%4d",0x45);
}
运行结果是:XX45XX55XX2dXX37XX69 。

146.读下列程序,将结果填写在线上,空格用X表示。

#include <stdio.h>
void main()
{
char ch='B';
printf("%4c%4d",ch,ch);
printf("%4d%4d%4d",sizeof(ch),sizeof('B'),sizeof(66)); }
运行结果是:XXXBXX66XXX1XXX1XXX4 。

147.读下列程序,程序的运行结果是 a+b=30 。

#include <stdio.h>
void main()
{
int a=0,b=0;
a=10;
b=20;
printf("a+b=%d\n",a+b);
}。

相关文档
最新文档