C语言自测练习 下载本文

内容发布更新时间 : 2024/5/18 10:27:56星期一 下面是文章的全部内容请认真阅读。

printf(“%d,%d\\n”,x--,--y);

A.10,3 B.9,3 C.9,2 D.10,2 76.若有定义int x,y;并已正确赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的(x-y)等价的是( C )。 A.(x-y>0) B.(x-y<0) C.(x-y<0 || x-y>0) D.(x-y==0) 77.以下程序的输出结果是( D )。 #include void main() { int a=3;

printf(“%d\\n”,(a+=a-=a*a)); }

A.-6 B.12 C.0 D.-12 78.若x是整型变量,表达式(x=10/4)的值是( D )。 A.2.5 B.2.0 C.3 D.2 79.有以下程序,运行后的输出结果是( B )。 #include void main()

{ int a=0,b=0; a=10; b=20; printf(“a+b=%d\\n”,a+b); }

A.a+b=10 B.a+b=30 C.30 D.出错 80.以下非法的赋值语句是( C )。

A.n=(i=2,++i); B.j++; C.++(i+1); D.x=j>0;

81.设有数组定义:char array[]=“China”;则数组array所占的空间为( C )。 A.4个字节 B.5个字节 C.6个字节 D.7个字节 82.有以下程序,若运行时从键盘输入:6,5,65,66<回车>,则输出结果是( A )。 #include void main() {char a,b,c,d;

scanf(“%c,%c,%d,%d”,&a,&b,&c,&d); printf(“%c,%c,%c,%c\\n”,a,b,c,d); }

A.6,5,A,B B.6,5,65,66 C.6,5,6,5 D.6,5,6,6 83.程序段:int n=1;printf(“%d%d%d\\n”,n,++n,n--);的输出结果是( A )。 A.111 B.122 C.123 D.121 注:在vc++6.0下运行结果为:221

84.在宏定义#define PI 1.11596中,用宏名PI代替的是一个( C )。 A.单精度数 B.双精度数 C.常量 D.字符串 85.在C语言程序中,在函数内部定义的变量称为( B )。

A.全局变量 B.局部变量 C.静态变量 D.寄存器变量 86.在C语言中,合法的字符常量是( D )。

A.‘\\084’ B.‘0x43’ C.‘ab’ D.‘\\0’

87.已知字母 ‘A’的ASCII码为十进制65,则程序段:char ch1,ch2;ch1=‘A’+‘5’-‘3’; ch2=‘A’+‘6’-‘3’; printf(“%d,%c\\n”,ch1,ch2);的输出结果是( A )。 A.67,D B.B,C C.C,D D.不确定的值

88.已知p为指针变量,a为数组名,i为整型变量,下列赋值语句不正确的是( D )。 A.p=&i; B.p=a; C.p=&a[i]; D.p=10; 89.若要定义a为3×4的二维数组,正确的定义语句是( B )。

A.float a(3,4); B.float a[3][4]; C.float a3.4; D.float a[3,4]; 90.在下面语句中,其含义为“p为指向含n个元素的一维数组的指针变量”的是( D )。

A.int p[n] B.int *p() C.int *p(n) D.int (*p)[n]

二.填空题

1.一个良好的算法是由3种基本结构按照一定规律组成的,这3种基本结构是顺序结构、 选择结构 和循环结构。

2.函数strcmp返回的值等于零时,说明两个字符串 相等 。

3.设a=1,b=2,c=3,d=4,则表达式a

5.设a=2、b=3、c=4为整型变量,则执行语句a*=16+(b++)-(++c);后a的值是 28 。 6.在定义函数时,用 void 类型加以说明,函数不返回值。 7.在函数内定义的变量称为 局部变量 。

8.设有定义char w;int x;float y;double z;并已赋确定的值,则表达式w*x+z-y的类型为 double 。 9.C语言程序是由函数组成,程序的执行都是从 main函数 开始的。 10.已知int b=2,a=3;表达式a*=b,a+b的结果是 8 。

11.结构化程序设计的三种基本结构是 顺序结构 、 选择结构 、 循环结构 。

12.设i,j,k均为int型变量,则执行for(i=0,j=10;i<=j;i++,j--)k=i+j;循环后k值为 10 。 13.设有数据定义int k=4,*p=&k;则表达式p==&k的值为 1 。

14.函数调用时,实参和形参均为数组名,其传递方式为 传送地址 。(或双向传递) 15.若ch已定义为字符型变量,且已赋值,判断ch中是否为字母的表达式为 ch>=’a’ && ch<=’z’ || ch>=’A’ && ch<=’Z’ 。

16.已知union type { int i; double *p;}temp;则系统为temp分配的空间为 8 字节。

17.若有定义和语句:char s[12]=“a book!”;printf(“%d\\n”,strlen(s));则输出结果是 7 。 18.设有变量定义:int i; float f; char name[50]; 当执行语句scanf(“-%f%2s”,&i,&f,name);时,输入字符55566 777后,name的值是 77 。

19.若有函数定义fun(double a){ return a*a*a;},则函数返回值的类型是 int 。 20.以下语句实现将整型变量a和b的值对调的功能: t=a ;a=b;b=t;

21.若有语句char k,*p;要将指针变量p指向字符型变量k,则C语句为 p=&k 。 22.有int a=3,b=4,c=5;则表达式!(a+b)+c-1&&b+c/2的值为 1 。

23.若有函数max(a,b),为了使指针变量p指向函数max,则正确的赋值语句是 p=max 。 24.若int x=5,n=5;则表达式x+=n++后,x的值是 10 。

25.假设m是一个3位数,从左到右用a、b、c表示各位的数字,则从左到右用各个数字是bac的3位数的表达式是 b*100+a*10+c 。

26.数学表达式y?log10y对应的C语言表达式是 sqrt(pow(y,x)+log10(y) 。

27.若有定义double a=5.5, b=2.5;则表达式(int)a+b/b的值是 6.000000 。

28.若已将fp正确定义为文件指针变量,欲以“读”方式打开已存在的二进制文件“d1.dat”,请填写函数fopen的参数。fp=fopen( “rb”,“d1.dat” ); 29.表达式3*7%2+7%2*5的值为 8 。 30.表达式8.0*(1/2)的值为 0 。

31.若int a=3,b=2;则a>b表达式的值为 1 。

32.运行语句printf(“printf(\\“abc\\”)”);后输出的结果 printf(“abc”) 。 33.已知:int a=10,b=9,c=8;则执行语句c=(a)+(b=3);后变量b的值是 3 。 34.已知:int x=11;则表达式x++*1/3的值是 3 。

35.已知:int x=1,y,z;执行语句y=++x;z=x++;后变量x的值是 3 。

36.对语句scanf(“a=%d”,&a);要使变量a的值是12,应从键盘输入 a=12 。 37.若有int i=10,j=0;则执行完语句if(j=0) i++;else i--;后i的值是 9 。

x38.判断变量a、b的值均不为0的C语言表达式为 a!=0&&b!=0 。

39.设有定义:float x=123.4567;则执行语句printf(“%f\\n”,(int)(x*100+0.5)/100.0);后输出的结果是 123.460000 。

40.程序段:int m=011,n=11;printf(“%d %d\\n”,++m,n++);运行后的输出结果是 10 11 。 41.若int a=3,b=2;则表达式a==b&&(b=0)运算后b的值为 2 。 42.根据数据的组织形式,把文件分为二进制文件和 文本文件 。 43.在C语言中数组名表示的是数组的 入口地址或起始地址 。 44.程序段:int i=9;printf(“%o\\n”,i);的输出结果是 11 。 45.变量的指针,其含义是指该变量的 地址 。 46.若有程序:#include

void main{ int i,j; scanf(“i=%d,j=%d”,&i,&j); printf(“i=%d,j=%d\\n”,i,j); } 若给i赋10,给j赋20,则应该从键盘输入 i=10,j=20 。

47.C语言中,函数值类型的定义可以默认,此时函数值得隐含类型是 int 。 48.若有如下定义:int x=2,y=3,z=4;则表达式!(x=y)||x+z-y-!z的值是 1 。 49.程序段:float a=1,b;b=++a*++a;printf(“%f\\n”,b);的输出结果是 9 。

50.程序段:char c[]=“\\t\\v\\\\\\0will\\n”;printf(“%d”,strlen(c));的运行结果是 3 。

三.程序阅读(运行)题

1.源程序: 运行结果:10 11 13 14 16 17 19 20

#include void main() { int n;

for(n=10;n<=20;n++) { if(n%3==0) continue;

printf(“%d ”,n);} }

2.源程序: 运行结果:6

#include void main()

{ int a[10]={1,2,3,-4,5,6,7,-8,9,10},s=0,i; for(i=0;i<10;i++) { if(a[i]<0) break; s+=a[i]; }

printf(“%d”,s);}

3.源程序: 运行结果:1

#include int x=1;

void fun(int x) { x=3;} void main() { fun(x);

printf(“%d\\n”,x); }

4.源程序: 运行结果:78

#include void main() { int f(int); int a=2,i;

for(i=0;i<2;i++) printf(“%d”,f(a)); }

int f(int a)

{ auto int b=0; static int c=3; b=b+1; c=c+1;

return(a+b+c);}

5.源程序: #include void main()

{ char *a=“I love china!”; a+=7; puts(a); }

6.源程序: #include #define MUL(z) z*z void main()

{ printf(“%d\\n”,MUL(1+2)+3); }

7.源程序: #include void main()

{ char a=‘a’,d=‘d’,b=‘b’; a++; b--; b+=d-a;

printf(“a=%c,b=%c,d=%c”,a,b,d); }

8.源程序: 程序运行时输入:-10<回车> #include void main() { int x,y;

scanf(“%d”,&x); if(x>=0) if(x>0) y=1; else y=0; else y=-1;

printf(“%d”,y); }

运行结果:china!

运行结果:8

运行结果:a=b,b=c,d=d

运行结果:-1

9.源程序: 运行结果:1234554321

#include void main() { int i,a[10]; for(i=0;i<10;i++) a[i]=i+1;

for(i=0;i<5;i++) a[9-i]=a[i]; for(i=0;i<10;i++) printf(“%d”,a[i]); }

10.源程序: #include void main() { int y=9; for(;y>0;y--) if(y%3==0)

{ printf(“%d”,--y); continue; } }

11.源程序: #include void main()

{ int f1(int x); int y,n=4; y=f1(n);

printf(“%d”,y); }

int f1(int x) { int p=1,s=0,i; for(i=1;i<=x;i++) { p=p*i; s=s+p; }

return s; }

12.源程序: #include void main()

{ long fun(int);

printf(“%ld\\n”,fun(5)); }

long fun(int n) { long x;

for(x=1;n>1;n--)

运行结果:852

运行结果:33

运行结果:120