C语言综合练习题

更新时间:2024-07-05 16:12:01 阅读量: 综合文库 文档下载

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

《C语言程序设计》综合练习题

一、单项选择题

1. 下列( )是字符串比较函数。

A. puts() B. gets() C. strcpy () D. strcmp() 2.构成一个完整的C源程序必须有且只有一个( )。

A. 函数 B. 过程 C. 主函数 D. 程序 3. 设有int i,j,k;则表达式i=1,j=2,k=3,i&&j&&k的值为( )。 A. 1 B. 2 C. 63 D. 0

4.在C语言中,不同类型数据混合运算时,要先转化成同一类型后进行运算。设一表达式中包含有int、long、unsigned、char类型的变量和数据,则表达式最后的运算结果是( )类型数据。

A.int B.char C.unsigned D.long 5.下列( )不是构成标识符的字符。

A.字母 B.数字 C.下划线 D.标点符号 6.表达式:3>5&&-1||6<3-!-1的值是( )。

A. 0 B.1 C. 表达是不合法 D. 均不对 7. 以下标识符中能做为合法的C用户标识符的是( )。 A. A3+B3 B. float C. 3dx D. x3d 8. 以下数据中不正确的数值或字符常量是( )。

A. 0.0 B. 3E2.7 C. 9861 D. 0xabcd 9. fp=fopen(''test.txt\语句中,r对文件处理方式是( )。 A. 只读打开文件 B. 只写打开文件 C. 追加打开文件 D. 读写打开文件 10.表示关系x<=y<=z的C语言表达式为( ) A. (x<=y)&&(y<=z) B. (x<=y)and(y<=z) C. (x<=y)&(y<=z) D. (x<=y<=z)

11.如果要把常量327存入变量a中,a不能定义的类型是( )。 A. int B. char C. long D. float 12. 在变量的存储结构中,( )局部变量的初始化只有一次。

A. 自动 B. 静态 C. 外部 D. 寄存器 13.下列能正确进行字符串赋值操作的语句是( )。

A. char s[5]={ \ B. char s[5]={ 'a', 'b', 'c', 'd', 'e'} C. char *s;s=\ D. char *s; scanf(\

14.语句if(3/4>1/2)a=1;else a=0; 运行后,a的值是( )。

A. 1 B. 0 C. 与机器有关 D. 语法有错 15.下列( )是合法自定义标识符。

A. 3ma B. float C. m3a D. –ab

16.设a,b和c都是int型变量,且a=3,b=4,c=5,则下列表达式中,值为0的表达式是( )

A. 'a' && 'b' B. a<=b

C. c>=b||b+c&&b-c D. a<=b+c&&c>=a+b

17.判断整型变量i,j可同时被2整除的表达式(i,j同时被2整除返回1,否则返回

0)是( )。

A. !(i%2)||!(j%2) B. !(i%2)&&!(j%2) C. (i%2)&&!(j%2) D. (i%2)||(j%2)

18.若x,y均为double型变量,正确的输入函数调用是( )。 A. scanf(\ B. scanf(\ C. scanf(\ D. scanf(\

19. 设变量均为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是( )。 A. 7 B. 8 C. 9 D. 2 20.当执行以下程序段时( )。 x= -1;

Do {x=x*x;}while(!x);

A. 循环体将执行一次 B. 循环体将执行两次 C. 循环体将执行无限次 D. 系统将提示有语法错误

21.执行下列程序段后,a值为( )。

a=1;b=0;

if((a++>++b)?a++;b--) a+=b;

A. 2 B. 3 C. 4 D. 5 22.若x为char型变量,y为int型变量,x,y均有值,正确的输出函数调用是( )。 A. printf(\ B. printf(\ C. printf(\ D. printf(\

23.假定a和b为int型变量,则执行以下语句后b的值为( )。 a=1;b=10 do

{b-=a;a++;

}while (b--<0);

A. 9 B. -2 C. -1 D. 8

24.设有说明语句:int x=43,y=0;char ch='A';,则表达式(x>=y && ch<'b' && !y)的值是( )。

A. 0 B. 语法错 C. 1 D. 假

25.假定a和b为int型变量,则执行以下语句后b的值为( )。

a=1;b=10; do

{ b-=a;a++; } while (b--<0);

A. 9 B. -2 C. -1 D. 8 26.下列不正确的转义字符是( )。

A. '\\\\' B. '\\' C. '074' D. '\\0'

27.已知字符'b'的ASCII码为98,语句printf(''%d,%c'','b','b'+1);的输出为( )。

A. 98,b B. 语句不合法 C. 98,99 D. 98,c 28.下列( )说法,是对“int *p;”正确解释。

A. 定义p是整型变量 B. 定义p为指向整型变量的指针变量 C. 定义p为数组名 D. 定义p的内容为整形地址

29.以下各组运算符中,优先级最高的运算符是( )。

A. < = B. / C. ! = D. & &

30.表示关系x<=y<=z的C语言表达式为( )。

A. (x<=y)&&(y<=z) B. (x<=y)and(y<=z) C. (x<=y<=z) D. (x<=y)&(y<=z)

31.下列程序段执行后s值为( )。

int i=1,s=0;

do{if(!(i%2))continue;s+=i}while(++i<10);

A. 1 B. 45 C. 25 D. 以上均不是

32.若x,y均为int型变量且有值,要输出x,y的值,正确的输出函数调用是( )。 A. printf(\ B. printf(\ C. printf(\ D. printf(\

33.字符串“c program”存放在内存中占用字节数为( )。

A. 10 B. 9 C. 11 D. 8 34.下列程序段运行后x的值是( )。

A. 14 B. 4 C. 15 D. 3

int al=1,a2=2,a3=3,x=15; if (!al) x--;

else if (a3) x=3; else x=4;

35.对于int a,则表达式1<=a<=5值是( )。

A. 0 B. 1 C. 不定 D. 表达式语法有错 36.变量的存储类型有四种。下列( )的存取速度最快。 A. 自动变量 B. 静态变量 C. 外部变量 D. 寄存器变量

37.假定a和b为int型变量,则执行以下语句后b的值为( )。

a=1;b=10; do

{b-=a;a++;} while(b--<0);

A. 9 B. -2 C. -1 D. 8 38.设有以下程序段:

int x=0,s=0;

while(!x!=0) s+=++x; printf(\

则( )。

A. 运行程序段后输出0 B. 运行程序段后输出1

C. 程序段中的控制表达式是非法的 D. 程序段执行无限次

39.设x和y均为int型变量,则执行以下语句后的输出为( )。

x=15;y=5;printf(\

A. 0 B. 1 C. 6 D. 12

40.已知字母a的码值为十进制97,数字0的码值为十进制48,下面程序的输出是( )。

A. 输出无定值 B. e,4 C. 101,52 D. e,52

#include int main()

{char c1,c2; c1='a'+'6'-'2'; c2='b'-'a'+'3';

printf(\ return 0;

}

41.若x和y都是int型变量,x=100,y=200,则下列程序段:printf(''%d'',(x,y));的输出结果是( )。

A.200 B.100

C.100 200 D.输出格式符不够,输出不确定的值

42.假设定义数组:float score[10]; 并且其地址为2000,则元素score[5]的地址为( )。

A. 2005 B. 2010 C. 2015 D. 2020

43.假定p所指对象的值为25,P+1所指对象的值为46,则*(++p)的值为( )。

A. 26 B. 25 C. 46 D. 47

44.若i为整型变量,则以下循环执行的次数是( )。 For(i=2;i==0;)printf(''%d'',i--)

A.无限次 B.0次 C.1次 D.2次

45.设C语言中,一个int型数据在内存中占2个字符,则unsigned int型数据的取值范围为( )。

A. 0~255 B. 0~32767 C. 0~65535 D. 0~2147483647 46.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数时,正确的数据输入方式是( )。

int a1,a2;char c1,c2;

scanf(\%d%c%d%c\&a1,&c1,&a2,&c2);

A. 10A 20B B. 10 A 20 B C. 10A20B D. 10A20 B

47.阅读以下程序,当输入数据的形式为25,13,10正确的输出结果为( )。

#include int main()

{int x,y,z;

scanf(\ printf(\ return 0;

}

A. x+y+z= 48 B. x+y+z= 35 C. x+z=35 D.不确定值 48.表示图中坐标轴上阴影部分的正确表达式是( )。(其中a

X

c a b

A. (x<=a)&&(x>=b)&&(x<=c) B. (x<=a)||(b<=x<=c)

C. (x<=a)||(x>=b)&&(x<=c) D. (x<=a)&&(b<=x<=c) 49.设有以下程序段:

int x=0,s=0;

while(!x!=0) s+=++x; printf(\

则( )。

A.运行程序段后输出0 B.运行程序段后输出1

C.程序段中的控制表达式是非法的 D.程序段执行无限次

二、判断题

1.打开文件的函数是fclose。( )。

2.局部静态变量是在编译时赋初值的,且只赋初值一次。( ) 3.C语言中允许使用字符串变量。( ) 4.外部变量必须定义在文件的开头部分。( ) 5.语句while(!E);中的表达式!E等价于E= =0。( ) 6.实型分类:单精度、双精度和整型。( ) 7.逻辑运算优先级别都低于算术运算。( ) 8.函数的形参在退出该函数后是不可见的。( ) 9.如果在定义函数时省略extern,则隐含为外部函数。( ) 10.定义二维数组时,第一维长度可以省略。( ) 11.字符'\\0'是字符串的结束标记,其ASCII代码为0。( ) 12.若有int i=10,j=0; 则执行完语句if(j=0)i++;else i--; i的值为11。( ) 13.continue语句的作用是提前结束整个循环的执行。( ) 14.Break语句的作用是提前结束整个循环的执行。( ) 15.在定义函数时的参数是“形式参数”,在调用函数时的参数是“实际参数”。( ) 16.在函数调用时,实参和形参的变量个数可以不一样多。( ) 17.在函数调用时,实参和形参的变量个数一定要一样多。 ( ) 18.若有说明:int a[][4]={{0},{0}}则二维数组a的第一维大小为0。( ) 19.字符串\在内存中占据的存储空间是5个字节。( ) 20.打开文件的函数是fclose。( ) 21.打开文件的函数是fopen( )。

22.若有说明:sratic int a[3][4];则数组a中各元素可在程序的编译阶段得到初值0。( )

23.假设定义数组:float score[10];并且其地址为2000,则元素score[5]的地址为2005。( )。

24.C语言的基本单位是函数。( ) 25.已知字符'b'的ASCII码为98,语句printf(''%d,%c'','b','b'+1);的输出为: 98,99。( ) 26.从变量的作用域来分,变量可以分为静态变量和动态变量。( ) 27.若用数组名作为函数调用时的实参,则实际上传递给行参的是数组的第一个元素值。( )

28.结构体和数组一样,它们的成员都是相同类型数的集合。( ) 29.调用strlen(\的返回值为8。( )

三、填空题

1.如果希望函数中的局部变量的值在函数调用结束后不消失而继续保留原值,就应该指定它为 ,用 进行声明。

2. 结构化程序设计方法中,程序有三种基本结构,即: , 和 。

3.若int i=8,j=9;float x=123.456;printf(''x=%8.3f,j=%-4d\\n'',x,j);结果为: 。 4.设C环境下一个int型数据占用2个字节,设int a[4]={1,2,3,4},*p=a;其中a=2000;则*p= ,p+1= ,*(p+2)= 。

5.在C语言中,表示逻辑“假”值用 。

6.设C环境下一个int型数据占用2个字节,设int a[5]={5,4,3,2,1},*p=a;其中a=2000;则 *p= ,p+3= ,*(p+2)= 。

7.用户定义函数体部分一般分为 和 两部分。 8.用下列for循环将大写字母逆序输出(即从Z到A),其语句为:

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

9.C语言中函数的参数分为 和 。

10.用户自己建立的由不同类型数据组成的组合型的数据结构称为 类型,它的名字是由一个关键字 和 组合而成。

11.建立并运行C 程序的最简步骤为_ , 和 。

12.转义字符“\\n”表示 。

13.直接或间接调用自身的函数称为 函数。

14.int*p和int**p;含义分别是 和 。

15.语句printf(\,123);将输出: 。 16.转义字符“\\n”表示 。

17.C语言中,表示逻辑“真”用: 表示,逻辑“假”用: 表示。 18.表达式12345==12345/3*3的值为__ __。

19.若有定义:int m=5,y=2;则执行表达式y+=y-=m*=y后的y值是 。 20.已知int a=4,b=20,x=3;则:

(1)a+x*(int)(2.5/0.7)的值为: 。 (2)(a+3)/3+a%b的值为: 。 (3)x*=5+4的值为: 。

21.用数组元素作实参时,向形参变量传递的是 ,而用数组名作函数实参时,向形参传递的是 。

22.int a=10,b=15,c=1,d=2,e=0,则下列表达式的运行结果是: (1) !e (2) c==b>e (3) (b==10)&&(a==10) (4) (a+5==b)||((c=b+a)>(d=c+b)) 23.表达式4>10?(5>3?(4,2):3):(6,7)的值为 。 24.在C语言中,逻辑“真”值用 表示。

25.strcat(ch1,ch2)的功能是: 。 26.strlen(\的值为 27.若有定义:double x[3][5]; 则数组中行下标的下限为 ,列下标的上限为

28.写出i小于0或大于10时为真的表达式: 。

29.一个函数由两部分组成,即: 和 。

30.数组元素的相关性表现在它们具有相同的 和 。 31.以下程序实现输出x,y,z三个数中的最大者,请在【】内填入正确内容。

#include

int x=4,y=6,z=7;

int【① 】; if (【② 】)

u=x;

else

u=y;

if (【③ 】)

v=u;

else

v=z;

printf (\

} 32.在C语言中用 代表“假”,用 代表“真”。但只要 则都认为是“真”。

33.用来引用特定数组元素的数字称为 。 34.一个C程序总是从 开始执行的。

1?2111?2+2+2+??+2求π的近似值,35.下面程序的功能是用公式直到最后一

n6123项的值小于10

?6为止。请填空。

#include

#include int main() {

long i=1;

【① 】pi=0; while (i*i<=1e+6)

{pi=【② 】; i++; } pi=sqrt(6.0*pi);

printf(\}

36.若所用变量已正确定义,写出下列FOR循环的次数为: 。

a=2,b=10;

for (i=b;i>=a;i--,a++)

printf(\

37.用下列for循环将大写字母逆序输出(即从Z到A),其语句为:

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

38.一个源文件可以包含一个或者若干个函数。在函数内定义的变量是 ,而在函数之外定义的变量称为 。 变量是全局变量。

39.C语言中根据数据的组织形式,可以将文件分为 和 。 40.要把一个外部变量只限制于被本文件使用,而不被其他文件引用,必须在定义这个外部变量时加一个 。

41.写出下列程序段的运行结果: 。

s=7;

while(--s) s-=2;

printf(\

42.C语言规定:在每一个字符串的结尾加上一个 ,以便系统据此判断字符是否结束。

43.break语句只能用在 语句或 语句中。 44.Continue语句只能用在___ __语句中。

45.结构化程序设计方法中,程序有三种基本结构,即: , 和 。

46.设有int a,b;当执行输入函数scanf(“%d:%d”,&a,&b);时正确的输入是 。(给a输入5,给b输入8)。

四、问答题

1.请阅读下面的程序:

#include int main()

{int cal(int a,int b,char op); int x,y,z,result; char op1,op2;

scanf(\ if(op1=='+'&&op2=='*')

result=cal(x,cal(y,z,op2),op1); else

result=cal(cal(x, y, op1),z, op2); printf(\ return 0; }

int cal(int a,int b,char op) {

if(op=='*')

return(a*b); else

return(a+b);

}

问题1:当输入2+3*5时,上述程序将输出 。

问题2:把op1= ='+' && op2= ='*' 中的 op1,op2对调后,当输入为2+3*5时,上述程序将输出 。

2.试阐述'x'和\的区别。 3.写出以下程序的运行结果。

#include \int main() {

struct stu_list { int num;

char *name; }sl={34, \

printf (\ return 0; }

该程序的运行结果为: 4.假设有以下程序段:

int a[10]; ?? a[10]=3; ??

试分析两个a[10]的区别。

五、阅读程序题

1. 以下程序的执行结果是 。

#include int main() {

int func(int a,int b); int k=4,m=1,p; p=func(k,m); printf(\ p=func(k,m); printf(\ return 0; }

func(int a,int b) {

static int m=0,i=2; i+=m+1; m=i+a+b;

return(m); }

2. 该程序运行结果为: #include \

int main() {

int a[5]={1,2,3,4,5},*p,i; p=a;

printf(\ p++;

printf(\ return 0; }

3.以下该程序运行结果为: #include \int main () {

int a[5]={5,4,3,2,1},*p,i; p=a;

printf (\ p++;

printf (\ return 0; }

4. 阅读以下程序

#include \main() {

char c;

c=getchar(); switch(c) {

case 'a':

case 'A':printf(\ case 'b':

case 'B':printf(FORTRAN\\n\ case 'c':

case 'C':printf(\ default:printf(\ return 0;

}

请回答:输入d,回车,运行结果为:

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

Top