C语言练习题(一)
一 选择题
1以下不正确的C语言标识符是( D )。 A.ABC B.abc C.a_bc D.ab.c 2以下正确的c语言标识符是( )。
A.%x B.a+b C.a123 D.test! 3一个c程序的执行是从( ).
A.main( )函数开始,直到main( )函数结束 B.第一个函数开始,直到最后一个函数结束 C.第一个语句开始,直到最后一个语句结束
D.main( )函数开始,直到最后一个函数结束 4 一个C语言程序是由()。
A)一个主程序和若干子程序组成 B)函数组成 C)若干过程组成 D)若干子程序组成
5 C语言程序的基本单位是( )。
A.过程 B.函数 c子程序 D.标识符 6 编辑程序的功能是( )。
A.建立并修改程序 B.将c源程序编译成目标程序
C.调试程序 D.命令计算机执行指定的操作 7以下结果为整数的表达式(设有int i;char c;float f;)(). A.i+f B.i*c C.c+f D.i+c+f 8以下不正确的语句(设有int p,q)是( )。
A.P*=3; B.p/=q; C.p+=3; D.p&&=q; 9 以下使i的运算结果为4的表达式是()。 A.int i=0,j=0;
(i=3,(j++)+i); B.int i=1,j=0;
j=i=((i=3)*2); C.int i=0,j=1;
(j==1)?(i=1);(i=3); D.int i=1,j=1; i+=j+=2;
10设n=10,i=4、则赋值运算n%=i+1执行后,n的值是(). A.0 B.3 C.2 D.1
11逗号表达式(a=3*5,a*4),a+15的值为( ),a的值为( )。 ①A.15 B.60 C.30 D.不确定 ②A.60 B.30 C.15 D.90
12 如果a=1,b=2,c=3,d=4,则条件表达式a<b?a:c<d?c:d的值为(). A.1 B.2 C.3 D.4
13 若有代数式3ae/bc,则正确的C语言表达式是(C) A)a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/c/b*3 14在C语言中,要求运算数必须是整形的运算符是(D).
A)/ B)++ C)!= D)%
15 若以下变量均是整形,且num=sum=7;则计算表达式sum=num++,sum++,++num后sum的值为(A).
A)7 B)8 C)9 D)10
16在C语言中,int、char和short三种类型数据在内存中所占用的字节数(D)。
A)由用户自己定义 B)均为2个字节 C)是任意的 D)有所用的机器的机器字长决定
17 设变量a是整型,f是实型,i是双精度型,则表达式10+?a?+i*f值的数据类型为(C)。 A)int B)float C)double D)不确定
18 设int n=3;则++n的结果是( C ),n的结果是(C) A)2 B)3 C)4 D)5 19语句(1,2,3,4)的结果是( D )。
A)1 B)2 C)3 D)4
20有如下程序,若要求a1、a2、c1、c2的值分别为10、20、A、B,正确的数据输入是(D).
main() {
int a1,a2; char c1,c2;
scanf(\scanf(\}
A)1020AB
C)10 20 ABC
21已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据是,正确的数据输入方式是(A)。(注:︼表示空格,
scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);
A) 10A︼20B
22阅读以下程序,当输入数据的形式为:25,13,10
main() { int x,y,z;
scanf(“%d%d%d”,&x,&y,&z); printf(“x+y+z=%d\\n”,x+y+z); }
A) x+y+z=48 B) x+y+z=35 C) x+z=35 D) 不确定值
23 设X,Y均为float变量,则以下不合法的赋值语句是(B) A) ++x;
B) y=(x%2)/10; C) x*=y+8; D) x=y=10;
24 以下程序的执行结果是( A )。 #include
int sum,pad; sum=pad=5; pad=sum++; pad++; ++pad;
printf(\}
A) 7 B) 6 C)5 D)4
25有以下定义:int a; long b; double x,y;则以下选项中正确的表达式是(B) A)a%(int)(x-y) B)a=x!=y; C)(a*y)%b D)y=x+y=x 26以下选项中能表示合法常量的是( D ) A)整数:1,200 B)实数:1.5E2.0 C )字符斜杠:?\\? D)字符串:\
27表达式a+=a-=a=9的值是(D)
A)9 B)-9 C)18 D)0 28有以下程序(B) #include
{int a=1,b=2; while(a<6){b+=a;a+=2;b%=10;} printf(”%d,%d\n”,a,b); }
程序运行后的输出结果是 A)5,11 B)7,1 C)7,11 D)6,1
29有以下程序(B) #include<stdio.h> main()
{int y=10; while(y--); printf(”y=%d\n”,y); }
程序执行后的输出结果是 A)y=0 B)y= -1 C)y=1 D)while构成无限循环
30有以下程序(C) #include<stdio .h> main()
{char s[」=”rstuv\; printf(”%c\n”,*s+2); }
程序运行后的输出结果是 A)tuv B)字符t的ASCII码值 C)t 错
31有以下程序(B) #include<stdio.h> #include<string.h> main()
{char x[]=”STRING”; x[0」=0;x[1]=?\0?; x[2」=?0?;
printf(”%d %d\\n”,sizeof(x),strlen(x)); }
程序运行后的输出结果是 A)6 1 B)7 0 C)6 3 D)7 1 32有以下程序(D) #include<stdio.h> int f(int x); main() {int n=1,m; m=f(f(f(n)));
printf(”%d\n”,m); } int f(int x) {return x*2;}
程序运行后的输出结果是 A)1 B)2 C)4 D)8 33以下程序段完全正确的是(C) A)int *p; scanf(\&p); B)int *p; scanf(“%d”,p);
C)int k, *p=&k; scanf(\); D)int k, *p:; *p= &k; scanf(“%d”,p); 34下列定义数组的语句中,正确的是(B) A)int N=10; int x[N];
B)#define N 10 int x[N]; C)int x[0..10]; D)int x[];
35若要定义一个具有5个元素的整型数组,以下错误的定义语句是(D) A)int a[5]=﹛0﹜;
B)int b[]={0,0,0,0,0}; C)int c[2+3];
D)出 D)int i=5,d[i]; 36有以下程序
#include<stdio.h> void f(int *p); main()
{int a[5]={1,2,3,4,5},*r=a; f(r);printf(”%d\\n”;*r); } void f(int *p)
{p=p+3;printf(”%d,”,*p);} 程序运行后的输出结果是(D)
A)1,4 B)4,4 C)3,1 D)4,1
37有以下程序(函数fun只对下标为偶数的元素进行操作 # include<stdio.h> void fun(int*a;int n)
{int i、j、k、t; for (i=0;i<n-1;i+=2) { k=i;
for(j=i;j
{int aa「10」={1,2,3,4,5,6,7},i; fun(aa,7);
for(i=0;i<7; i++)printf(”%d,”,aa[i])); printf(”\n”); }
程序运行后的输出结果是(A)
A)7,2,5,4,3,6,1 B)1,6,3,4,5,2,7 C)7,6,5,4,3,2,1 D)1,7,3,5,6;2,1下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST\要求的是(A) A)if(strcmp(s2,s1)==0)ST; B)if(sl==s2)ST;
C)if(strcpy(s l ,s2)==1)ST; D)if(sl-s2==0)ST;
39以下不能将s所指字符串正确复制到t所指存储空间的是(C) A)while(*t=*s){t++;s++;} B)for(i=0;t[i]=s[i];i++);
C)do{*t++=*s++;}while(*s); D)for(i=0,j=0;t[i++]=s[j++];);
40有以下程序( strcat函数用以连接两个字符串) #include<stdio.h> #include<string .h> main()
{char a[20]=”ABCD\0EFG\0”,b[]=”IJK”; strcat(a,b); printf(”%s\\n”,a); }
38