C语言 五邑大学 高潮 练习6 答案 下载本文

试卷号:TSheet1

一、选择题

1、C语言源程序文件的扩展名一般为______ 。 (A) .txt (B) .c (C) .obj (D) .exe

2、以下选项中合法的用户标识符是_____ 。 (A) long (B) _2Test (C) 3Dmax (D) A.dat

3、以下选项中,_____ 不是C语言的保留字(关键字)。 (A) printf (B) short (C) if (D) sizeof

4、下列选项中合法的变量名是_____ 。 (A) x(1) (B) y.1 (C) 3y

(D) _xyz

5、下面各选项中,属于非法的C语言整型常量的是_____ 。 (A) 01 (B) 0x11 (C) 081 (D) -32765

6、以下不合法的常量是_____ 。 (A) 2.7 (B) 1.0E+3 (C) 3.5E-3.0 (D) 3.4e-5

7、下列字符常量的写法中,正确的是_____ 。 (A) '\\082' (B) \(C) '\\t' (D) '\\4f '

8、下列各组中全是字符串常量的是_____ 。

(A) '123' , \(B) 'abc' , 'xyz' , '5'

(C) \(D) '\\n' , \

9、已知字符A的ASCII码是65,字符

a的ASCII码是97,则'\\101'表示的字符常量是____ 。 (A) 字符A (B) 字符B (C) 字符e (D) 非法常量

10、在C语言中,char型数据在内存中的存储形式是_____ 。 (A) 原码 (B) 反码 (C) 补码 (D) ASCII码

11、sizeof(float) 是_____ 。 (A) 一个双精度型表达式 (B) 一个整型表达式 (C) 一种函数调用

(D) 一个不合法的表达式

12、以下能正确地定义整型变量a,b,c,并给它们都赋值5的语句是_____ 。 (A) int a=b=c=5; (B) int a,b,c=5;

(C) int a=5,b=5,c=5; (D) a=b=c=5;

13、以下各组运算符的优先级按由高到低的顺序排列正确的是_____ 。 (A) *=、&&、!=、% (B) *=、%、&&、!= (C) %、!=、&&、*=

(D) &&、!=、%、=

14、已知a、b为整型,z为实型,ch为字符型,下列表达式中合法的是____ 。

(A) z=(a+b)++ (B) a+b=z (C) b=ch+a (D) b=z%a

15、设char ch; 则不合法的赋值语句是____ 。 (A) ch='a+b'; (B) ch='\\0'; (C) ch='a'+'b'; (D) ch=7+9;

16、若有定义int x;则经过表达式x=(float)2/3运算后,x的值为_____ 。(A) 2.0 (B) 0 (C) 2 (D) 1 17、若有int x=13,y=5; 则表达式 x++, y+=2, x/y的值为____ 。 (A) 1 (B) 2 (C) 0 (D) 13

18、逻辑运算符两侧运算对象的数据类型_____ 。

(A) 只能是0或1

(B) 只能是0或非0数

(C) 只能是整型或字符型数据 (D) 可以是任何类型的数据

19、设整型变量m、n、a、b、c、d的值均为1,表达式(m=a>b)&&(n=c>b)运算后,m、n的值是____ 。 (A) 0,0 (B) 0,1 (C) 1,0 (D) 1,1

20、以下为非法操作的是_____ 。 (A) int i ; i=100 ; (B) int i=100 ;

(C) const int i ; i=100 ; (D) const int i=100 ;

21、C语言源程序文件代码经编译后生成的目标文件,其扩展名为_____ 。 (A) .txt (B) .c (C) .obj (D) .exe

22、C语言源程序文件代码经编译后生

成目标文件,对目标文件进行连接后生成可执行文件,其生成的可执行文件的扩展名为_____ 。 (A) .txt (B) .c (C) .obj (D) .exe

二、填空题

1、C语言程序书写格式规定,每行可写____语句,一个语句可以_____ 。

2、一条C语言的语句至少应包含一个_____。 3、用____ 对C语言程序中的任何部分作注释。

4、运用C语言实现一个基本程序的过程,包括编写源程序、_____、连接、运行(调试)。 5、设有说明:char c1; 则 c1='a'; 是否正确?(回答\是\或\否\

6、设有说明:char c2;则 c2=65; 是否正确?(回答\是\或\否\

7、char c ; 表达式 c='a'- 'A'+'B' 运算后,c的值为______ 。

8、表达式 10+'x'+2.5*7 的值为______型的量。

9、表达式 x= (2+3, 6*5) , x+5 运算后,x的值为______ 。

10、设 a=5 ; 则表达式 a+=a*=a+a 运算后,a的值为______ 。 11、设int a=7 ; double x=2.5,y=4.7 ; 则表达式x+a%3*(int)(x+y)%2/4的值为_____ 。

12、把数学表达式x+y≠a+b写成C语言表达式:___________ 。

13、条件\<x<3或x<-10\的C语言表达式是________ 。

14、设int i=32,j=1,k=3;则表达式!i||(j-k)&&i&&!(k-3||i*k)的值为____ 。

15、设int x,y,z; 则执行语句x=(y=(z=10)+5)-5;后,x值为___ ,y值为___ ,z值为___ 。 16、表达式 (int)(sqrt(0.25)+5.7) 运算后, 其值为______ 。

试卷号:TSheet2

一、选择题

1、为了避免在嵌套的条件语句if-else中产生二义性,C语言中规定的if-else匹配原则是____ 。

(A) else子句与其之前未配对的if配对 (B) else子句与其之前未配对的最近的if配对

(C) else子句与其之后最近的if配对 (D) else子句与同一行上的if配对

2、对于switch(c)中的变量c不能定义为____ 类型。 (A) unsigned (B) int (C) char (D) float

3、下列关于switch语句的描述中,正确的是_____ 。

(A) switch语句中default子句只能放在最后

(B) switch语句中case子句后面的表达式可以是整型表达式

(C) switch语句中每个语句序列中必须有break语句

(D) switch语句中default子句可以没有,也可有一个

4、下面叙述正确的是____ 。

(A) for循环只能用于循环次数已经确定的情况

(B) for循环同do while语句一样,先执行循环体再判断

(C) 不管哪种形式的循环语句,都可以从循环体内转到循环体外

(D) for循环体内不可以出现while语句

5、下面程序段运行后,a、b、c的值是_____ 。

a=1; b=2; c=2;

while (a

(A) 1, 2, 0 (B) 2, 1, 0 (C) 1, 2, 1 (D) 2, 1, 1

6、以下程序段的输出结果为____ 。 int i=0, s=0; do{

if(i%2){i++;continue;} i++; s+=i; } while(i<7); printf(\(A) 16 (B) 12 (C) 28 (D) 21 7、以下for循环体执行的次数是_____。 for (x=0,y=0; (y=123) && (x<4);x++);

(A) 为无限次循环 (B) 循环次数不定 (C) 4次 (D) 3次

8、以下程序段的输出结果为_____ 。 for(i=4;i<=10;i++) {

if(i%3==0) continue; printf(\ } (A) 45 (B) 457810 (C) 69

(D) 678910

9、下列不是死循环的是____ 。

(A) int i=100;while(1){ i=i0+1;if (i>100) break;} (B) for ( ; ;); (C) int k=0; do {++k;} while (k>=0) ; (D) int s=36;while (s);--s;

二、填空题

1、以下程序段的运行结果是_____ 。 int x=1, y=0; switch (x) { case 1:

switch (y)

{ case 0: printf(\break;

case 1: printf(\break; }

case 2: printf(\}

2、执行下面程序段后,k值是____ 。 k=1;n=263; do { k*=n;n/=10;} while(n);

3、鸡兔共有30只,脚共有90个,下面的程序段是计算鸡兔各有多少只。 for ( x=1;x<=29;x++ ) { y=30-x; if ( ________ ) printf(\; }

4、下面程序段的运行结果是 ______ 。 int i,j=4;

for(i=j;i<=2*j;i++) switch(i/j) {

case 0:

case 1: printf(\;break; case 2: printf(\; }

5、以下程序段的功能:从键盘输入的字符中统计数字字符的个数(n),用\结束循环。 int n=0; char c; while( ______ )

if( ______ ) n++;

6、填空完成下面程序,其功能是打印

100以内个位数为6且能被3整除的所有数。 int i,j;

for( i=0;_______ ;i++) {

j=i*10+6;

if ( _______ ) continue; printf(\; }

7、填空完成下面程序,其功能是从3个红球,5个白球,6个黑球中任意取出8个球,且其中必须有白球,输出所有可能的方案。 int i, j, k ;

printf(\for(i=0; i<=3; i++)

for( _____ ; j<=5; j++) { k=8-i-j; if( _____ )

printf(\ }

1、一个C语言源程序至少包含一个且只能包含一个_______函数。 (A) MAIN( ) (B) main( ) (C) open( ) (D) close( )

2、一个C语言源程序一般包含有许多函数,其中main()函数的位置_______。 (A) 必须在最开始 (B) 必须在最后

(C) 既可以在最开始也可以在最后 (D) 可以任意

3、对于C语言程序的函数,下列叙述中正确的是_________。

(A) 函数的定义不能嵌套,但函数的调用可以嵌套

(B) 函数的定义和调用均不能嵌套 (C) 函数的定义可以嵌套,但函数的调用不能嵌套

(D) 函数的定义和调用可以嵌套

4、函数声明中不包括下面哪一项?_______。 (A) 函数类型 (B) 函数名

(C) 函数参数的类型和参数名 (D) 函数体

5、以下不正确的说法是___________。 (A) 在不同函数中可以使用相同名字的变量

(B) 形式参数是局部变量 (C) 在函数内定义的变量只在本函数范围内有效

(D) 在函数内的复合语句中定义的变量在本函数范围内有效

6、当一个函数无返回值时,函数的类型应定义为___________。 (A) int (B) void (C) 无 (D) 任意

7、在C语言中函数返回值的类型是___________。

(A) 由调用该函数时系统临时决定的 (B) 由return语句中的表达式类型决定的

(C) 由定义该函数时所指定的函数类型决定的

(D) 由调用该函数时的主调函数类型决定的 8、下列叙述中,错误的是___________。(A) 一个函数中可以有多条return语句 (B) 函数调用执行到return语句即意味着函数调用结束

(C) 函数调用必须在一条独立的语句中完成

(D) 函数通过return语句返回其函数值

9、在函数中未指定存储类型的变量,其隐含存储类型为__________。

(A) 静态(static) (B) 自动(auto) (C) 外部(extern) (D) 存储器(register)

二、填空题

1、一个函数由_____________和_____________两部分组成

2、函数体一般包括_______语句和______语句。

3、C语言程序的执行是从________函数开始,在_________函数中结束。

4、一个C语言源程序一般包含有许多函数,其中main()函数是程序执行的入口,所以在整个程序中它必须定义在所有的函数之前。以上叙述是否正确?(回答\是\或\否\

5、调用其他函数的函数称为________函数,被其他函数调用的函数称为________函数。

6、从变量存在的时间(即生存期)角度来分,可以分为______存储方式和______存储方式。

7、下面add函数的功能是求两个参数的和,并将值返回调用函数。函数中错误部分是__________,改正后为

_____________。 void add(float a,float b)

{ float c; c=a+b; return c; }

8、以下程序的运行结果是_____________________。

void fun(int i,int j) { int x=7; printf(\int main() {

int i=2, x=5, j=7; fun(j,6);

printf(\ return 0; }

答案:#i=7,j=6,x=7#i=2,j=7,x=5 9、以下程序中的isLeap()是判断闰年的函数。请填空。 int main() {

int year;

_____________

printf(\ scanf(\

if( _______________ ) printf(\a leap year.\\n\

else printf(\year);

return 0; }

______ isLeap(int year) { return ( year%4==0&&year0!=0||year@0

==0 ); }

答案:int isLeap(int); isLeap(year) int @int isLeap(int year); isLeap(year) int

10、已有函数pow(): double pow(int x,int y) { int i,j=1;

for(i=1;i<=y;++i) j=j*x; return (j); }

现要求取消变量i后pow函数的功能不变,请填空。

double pow(int x,int y) { int j;

for(__________;__________;__________)

j=j*x; return (j); }

11、[程序]

void myswap(int a, int b) { int t; if(a>b) t=a, a=b, b=t; } int main()

{ int x=15, y=12, z=20; if(x>y) myswap(x,y); if(x>z) myswap(x,z); if(y>z) myswap(y,z);

printf(\ //程序的输出为_________________ return 0; }

12、以下程序的运行结果是_________。 int func(int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); }

int main()

{ int k=4,m=1,p;

p=func(k,m); printf(\ p=func(k,m); printf(\ return 0; }

试卷号:TSheet4

一、选择题

1、在C语言中,定义数组长度时,其\元素个数\允许的表示方式是 _______。 (A) 整型常量 (B) 整型表达式

(C) 整型常量或整型表达式 (D) 任何类型的表达式

2、如下数组定义语句正确的是_______。 (A) int a[3,4];

(B) int m=3, n=4, int a[m][n]; (C) int a[3][4];

(D) int a(3)(4);

3、若有说明:int a[10];则对a 数组元素的正确引用是 _______。 (A) a[10] (B) a[3.5] (C) a

(D) a[10-10]

4、以下不能对二维数组a初始化的语句是_______。

(A) int a[2][3]={1,2,3,4,5,6} ; (B) int a[2][]={{1},{2}}; (C) int a[2][3]={1};

(D) int a[][3]={3,4,5,6,7,8};

5、以下不正确的字符串赋初值的方式是______。

(A) char str[ ] = {'s','t','r','i','n','g','\\0'}; (B) char str[7] = {'s','t','r','i','n','g'}; (C) char str1[10]; str1 = \

(D) char str1[ ] = \str2[ ] = \

6、以下程序段的输出结果是_______。 char sp[ ]=\ printf(\strlen(sp)); (A) 3 (B) 5 (C) 1

(D) 字符串中有非法字符,输出值不定

二、填空题

1、程序: int main( ) {

int a[4], x, i;

for(i=1;i<=3;i++) a[i]=0; scanf(\

while(x!=-1) {a[x]+=1; scanf(\&x); }

for(i=1;i<=3;i++) printf(\\i, a[i]); return 0; }

若输入数据如下:

3 1 2 3 2 2 2 1 1 3 3 3 3 3 1 1 2 2 3 2 1 2 3 2 -1

输出结果是_____________________。

2、给a数组输入10,8,6,4,2共5个数,放在a[1]到a[5]中,请阅读程序,回答:若给x输入5,以下程序的输出结果是________。 int main( ) {

int a[80], x, i, n; printf(\ scanf(\

for(i=1;i<=n;i++) scanf(\ printf(\ scanf(\ a[0]=x; i=n;

while(x>a[i]) {a[i+1]=a[i]; i--;}

a[i+1]=x; n++;

for(i=1;i<=n;i++) printf(\ return 0; }

3、以下程序的输出结果是__________。 int main( ) { char str[]=\P1\

int k; char c;

for(k=2; (c=str[k])!='\\0'; k++) {

switch (c)

{ case 'A' : putchar('a'); continue;

case '1' : break; case 1 : while((c=str[++k])!='\\1'&&c!='\\0'); case 9 : putchar('#'); case 'E' :

case 'L' : continue; default : putchar(c); continue; }

putchar('*'); }

putchar('\\n'); return 0; }

试卷号:TSheet5

一、选择题

1、执行完下列3条语句后,c指向______。

int a,b,*c=&a; int * p=c; p=&b;

(A) p (B) c (C) b (D) a

2、下列程序是要对两个整型变量的值进行交换。以下正确的说法是_____。 int myswap(int p, int q) { int t; t=p; p=q; q=t;} int main()

{ int a=10, b=20; myswap(&a,&b); return 0; }

(A) 该程序完全正确

(B) 该程序有错,只要将语句myswap(&a, &b); 中的参数改为a,b即可

(C) 该程序有错,只要将myswap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可

(D) 以上说法都不正确

3、若已定义:char s[10]; 则在下面

表达式中不表示s[1]的地址的是_____。 (A) s+1 (B) s++ (C) &s[0]+1 (D) &s[1]

4、下面程序段中, for循环的执行次数是 _____。

char *s=\ for( ; *s!='\\0'; s++) printf(\

(A) 9 (B) 5 (C) 6 (D) 7

5、以下不正确的字符串赋初值的方式是______。

(A) char *str = \(B) char *str; str = \

(C) char str[ ] = {'s','t','r','i','n','g'}; (D) char str[7] = {'s','t','r','i','n','g'};

二、填空题

1、若有以下定义和语句:int a[4]={0,10,20,30}, *p; p=&a[1]; 则++(*p)的值是________。

2、若有以下定义和语句:int a[4]={0,10,20,30},*p; p=&a[2]; 则*--p的值是________。

3、设a数组中的数据已按由小到大的顺序存放,以下程序可把a数组中相同的数据删得只剩一个。请填空。

int delmore(int a[], int m) //m为有序数组a的长度 { int i,j,n; n=i=m-1; while(i>0)

{ if(*(a+i)==*(a+i-1))

{ for(j= __________ ; j<=n; j++)

*(a+j-1)= *( _________ ); n--; } i--; }

return n+1; //返回无重复数据的新的有序数组a的长度 }

4、运行以下程序,从键盘上依次输入book和book!后,则该程序段的运行结果是_____ 。

char a1[80], a2[80],*s1=a1,*s2=a2; scanf(\

if( !strcmp(s1,s2) ) printf(\else printf(\

printf(\

5、下面程序的功能是将两个字符串连接起来。请填空。

char *conj(char *p1,char *p2)

{ char *p=p1;

while(*p1)_____________________ ; while (*p2) {*p1=____________ ; p1++ ; p2++ ;} *p1='\\0';

______________________ ; }

6、下列程序的输出结果是______ int main() { int n;

int fun(char *s1,char*s2); char *p1,*p2; p1=\ p2=\ n=fun(p1,p2); printf(\ return 0; }

int fun(char *s1,char*s2) {

while(*s1&&*s2&&*s2++==*s1++); return *(--s1)-*(--s2); }

一、选择题

1、下列字符序列中,可以作为变量名的是_____。 (A) C++ (B) _DAY

(C) 123abc (D) a b c

2、结构化程序设计的基本结构不包含________。 (A) 顺序 (B) 选择 (C) 跳转 (D) 循环

3、下列叙述正确的是_______。 (A) C程序由函数构成

(B) C程序由函数和过程组成 (C) C程序由主函数组成

(D) 在C程序中无论整数还是实数,只要在允许的范围内都能正确无误地表示。

4、C语言中允许的基本数据类型包括______。

(A) 整型、实型、逻辑型 (B) 整型、实型、字符型 (C) 整型、字符型、逻辑型

(D) 整型、实型、逻辑型、字符型

5、一个C程序的执行是从______。 (A) 本程序的main函数开始,到main函数结束

(B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

(C) 本程序的main函数开始,到本程

序文件的最后一个函数结束

(D) 本程序文件的第一个函数开始,到本程序main函数结束

6、C语言规定,不同类型的数据占用存储空间的长度是不同的。下列数据类型中,满足占用存储空间从小到大顺序排列的是______。

(A) short int , char , float , double (B) char , float , int , double

(C) int , unsigned char , long int , float (D) char , short int , foat , double

7、合法的C语言字符常数是______。 (A) '\\97' (B) \(C) '\\t' (D) \

8、正确表示a不等于0关系的表达式是________。 (A) a<>0 (B) !a (C) a= =0 (D) a

9、设有程序段 int k=10;

while ( k = 0 ) k = k - 1 ;

以下描述正确的是__________。 (A) 循环体语句一次也不执行。

(B) 循环是无限循环。

(C) while循环语句执行十次。 (D) 循环体语句执行一次。

10、若有以下定义:char s[]=\则s所占的内存空间为______。 (A) 1个字节 (B) 12个字节 (C) 11个字节 (D) 10个字节

二、填空题

1、若有说明语句:char c='\\101';则变量c包含_____个字符。

2、若有 int k=5 ; float f ;

则表达式 k=56+f 的数据类型为_______。

3、若有 int x=30 , y=20 ; 则表达式5.0+x/y的值为______。

4、若有 int a=10 , b=9 , c; 则在计算表达式c=(a)+(b=3),c+=2后,变量c的值为______。

5、结束本次循环进入下轮循环用______语句进行控制。