您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页C语言练习题1

C语言练习题1

来源:意榕旅游网
一、单项选择题

1、C语言程序的基本单位是 ( ) A)字符 B)程序行 C)语句 D)函数 2、计算机能直接执行的程序是 ( ) A)源程序 B)目标程序 C)汇编程序 D)可执行程序 3、以下叙述中错误的是 ( ) A)计算机不能直接执行用C语言编写的源程序

B)C程序经C编译程序编译后,生成后缀为.Obj的文件是一个二进制文件 C)后缀为.Obj的文件,经连接程序生成后缀为.exe 的文件是一个二进制文件 D)后缀为.obj 和.exe 的二进制文件都可以直接运行

4、对于一个正常运行的C程序,以下叙述中正确的是 ( ) A)程序的执行总是从main函数开始,在main函数结束 B)程序的执行总是从程序的第一个函数开始,在main函数结束 C)程序的执行总是从main函数开始,在程序的最a后一个函数中结束 D)程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束 5、下列选项中不属于结构化程序设计原则的是 ( ) A)可封装 B)自顶向下 C)模块化 D)逐步求精 6、结构化程序设计所规定的三种基本控制结构是 ( ) A)输入、处理、输出 B)顺序、选择、循环 C)树形、网形、环形 D)主程序、子程序、函数

7、算法具有五个特性,以下选项中不属于算法特性的是 ( ) A)有穷性 B)简洁性 C)可行性 D)确定性 8、以下关于C语言的叙述中正确的是 ( ) A)C语言中的注释不可以夹在变量名或关键字的中间 B)C语言中的变量可以在使用之前的任何位置进行定义 C)在C语言算术的书写中,运算符两侧的运算数类型必须一致 D)C语言的数值常量中夹带空格不影响常量值的正确表示

9、以下选项中,能用作用户标识符的是 ( ) A)return B)6_a C)_0_ D)int

10、以下选项中合法的标识符是 ( ) A)#33 B)a>b C)_11 D)1_ _ 11、以下不能定义为用户标识符的是 ( ) A)Main B)_0 C)_int D)sizeof 12、若有定义:double a=22;int i=0,k=18;则不符合C语言规定的赋值语句是

( )

A)a=a++,i++ B)i=(a+k)<=(i+k) C)i=a%11 D)i=!a 13、表达式 strlen(\"China\") 的值是 ( ) A)4

B)5

C)6

D)7

14、表达式 strlen(\"c\") 的值是 ( ) A)0

B)1 C)2

D)3

15、若已定义x和y是double类型变量,则表达式x=1,y=x+3/2的值是( ) A)1 B)2 C)2.0 D)2.5 16、若有定义语句: int x=10;,则表达式x-=x+x的值是 ( ) A)-20 B)-10 C)0 D)10 17、若有定义语句: int x=168; ,则表达式x=x%100/10的值为 ( ) A)6 B)6.8 C)1 D)8

18、下述程序段输出结果是 ( )

int x=6;double y=3.141593;printf(\"%d%5.3f\;

A)63.141 B)6 3.141 C)6,3.141 D)63.1410 19、当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是 ( ) A)k%2 B)k%2==1 C)(k%2)!=0 D)!k%2==1

20、若有定义语句:double x,y,*px,*py,执行了px=&x, py=&y;之后,正确的输入语句是 ( ) A)scanf(\"%f%f\ B) scanf(\"%f%f\C)scanf(\"%lf%le\ D) scanf(\"%lf%lf\

21、以下运算符优先级最高的是 ( ) A)<= B)!= C)&& D)? :

22、以下运算符优先级最高的是 ( ) A)+ B)| C)|| D)+= 23、以下是if语句的基本形式: if(表达式)语句

其中“表达式” ( ) A)必须是关系表达式 B)必须是逻辑表达式 C)必须是逻辑表达式或关系表达式 D)可以是任意合法的表达式 24、以下程序的运行结果是 ( ) #include main() { int i,j,m=55; for(i=1;i<=3;i++) for(j=3;j<=i;j++) m=m%j; printf(\"%d\\n\

A)0 B)1 C)2 D)3 25、若i、j已定义为int类型,则以下程序段中内循环体执行printf语句的总执行次数是 ( )

for (i=5;i>0;i--) for (j=0;j<4;j++) printf(\"OK.\\n\");

A)20

B)24 C)25

D)30

26、以下错误的定义语句是 ( ) A)int x[][3]={{0},{1},{1,2,3}};

B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; C)int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; D)int x[][3]={1,2,3,4};

27、以下不能对二维数组a进行正确初始化的语句是 ( ) A)int a[2][3]={0};

B)int a[][3]={{1,2},{3}};

C)int a[][3]={1,2,3,4,5,6}; D)int a[2][3]={{1,2},{3,4},{5,6}}; 28、以下叙述中正确的是 ( ) A)预处理命令行必须位于源文件的开头 B)在源文件的一行上可以有多条预处理命令 C)宏名必须用大写字母表示 D)宏替换不占用程序的运行时间

29、以下叙述中错误的是 ( ) A)在程序中凡是以“#”开始的语句行都是预处理命令行 B)预处理命令行的最后不能以分号表示结束 C)#define MAX是合法的宏定义命令行

D)C程序对预处理命令行的处理是在程序执行的过程中进行的

30、以下关于宏的叙述中正确的是 ( ) A)宏名必须用大写字母表示 B)宏定义必须位于源程序中所有语句之前 C)宏替换没有数据类型限制 D)宏调用比函数调用耗费时间

31、在文件包含预处理语句(# include)的使用形式中,当之后的文件名用“”

(双引号)括起时,寻找被包含文件的方式是 ( )

A)直接按系统设定的标准方式搜索目录

B)先在源程序所在目录搜索,再按系统设定的标准方式搜索 C)仅仅搜索源程序所在目录 D)仅仅搜索当前目录

32、已定义a为int型变量,则对指针变量p的正确定义和初始化的是 ( ) A)int *p=a;

B)int *p=*a; C)int p=&a; D)int *p=&a;

33、设有定义double a[10],*s=a; ,以下能够代表数组元素a[3]的是 ( ) A)(*s)[3] B)*(s+3) C)*s[3] D)*s+3 34、有如下程序段:

int *p,a=10,b=1; p=&a; a=*p+b;

执行该程序段后,a的值是 ( ) A) 12

B)11

C)10

D)编译出错

35、若有定义语句: int c[3][5],*p,*q[3];且0<=i<3,则错误的赋值是 ( ) A)p=c; B)q[i]=c[i]; C)p=c[i]; D)p=&c[1]; 36、若有以下定义:

int x[10],*pt=x;

则对x数组元素的正确应用是 ( ) A)*&x[10] B)*(x+3) C)*(pt+10) D)pt+3 37、若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0}, *p=x;则错误引用x 数组元

( )

A)*p B)x[5] C)*(p+1) D)*x 38、有以下程序 有以下程序 #include main() {

int a[]={1,2,3,4,5,6,7,8,9,0},*p; for(p=a;p程序运行后的输出结果是 ( ) A)1,2,3,4,5,6,7,8,9,0, B)2,3,4,5,6,7,8,9,10,1, C)0,1,2,3,4,5,6,7,8,9, D)1,1,1,1,1,1,1,1,1,,1, 39、设有以下函数:

void fun(int n,char *s) {„„}

则下面对函数指针的定义和赋值均正确的是 ( ) A)void (*pf)( ); pf=fun; B)void *pf( ); pf=fun; C)void *pf( ); *pf=fun; D)void (*pf)(int,char); pf=&fun;

40、下列函数的功能是 ( ) fun(char *a,char *b)

{while((*b=*a)!='\\0') {a++;b++;} } A)将a所指字符串赋给b所指空间 B)使指针b指向a所指字符串

C)将a所指字符串和b所指字符串进行比较 D)检查a和b所指字符串中是否有'\\0' 41、有以下程序 #include main( )

{ int m=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r;

printf(\"%d,%d,%d,%d\\n\

} 程序运行后的输出结果是 A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 42、设有定义语句int(*f)(int);,则以下叙述正确的是 A)f是基类型为int的指针变量

B)f是指向函数的指针变量,该函数具有一个int类型的形参 C)f是指向int类型一维数组的指针变量

D)f是函数名,该函数的返回值是基类型为int类型的地址

43、 在说明一个结构体变量时,系统分配给它的存储空间是 A)该结构体中第一个成员所需的存储空间 B)该结构体中最后一个成员所需的存储空间

C)该结构体中占用最大存储空间的成员所需的存储空间 D)该结构体中所有成员所需存储空间的总和 44、如有以下定义: struct date{ int year; int month; int day;};

( ) D)2,1,1,2 ( ) ( ) struct worklist{ char name[20]; char sex;

struct date birthday;}person;

对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是( ) A)year=1985; B)birthday.year=1985; C)person.year=1985; D)person.birthday.year=1985; 45、若有以下说明和定义

union dt

{int a; char b; double c;}data;

以下叙述中错误的是 ( ) A)data的每个成员起始地址都相同

B)变量data所占内存字节数与成员c所占字节数相等 C)程序段:data.a=5;printf(\"%f \输出结果为5.000000 D)data可以作为函数的实参 46、设有如下说明 typedef struct ST {long a; int b; char c[2]; } NEW;

则下面叙述中正确的是 ( ) A)以上的说明形式非法 B)ST是一个结构体类型 C)NEW是一个结构体类型 D)NEW是一个结构体变量

47、下列关于结构型、共用型、枚举型的定义语句中,正确的是 ( ) A)struct ss{ int x} B)union uu { int x;}xx=5; C)enum ee{ int x;}; D)struct{int x;};

48、整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是 ( )

A) x || y B) x | y C) x & y D) xy

49、设 int a=2;表达式(a<<2)/(a>>1)的值是 ( ) A) 0 B) 2 C) 4 D) 8 50、以下叙述中错误的是 ( ) A)gets函数用于从终端读入字符串 B)getchar函数用于从磁盘文件读入字符 C)fputs函数用于把字符串输出到文件

D)fwrite函数用于以二进制形式输出数据到文件

51、以下叙述中错误的是 ( ) A)C语言中对二进制文件的访问速度比文本文件快 B)C语言中,随机文件以二进制代码形式存储数据 C)语句 FILE fp; 定义了一个名为fp的文件指针 D)C语言中的文本文件以ASCII码形式存储数据 51、有以下程序 #include \"stdio.h\"

void WriteStr(char *fn,char *str) { FILE *fp; fp=fopen(fn,\"W\"); fputs(str,fp); fclose(fp);} main()

{ WriteStr(\"t1.dat\WriteStr(\"t1.dat\

}程序运行后,文件t1.dat中的内容是 ( ) A)start B)end C)startend D)endrt 52、若要打开名为abc.txt的文本文件进行追加操作,符合此要求的函数调用是

( )

A)fopen(\"abc.txt\

B)fopen(\"abc.txt\

C)fopen(\"abc.txt\ D)fopen(\"abc.txt\

53、在C程序中,可把整型数以二进制形式存放到文件中的函数是 ( ) A)fprintf函数 B)fread函数 C)fwrite函数 D)fputc函数 二、程序(段)填空题

1、下列是评分统计程序,一共有8个评委打分,统计最后得分时,去掉一个最高分和一个最低分,其余6个分数的平均分即为最后得分,请填空。 #include main( )

{ float ave,max,min,x[8]={9.2,9.5,9.8,7.4,8.5,9.1,9.3,8.8}; int i;

max=min=①__x[0]____________; for(i=1;i<8;i++) { if(maxmax=x[i];

if(②__min>x[i]__________) min=x[i]; }

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

ave+=x[i];

ave=③_(ave-min-max)/6_____________; printf(\"average=%f\\n\}

2、以下程序实现:从键盘输入一个字符,若输入为小写字母,则将小写字母变为大写字母并输出,其它字符不予处理。请填空。 #include void main() { char c;

printf(\"input a word\\n\");

scanf(\"%c\①____&c_____);

if(②__c>='a'&&c<='z'____________) //判断是否是小写字母 printf(\"%c\\n\③__c-32______); //若是小写字母,则转化为大写字母输出 }

3、以下程序用来判断指定文件是否能正常打开,请填空。 #include Main( ) { FILE *fp;

if (((fp=fopen(\"test.txt\① NULL )) printf(\"未能打开文件!\\n\"); else

printf(\"文件打开成功!\\n\");}

4、下列程序的功能是:求1+1/2+1/3+⋯⋯+1/n的值,不要改变与输入输出有关的语句。

main( ) { int i, n; float sum; scanf(\"%d\① sum=0 ;

for(② i=1 ;③ i<=n ;i++) sum=④ sum+1.0/i ; printf(\"%.3f\\n\}

三、阅读程序并写出运行结果。 1、有以下程序 #include main( ) {

int a=1,b=2,c=3,d=0; if(a==1&&b++==2) if(b!=2 || c--!=3)

printf(\"%d,%d,%d\\n\else

printf(\"%d,%d,%d\\n\else

printf(\"%d,%d,%d\\n\}

程序运行后的输出结果是 。 2、有一下程序 #include main( ) {char grade; scanf(\"%c\ switch(grade)

{case 'A': printf(\">=85\"); case 'B':

case 'C':printf(\">=60\"); break; case 'D':printf(\"<60\"); default:printf(\"error\"); } }

若输入A,该程序的输出结果为 。 3、有以下程序 #include 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; case 3: a++; b++; }

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

}程序运行后的输出结果是 。 4、有一下程序 #include main( ) {

long f,f1=1,f2=1;

}

}

程序运行后的输出结果是 。 5、有一下程序 #include main( ) { int k;

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

break;

printf(\"%d\ }

int i;

printf(\"%ld\%ld\\for(i=0;i<3;i++) { f=f1+f2; printf(\"%ld\\f1=f2; f2=f;

程序运行后的输出结果是 。 6、有一下程序 #include main( ) {

int i,j,x=0; for(i=0;i<2;i++) { x++;

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

{ if(j%2)

continue;

x++; } x++; }

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

程序运行后的输出结果是 。 7、有一下程序 #include main( )

{ char a[]={'h','e','l','\\0','l','o','\\0'}; printf(\"%s\}

该程序的输出结果为 。 8、有一下程序 #include main() {

int i,t[][3]={9,8,7,6,5,4,3,2,1};

for(i=0;i<3;i++) printf(\"%d\}

该程序的输出结果为 。 9、有一下程序 #include int fun(int, int); main()

{ int a=10,b=9,c; c=fun(a,b); printf(\"%d\}

int fun(int x, int y) { int z; z=x>y?x:y; return(z); }

程序运行后的输出结果是 。 10、有一下程序 #include int swap(int,int); main( )

{ int x=7,y=11; swap(x,y);

printf(\"x=%d, y=%d\\n\}

int swap(int a,int b) { int temp;

temp=a; a=b; b=temp;

}程序运行后的输出结果是 。 11、有一下程序 #include void f(int *p,int *q); main()

{ int m=1,n=2,*r=&m;

f(r,&n);printf(\"%d,%d\void f(int *p,int *q)

{p=p+1;*q=*q+1;}程序运行后的输出结果是 。 12、有一下程序 #include main()

{ int a[3][3],*p,i ; p=&a[0][0] ; for(i=0;i<9;i++) p[i]=i+1; printf(\"%d\\n\

}该程序执行后的输出结果为是 。 四、判断题(对的填√,错的填×)

1、C程序中的注释只能出现在程序的开始位置和语句的后面。 ( )

2、在标准C语言中,语句必须以“;”结束。 ( ) 3、关系运算符的优先级高于逻辑运算符。 ( ) 4、在标准C语言中,数组的下标必须是常量,不允许是表达式。 ( ) 5、函数的定义和调用都是可以嵌套的。 ( ) 6、对于定义int *p;则*p是指针变量名。 ( ) 7、C语言中必须用main作为主函数名,程序将从此开始执行,在此结束。( ) 8、使用putchar函数时,必须在之前包含头文件stdio.h。 ( ) 9、在if_else语句中,配对规则是else总是与最近的未配对的if配对。 ( )

10、在标准C语言中,二维数组在内存中的存放次序是以行序为主序。 ( ) 11、C语言中函数声明要以“;”结束。 ( ) 12、内存单元的地址与内存单元中的内容是两个相同的内容。 ( ) 13、若要处理含有不同类型的相关数据,应自定义结构体类型。 ( ) 14、共用体变量中的各成员的首地址是不一样的。 ( ) 15、文件由结构序列组成,可以构成二进制文件或文本文件。 ( ) 16、文件使用方式“wb+”的含义是为读写打开一个二进制文件。 ( )

17、C程序是由函数构成的。 ( ) 18、在标准C语言中,语句必须以“;”结束。 ( ) 19、关系运算符的优先级低于逻辑运算符。 ( ) 20、在标准C语言中,数组的下标必须是常量,不允许是表达式。 ( ) 21、函数的实参与形参类型不一致时,以形类型为准。 ( ) 22、对于定义int **p;则*p的值是一个存储单元的地址。 ( ) 23、C语言是一种结构化程序设计语言。 ( ) 24、C语言比较灵活,变量可以先使用再定义。 ( ) 25、在if_else语句中,配对规则是else总是与最近的未配对的if配对。 ( ) 26、对二维数组int a[3][4],a与a[0]都是第一行的首地址。 ( ) 27、函数的返回值与return表达式类型不一致时,以后者类型为准。 ( )

28、标准C语言中,指针变量和变量指针是同一概念的不同说法。 ( )

29、标准C语言中,定义结构体变量时可以省略关健字struct。 ( )

30、标准C语言中,共用体变量中的各成员是共同占用一块存储空间。 ( ) 五、根据题目要求编写程序 1、编写程序,求n!的值并输出。

2、猴子吃桃问题。猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天又将剩下的桃子吃了一半,又多吃一个。以后每天都吃了前一

天剩下的一半零一个。到了第10天,只剩下一个桃子了。求第一天共摘了多少个桃子?。

3、编写函数fun,该函数的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。

4、编写程序,将一个整型数组中的值按逆序重新存储。例如,原来的存储顺序是8,6,3,2,1。要求逆序存储为1,2,3,6,8,并输出。

5、“恺撒密码”据传是古罗马恺撒大帝用来保护重要军情的加密系统。其算法如下:对字母表中的每个字母,用它之后的第3个字母代换。如将字母A(a)换作字母D(d),将字母B(b)换作字母E(e),字母Z(z)换成C(c)。请使用数组编写程序实现对字符串\"We can do it!\"的加密。

6、编写函数fun ,其功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+„„.+1/(1+2+3+4+„„+n)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务