C语言闯关题

更新时间:2024-04-03 19:01:01 阅读量: 综合文库 文档下载

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

本帖由 火雨 于 2016-12-16 10:17 编辑

闯关题1

1.

十六进制数FF转换成十进制数是( )。 A:255 B:256 C:127 D:128 2.

在计算机中,字节的英文名字是( )。 A:bit B:byte C:bou D:Baud 3.

下列字符中,ASCII码值最小的是( )。 A:M B:H C:y D:b 4.

已知英文字母a的ASCII代码值是十六进制61H,那么字母d的ASCII代码值是( )。 A:2H B:54H C:24H D:64H 5.

在C语言中,字符型数据所占的内存空间是( ) A: 2个字节 B: 4字节 C: 1字节 D:由用户自定义 6.

若有以下类型说明语句:char a;int b; float c; double d; 则表达式a*b+d-c的结果类型为( ) A: float B: char

C: int D: double 7.

设a,b和c都是int型变量,且a=3,b=4,c=5,则下面表达式中,值为0的表达式是( ) A: ’a’&&’b’ B: a<=b

C: a||b+c&&b-c D: !((a

下面( )表达式的值为4. A: 11/3 B: 11.0/3 C: (float)11/3 D: (int)(11.0/3+0.5) 9.

有:int w=7, x=12, y=3, m; 执行下面语句后m的值是( ) m=(w>x)?w:x; m=(m>y)?m:y; A: 12 B: 0 C: 3 D: 1 10.

设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是( ) A: b=1.0/a B: b=(float)(1/A: C: b=1/(float)a D: b=1/(a*1.0) 11.

表示关系x<=y<=z的c语言表达式为( ) A: (x<=y)&&(y<=z) B: (x<=y)AND(y<=z) C: (x<=y<=z) D: (x<=y)&(y<=z) 12.

在下面的条件语句中(其中s1和s2表示是C语言的语句),只有一个在功能上与其它三个语句不等价,它是( )。 A: if (A: s1 ; else s2; B: if (a= =0) s2; else s1;

C: if (a!=0) s1; else s2; D: if (a= =0) s1; else s2; 13.

若k是int型变量,且有下面的程序段: int k; k= -3;

if (k<=0) printf(“####”); else printf(“&&&&”); 上面程序段的输出结果是( ) A: #### B: &&&& C: ####&&&& D: 有语法错误,无输出结果 14.

C语言中用( )表示逻辑“真”。 A: true B: 整数值1 C: 非零整数值 D: false 15.

若int i=10; 执行下列程序后,变量i的正确结果是( )。 switch ( i ) {

case 9: i+=1; case 10: i+=1; case 11: i+=1; default : i+=1; }

A: 13 B: 12 C: 11 D: 10 16.

在C语言中,下列说法中正确的是( )。

A: do-while语句构成的循环不能用其它语句构成的循环来代替。 B: do-while语句构成的循环只能用break语句退出。

C: do-while语句构成的循环在while后的表达式非零时结束循环。 D: do-while语句构成的循环,在while后的表达式为零时结束循环。 17.

对于break语句和continue语句的说法错误的是()

A: break语句不能用于循环语句和switch语句之外的任何其他语句中。 B: break和continue也可以用于if语句中

C: continue语句只结束本次循环,而不是终止整个循环的执行。 D: break语句是结束整个循环过程,不再判断执行循环的条件是否成立。 18.

下列循环语句中有语法错误的是( ) A: while(x=y) 5; B: while(0) ;

C: do 2;while(x= =B: ; D: do x++ while(x= =10); 19.

对以下程序段的叙述正确的是( ) int x=1; do { x= -1*x; } while(!x) A: 是死循环 B: 循环执行一次 C: 循环执行二次 D: 有语法错误 20.

设x和y均为int型变量,则执行以下的循环后,y的值为()。 for(y=1,x=1;y<=50;y++) {

if(x>=0) break;

if(x%2==1) {x+=5;continue;} x-=3; }

A: 2 B: 4 C: 6 D: 1

本帖最后由 火雨 于 2016-12-16 10:17 编辑

闯关题2

数据类型,变量表达式,判断,循环 1.

十六进制数FF转换成十进制数是( )。 A:255 B:256 C:127 D:128

2.

在计算机中,字节的英文名字是( )。 A:bit B:byte C:bou D:Baud 3.

下列字符中,ASCII码值最小的是( )。 A:M B:H C:y D:b 4.

已知英文字母a的ASCII代码值是十六进制61H,那么字母d的ASCII代码值是( )。 A:2H B:54H C:24H D:64H 5.

在C语言中,字符型数据所占的内存空间是( ) A: 2个字节 B: 4字节 C: 1字节 D:由用户自定义 6.

若有以下类型说明语句:char a;int b; float c; double d; 则表达式a*b+d-c的结果类型为( ) A: float B: char C: int D: double 7.

设a,b和c都是int型变量,且a=3,b=4,c=5,则下面表达式中,值为0的表达式是( ) A: ’a’&&’b’ B: a<=b

C: a||b+c&&b-c D: !((a

8.

下面( )表达式的值为4. A: 11/3 B: 11.0/3 C: (float)11/3 D: (int)(11.0/3+0.5) 9.

有:int w=7, x=12, y=3, m; 执行下面语句后m的值是( ) m=(w>x)?w:x; m=(m>y)?m:y; A: 12 B: 0 C: 3 D: 1 10.

设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是( ) A: b=1.0/a B: b=(float)(1/A: C: b=1/(float)a D: b=1/(a*1.0) 11.

表示关系x<=y<=z的c语言表达式为( ) A: (x<=y)&&(y<=z) B: (x<=y)AND(y<=z) C: (x<=y<=z) D: (x<=y)&(y<=z) 12.

在下面的条件语句中(其中s1和s2表示是C语言的语句),只有一个在功能上与其它三个语句不等价,它是( )。 A: if (A: s1 ; else s2; B: if (a= =0) s2; else s1; C: if (a!=0) s1; else s2; D: if (a= =0) s1; else s2; 13.

若k是int型变量,且有下面的程序段: int k; k= -3;

if (k<=0) printf(“####”); else printf(“&&&&”);

上面程序段的输出结果是( ) A: #### B: &&&& C: ####&&&& D: 有语法错误,无输出结果 14.

C语言中用( )表示逻辑“真”。 A: true B: 整数值1 C: 非零整数值 D: false 15.

若int i=10; 执行下列程序后,变量i的正确结果是( )。 switch ( i ) {

case 9: i+=1; case 10: i+=1; case 11: i+=1; default : i+=1; }

A: 13 B: 12 C: 11 D: 10 16.

在C语言中,下列说法中正确的是( )。

A: do-while语句构成的循环不能用其它语句构成的循环来代替。 B: do-while语句构成的循环只能用break语句退出。

C: do-while语句构成的循环在while后的表达式非零时结束循环。 D: do-while语句构成的循环,在while后的表达式为零时结束循环。 17.

对于break语句和continue语句的说法错误的是()

A: break语句不能用于循环语句和switch语句之外的任何其他语句中。 B: break和continue也可以用于if语句中

C: continue语句只结束本次循环,而不是终止整个循环的执行。 D: break语句是结束整个循环过程,不再判断执行循环的条件是否成立。 18.

下列循环语句中有语法错误的是( ) A: while(x=y) 5; B: while(0) ;

C: do 2;while(x= =B: ; D: do x++ while(x= =10); 19.

对以下程序段的叙述正确的是( ) int x=1; do { x= -1*x; } while(!x) A: 是死循环 B: 循环执行一次 C: 循环执行二次 D: 有语法错误 20.

设x和y均为int型变量,则执行以下的循环后,y的值为()。 for(y=1,x=1;y<=50;y++) {

if(x>=0) break;

if(x%2==1) {x+=5;continue;} x-=3; }

A: 2 B: 4 C: 6 D: 1

函数的声明定义,实参形参, 变量作用域 1.

C程序中函数返回值的类型是由( )决定的. A)函数定义时指定的函数类型 B) 函数中使用的最后一个变量的类型 C)调用函数时临时确定 D) 调用该函数的主调函数类型 2.

C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为 ( ) A. 由系统选择 B. 单向值传递 C. 由用户指定传递方式

闯关题3

D. 地址传递 3.

C语言中对函数的描述正确的是( ) . A)可以嵌套调用,不可以递归调用 B)可以嵌套定义

C)嵌套调用,递归调用均可 D)不可以嵌套调用 4.

有一函数的定义如:void fun(char *s){……},则不正确的函数调用是( )。 A.main()

{char a[20]=”abcdefgh”; fun(a); …… } B.main()

{ char a[20]=”abcdefgh”; fun(&a[0]); …… }

C. main()

{ char a[20]=”abcdefgh”; char *p=a;fun(p); …… }

D. main()

{char a[20]=”abcdefgh”; fun(a[]); …… } 5.

若在C语言中未说明函数的类型,则系统默认该函数的数据类型是( ) A)float B)long

C)int D)double

6.以下关于函数叙述中,错误的是( )。

A)函数未被调用时,系统将不为形参分配内存单元

B)实参与形参的个数应相等,且实参与形参的类型必须对应一致 C)当形参是变量时,实参可以是常量、变量或表达式 D)形参可以是常量、变量或表达式

7. C程序中各函数之间可以通过多种方式传递数据,下列不能用于实现数据传递的方式是( ) 。 A)参数的“形实”结合 B)函数返回值 C)全局变量 D)同名的局部变量

8. 若函数调用时参数为基本数据类型的变量,以下叙述正确的是( ) 。 A)实参与其对应的形参共占存储单元

B)只有当实参与其对应的形参同名时才共占存储单元 C)实参与对应的形参分别占用不同的存储单元

D)实参将数据传递给形参后,立即释放原先占用的存储单元

9. 函数调用时,当实参和形参都是简单变量时,他们之间数据传递的过程是( ) 。 A)实参将其地址传递给形参,并释放原先占用的存储单元

B)实参将其地址传递给形参,调用结束时形参再将其地址回传给实参 C)实参将其值传递给形参,调用结束时形参再将其值回传给实参 D)实参将其值传递给形参,调用结束时形参并不将其值回传给实参

10. 若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( ) 。 A)函数的实参和其对应的形参共占同一存储单元 B)形参只是形式上的存在,不占用具体存储单元 C)同名的实参和形参占同一存储单元 D)函数的形参和实参分别占用不同的存储单元

11. 若用数组名作为函数调用的实参,则传递给形参的是 ( ) 。 A) 数组的首地址 B) 数组的第一个元素的值 C) 数组中全部元素的值 D) 数组元素的个数

12. 若函数调用时,用数组名作为函数的参数,以下叙述中正确的是( ) 。 A)实参与其对应的形参共用同一段存储空间 B)实参与其对应的形参占用相同的存储空间

C)实参将其地址传递给形参,同时形参也会将该地址传递给实参 D)实参将其地址传递给形参,等同实现了参数之间的双向值的传递

13. 如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量( ) 。 A)为全局变量,在本程序文件范围内有效 B)为局部变量,只在该函数内有效 C)为局部变量,只在该复合语句中有效 D)定义无效,为非法变量

14. C语言中函数返回值的类型是由( ) 决定。 A)return语句中的表达式类型 B)调用函数的主调函数类型

C)调用函数时临时 D)定义函数时所指定的函数类型

15. 若在一个C源程序文件中定义了一个允许其他源文件引用的实型外部变量a,则在另一文件中可使用的引用说明是( ) 。 A)extern static float a; B)float a;

C)extern auto float a; D)extern float a;

16. 定义一个void型函数意味着调用该函数时,函数( ) A)通过return返回一个用户所希望的函数值 B)返回一个系统默认值 C)没有返回值 D)返回一个不确定的值

17. 若定义函数float *fun( ),则函数fun的返回值为( ) 。 A)一个实数 B)一个指向实型变量的指针

C)一个指向实型函数的指针 D)一个实型函数的入口地址

18. C语言规定,程序中各函数之间( ) 。 A)既允许直接递归调用也允许间接递归调用 B)不允许直接递归调用也不允许间接递归调用 C)允许直接递归调用不允许间接递归调用 D)不允许直接递归调用允许间接递归调用

19. 若程序中定义函数 float myadd(float a, float b) { return a+b;}

并将其放在调用语句之后,则在调用之前应对该函数进行说明。以下说明中错误的是( ) 。 A)float myadd( float a,b); B)float myadd(float b, float a); C)float myadd(float, float); D)float myadd(float a, float b);

20.以下程序运行后的输出结果是( ) 。 fun(int a, int b) {

if(a>b) return a; else return b; } main() {

int x=3,y=8,z=6,r; r=fun(fun(x,y),2*z); printf(\}

A) 3 B) 6 C) 8 D) 12 编程题:

1. 最大公倍数,最小公约数 编程 (容易被考到)

2. 字符串匹配函数,函数原型 int strcmp(char str1[],char str2[]),自己写代码实现。 匹配成功返回1,否则返回0。

本帖最后由 火雨 于 2016-12-16 18:54 编辑

闯关题4

选择填空题

1.如果x是整型变量,则合法的形式是( )。 A.&(x+5) B.*x C.&*x D.*&x

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

则( )不是对a数组元素的正确引用(其中0≤i<5)。

A.p B.*(*(a+i)) C.a[p-a] D.*(&a)

3.填空并输出结果

1. 2. 3. 4. 5. 6. 7. 8. 9.

int main()

{int i,*p,a[]={10,20,30,40,50,60}; p=a;

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

printf(\ _____________________________ );

return 0; }

复制代码

4.求输出结果

1. 2. 3. 4. 5. 6. 7.

复制代码

struct country { int num; char name[10];

}x[5]={1,\ struct country *p; p=x+2;

printf(\

5.下列程序的运行结果是:

1. 2. 3. 4. 5. 6. 7. 8. 9.

int main() {

char ch[3][4]={\ char (*q)[4]=ch; int i; *(*q+3)='b'; for(i=0;i<3;i++) printf(\ return 0;

10. }

复制代码

6.下面程序段的运行结果是()。 char *s=\ s+=2;printf(\

A)cde B)字符'c' C)字符'c'的地址 D)无确定的输出结果

7.在64位编译系统上,若有定义int a[]={10,20,30}, *p=&a; 当执行p++;后,下列说法错误的是()。

A)p向高地址移了一个字节 B)p向高地址移了4个字节 C)p向高地址移了8个字节 D)p与a+1等价

8.若有定义:int a[2][3],则对a数组的第m行n列元素地址的正确引用是()。 A)*(a[m]+n) B)(a+m)

C)*(a+n) D)a[m]+n

9.若有以下程序:

1. 2. 3. 4. 5. 6.

复制代码

void main() {

char *a[3] = {\ char **ptr = a;

printf(\ }

这段程序的输出是() A) I l B) o o C) o love D) I love 10.

对于语句int *pa[5];下列描述中正确的是( ).

A) pa是一个指向数组的指针,所指向的数组是5个int型元素 B) pa是一个指向某数组中第5个元素的指针,该元素是int型变量 C) pa [5]表示某个元素的第5个元素的值

D) pa是一个具有5个元素的指针数组,每个元素是一个int型指针 11.

若要对a进行++运算,则a应具有下面说明( ). A) int a[3][2]; B) char *a[ ] = {“12”,”ab”}; C) char (*a)[3]; D) int b[10], *a = b; 12.

下面代码能通过编译的是( ): A)int main() {

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

int *b[3]={&a[1],&a[2],&a[3]}; int **p = b; return 0; }

B)int main()

{

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

int *b[3]={a[1],a[2],a[3]}; int **p = b; return 0; }

C)int main() {

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

int *b[3]={&a[1],&a[2],&a[3]}; int *p = b; return 0; }

D)int main() {

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

int *b[3]={&a[1],&a[2],&a[3]}; int *p = &b; return 0; } 13.

下列选项中声明了一个指针数组的是( ): A)int *p[2]; B)int (*p)[2]; C)typedef int* intPtr; intPtr p[2]; D)A和B E)A和C F)B和C 14.

已定义以下函数 int fun( int *p) { return *p; } fun函数返回值是 ( )

A) 不确定的值 B) 一个整数 C) 形参p中存放的值 D) 形参p的地址值 15.

以下合法的赋值语句是( )

A) n=(i=2,++i); B) j++; C) ++(i+1); D) x==j>0; 编程题:

1.用指针编程实现滤出一个字符串里面的空格字符函数。

2.字符替换。要求用函数replace将用户输入的字符串中的字符t(T)都替换为e(E),并返回替换字符的个数。 选作题:

3.定义一个动态一维数组,能够根据输入的变量n和相关输入数据, 生成对应的含有n个元素的数组并逐项打印出来。

4.有5个字符串,首先将它们按照字符串中的字符个数由小到大排列,

再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。 要求:利用字符串指针和指针数组实现。

+++++++

PS:期末大项目3选1 仍然是进行状态哦~~

祝大家期末取得好成绩~~~

1.用指针编程实现滤出一个字符串里面的空格字符函数。

2.字符替换。要求用函数replace将用户输入的字符串中的字符t(T)都替换为e(E),并返回替换字符的个数。 选作题:

3.定义一个动态一维数组,能够根据输入的变量n和相关输入数据, 生成对应的含有n个元素的数组并逐项打印出来。

4.有5个字符串,首先将它们按照字符串中的字符个数由小到大排列,

再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。 要求:利用字符串指针和指针数组实现。

+++++++

PS:期末大项目3选1 仍然是进行状态哦~~

祝大家期末取得好成绩~~~

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

Top