大学本科C程序题库及课后答案

更新时间:2024-06-06 20:17:01 阅读量: 综合文库 文档下载

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

二,填空题(10道小题,共20分)

1、一个C源程序中至少应包含一个[main] 函数。

2、a是整型变量,则执行表达式a=25/3%3后a的值为。[2] 3、int m=5,y=2;则表达式y+=y- =m*=y的值为。[-16]

4、执行下列语句: int a=1, b=2; a=a+b; b=a-b; a=a-b; printf(\的输出结果分别是[2,1]

5、条件表达式的格式为表达式1?表达式2:表达式3,若表达式2和表达式3的类型不同,此时条件表达式的值的类型为二者中较[高]的类型 6、当运行以下程序时,从键盘键入right?(代表回车),则下面程序的运行结果是。 #include main( )

{ char c;

while((c=getchar())! ='?') putchar(++c) }

[sjhiu?]

7、C语言中的数组必须先[定义],然后使用。

8、如果需要从被调用函数返回一个函数值,被调用函数必须包含【return】语句。

9、已知:float f1=3.2,f2,*pf1=&f1;f2=f1,则*f2的值为。[3.2]

10、以下程序

void fun(char *a, char *b) { a=b; (*a)++; } main ()

{ char c1=\p1=&c1; p2=&c2; fun(p1,p2); printf(“&c&c\\n”,c1,c2);

}

运行后的输出结果是 。[&c&c]

11、字符串常量“123”在内存中的字节数是 。[4字节] 12、已有定义 :int x=3 ;则表达式 :x=x+1.78 的值是 。【4】 13、int a=24; printf(\输出结果是 。【30】 14、当a=3,b=2,c=1时,表达式f=a>b>c的值是 。【0】 15、下面程序的运行结果是 。【x=1,y=20】 #include main() { int i,x,y;

i=x=y=0; do {++i;

if(i%2!=0) {x=x+i;i++;}

y=y+i++;

} while (i<=7);

printf(\}

16、以下语句char str[10]={\的输出结果是 。[5]

17、为了便于区别全局变量和局部变量,通常将全局变量的首字母 。[用大写字母表示] 18、已知:int b=5,*p=&b;并且b的地址为4000,则“printf(\”的输出结果是 。【4000,5】

19、程序main()

{ int a[2][3]={{1,2,3},{4,5,6}}; int m,*ptr; ptr=&a[0][0];

m=(*ptr)*(*(ptr+2))*(*(ptr+4)); printf(\}

的运行结果是 。【15】

20、引用C语言标准库函数,一般要用【文件包含】 预处理命令将其头文件包含进来。 21、在C语言程序中,符号常量的定义要使用【宏定义】 预处理命令。 22、逻辑运算符!是[自右至左] 结合性。 23、下面的程序的运行结果是 。【s=254】 #include main( )

{int a,s,n,count;

a=2;s=0;n=1;count=1;

while(count<=7) {n=n*a; s=s+n; ++count;} printf(\

}

24[strcat] (字符数组名1,字符数组名2)把字符数组2中的字符串连接到字符数组1 中字符串的后面,并删去字符串1后的串标志“\\0”。 25、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是[整形] 。 26、数组在内存中占用一段连续的存储空间,它的首地址由 【数组名】表示 27若有定义:int a[2][3]={2,4,6,8,10,12};则*(&a[0][0]+2*2+1)的值是 【12】 28、在一个C源程序中,注释部分二侧的分界符为 。【/*和*/】 29、在C语言程序中,转义字符“\\n”的功能是 [换行] 。 30、当a=5,b=4,c=2时,表达式a>b!=c的值是 。【1】 32、在C语言程序中,用关键字 char定义字符型变量。

m/10033若m是一个三位数,则百位数字为 34、执行下列语句:float a; int b; a = b =24.5/5; printf(“%f,%d” , a, b); 输出结果是 【4.000000,4】

35、若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为

10,n的值为6

36、若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是 。[1]

37、当运行以下程序时,从键盘输入-1 0(表示回车),则下面程序的运行结果是 。[m=4,n=2]

#include main() { int a,b,m,n;

m=n=1;

scanf(\ do{ if(a>0) {m=2*n; b++;} else{n=m+n; a+=2; b++;} }while(a==b); printf(\}

38、C语言规定了以字符[‘\\0’] 作为字符串结束标志。 39、如果一函数只允许同一程序文件中的函数调用,则应在该函数定义前加上[static] 修饰。 40、对数组元素的引用方法有下标法和[指针法] 两种。

41、对于“int a[4];”可理解为数组a有4个元素,每个元素都是整型数据,那么,对于“int *a[4];”的理解就是数组a有4个元素,每个元素都是[指针变量] 。 42、在C语言中,八进制整型常量以【0】 作为前缀。

43、已有定义 :int x=0,y=0;, 则计算表达式 :(x+=2,y=x+3/2,y+5) 后 , 表达式的值是 。【8】 44、下面程序段的运行结果是 【a=-5】。 int i=1,a=0,s=1;

do{a=a+s*i; s=-s; i++;} while (i<=10); printf(\

45、要使指针变量与变量之间建立联系,可以用运算符[*] 来定义一个指针变量 46、设int a[10],*p=a;则对a[3]的引用可以是p[3]或 [*(p+3)]。 47、C语言程序是由[函数] 构成的。

48、在C语言程序中,用关键字 【float】定义单精度实型变量。 49、若m是一个三位数,则十位数字为 [m/10-m/100*10]。

50、int a=24; printf(\输出结果是 。[18]

51、设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式 。 [x

52、下面程序的运行结果是 。[x=1,y=20] #include main() { int i,x,y; i=x=y=0; do {++i;

if(i%2!=0) {x=x+i;i++;} y=y+i++;

} while (i<=7);

printf(\

}

53、形式参数也是【局部】变量。 54、以下程序

#include

fun(int x, int y, int *cp, int *dp) { *cp=x+y; *dp=x-y; } main( ) {

int a,b,c,d; a=30; b=50;

fun(a, b, &c, &d); printf(\return 0;

}

输出结果是 。 【80,-20】 55、程序main()

{ int a[2][3]={{1,2,3},{4,5,6}}; int m,*ptr;

ptr=&a[0][0];

m=(*ptr)*(*(ptr+2))*(*(ptr+4)); printf(\}

的运行结果是【15】

56、运算符%、*=、||、==中,优先级最低的是 。【*=】

57、在C语言中,\在内存中占【2】字节。

58、设y为int型变量,请写出描述“y是偶数”的表达式 。【y%2==0】 59、下面程序段中循环体的执行次数是[3次]。 a=10; b=0;

do{b+=2;a-=2+b; }while (a>=0); 60、程序的输出值是 。 [10] #include void f(int *p) { *p=10; } int *p; void main( ) { f(p);

printf(\

}

61、在C语言的赋值表达式中,赋值号左边必须是[变量]。 62、当a=3,b=2,c=1时,表达式f=a>b>c的值是 。【0】 63、以下程序的输出结果是 。 [5,2,3] #include

int sub(int x, int y, int *z) { *z=x-y; } main( ) { int a,b,c; sub(10,5,&a); sub(7,a,&b);

sub(a,b,&c);

printf(\return 0; }

64、下面程序的输出是 。 [k=2 a=3 b=2] #include main(int argc, char argv[ ]) {

char *s=\int k=0, a=0, b=0; do {

k++;

if(k%2==0) {

a=a+s[k]-'0'; continue; }

b=b+s[k]-'0';

a=a+s[k]-'0';

}while (s[k+1]); printf(\return 0; }

65、运算符的结合性有[2]种。

66、己有定义 :float f=13.8;, 则表达式 :(int)f% 3 的值是 [1]。

67、判断char型变量ch是否为大写字母的正确表达式是[ch>=’A’&&ch<=’Z’]。 68、下面程序段的运行结果是 [a=-5] 。 int i=1,a=0,s=1;

do{a=a+s*i; s=-s; i++;} while (i<=10); printf(\

错误

131、字符串在内存中的起始地址称为字符串的指针,可以定义一个字符指针变量指向一个字符串(1分) 正确

一、单项选择题(25道小题,共50分)

1、C语言规定,在一个源程序中,main函数的位置(B) (2分) A、必须在最开始 B、 必须在系统调用的库函数的后面 C、 可以任意 D、 必须在最后

2、以下叙述中正确的是 (C)(2分)

A、用C语言实现的算法必须要有输入和输出操作 B、用C语言实现的算法可以没有输出但必须要有输入 C、用C程序实现的算法可以没有输入但必须要有输出 D、用C程序实现的算法可以既没有输入也没有输出 3、以下叙述不正确的是(D)(2分) A、在C程序中,逗号运算符的优先级最低

B、在C程序中,APH和aph是两个不同的变量

C、若a和b类型相同,在执行了赋值表达式a=b后b的值将放入a中,而b的值不变 D、当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

4、C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符(C)(2分) A、 必须为字母 B、 必须为下划线 C、 必须为字母或下划线

D、 可以是字母,数字和下划线中任一字符

5、在C语言中,int型数据在内存中是以(B)形式存储的。(2分) A、原码 B、补码 C、ASCII码

D、反码

6、已有定义:int x=3,y=4,z=5;则表达式!(x+y)+z-1 && y+z/2的值是(D)(2分) A、 6 B、 0 C、 2

D、 1

7、若从终端输入以下数据,要给变量c赋以283.19,则正确的输入语句是(D)(2分) A、scanf(\

B、scanf(\

C、scanf(\ D、scanf(\

8、执行下列语句: double d; float f; long L; int i; i=f=L=d=20/3; printf(\%ld %f %f \\n\

i,L,f,d); 输出结果是(小数点后只写一位) (A)(2分)

A、6 6 6.0 6.0 B、 6 6 6.7 6.7 C、 6 6 6.0 6.7 D、 6 6 6.7 6.0

9、若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是(A)(2分) A、 0 B、 0.5 C、 1 D、 2

10、下述表达式中,( A )可以正确表示x≤0或x≥1的关系。(2分) A、(x>=1) || (x<=0) B、x>=1 | x<=0 C、x>=1 && x<=0

D、(x>=1) && (x<=0) 11、以下语句char c='a';if('a'

C、LOWUP

D、语句错误,编译不能通过

12、程序int k= 4,a=3,b=2,c=1;printf(\%d\\n\?c :a);的运行结果是( D )。 (2分) A、4 B、3 C、2 D、1

13、对于程序段int x=-1; do { x=x*x; }while(!x);说法正确的是(C )。(2分) A、是死循环 B、循环执行两次 C、循环执行一次 D、有语法错误

14、设有int k=10;while (k=0) k=k-1;则下面描述中正确的是( C )。 (2分) A、while循环执行10次 B、循环是无限循环

C、循环体语句一次也不执行 D、循环体语句执行一次

15、下列循环语句会进入死循环的是( C )。 (2分) A、i=0; do { i++; }while(i = =100); B、for(i=0; i<100; i+=3.14); C、for(i=0; ; i+=2);

D、k=1; do { k--;} while(k); 16、以下描述正确的是( C )。(2分)

A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合

语句。 B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。 C、在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。 D、do-while循环中,根据情况可以省略while 17、以下对二维整形数组a的正确说明是( C )。(2分) A、int a[3][]; B、float a(3,4); C、double a[1][4];

D、float a(3)(4) 18、对两个字符数组a和b进行初始化char a[ ]=\ char b[ ]={'A','B','C','D','E','F'}; 则以下叙述正确的是( D )。 (2分) A、a与b数组完全相同 B、a与b长度相同 C、a和b中都存放字符串 D、a数组比b数组长度长

19、以下不正确的定义语句是(B )。(2分) A、double x[5]={2.0,4.0,6.0,8.0,10.0};

B、int y[5]={0,1,3,5,7,9};

C、char c1[]={‘1’,’2’,’3’,’4’,’5’}; D、char c2[]={‘\\x10’,’\\xa’,’\\x8’};

20、程序段 char c[ ]=\ printf(\的运行结果是( C )。 (2分) A、14

B、3 C、9

D、字符串中有非法字符,输出值不确定 21、实际参数不能是(B )。(2分) A、常量 B、变量

C、表达式 D、不确定值

22、函数调用结束后,形式参数(C )。(2分) A、继续占用相同大小的内存 B、占用的内存减小 C、释放内存 D、不确定

23、已知:int a,*p=&a;则下列函数调用中错误的是( D )。(2分) A、scanf(\ B、scanf(\ C、printf(\

D、printf(\

24、设有说明语句“struct stu{ int a; float b;}stutype;”,则叙述不正确的是(B )(2分) A、struct是结构体类型的关键字。 B、struct stu是用户定义的结构体类型。 C、stutype是用户定义的结构体变量名。 D、a和b都是结构体变量。

25、系统的标准输入文件是指是(A )(2分) A、键盘

B、显示器

C、软盘 D、硬盘

26、C语言程序的执行,总是起始于(C)(2分) A、程序中的第一条可执行语句 B、程序中的第一个函数 C、main函数

D、包含文件中的第一个函数

27、以下不是结构化程序设计方法的是(B)(2分) A、循环结构 B、模块结构 C、顺序结构

D、选择结构

28、优先级最高的为(C)。(2分) A、 && B、 ?:

C、 != D、 ||

29、以下选项中正确的整型常量是(B)(2分) A、5. B、-10

C、1.000 D、4/5

30、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)(2分) A、 6.500000 B、 6

C、 5.500000

D、 6.000000

31、以下选项中,与k=n++完全等价的表达式是(A)(2分) A、 k=n,n=n+1 B、 n=n+1,k=n C、 k=++n

D、 k+=n+1

32、以下选项中不是C语句的是(C)(2分) A、{int i; i++; printf(“%d\\n”, i); } B、; C、a=5,c=10 D、{ ; }

33、若变量已正确说明,要求用语句:scanf(“%f%c%f%c”, &a, &c1, &b, &c2);给c1赋予字符%、给c2赋予字符#、给a赋予2.0、给b赋予4.0,则正确的输入形式是(B)(2分) A、2.0 % 4.0 # B、2.0%4.0#

C、2% 4# D、2 % 4 #

34、执行以下语句 int x=102,y=012; printf(\后输出结果是(C)(2分)

A、10,01

B、002,12 C、102,10 D、02,10

35、设char ch='A';则ch=(ch>='A'&&ch<='Z')?(ch+32):ch的值是( B )。 (2分) A、A B、a C、Z D、z

36、以下错误的if语句是( C )。(2分) A、if(x>y) z=x; B、if(x==y) z=0;

C、if(x!=y) printf(\ D、if(x

37、执行程序段int k=4,a=3,b=2,c=1; printf(“\\n%d \\n”,k

38、程序段for (i=2; i==0; ) printf(“%d” , i--) ;的循环次数是( A )。(2分) A、无限次

B、0次 C、1次 D、2次 39、程序段 int a=1,b=2, c=3, t; while (a

执行语句for (i=1;i++<4;) ; 后变量i的值是( C )。(2分) A、3 B、4 C、5

D、不定

40、while构成的循环int ks=0; while (ks=2) ks++;执行的次数是( A )。 (2分) A、无限次

B、有语法错误,不能执行 C、一次也不执行

D、执行一次

41、C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是(C )。(2分) A、用户指定传递方式 B、无传递

C、单向值传递

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

Top