c语言基础练习题及答案

更新时间:2023-10-05 07:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

c语言基础练习题及答案

一、单项选择题

1. C语言源程序文件经过C编译程序编译连接之后生成一个后缀为__C____的文件。 A、”.c” B、“.obj” C、“.exe” D、“.bas” 2. 以下选项中不正确的整型常量是_C____。 A、 12L B、 -10 C、 1,900 D、 123U 3. 表达式___C___的值是0。 A、3%5 B、3/5.0 C、3/5 D、3<5

4. 表达式 !(x>0||y>0) 等价于__D___。

A、!x>0||!y>0 B、!(x>0)||!(y>0) C、!x>0&&!y>0 D、!(x>0)&&!(y>0) 5. 若变量已正确定义并赋值,表达式__D____不符合C语言语法。 A、4&&3 B、+a C、a=b=5 D、int(3.14)

6. 若变量已正确定义,执行语句scanf(\\;时,___B___是正确的输入。

A、2030,40 B、20 30 40 C、20, 30 40 D、20, 30,40

7. 执行语句 printf(” __D____”, 2); 将得到出错信息。 A、%d B、%o C、%x D、%f

8. 设变量定义为“int s[ ]=\”,则数组s中有__B____个元素。 A、12 B、13 C、14 D、15

9. 设变量定义为“int a[2]={1,3}, *p=&a[0]+1;”,则*p的值是___B__。 A、2 B、3 C、4 D、&a[0]+1

10. 若变量已正确定义并赋值,表达式 -k++ 等价于__A____。 A、-(k++) B、(-k)++ C、-(k+1) D、-(++k)

11. 在C 语言程序中,在函数内部定义的变量称为__D____。 A、全局变量 B、全程变量 C、外部变量 D、内部变量

12. 若x是整型变量,表达式 (x=10.0/4.0) 的值是__D___ 。 A、2.5 B、 2.0 C、 3 D、2

13. 对于以下的变量定义,表达式__A____是正确的。 struct node { char s[10]; int k; } p[4];

A、p->k=2 B、p[0].s=“abc” C、p[0]->k=2 D、p->s=‘a’ 14. 下列运算符中,优先级从高到低依次为__D___。 A、&&,!,|| B、||,&&,! C、&&,||,! D、 !,&&,|| 15. 下列程序段的输出结果是__B___。 int *p, *q, k = 1, j=10 ;

p=&j; q = &k ; p = q ; (*p)++; printf(\

A、1 B、2 C、10 D、11

16. 以下各选项企图说明一种新的类型名,其中正确的是水量 (C) A) typedef v1 int; B) typedef v2=int; C) typedefv1 int v3; D) typedef v4: int;

17. 以下选项中,非法的字符常量是 (C) A) ‘\\t’ B) ‘\\17’ C)“n” D) ‘\\xaa’ 18. 以下程序的输出结果是 (C) main()

{ int i, a[10];

for(i=9;i>=0;i--) a[i]=10-i;

printf(“%d%d%d”,a[2],a[5],a[8]); }

A) 258 B) 741 C) 852 D) 369 19. 以下程序的输出结果是(B) main()

{ char st[20]= “hello\\0\\t\\\\\\”;

printf(%d %d \\n”,strlen(st),sizeof(st)); }

A) 9 9 B) 5 20 C) 13 20 D) 20 20 20. 以下程序的输出结果是 (D) main() { int a, b;

for(a=1, b=1; a<=100; a++) { if(b>=10) break; if (b%3= =1)

{ b+=3; continue; } }

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

A) 101 B) 6 C) 5 D) 4

21. 以下程序的输出结果是 (D) union myun { struct

{ int x, y, z; } u; int k; } a; main()

{ a.u.x=4; a.u.y=5; a.u.z=6; a.k=0;

printf(%d\\n”,a.u.x); }

A) 4 B) 5 C) 6 D) 0

22. 以下程序段的输出结果是 (A) char s[]=\ printf (\ A) 9 B) 12 C) 13 D) 14

23. 以下程序的输出结果是 (B) main()

{ char ch[3][5]={\ printf(\ }

A) \24. 不合法的main函数命令行参数表示形式是 (C) A) main(int a,char *c[]) B) main(int arc,char **arv)

C) main(int argc,char *argv) D) main(int argv,char *argc[]) 25. 有以下程序 main()

{ char *s[]={\ p=s[1];

printf(\ }

执行后输出结果是 (C)

A) n,two B) t,one C)w,one D) o,two 26. 设有如下说明 typedef struct

{ int n; char c; double x;}STD;

则以下选项中,能正确定义结构体数组并赋初值的语句是 (A) A) STD tt[2]={{1,'A',62},{2, 'B',75}}; B) STD tt[2]={1,\ C) struct tt[2]={{1,'A'},{2, 'B'}};

D)structtt[2]={{1,\

27. 若变量c为char类型,则能正确判断出c为小写字母的表达式是( D )。 A) 'a'<=c<= 'z' B) (c>= 'a')||(c<= 'z')

C) ('a'<=c)and ('z'>=c) D) (c>= 'a')&&(c<= 'z') 二、填空题

1. 设ch是字符型变量,判断ch为英文字母的表达式是: (ch>=’A’&&ch,=’Z’)||(ch>=’a’&&ch<=’z’) __。

2. 计算下列分段函数的 if 语句是_ if(x>0)y=1;else if(x=0)y=0;else y=-1;___。 1 x>0 y= 0 x=0 -1 x<0

3. 表达式 !!5的值是__1____。

4. 下列程序段的输出结果是___12___。 printf(\

5. 下列程序段的输出结果是__ k=4 s=6___。 int k, s;

for(k=0, s=0; k<10; k++) if (s>k) break ; else s += k;

printf(\

6. 下列程序段的输出结果是__15___。 #define MIN(x,y) (x)<(y)?(x) : (y)

printf(\

7. 下列程序在运行时可能会出错,原因是__指针变量s未赋初值____。 # include void main( ) { char *s; gets(s); puts(s); }

8. 下列程序段的输出是___6 0__。 # include int f(int m) { static int k=0; int s=0;

for(; k<=m; k++) s++; return s; }

void main( ) { int s1, s2; s1=f(5); s2=f(3);

printf(\ }

9. 下列程序段的输出结果是__ fgh ___。 char *st[ ]={\ printf(\

10. 用typedef定义一个含10个元素的整型数组ARR。 typedef int ARR[10];

11.以下程序调用findmax函数返回数组中的最大值,请填空。 findmax(int *a,int n) { int *p,*s; for(p=a,s=a; p-a if ( *p>*s ) s=p; return(*s); } main()

{ int x[5]={12,21,13,6,18}; printf(\ }

三、程序(段)填空题

1.设变量x, y, z已正确定义和赋值,请仔细阅读程序段A,然后在程序段B中填入正确的内容,使程序段A和程序段B有相同的功能。 程序段A 程序段B

x=x+y; y=x-y; x=x-y;

z=x+y; z=x ; x=y ; y=z; z=x+y;

2.请仔细阅读函数f1,然后在函数f2中填入正确的内容,使函数f1和函数f2有相同的功能。

char *f1(char s[ ], char t[]) { int k;

for(k=0; t[k]!=' '; k++) s[k]=t[k]; s[k]=' '; return s; }

char *f2(char *s, char *t) { char *p=s ;

while(( *p++ = *t++)!=' ') ;

return s ; }

===========================================================

一、单项选择题

1. ___D___是合法的用户自定义标识符。 A、 b-b B、float C、 D、 _isw

2. 若变量已正确定义并赋值,表达式___B___不符合C语言语法。 A、a*b/c; B、3.14%2 C、2, b D、a/b/c 3. ___C__是不正确的字符常量。 A、'n' B、'1' C、\、'101'

4. 在 C 程序中,用___B__表示逻辑值“真”。

A、1 B、非 0 的数 C、非 1 的数 D、 大于 0 的数

5. __C____把x、y定义成float类型变量,并赋同一初值3.14。 A、float x, y=3.14; B、float x, y=2*3.14; C、float x=3.14, y=x=3.14; D、float x=y=3.14;

6. 若变量已正确定义,表达式___C___的值不是2。 A、2&3 B、1<<1 C、a==2 D、1^3

7. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和__C____等价。 A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1; 8. 设变量定义为“int a, b;”,执行下列语句时,输入_D____,则a和b的值都是10。 scanf(\;

A、10 10 B、10, 10 C、a=10 b=10 D、a=10, b=10 9. 下列程序的输出结果是__D___。 fun(int a, int b, int c) { c =a*b; } void main( ) { int c; fun(2,3,c);

printf(”%dn”,c); }

A、0 B、1 C、6 D、无法确定

10. 在C程序中,若对函数类型未加说明,则函数的隐含类型为__A___。 A、int B、double C、void D、char

11. 表达式 strlen(”hello”) 的值是___B____。 A、 4 B、 5 C、 6 D、 7 12. 设变量定义为“int a[4];”,则表达式__D____不符合C语言语法。 A、*a B、a[0] C、a D、a++

13. 设变量定义为“int x, *p=&x;”,则&*p相当于__A___。 A、p B、*p C、x D、*&x

14. 若变量已正确定义,_A___不能使指针p成为空指针。 A、p=EOF B、p=0 C、p=’’ D、p=NULL

15. 对于以下的变量定义,表达式__D____不符合C语言语法。 struct node { int len; char *pk;

} x = {2, \

A、p->pk B、*p.pk C、*p->pk D、*x.pk 16. 有如下程序

int runc(int a,int b) { return(a+b);} main0

{ int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%\\d\\n”,r); }

该程序的输出的结果是 (D) A) 12 B) 13 C) 14 D) 15

17. 对于基类型相同的两个指针变量之间,不能进行的运算是 (C) A) < B) = C) + D) - 18. 有如下程序

long fib(int n)

{ if(n>2) return(fib(n-1)+fib(n-2)); else return(2); }

main0

{ printf(“%d\\n”,fib(3)); 该程序的输出结果是 (B) A} 2 B} 4 C} 6 D} 8 19. 有如下定义

struct person{char name[9]; int age;}; strict person class[10]={“Johu”, 17, “Paul”, 19 “Mary”, 18, “Adam 16,};

根据上述定义,能输出字母M的语句是 (D) A) prinft(“%c\\n”,class[3].mane); B) pfintf(“%c\\n”,class[3].name[1]); C) prinft(“%c\\n”,class[2].name[1]); D) printf(“%^c\\n”,class[2].name[0]); 20. 以下所列的C语言常量中,错误的是 (B) A) 0xFF B) 1.2e0.5 C) 2L D) ‘\\72’ 21. 有以下程序段 int k=0

while(k=1)k++;

while 循环执行的次数是 (A)

A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次 22. 以下程序的输出结果是 (C) A) 0 B) 29 C) 31 D) 无定值 fun(int x, int y, int z) { z=x*x+y*y; } main() { int a=31; fun(5,2,a);

printf(“%d”,a); }

23. 下列程序段的输出结果是 (A)

A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2 void fun(int *x, int *y)

{ printf(“%d %d”, *x, *y); *x=3; *y=4;} main()

{ int x=1,y=2; fun(&y,&x);

printf(“%d %d”,x, y);

}

24. 当调用函数时,实参是一个数组名,则向函数传送的是 (B) A) 数组的长度 B) 数组的首地址

C) 数组每一个元素的地址 D) 数组每个元素中的值 25. 以下程序的输出结果是 (A) A) 1 B) 2 C) 3 D) 4 long fun( int n) { long s;

if(n= =1 || n= =2) s=2; else s=n-fun(n-1); return s; }

main()

{ printf(“%ld\\n”, fun(3)); } 26. 以下程序的输出结果是 (B) A) 16 B) 2 C) 9 D) 1 #define SQR(X) X*X main()

{ int a=16, k=2, m=1;

a/=SQR(k+m)/SQR(k+m); printf(“d\\n”,a); }

27. 以下函数返回a所指数组中最小的值所在的下标值 fun(int *a, int n) { int i,j=0,p; p=j;

for(i=j;i if(a[i] return(p); }

在下划线处应填入的是 (D) A) i=p B) a[p]=a[i] C) p=j D) p=i

二、填空题

1. 表示“x≥y≥z”的C表达式是___ x>=y && y>=z ____。 2. 下列程序段的输出是__1____。 printf(\

3. 下列程序段的输出是__6,90____。 int k; float s;

for (k=0, s=0; k < 7; k ++) s += k/2;

printf(\

4. 下列程序段的输出是__5,25_____。 #define f(a, b, x) a*x+b

printf(\

5. 下列程序段的输出是_*#*#____。 main() { int k;

for(k=1; k<5; k++) { if(k % 2) printf(\ else continue; printf(\ } }

6. 下列程序段的输出是__5 8___。 # include int f(int x) { static y=1; y++; x += y; return x; }

void main() { int k; k=f(3);

printf(\}

7. 下列程序段的输出是___5__。 int *p, *q, k = 5 , j = 6 ; q = &k ; p = q ; q = &j ; printf(\8. 函数

void f(char s[ ], char t[ ]) { int k=0;

while (s[k]=t[k]) k++; }

等价于

void f(char *s, char *t) { while (_*s++=*t++____); }

9. 下列程序段的输出是_ ne,s ____。 char *a[2]={\ printf(\printf(\

10. 下列程序编译后生成 t.exe, 运行 t input output zoo oil 的输出结果是__zoo___。 void main(int argc, char * argv[ ]) { int k;

char *p=argv[1];

for(k=2; k if(strcmp(argv[k], p)>0) p=argv[k];

printf(\ }

11. 下列程序调用swap函数交换a和b的值,并输出交换后的a和b的值。程序的输出结果是:After swap 5, 3。 void main( ) { int a=3, b=5; swap( &a, &b ) ;

printf(\ }

swap( int *p, int *q ) { int t; t=*p; ; *p=*q ; *q=t ; }

一、选择题((1)-(40)题每题1分,(41)-(50)题每题2分,共60分)

下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 (1) 计算机的存储器完整的应包括 A) 软盘、硬盘 B) 磁盘、磁带、光盘 C) 内存储器、外存储器 D) RAM、ROM (2) 计算机中运算器的作用是

A) 控制数据的输入/输出 B) 控制主存与辅存间的数据交换

C) 完成各种算术运算和逻辑运算 D) 协调和指挥整个计算机系统的操作 (3) 软磁盘处于写保护状态时,其中记录的信息 A) 绝对不会丢失

B) 不能被擦除,但能追加新信息 C) 不能通过写磁盘操作被更新

D) 不能以常规方式被删除,但可以通过操作系统的格式化功能被擦除 (4) 光盘根据基制造材料和记录信息的方式不同,一般可分为 A) CD、VCD

B) CD、VCD、DVD、MP3

C) 只读光盘、可一次性写入光盘、可擦写光盘 D) 数据盘、音频信息盘、视频信息盘 (5) 在计算机系统中,可执行程序是

A) 源代码 B) 汇编语言代码 C) 机器语言代码 D) ASCII码

.若有以下说明和语句:d

struct worker {

int no;

char *name;

}work,*p=&work;

则以下引用方法不正确的是 A) work.no B) (*p).no C) p->no D)work->no

10.数组名作为参数传给函数,作为实际参数的数组名被处理a

为 。

A) 该数组长度 B) 该数组元素个数 C) 该函数中各元素的值 首地址

一. 阅读程序,写出运行结果:

1. main()

{int a=1,b=4,c=2;

float x=10.5,y=4.0.z ;

z=(a+b)/c+sqrt((double)y)*1.2/c+x;

printf(“%f\\n”,z); } 2.

main()

{ static int a[4][5]={{1,2,3,4,0},{2,2,0,0,0},{3,4,5,0,0},{6,0,0,0,0}};

int j,k;

D) 该数组的 for (j=0;j<4;j++)

{ for(k=0;k<5;k++)

{if (a[j][k]==0) break;

printf(“ %d”,a[j][k]); } }

printf(“\\n”); }

3. main()

{ char *a[4]={”*****”,”Osaka ”,”Sapporo ”

char *pt;

pt=a;

jprintf(“%s”,*(a+2)); }

4. main()

{ int a[6][6],i,j;

for (i=1 ;i<6 ; i++)

for ( j=1;j<6;j++)

a[j]= i*j;

for (i=1 ;i<6 ; i++)

for ( j=1;j<6;j++)

,”Nagoya ”}; printf( \

printf(“\\n”); } }

5. main()

{int a[]={1,2,3,4},i,j,s=0; j=1;

for(i=3;i<=0;i--)

{s=s+a*j;

j=j*10; }

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

. 填写程序:

1.已知能被4整除而不能被100整除的或者能被400整除的年份是闰年,则闰年的判断条件程序如下:

main()

{int year,leap;

scanf(“%d ”,&year);

if ((year%4==0)&&(year0!=0)||(year@0==0))

leap=1;

else leap=0;

if ( leap==1 )

printf(“是闰年”);

else printf(“ 不是闰年”);

2.给定一3 x 4的矩阵,求出其中的最大元素值,及其所在的行列号:

main()

{int i,j,row=0,colum=0,max;

static int a[3][4]={{1,2,3,4},{9,8,7,6},{10,-10,-4,4}}; ;

for(i=0;i<=2;i++)

for(j=0;j<=3;j++) { ; ; }

printf(“%d%d”,row,colum); }

习题答案:

一.1.A 2. B 3.B 4.D 5.B 6.D 7.B 8.D 9.D 10.A

二. 1. 13.700000

2. 1234223456

3. Sapporo

4. 1 2 3 4 5

2 4 6 8 10

3 6 9 12 15

4 8 12 16 20

5 10 15 20 25 5. 0 三. 1.

(year%4==0)&&(year0!=0)||(year@0==0)

leap==1

2. max=a[0][0];

if (a[j]>max) max=a[j];

row=i,colum=j;

原文链接:http://www.ban102.com.cn/article/detail.asp?id=755

本文来源:https://www.bwwdw.com/article/2krd.html

Top