C语言程序设计练习题A

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

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

C语言程序设计练习题A

一、单项选择题

1.以下不能定义为用户标识符是( )

A) Main B) _0 C) _int D) sizeof 2.以下叙述中正确的是( )

A)C程序中注释部分可以出现在程序中任意合适的地方 B)花括号\和\只 能作为函数体的定界符

C)构成C程序的基本单位是函数,所有函数名都可以由用户命名 D)分号是C语句之间的分隔符,不是语句的一部分

3.以下有4组用户标识符,其中合法的一组是( )

A) For B) 4d C) f2_G3 D) WORD -sub DO IF void Case Size abc define

4.设正x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是printf(\

A) 10,3 B) 9.3 C) 9.2 D)10.2 5.有以下定义语句 double a,b; int w; long c;

若各变量已正确赋值,则下列选项中正确的表达式是( ) A) a=a+b=b++ B)w%(int)a+b) C)(c+w)%(int)a D)w=a==b; 6.下列条件语句中,功能与其他语句不同的是

A) if(a) printf(\ B) if(a==0) printf(\ C) if (a!=0) printf(\ D) if(a==0) printf(\7.以下能正确定义二维数组的是

A) int a[][3]; B) int a[][3]=2{2*3};

C) int a[][3]={}; D) int a[2][3]={{1},{2},{3,4}}; 8.s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是

A) if(s1>s2)S; B) if(strcmp(s1,s2))S;

C) if(strcmp(s2,s1)>0)S; D) if(strcmp(s1,s2)>0)S; 9.有以下定义和语句

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

则*p[0]+1)所代表的数组元素是

A) a[0][1] B) a[1][0] C) a[1][1] D) a[1][2] 10.已有定义:int i,a[10],*p;,则合法的赋值语句是

A) p=100; B) p=a[5]; C) p=a[2]+2; D) p=a+2; 11.设有定义语句:char c1=92,c2=92;,则以下表达式中值为零的是

A) c1^c2 B) c1&c2 C) ~c2 D) c1|c2 12.以下选项中非法的表达式是

A)0<=x<100 B)i=j==0 C)(char)(65+3) D)x+1=x+1 13.设有如下程序段: int x=2002, y=2003;

printf(\ 则以下叙述中正确的是

A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出 B)运行时产生出错信息 C)输出值为2002 D)输出值为2003

14.t为int类型,进人下面的循环之前,t的值为0

while( t=l ) { ?? }

则以下叙述中正确的是( )

A) 循环控制表达式的值为0 B) 循环控制表达式的值为1 C) 循环控制表达式不合法 D) 以上说法都不对

15.以下各选项企图说明一种新的类型名,其中正确的是( ) A) typedef v1 int; B) typedef v2=int;

C) typedefv1 int v3; D) typedef v4: int; 16.以下程序段( ).

x=-1; do{x=x*x;} while(! x);

A.是死循环 B.循环执行二次 C. 循环执行二次 D.有语法错误 17. 以下正确的描述是( ).

A.continue语句的作用是结束整个循环的执行

B.只能在循环体内和switch语句体内使用break语句

C.在循环体内使用break语句或continue语句的作用相同 D.从多层循环嵌套中退出时,只能使用goto语句

18. 在C语言中,引用数组元素时,其数组下标的数据类型允许是( ) A. 整型常量 B.整型表达式

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

19. 以下不能对二维整形数组a进行正确初始化的语句是( )。

A.int a[2][3]={0};

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

C. int a[2][3]={{1,2},{3,4},{5,6}}; D. int a[][3]={1,2,3,4,5,6};

20. 若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是( )。

A.2 B.3 C.4 D.无确定值

二、填空题

1. C程序的基本单位是 。

2. 假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为 。

3.C语言所提供的基本数据类型包括: 。 4.以下程序的执行结果是 。

#include main() {

float f=3.5;

printf(\ }

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

#include main() {

int a,b,c; a=2;b=3;c=1; if(a>c)

printf(\ else

printf(\ printf(\ }

6. 有int x,y,z; 且x=3,y=-4,z=5,则表达式(x&&y)= =(x︱︱z)的值为 。 7. 执行下面程序段后,k值是 .

k=1;n=263;

do{k*=n; n/=10 } while(n); 8. 若for循环用以下形式表示:

for(表达式1;表达式2;表达式3) 循环体语句 则执行语句for(i=0;i<3;i++) printf(“*”);时,表达式3执行 次。 9. 若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为: 。(假设a[0][0]位于数组的第一个位置上。)

10. 在C 语言中,一个函数一般由两个部分组成,它们是 。 11. 设有以下宏定义:#define WIDTH 80

#define LENGTH (WIDTH+40)

则执行赋值语句:k=LENGTH*20;(k为int 型变量)后,k的值是 。 12. 下面程序的运行结果是 。 #define EXCH(a,b) {int t;t=a;a=b; b=t;} main()

{int x=5,y=9;

EXCH(x,y);

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

13. 下面程序段的运行结果是 。 char s1=”AbcdEf”,s2=”aB”; s1++;

t=(strcmp(s1,s2)>0); printf(“%d\\n”,t);

14. 当运行以下程序时,从键盘输入 book (表示回车, 表示空格),则下面程序段运行的结果是 。

char a1[80],a2[80],*s1=a1,*s2=a2; gets(s1);gets(s2);

if(!strcmp(s1,s2)) printf(“*”) ; else printf(“#”);

printf(“%d”,strlen(strcat(s1,s2)));

三、编程题

1.将一个字符串的内容颠倒过来。

2.编写程序,将字符串str中的所有字符’k’删除。

C语言程序设计试题A答案

一、选择题

1.D2.A3.C4.D5.C6.D7.C8.D9.C10.D11.A12.D13.A14.B15.C 16.C 17.B 18.C 19.C 20.B 二、填空题

1.函数 2. 9

3.单精度型、双精度型、整型、字符型和枚举型 4.3.500000,3.5 5.end 6.1 7.36 8.3 9.i*m+j+i

10.函数说明部分和函数体 11.2400 12.x=8,y=5 13.1 14.#9 三、编程题

1. 解:注意交换位置的控制方法,参考程序如下:

#include #include void change(char str[]) { int len,i,j; char c;

len=strlen(str);

for (i=0,j=len-1;i

str[i]=str[j]; str[j]=c; } }

main()

{ char str[80];

printf(\ gets(str); change(str);

printf(\

}

2. 解:将从字符串中删除所有字符’k’ 的功能定义为函数。参考程序如下:

#include

void delchar(char str[],char c) { int i,j;

for (i=0,j=0;str[i]!='\\0';i++) if (str[i]!=c) str[j++]=str[i]; str[j]='\\0'; }

main()

{ char str[80]; int i,j; gets(str);

delchar(str,'k'); puts(str); }

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

Top