首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事
您的当前位置:首页正文

c语言真题20套

2024-04-11 来源:画鸵萌宠网
第一套

下列正确的标识符是(C ).

A、a+b B、6a C、_do D、%y

执行以下程序段后,输出结果和a的值是(B)。 int a=10; printf(\"%d\

A、11 和 10 B、10 和 11 C、11 和 11 D、10 和 10 以下不正确的if语句形式是(B)。

A、if(xy&&x!=y); D、if(x==y) x+=y;

int a=3,b=2,c=1; if(a>b && b>c)a=b; else a=c;则a的值为(C)。 A、1 B、0 C、2 D、3

对for(表达式1; ;表达式3)可以理解为(C ).

A、for(表达式1;表达式3;表达式3) B、for(表达式1;表达式1;表达式3) C、for(表达式1;1;表达式3) D、for(表达式1;0;表达式3) 运行结果是\" 11 12\"的程序段是:请在A处填写正确内容(B )。 for(i=1;i<=2;i++) ___A___

A、for(j=1;j<=2;j++)printf(\"%3d\B、{for(j=1;j<=2;j++)printf(\"%3d\C、for(j=1;j<=2;j++)printf(\"%3d\D、{for(j=1;j<=2;j++)printf(\"%3d\static char str[10]=\"China\";数组元素个数为(D)。 A、6 B、9 C、5 D、10 以下程序的输出结果是:(C ).

fun(int x, int y, int z){ z=x*x+y*y; }main( ) { int a=31; fun(5,2,a); printf(\"%d\ a);}

A、无定值 B、29 C、31 D、0 文件包含中,被包含文件(B ).

A、可以是可执行文件. B、可以嵌套其它文件.

C、可以是目标文件或源文件. D、必须用\".h\"为后缀. 下列程序段的输出结果是:(C ).

void fun( int *x, int *y){ printf(\"%d %d\main( ){ int x=1, y=2;fun(&y, &x); printf(\"%d %d\A、2 1 1 2 B、1 2 3 4 C、2 1 4 3 D、1 2 1 2 1.在C程序中,main函数必须位于程序的最前面 错误 2.表达式 (j=3, j++) 的值是4. 错误

3.已知a=3,b=4,c=5,则逻辑表达式a||b+c && b-c的值为0.【参考答案】错误 4.循环结构中的continue语句是使整个循环终止执行【参考答案】错误 5 在实际编程中,do-while循环完全可以用for循环替换.【参考答案】正确 6 引用数组元素时,数组元素下标必须是整型常量.【参考答案】错误

7 如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。正确 8 带参数的宏定义不是进行简单的字符串替换,还要进行参数替换.【答案】正确 9 下列的初始化的方式是正确的吗? char st[10]; st=\"string\";【答案】错误 10 在定义结构体变量时不允许对它赋初值.【参考答案】错误 三.填空

设i,j,k均为int型变量,则执行完下面的for循环后,k的值为__10___. for(i=0,j=10;i<=j;i++,j--) k=i+j;

4.结构体是不同数据类型的数据集合,作为数据类型, 必须先说明结构体_类型____,再说明结构体变量.

四.【程序设计】 功能:将主函数中输入的字符串反序存放。例如:输入字符串\"abcdefg\",则应输出\"gfedcba\"。 注意: 请在Begin 和 End 注释行之间填写代码, 所有注释语句都不能删除。 #include \"stdio.h\" #include \"string.h\" #include \"conio.h\" #define N 81 void fun(char str[],int n)

{ /*********Begin**********/ 【参考代码】 int i,j; char c;

for(i=0,j=n-1;i/********** End **********/ }

void main()

{ void TestFunc(); char s [N]; int l; printf(\"input a string:\");gets(s); l=strlen(s); fun(s,l); printf(\"The new string is :\");puts(s);TestFunc();} 五.【程序改错】

功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输 出主对角线上的元素之和sum。 #include \"stdio.h\" int fun()

{ int a[3][3],sum;int i,j;

/**********ERROR**********/ a=0;

for(i=0;i<3;i++) for(j=0;j<3;j++)

/**********ERROR**********/ scanf(\"%d\ for(i=0;i<3;i++)

/**********ERROR**********/ sum=sum+a[i][j];

/**********ERROR**********/ printf(\"sum=%f\\n\}

void main() {fun();}

1【参考答案】sum=0;2【参考答案】scanf(\"%d\

3【参考答案】sum=sum+a[i][i]; sum+=a[i][i];4【参考答案】printf(\"sum=%d\\n\六.【程序填空】先将在字符串s中的字符按正序存放到t串中,然后把s中的 字符按逆序连接到t串的后面。 #include \"stdio.h\" #include \"string.h\" void fun (char s[], char t[]) { int i, sl;

/***********FILL***********/ sl = _____; for(i=0; ifor (i=0; i/***********FILL***********/ t[sl+i] = _____;

/***********FILL***********/ t[sl+i]=_____; }

void main()

{ char s[100], t[100];

/***********FILL***********/

printf(\"\\nPlease enter string s:\"); _____(\"%s\ fun(s, t); printf(\"The result is: %s\\n\

1【参考答案】 strlen(s) 2【参考答案】 s[sl-i-1] s[strlen(s)-i-1] 3【参考答案】 '\\0' 0 4【参考答案】 scanf

第二套

若变量均已正确定义并赋值,以下合法的C语言赋值语句是(C )。 A、x+n=I; B、x==5; C、x=n/2.5; D、5=x=4+1;

用scanf函数输入数据,使得x=9.6,y=81.73选择正确的输入语句(D ).

A、scanf(\"x=%3f\、scanf(\"x=%f\C、scanf(\"x=%3.1f\、scanf(\"x=%f\int a=1,b=2,c=3; if(a>c)b=a;a=c;c=b;则c的值为(C)。 A、1 B、3 C、2 D、不一定

为了避免在嵌套的条件语句 if-else 中产生二义性,C语言规定:else子句总是与(A)配对。 A、其之前最近的未配对的ifB、其之后最近的if C、同一行上的if D、缩排位置相同的if 存在多层嵌套循环时,下列说法正确的是(D ).

A、continue语句可以中止所有循环B、break语句可以中止所有循环 C、continue语句能够中止包含该语句的最内层循 D、break语句能够中止包含该语句的最内层循环

下面程序正确的运行结果是(B ).(答案中用大写字母U代表空格) main()

{ int num=0; while(num<=2)

{ num++; printf(\"%3d\

A、UU 1 B、UU1UU2UU3 C、UU1UU2UU3UU4 D、UU1UU2 int a[10];合法的数组元素的最小下标值为(D)。 A、10 B、9 C、1 D、0

下面叙述中错误的是( B)。

A、在其它函数中定义的变量在主函数中也不能使用B、主函数中定义的变量在整个程序中都是有效的C、复合语句中定义的变量只在该复合语句中有效D、形式参数也是局部变量 设有宏定义#define MAX(x,y) (x)>(y)?(x):(y),则F=4*MAX(2,3)的值为(B ). A、3 B、2 C、12 D、8 设有以下定义:

int w[3][4]={{0,1},{2,4},{5,8}}; int (*p)[4]=w; 则数值为4的表达式是(B ).

A、*w[1]+1 B、p[1][1] C、p++,*(p+1) D、w[2][2]

1 .printf 函数的一般格式为:printf (格式控制,输出表列). 【参考答案】 正确 2在C程序中,%是只能用于整数运算的运算符【参考答案】正确 3逻辑表达式4>2&&1||5<3-!0的值为1.【参考答案】正确

4continue语句对于while和do-while循环来说,意味着转去计算While表达式. 【参考答案】正确

5do-while循环由do开始,while结束,在while(表达式)后面不能加分号. 【参考答案】错误

6对任何一个二维数组的元素,都可以用数组名和两个下标唯一地加以确定. 【正确 7每次调用函数时,都要对静态局部变量重新进行初始化.【参考答案】错误 8若有 #define S(a,b) a*b 则语句 area=S(3,2); area的值为6。【参考答案】正确 9设有定义 : int a[10], *p; 则下列的语句是等价的. p=&a[0]; p=a; 正确

10共用体变量在引用时不能只用共用体变量名,必须使用某个成员名.【答案】正确 三.填空,1已知a=13,b=6, a%b的十进制数值为__1___.

2当a=3,b=2,c=1;时,执行以下程序段后 b=__1___. if(a>b) a=b; if(b>c) b=c; else c=b; c=a; 3若输入字符串:abcde<回车>,则以下while循环体将执行 __0___ 次. while((ch=getchar())=='e') printf(\"*\");

4求字符串长度的库函数是_strlen____,只写函数名即可.

5 feof(fp)函数用来判断文件是否结束,如果遇到文件结束,函数值为_非0值_, 否则为__0__. 四【程序设计】

功能:对任意输入的 x,用下式计算并输出 y 的值。(还可以尝试用case语句) -1 x<0 y= 0 x=0 1 x>0 #include \"stdio.h\" int fun(int n)

{ /*********Begin**********/ 【参考代码】 int m; if(n<0) m=-1; else

if(n==0) m=0; else m=1; return m;

/********** End **********/

}

void main ()

{ void TestFunc(); int x,y;

printf(\"enter x:\"); scanf(\"%d\ y=fun(x);

printf(\"x=%d,y=%d\\n\ TestFunc(); }

六 改错-功能:将6个数按输入时顺序的逆序进行排列. #include \"stdio.h\"

void sort(char *p,int m)

{ int i; char change,*p1,*p2; for(i=0;i{ /***********ERROR***********/ *p1=p+i; *p2=p+(m-1-i); change=*p1; *p1=*p2; *p2=change;}} main( ) { int i;

/***********ERROR***********/ char p,num[6]; for(i=0;i<=5;i++)

/***********ERROR***********/ scanf(\"%d\ p=&num[0];

/***********ERROR***********/ sort(*p,6);

for(i=0;i<=5;i++) printf(\"%d\}

【参考答案】p1=p+i; p2=p+(m-1-i);【参考答案】char *p,num[6]; 【参考答案】scanf(\"%d\【参考答案】sort(p,6);

【程序填空】功能:输入3个数a,b,c,按从小到大的顺序输出。(冒泡法或选择法,尝试用来程序设计) #include \"stdio.h\" main()

{ void swap(int *p1, int *p2); int n1,n2,n3;

int *pointer1,*pointer2,*pointer3;

printf(\"please input 3 number:n1,n2,n3:\"); scanf(\"%d,%d,%d\ pointer1=&n1; pointer2=&n2;

pointer3=&n3;

/***********FILL***********/ if(_____) swap(pointer1,pointer2); /***********FILL***********/ if(_____) swap(pointer1,pointer3); /***********FILL***********/ if(_____) swap(pointer2,pointer3);

printf(\"the sorted numbers are:%d,%d,%d\\n\}

/***********FILL***********/ void swap(_____) int *p1,*p2;

{ int p; p=*p1;*p1=*p2;*p2=p;}

【参考答案】n1>n2 n2*pointer2 *pointer2<*pointer1 【参考答案】n1>n3 n3*pointer3 *pointer3<*pointer1 【参考答案】n2>n3 n3*pointer3 *pointer3<*pointer2 【参考答案】p1,p2

第三套

若x,i,j,k 都是int型变量,则计算x=(i=4,j=16,k=32)后,x的值为:( D). A、52 B、16 C、4 D、32

执行以下程序段后,输出结果和a的值是(B)。

int a=10; printf(\"%d\、11 和 10 B、10 和 11 C、11 和 11 D、10 和 10 以下程序的输出结果是:(A )

main() {int m=5; if(m++>5) printf(\"%d\\n\ else printf(\"%d\\n\A、6 B、5 C、7 D、4 执行下面程序段后,i的值是( A). int i=10; switch(i)

{case 9: i+=1; case 10: i--;case 11: i*=3;case 12: ++i;} A、28 B、10 C、9 D、27

下面有关 for 循环的正确描述是(C )。

A、for 循环是先执行循环体语句,后判断表达式B、在 for 循环中,不能用 break 语句跳出循环体C、for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 D、for 循环只能用于循环次数已经确定的情况

若char a[10];已正确定义,以下语句中不能从键盘上给a数组的 所有元素输入值的语句是(A)。

A、for(i=0;i<10;i++)a[i]=getchar(); B、scanf(\"%s\、gets(a);D、a=getchar(); 下面叙述中错误的是(B )。

A、在其它函数中定义的变量在主函数中也不能使用B、主函数中定义的变量在整个程序中都是有效的C、复合语句中定义的变量只在该复合语句中有效D、形式参数也是局部变量 file1.c中有命令,#include ,若file2.c中有全局静态变量a,则(B ).

A、a在file1.c中应用extern说明.B、a在file1.c中有效,不必用extern说明. C、a在file1.c中不生效D、a在file1.c和file2.c中均不生效.

若有定义:int aa[ 8];则以下表达式中不能代表数组元素aa[1]的地址的是(C)。 A、&aa[1] B、&aa[0]+1 C、&aa[0]++ D、aa+1

1.在C程序中,main函数必须位于程序的最前面【参考答案】错误

2若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变 【参考答案】正确

3逻辑表达式4>2&&1||5<3-!0的值为1. 正确

4 break语句不能终止正在进行的多层循环.【参考答案】正确

5 C语言中三种基本结构:顺序选择循环,其结构内的每个部分都会被执行到.【答案】错误 6数值型数组整体不参加数据处理(即不参加各种运算),参加数据处理的只能是数组的元素. 【参考答案】正确

7 在C语言中,函数名代表函数的入口地址.【参考答案】正确 8宏名有类型,其参数也有类型.【参考答案】错误 9数组名与指针变量是相互等价的. 错误

10 一个共用体变量中不能同时存放其所有成员.【参考答案】 正确 三1int x=2;z=++x+1; 则x的值为__3___.

2当a=1,b=2,c=3时,执行以下程序段后c=__2___. if (a>c) b=a; a=c; c=b;

3设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是__3___. for (x=0,y=0;y!=123&&x<3;x++) scanf (\"%d\4.字符串比较的库函数是_____,只写函数名即可. strcmp

5调用 fopen 函数打开一文本文件,在\"使用方式\"这一项中, 为追加而打开需填入 a 或 a+

【程序设计】在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的平方和,并在fun()函数中输出。 #include \"stdio.h\" void main() { int i,j,s,a[3][3]; int fun(int a[3][3]); void TestFunc(); for(i=0;i<3;i++)

{ for(j=0;j<3;j++) scanf(\"%d\ s=fun(a);printf(\"Sum=%d\\n\ TestFunc();} int fun(int a[3][3])

{ /*********Begin**********/ 【参考代码】 int sum=0,i; for(i=0;i<3;i++)

sum=sum+a[i][i]*a[i][i]; return sum;

/********** End **********/ }

【程序改错】

功能:输入10个数,要求输出这10个数的平均值 #include \"stdio.h\"

float average(float array[10]) {int i; float aver,sum=array[0];

/***********ERROR***********/

for(i=0;i<10;i++) sum=sum+array[i]; aver=sum/10.0; return(aver); }

void main( )

{ /***********ERROR***********/ int score[10],aver ; int i;

printf(\"input 10 scores:\\n\"); for(i=0;i<10;i++)

/***********ERROR***********/ scanf(\"%f\ printf(\"\\n\");

/***********ERROR***********/ aver=average(score[10]);

printf(\"average score is %5.2f\}

【参考答案】for(i=1;i<10;i++) for(i=1;i<=9;i++

【参考答案】float score[10],aver; float aver,score[10]; 【参考答案】scanf(\"%f\ scanf(\"%f\【参考答案】aver=average(score);

【程序填空】有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来 第几号的那位。 #include \"stdio.h\" #define nmax 50 void main()

{ int i,k,m,n,num[nmax],*p;

printf(\"please input the total of numbers:\"); scanf(\"%d\ p=num;

/***********FILL***********/ for(i=0;_____;i++)

/***********FILL***********/ *(p+i)=_____; i=0; k=0; m=0; while(m{ /***********FILL***********/ if(_____!=0) k++; if(k==3)

{ *(p+i)=0; k=0; m++; } i++;if(i==n) i=0; }

/***********FILL***********/

while(_____) p++; printf(\"%d is left\\n\

【参考答案】 ii【参考答案】i+1【参考答案】*(p+i)【参考答案】*p==0

第四套

若有说明:int a[3][4];则数组a中各元素(A)。

A、不能得到确定的初值B、可在程序的编译阶段得到初值0

C、可在程序的运行阶段得到初值0D、可在程序的编译或运行阶段得到初值0 已定义float a; int i;选择正确的输入语句(C ).

A、scanf(\"%6.2f%3d\、scanf(\"%f%s\C、scanf(\"%6f%3d\、scanf(\"%f%d\执行下面程序段后,k的值是:(B ) int k=2; switch(k+1)

{case 3:k+=1;case 4:k--;break; case 5:k*=3;case 6:++k;} A、10 B、2 C、28 D、27

执行下列语句后的输出为(B)。

int j=-1; if(j<=1) printf(\"****\\n\"); else printf(\"%%%%\\n\"); A、%%%% B、****C、有错,执行不正确D、%%%%c 以下程序段中,能够正确地执行循环的是(B )。

A、int s=6; m:if(s<100) exit(0); else s-=2; goto m:

B、int s=6; do s-=2; while(s);C、for(i=1;i>10;i++) D、static int a; while(a) 运行结果是\" 11 12\"的程序段是:请在A处填写正确内容(B )。 for(i=1;i<=2;i++) [A]

A、for(j=1;j<=2;j++)printf(\"%3d\B、{for(j=1;j<=2;j++)printf(\"%3d\C、for(j=1;j<=2;j++)printf(\"%3d\D、{for(j=1;j<=2;j++)printf(\"%3d\

对以下说明语句 int a[10]={6,7,8,9,10}; 的正确理解是(B)。

A、将5个初值依次赋给a[6]至a[10]B、将5个初值依次赋给a[0]至a[4] C、因为数组长度与初值的个数不相同,所以此语句不正确D、将5个初值依次赋给a[1]至a[5] 如果在一个函数中的复合语句中定义了一个变量,以下正确的说法是(C ). A、该变量在本程序范围内均有效B、该变量在主函数中有效 C、该变量只在该复合语句中有效D、该变量在该函数中有效 设有宏定义#define PI 3.14 和#define S(r) PI*r*r,则S(2)的值为(B ). A、6.28B、12.56C、3.14D、9.42 设有以下定义:

int a[10]={1,2,3,4,5,6,7,8,9,10};int *p=a; 则数值为6的表达式是(D ).

A、p+5 B、*p+6 C、*(p+6) D、*p+=5 1.C程序的每行中只能写一条语句错误

2在C语言中,各种类型的整型数据在内存中都占2个字节。错误 3条件表达式x?'a':'b'中,若x=0时,表达式的值为'b'. 正确

4while和do…while循环不论什么条件下它们的结果都是相同的. 错误

5for循环体中遇到continue语句,会转向执行for语句中的条件判断(语句2). 错误

6 int a[3][4]={{1},{5},{9}}; 它的作用是将数组各行第一列的元素赋初值,其余元素值为0。正确

7函数的返回值可以通过函数中的return语句获得。正确

8若有 #define S(a,b) a*b 则语句 area=S(3,2); area的值为6。正确 9指向某一变量的指针,就是该变量的内存地址.正确

10对于不同类型的数据,若想合成一个有机的整体,可以引用结构体进行定义。正确 三填空

1若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量c中的值是 _9____ . c=(a-=(b-5)); c=(a%11)+(b=3);

2当a=3,b=2,c=1;时,执行以下程序段后 b=_____. if(a>b) a=b; if(b>c) b=c; else c=b; c=a; 以下程序的输出结果为_10____, #include \"stdio.h\" void main()

{int a;for(a=0;a<10;a++);printf(\"%d\

4.若有fp=fopen(\"a1.dat\打开文件语句,这个文件的数据是以_____的形式存放在内存中,该文件的使用方式为读/_____。【参考答案】二进制【参考答案】写

【程序设计】题目:用函数求一个N阶方阵右下三角元素的和(包括副对角线上的元素)。 #include \"stdlib.h\"#include \"stdio.h\"#define N 3 int sum(int a[][N])

{ /*********Begin**********/ 【参考代码】 int i,j,k=0;

for(i=0;ifor(j=N-1-i;j/********** End **********/} void main()

{ int a[N][N],i,j; void TestFunc(); for(i=0;i{ for(j=0;j{ a[i][j]=rand()%10+10; //rand函数的功能是产生一个随机整数 printf(\"%3d\ } printf(\"\\n\");

} printf(\"===================\\n\"); printf(\"sum=%5d\\n\ TestFunc(); }【程序改错】

功能:用指针作函数参数,编程序求一维数组中的最大和最小的元素值. #include \"stdio.h\"#define N 10

/***********ERROR***********/ void maxmin(int arr[ ],int *pt1, *pt2, n) { int i;

/***********ERROR***********/ *pt1=*pt2=&arr[0]; for(i=1;i{ /***********ERROR***********/

if(arr[i]<*pt1) *pt1=arr[i]; if(arr[i]<*pt2) *pt2=arr[i]; } }

main( )

{ int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; /***********ERROR***********/ *p1=&a;*p2=&b;

maxmin(array,p1,p2,N);

printf(\"max=%d,min=%d\}

【参考答案】void maxmin(int arr[ ],int *pt1,int *pt2,int n)【参考答案】*pt1=*pt2=arr[0]; 【参考答案】if(arr[i]>*pt1) *pt1=arr[i]; if(*(arr+i)>*pt1)) *pt1=arr[i]; if(*pt1<*(arr+i))) *pt1=arr[i]; if(*pt1功能:产生10个[30,90]区间上的随机整数,然后对其用选择法 进行由小到大的排序。 #include \"stdio.h\"#include \"stdlib.h\" void main()

{ /***********FILL***********/ _____; int i,j,k; int a[10];

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

a[i]=rand()%61+30; //产生[30,90]区间上的随机整数 for(i=0;i<9;i++)

{/***********FILL***********/ _____;

for(j=i+1;j<10;j++) /***********FILL***********/ if(_____) k=j; if(k!=i) { t=a[k];a[k]=a[i]; a[i]=t;} }

/***********FILL***********/ for(_____ )

printf(\"%5d\}

【参考答案】int t【参考答案】k=i

【参考答案】a[k]>a[j] a[j]i;i++ i=0;i<=9;i+=1 第五套

1假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是(C)。 A、2 B、6 C、8 D、7

2已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j 的值为2、k的值为3,以下选项中正确的输入语句是(C)。

A、scanf(\"%d %d %d\、scanf(\"%2d%2d%2d\

C、scanf(\"%d,%d,%d\、scanf(\"i=%d,j=%d,k=%d\3 int a=3,b=2,c=1; if(a>b && b>c)a=b; else a=c;则a的值为(C)。 A、1 B、0 C、2 D、3 4 main()

{int x=1,a=0,b=0; switch (x){ case 0: b++; case 1: a++;case 2: a++;b++; } printf(\"a=%d,b=%d\该程序的输出结果是(D )

A、a=1,b=1B、a=1,b=0C、a=2,b=2D、a=2,b=1 5 以下能计算1×2×3×┈×10的程序段是(C ).

A、do{ i=1;s=1;s=s*i;i++;}while(i>=10) ;B、do{ i=1;s=1;s=s*i;i++;}while(i<=10) ; C、i=1;s=1;do {s=s*i; i++; }while(i<=10) ;D、i=1;s=1; do { s=s*i; i++;}while(i>=10) ; 6针对下列程序段回答问题(B ).

for(t=1;t<=100;t++) {scanf(\"%d\ if(x<0) continue; printf(\"%3d\A、x>=0时什么也不输出B、最多允许输出100个非负整数 C、printf函数永远也不执行D、当x<0时整个循环结束 7 以下程序的运行结果是(B ).

main( ){int i,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf(\"%d,\A、1,5,9 , B、3,5,7, C、3,6,9, D、1,4,7, 8 以下不正确的说法是:C语言规定(C)。

A、实参可以是常量,变量或表达式 B、实参可以为任何类型

C、形参可以是常量,变量或表达式 D、形参应与其对应的实参类型一致 9 在执行\"文件包含\"命令时,下列说法正确的是(A ).

A、作为一个源程序编译,得到一个目标文件.B、一个 include 命令可指定多个被包含文件. C、在编译时作为两个文件联结. D、被包含的文件可以是源文件或目标文件. 10 已定义char str1,str2[10];选择正确的输入语句(C ).

A、scanf(\"%c%s\、scanf(\"%c%s\C、scanf(\"%c%s\、scanf(\"%c%s\选择

1在C程序中,注释说明只能位于一条语句的后面错误 2.x*=y+8 等价于 x=x*(y+8)。正确

3.设o=1,p=2,q=3,则逻辑表达式!(o4.在do-while循环中,当while表达式为\"假\"时,循环就停止了.正确 5 C语言中三种基本结构:顺序、选择、循环都只有一个入口. 正确 6 定义 int x[5],n;则x=x+n;或x++;都是不正确的. 正确

7在一个函数中定义的静态局部变量可以被另一个函数调用. 错误

8如果被包含文件中有全局静态变量,它们在用#include命令的源文件中有效. 正确 9指向某一变量的指针,就是该变量的内存地址. 正确 10 结构体变量的地址与其各成员具有相同的地址. 错误 填空

1.已知 i=5;写出语句 i+=012; 执行后整型变量 i 的十进制值是_15____.

2当a=1,b=2,c=3时,执行以下程序段后a=__3___. if (a>c) b=a; a=c; c=b; 3 若输入字符串:abcde<回车>,则以下while循环体将执行 __0___ 次. 4 while((ch=getchar())=='e') printf(\"*\");

5 数组在内存中占一段连续的存储区,由_____代表它的首地址. 数组名

6 C语言中调用_____函数来关闭文件. fclose

【程序设计】功能:对任意输入的 x,用下式计算并输出 y 的值。 5 x<10 y= 0 x=10 -5 x>10 #include \"stdio.h\" int fun(int n)

{ /*********Begin**********/ int m;

if(n<10) m=5;

else if(n==10) m=0; else m=-5;return m;

/********** End **********/ }

void main () {

int x,y; void TestFunc();printf(\"enter x:\"); scanf(\"%d\

printf(\"x=%d,y=%d\\n\}

【程序改错】计算正整数num的各位上的数字之积。例如:输入252,则输出应该是20。 #include \"stdio.h\" long fun (long num)

{/**********ERROR**********/ long k; do

{ k*=num%10;

/**********ERROR**********/ num\\=10; }while (num); return k; }

main() {ong n;

printf(\"\\nPlease enter a number:\"); /**********ERROR**********/ scanf(\"%ld\

/**********ERROR**********/ printf(\"\\n%ld\\n\

}【参考答案】long k=1;【参考答案】 num/=10; num=num/10;

【参考答案】 scanf(\"%ld\【参考答案】printf(\"\\n%ld\\n\【程序填空】功能:以下程序是用选择法对10个整数按升序排序。 #include \"stdio.h\"

/***********FILL***********/

_____

void main()

{ int i,j,k,t,a[N]; for(i=0;i<=N-1;i++) scanf(\"%d\ { /***********FILL***********/ _____;

/***********FILL***********/ for(j=i+1; _____;j++) if(a[j]/***********FILL***********/ if(_____)

{ t=a[i]; a[i]=a[k]; a[k]=t;} }

printf(\"output the sorted array:\\n\"); for(i=0;i<=N-1;i++) printf(\"%5d\

【参考答案】#define N 10【参考答案】k=i【参考答案】j=j【参考答案】k!=i 第六套

以下叙述中不正确的是(A)。

A、在C程序中,赋值运算符的优先级最低B、在C程序中,j++;是一条赋值语句 C、C程序中的#include和#define均不是C语句D、一个好的程序应该有详尽的注释 若变量已正确定义,执行语句scanf(\"%d,%d,%d \时,正确输入是(A )。 A、20,30,40B、2030,40C、20, 30 40D、20 30 40 int a=1,b=2,c=3; if(a>c)b=a;a=c;c=b;则c的值为(C)。 A、1 B、3 C、2 D、不一定

C语言的if语句中,用作判断的表达式为(A )。

A、任意表达式B、算术表达式C、逻辑表达式D、关系表达式 while(fabs(t)<1e-5) if(!(s/10))break; 循环结束的条件是(B )。 A、s/10==0 B、t>=1e-5 ||t<=-1e-5 && s>-10 && s<10 C、fabs(t)<1e-5 && !(s/10)D、fabs(t)<1e-5

若有语句char x[ ]=\"12345\则正确的描述是(D ).

A、x数组和y数组的长度相同. B、x数组的长度小于y数组的长度. C、x数组等价于y数组. D、x数组的长度大于y数组的长度.

设函数的调用形式如下: f((x1, x2),(y1,y2,y3)),则函数有 (A )个形参. A、2 B、4 C、3 D、5

设有宏定义#define SUB(x,y) (x)*y,且a=3,b=4,则 SUB(a++,b++) 的值为(D ). A、13 B、16 C、20 D、12 下列选项中正确的语句组是(C)。

A、char *s; s={\"Beijing\、char s[8]; s={\"Beijing\C、char *s; s=\"Beijing\";D、char s[8]; s=\"Beijing\"; 判断

1一个C程序只能由一个主函数组成 错误 2 表达式 (j=3, j++) 的值是4. 错误

3 若float x=2.0,y=1.0; , 则条件表达式x>y?1:1.5的值为1.0. 正确 4 continue语句用于终止循环体的本次执行. 正确

5 在循环嵌套中,使用break语句只可以跳出所在循环. 正确

i!=k

6 引用数组元素时,下标可以是整型表达式或整型常量. 正确

7在主调函数中,必须要对被调用函数进行类型说明,否则在编译时会出现错误. 错误 8静态局部变量在整个程序运行期间都不释放. 正确

9下列的定义和赋值是正确的. int x=10,y=20,*p; p=&x; 正确

10共用体类型可以出现在结构体类型定义中,但结构体类型不能出现在共用体类型定义中.错误

四 1int x=2;z=++x+1; 则x的值为__3___.

2 当a=1,b=2,c=3时,执行以下程序段后c=___2__. if (a>c) b=a; a=c; c=b; 3若输入字符串:abcde<回车>,则以下while循环体将执行 _0____ 次. while((ch=getchar())=='e') printf(\"*\");

4 C语言中,数组元素的下标下限为__0___.

5若有以下整型数组aa[10],其值为 9 4 12 8 2 10 7 5 1 3 该数组可用的最小下标值是___0__.

【程序设计】功能:计算并输出给定整数n的所有因子之和(不包括1与自身)。 注意:n的值不大于1000。例如:n的值为855时,应输出704。 #include \"stdio.h\" int fun(int n)

{/********** End **********/ 【参考代码】 int s=0,i;

for(i=2;i*******Begin**********/ }

void main()

{void TestFunc(); printf(\"s=%d\\n\ TestFunc();} void TestFunc()

{ FILE *IN,*OUT; int iIN,iOUT,i; IN=fopen(\"in.dat\ { printf(\"Please Verify The Currernt Dir..It May Be Changed\"); }

OUT=fopen(\"out.dat\

{ printf(\"Please Verify The Current Dir.. It May Be Changed\"); }

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

{ fscanf(IN,\"%d\ fprintf(OUT,\"%d\\n\ fclose(IN); fclose(OUT); }

【程序改错】

功能:求如下表达式:

1 1 1 S = 1 + -- + ----- + ...... + -------------

1+2 1+2+3 1+2+3+......+n

#include \"stdio.h\" void main() { int n; float fun();

printf(\"Please input a number:\"); /**********ERROR**********/

print(\"%d\ printf(\"%10.6f\\n\}

/**********ERROR**********/

fun(int n) { int i,j,t;float s; s=0;

/**********ERROR**********/

while(i=1;i<=n;i++); { t=0; for(j=1;j<=i;j++) t=t+j; /**********ERROR**********/

=s+1/t; } return s;}

【参考答案】scanf(\"%d\【参考答案】float fun(int n) 【参考答案】for(i=1;i<=n;i++) for(i=1;n>=i;i++)【参考答案】s+=1.0/t; s=s+1.0/(float)t; s=s+1.0/t; 【程序填空】功能:百马百担问题:有100匹马,驮100担货,大马驮三担,中 马驮2担,两匹小马驮一担,求大、中、小马各多少匹? #include \"stdio.h\" main()

{ int hb,hm,hl,n=0;

/***********FILL***********/ for(hb=0;hb<=100;hb+=_____) /***********FILL***********/ for(hm=0;hm<=100-hb;hm+=_____)

{ /***********FILL***********/ hl=100-hb-_____;

/***********FILL***********/ if(hb/3+hm/2+2*_____==100) { n++;

printf(\"hb=%d,hm=%d,hl=%d\\n\ } } printf(\"n=%d\\n\}

【参考答案】3【参考答案】2【参考答案】hm【参考答案】hl 第七套

1 在C语言中,要求运算对象必须是整型的运算符是(B)。 A、++ B、% C、!= D、/

3 在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式(C)。 A、只能用逻辑表达式或关系表达式B、只能用关系表达式 C、可用任意表达式D、只能用逻辑表达式

4 C语言的switch语句中case后(C )。

A、可为任何量或表达式B、可为常量或表达式或有确定值的变量及表达式 C、只能为常量或常量表达式D、只能为常量 5 t为int类型,进人下面的循环之前,t的值为0

while( t=1 ) { ……} 则以下叙述中正确的是( C)。 A、循环控制表达式的值为0 B、循环控制表达式不合法 C、循环控制表达式的值为1 D、以上说法都不对 6 下面有关 for 循环的正确描述是(C )。

A、for 循环是先执行循环体语句,后判断表达式 B、在 for 循环中,不能用 break 语句跳出循环体

C、for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 D、for 循环只能用于循环次数已经确定的情况

7 char a[]=\"This is a program.\";输出前5个字符的语句是(B)。

A、puts(a); B、printf(\"%5s\、printf(\"%s\ D、a[5*2]=0;puts(a); 8 下列说法中错误的是(A )。

A、如果在对数组进行初始化时,给定的数据元素个数比数组元素个数少时,多余的数组元素会被自动初始化为最后一个给定元素的值B、一个数组只允许存储同种类型的变量 C、数组的名称其实是数组在内存中的首地址

D、当数组名作为参数被传递给某个函数时,原数组中的元素的值可能被修改 9 下列形式,不属于编译预处理命令的是(D ).

A、#ifdef M B、#undef M C、#if (M>1) D、while (M>1)

10 设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是(C ). A、p1=p2; B、k=*p1*(*p2); C、p2=k; D、k=*p1-*p2; 判断

1 一个C程序的执行是从本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 错误

2 整型变量在可输出字符范围内,可以和字符型数据相互转化. 正确 3 设f=1,m=2,n=3,则逻辑表达式!(f==n)&&(f==m)&&0的值为0. 正确 4 do-while循环由do开始,while结束,循环体可能一次也不做。 错误 5 因为程序包含循环结构,所以程序算法可以包含无限的操作步骤. 错误 6 对静态数组的初始化是在编译阶段完成的. 正确

7 若一个函数中没有return语句,则意味着该函数没有返回值. 错误

8 若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。 【参考答案】错误

9用指针取值比用数组名取值速度要快.正确

10 在定义结构体变量时,不允许对其整体赋初值. 正确 填空

1 设x的值为15,n的值为2,则表达式x%=(n+=3)运算后x的值是0_____.

2 当a=1,b=2,c=3时,执行以下程序段后c=2_____. if (a>c) b=a; a=c; c=b; 3 设i,j,k均为int型变量,则执行完下面的for循环后,k的值为_10____. for(i=0,j=10;i<=j;i++,j--) k=i+j;

4若有以下数组a,数组元素:a[0]~a[9],其值为 9 4 12 8 2 10 7 5 1 3 数组元素a[3]的值是_8____.

5从函数的形式上看,函数分为无参函数和_____两种类型. 有参函数

【程序设计】功能:求x到y之间的奇数和(包括x和y)。 #include \"stdio.h\" int fun(int x,int y)

{ /*********Begin**********/ 【参考代码】 int i,s=0;

for(i=x;i<=y;i++) if(i%2!=0) s=s+i; return s;

/********** End **********/ }

main() { int s;

s=fun(1,1999); printf(\"s=%d\\n\ TestFunc();

}【程序改错】功能:实现3行3列矩阵的转置,即行列互换。 #include \"stdio.h\"

void fun(int a[3][3],int n) { int i,j,t;

for(i=0;i/**********ERROR**********/ scanf(\"%d\ for(i=0;i{ for(j=0;jfor(i=0;i/**********ERROR**********/ for(j=0;j{ /**********ERROR**********/ a[i][j]=t;

a[i][j]=a[j][i];

/**********ERROR**********/ t=a[j][i];

} for(i=0;ivoid main()

{ int b[3][3];fun(b,3);}

【参考答案】scanf(\"%d\ scanf(\"%d\【参考答案】 for(j=0;jj;j++) 【参考答案】t=a[i][j]; 【参考答案】a[j][i]=t;

【程序填空】功能:产生10个[30,90]区间上的随机整数,然后对其用选择法 进行由小到大的排序。 #include \"stdio.h\"#include \"stdlib.h\" void main()

{ /***********FILL***********/ _____; int i,j,k; int a[10];

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

a[i]=rand()%61+30; //产生[30,90]区间上的随机整数 for(i=0;i<9;i++)

{ /***********FILL***********/ _____;

for(j=i+1;j<10;j++)

/***********FILL***********/ if(_____) k=j; if(k!=i)

{ t=a[k];a[k]=a[i]; a[i]=t; } }

/***********FILL***********/

for(_____ ) printf(\"%5d\

【参考答案】int t【参考答案】k=i【参考答案】a[k]>a[j] a[j]i;i++ 第八套

若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是(B)。 A、6 B、-12 C、9 D、-3 求平方根函数的函数名为(C)。 A、abs B、pow C、sqrt D、cos

int a=1,b=2,c=3; if(a>b)a=b; if(a>c)a=c; 则a的值为(C)。 A、3 B、2 C、1 D、不一定 执行下面程序段后,f的值是:( A) int f=5; switch(f)

{case 5:f+=1; case 6:f--; case 7:f*=3;break; case 8:++f;} A、15 B、10 C、28 D、9

在以下给出的表达式中,与 do--while(E)语句中的(E)不等价的表达式是(B )。 A、(E>0||E<0) B、(E==0 ) C、(!E==0) D、(E!=0)

能够完成求出两个正整数a,b最小公倍数max的程序段.请在下划线处填写正确内容(D )。 if(a>=b) t=a; else t=b;

for(i=t; ;i++) if(i%a==0&&i%b==0) ___________ printf(\"%d\

A、{max=i;continue;} B、max=i;break; C、max=i;continue; D、{max=i;break;} 以下能对一维数组a进行正确初始化的语句是(B)。

A、int a[10]={}; B、int a[]={0}; C、int a[10]={10*1}; D、int a[10]=(0,0,0,0,0) 以下只有在使用时才为该类型变量分配内存的存储类说明是(D)。

A、auto和 static B、register和 static C、extern和 register D、auto和 register file1.c中有命令,#include ,若file2.c中有全局静态变量a,则(B ).

A、a在file1.c中应用extern说明.B、a在file1.c中有效,不必用extern说明. C、a在file1.c中不生效 D、a在file1.c和file2.c中均不生效. 在说明语句:int *f();中,标识符f代表的是(A)。

A、一个返回值为指针型的函数名B、一个用于指向函数的指针变量

C、一个用于指向一维数组的行指针D、一个用于指向整型数据的指针变量 判断

1 一个C程序只能由一个主函数组成 错误 2 语句scanf(\"%7.2f\是合法的。 错误

3 设u=1,v=2,w=3,则逻辑表达式u||v-w&&v+w的值为0. 错误

4 对于for(表达式1;表达式2;表达式3)语句来说,continue语句意味着转去执行表达式2.错误 5 在循环嵌套中,使用break语句可以跳出所有循环. 错误

6 定义一维数组的形式为:类型说明数组名[表达式],其中表达式可以是正整型常量表达式、字符常量表达式. 正确

7 数组名作为函数调用时的实参,实际上传递给形参的是数组第一个元素的值. 错误 8 计算机编译系统对宏定义在编译时进行语法检查. 错误 9 任何一个地址前缀*运算符后都等同于一个变量. 正确 10 typedef可以定义生成新的数据类型. 错误

填空 1在C语言中,字符的比较就是对它们的_____进行比较。ASCII

2 当a=1,b=2,c=3时,执行以下程序段后a=_3__. if (a>c) b=a; a=c; c=b; 3 以下程序的输出结果为_10____,

#include \"stdio.h\" void main() {int a;for(a=0;a<10;a++);printf(\"%d\4 字符串比较的库函数是_____,只写函数名即可. strcmp

5 函数的_____调用是一个函数直接或间接地调用它自身. 递归 【程序设计】功能:实现两个整数的交换。

例如:给a和b分别输入:60和65,输出为:a=65 b=60 #include \"stdio.h\" #include \"conio.h\" void fun(int *a,int *b)

{ /*********Begin**********/ 【参考代码】 int t;

t=*a;*a=*b;*b=t;

/********** End **********/ } main() { int a,b;

void TestFunc(); printf(\"Enter a,b:\");

scanf(\"%d%d\ fun(&a,&b);

printf(\"a=%d b=%d\\n\ TestFunc(); }

【程序改错】用指针作函数参数,编程序求一维数组中的最大和最小的 元素值. #include \"stdio.h\" #define N 10

/***********ERROR***********/ void maxmin(int arr[ ],int *pt1, *pt2, n) { int i;

/***********ERROR***********/ *pt1=*pt2=&arr[0]; for(i=1;i{ /***********ERROR***********/ if(arr[i]<*pt1) *pt1=arr[i]; if(arr[i]<*pt2) *pt2=arr[i]; } }

main( )

{ int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; /***********ERROR***********/ *p1=&a;*p2=&b;

maxmin(array,p1,p2,N);

printf(\"max=%d,min=%d\}

【参考答案】void maxmin(int arr[ ],int *pt1,int *pt2,int n)【参考答案】*pt1=*pt2=arr[0]; 【参考答案】if(arr[i]>*pt1) *pt1=arr[i];【参考答案】p1=&a;p2=&b; 【程序填空】 ***** ***** ***** ***** *****

#include \"stdio.h\" void main ( )

{ char a[5][9]={\" \ int i,j;

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

/***********FILL***********/ for(j=i; _____;j++) a[i][j]='*';

/***********FILL***********/ for(_____;i<5;i++)

{ for(j=0;j<9;j++)

/***********FILL***********/ printf(\"%c\

/***********FILL***********/ _____; } }

【参考答案】jj【参考答案】i=0【参考答案】a[i][j]【参考答案】printf(\"\\n\") 第九套

已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'\\101'是(A)。

A、字符A B、字符a C、字符e D、非法的常量 下面程序的 正确输出结果是(A ).(规定用U表示空格) main()

{ float x=5.783,y= -10.2345; printf (\"x=%-8.2f ,y=%-8.2f \\n\A、x=5.78UUUU,y=-10.23UUB、x=5.78,y=-10.23 C、5.78,-10.23D、x=UUUU5.78,y=UU-10.23 执行下面程序段后,i的值是(A ).

int i=10;switch(i){case 9: i+=1;case 10: i--; case 11: i*=3; case 12: ++i;} A、28 B、10 C、9 D、27

请写出下面程序的运行结果( D)。 #include \"stdio.h\" void main()

{ int k=0;char c='A'; do {

switch(c++){ case 'A':k++;break; case 'B':k--;default:k=k/3; } k++; } while(c<'C');}

A、k=0 B、k=2 C、k=4 D、k=1 以下程序的执行结果是(B )。

void main() { int x = 0, s = 0; while( !x != 0 ) s += ++x; printf( \"%d \A、语法错误 B、1 C、0 D、.无限循环

若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是(A)。 A、3 B、无确定值 C、4 D、2

用户定义的函数不可以调用的函数是(D)。

A、本文件外的 B、本函数下面定义的 C、非整型返回值的 D、main函数 以下叙述正确的是(C)。

A、可以把if定义为用户标识符,但不能把define定义为用户标识符 B、define和if都不能定义为用户标识符

C、可以把define定义为用户标识符,但不能把if定义为用户标识符 D、可以把define和if定义为用户标识符

下面选择中正确的赋值语句是(设char a[5],*p=a;)(A)。 A、p=\"abcd\";B、a=\"abcd\";C、*a=\"abcd\";D、*p=\"abcd\"; 判断

1 一个C程序的执行是从本程序的main函数开始,到本程序文件的最后一个函数结束

错误

2 若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变 正确

3 已知a=3,b=4,c=5,则逻辑表达式!(a+b)+c-1 && b+c/2的值为0. 错误 4 在do-while循环中,任何情况下都不能省略while. 正确 5 do-while循环中,根据情况可以省略while. 错误

6 设有数组定义: char array [ ]=\"hello\"; 则数组 array所占的内存空间为5字节. 错误

7 数组名作为函数调用时的实参,实际上传递给形参的是数组全部元素的值. 错误 8 如果字符串与宏名相同,则不管其是否在双括号内,都要进行宏替换. 错误 9 定义 int d[ ]={1,2,3,4},x,*m=d;,则执行x=*m++后,x的值是2. 错误 10 共用体变量所占的内存长度是各成员占的内存长度之和. 错误 填空

1设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为_1____.

2当a=3,b=2,c=1;时,执行以下程序段后 c=__2___. if(a>b) a=b; if(b>c) b=c; else c=b; c=a; 3以下程序段要求从键盘输入字符,当输入字母为'Y' 时,执行循环体,则下划线处应填写_____. ch=getchar(); while(ch ____ 'Y' ch=getchar(); 【参考答案】==

4 执行语句char str[81]=\"abcdef\";后,字符串str结束标志存储在数组元素str[__6___] 中. 5设有以下共用体类型说明和变量定义,则变量a在内存所占字节数是 _16__。 union stud { char num[6]; float s[4]; double ave; } a,*p;

【程序设计】编写函数fun求一个字符串的长度,在main函数 输入字符串,并输出其长度。 #include \"stdio.h\" int fun(char p[])

{/*********Begin**********/ 【参考代码】 int n=0;

while(p[n]!=’\\0’) n++; return n;

/********** End **********/ }

void main() { char a[20]; void TestFunc(); int len;

printf(\"please input a string:\\n\"); gets(a); len=fun(a);

printf(\"The string's length is:%d\\n\ TestFunc(); }

【程序改错】在一个已按升序排列的数组中插入一个数,插入后,数 组元素仍按升序排列。 #include \"stdio.h\"#define N 11 void main()

{ int i,j,t,number,a[N]={1,2,4,6,8,9,12,15,149,156}; printf(\"please enter an integer to insert in the array:\\n\"); /**********ERROR**********/ scanf(\"%d\

printf(\"The original array:\\n\"); for(i=0;i/**********ERROR**********/ for(i=N-1;i>=0;i--) if(number<=a[i])

/**********ERROR**********/ a[i]=a[i-1]; else

{ a[i+1]=number;

/**********ERROR**********/ exit; }

if(number【参考答案】scanf(\"%d\【参考答案】for(i=N-2;i>=0;i--) 【参考答案】a[i+1]=a[i];【参考答案】break;

【程序填空】利用全局变量计算长方体的体积及三个面的面积。 #include \"stdio.h\" int s1,s2,s3;

int vs(int a,int b,int c) { int v;

/***********FILL***********/ v=_____; s1=a*b;

/***********FILL***********/ s2=_____; s3=a*c; return v; }

main()

{ int v,l,w,h;

printf(\"\\ninput length,width and height: \"); /***********FILL***********/ scanf(\"%d%d%d\ /***********FILL***********/ v=_____;

printf(\"v=%d s1=%d s2=%d s3=%d\\n\

【参考答案】a*b*c 【参考答案】b*c【参考答案】 &l【参考答案】vs(l,w,h) 第十套 以下不正确的叙述是(B)。

A、在C程序中所用的变量必须先定义后使用

B、当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值 C、程序中,APH和aph是两个不同的变量

D、若a和b类型相同,在执行了赋值语句a=b;后b中的值将放入a中,b中的值不变 设:long w=65535,t=7654321;根据下面的输出结果,正确的程序段是(C ). w=65535,t=7654321 end

A、printf(\"w=%5d,t=%7d\\n\B、printf(\"w=%5ld,t=%7ld\C、printf(\"w=%5ld,t=%7ld\\n\D、printf(\"w=%5u,t=%7u\\n\不合法的if语句是:(D )

A、if(表达式) 语句1 else 语句2B、if(表达式) 语句

C、if(表达式1) 语句1 else if(表达式2)语句2 else 语句3 D、if 关系表达式 语句1 else 语句2

在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式(C)。 A、只能用逻辑表达式或关系表达式B、只能用关系表达式 C、可用任意表达式 D、只能用逻辑表达式

以下语句中,循环次数不为10次的语句是(A )。 A、for(i=1;i<10;i++);

B、i=1;do{i++;}while(i<=10); C、i=10;do{i- -;}while(i>0); D、i=10;while(i>0){--i;} 下面程序的运行结果是( A). #include \"stdio.h\" void main() { int a=1,b=10;

do{ a++; b-=a; }while(b-->0); printf(\"a=%d,b=%d\

A、a=4,b=-2 B、a=4,b=-1 C、a=2,b=-1 D、a=2,b=-2 若有说明: int a[][4]={0,0};则下面不正确的叙述是(A)。

A、有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

B、数组a的每个元素都可得到初值0 C、二维数组a的第一维大小为1

D、因为二维数组a中第二维大小的值除经初值个数的商为1,故数组a的行数为1 以下错误的描述是:函数调用可以(D)。

A、出现在执行语句中B、做为一个函数的实参 C、出现在一个表达式中D、做为一个函数的形参 下列说法中正确的是(B ).

A、函数调用不占运行时间,只占编译时间. B、宏替换不占运行时间,只占编译时间. C、有参数的宏定义,就是函数. D、在定义宏时,宏名与带参数的括弧之间可以加空格. 与实际参数为实型数组名相对应的形式参数不可以定义为(C)。 A、float *a; B、float (*a)[3]; C、float a; D、float a[];

判断1一个C程序的执行是从本程序的main函数开始,到main函数结束 正确 2 关系运算符<= 与 == 的优先级相同。 错误

3 已知x=2,y=2, 执行分支语句 if(x==y) y=1; else y=-1;后结果为-1. 错误

4 break语句能够终止当前进行的多层循环. 错误

5 C语言中三种基本结构:顺序、选择、循环都只有一个出口. 正确

6 int a[3][4]={{1},{5},{9}}; 它的作用是将数组各行第一列的元素赋初值,其余元素值为0。 【参考答案】 正确

7 函数的返回值可以通过函数中的return语句获得。 正确 8 包含文件是可以嵌套的. 正确

9 假设有int a[10], *p;则p=&a[0]与p=a等价 正确

10共同体变量所占的内存长度等于最长的成员的长度。 正确

填空 1 若a是int型变量,则计算表达式 a=25/3%3 后a的值为__2___.

2当a=3,b=2,c=1;时,执行以下程序段后 a=_2____. if(a>b) a=b; if(b>c) b=c; else c=b; c=a; 3 以下do-while语句中循环体的执行次数是_____. a=10; b=0; do { b+=2; a-=2+b; } while (a>=0);

4 数组在内存中占一段连续的存储区,由_____代表它的首地址. 数组名

5 若有以下整型数组aa[10],其值为 9 4 12 8 2 10 7 5 1 3 该数组的元素中,数值最小的元素的下标值是___8__. 【程序设计】

请写一函数fun,该函数的功能是:把数组a中的数按从大到小的顺序排列。数组的值从主函数中输入,排序结果也在主函数中输出。 #include #define N 10

void fun(int a[ ], int n)

{ /*********Begin**********/ int i,j,t;

for (i=0;i{ t=a[j]; a[j]=a[j+1];a[j+1]=t ; } } }

/********** End **********/ }

void main( ) { int i=0;

int a[N]={45,34,78,38,87,98,23,67,76,56}; FILE *OUT; fun(a,10);

printf(\"\\n排序后的结果为:\\n\"); for(i=0;i<=9;i++) printf(\"%5d\ printf(\"\\n\");

if((OUT=fopen(\"out.dat\ printf(\"写入文件失败!\"); for(i=0;i<=9;i++)

fprintf(OUT,\"%d\\n\ fclose(OUT);

}

【程序改错】功能:将一个字符串中的大写字母转换成小写字母。 例如:输入aSdFG输出为asdfg。 #include \"stdio.h\"

/**********ERROR**********/ bool fun(char *c)

{ if(*c<='Z'&&*c>='A')*c-='A'-'a'; /**********ERROR**********/ fun= c; }main()

{ /**********ERROR**********/ char s[81],p=s; gets(s); while(*p)

{ *p=fun(p);

/**********ERROR**********/ puts(*p); p++; }

putchar('\\n'); }

【参考答案】 char fun(char *c)【参考答案】return *c;

【参考答案】char s[81],*p=s;【参考答案】putchar(*p); printf(\"%c\【程序填空】

功能:求两个非负整数的最大公约数和最小公倍数。 #include \"stdio.h\" main()

{ int m,n,r,p,gcd,lcm; scanf(\"%d%d\ if(m/***********FILL***********/ while(_____ )

{ /***********FILL***********/ m=n;n=r; _____; }

/***********FILL***********/ gcd=_____; lcm=p/gcd;

/***********FILL***********/ printf(\"gcd=%d,lcm=%d\\n\}

【参考答案】r!=0 r【参考答案】 r=m%n r=m-m/n*n

【参考答案】 n【参考答案】gcd,lcm n,lcm

第十一套

若定义:int a=7;float x=2.5,y=4.7;则表达式 x+a%3*(int)(x+y)%2/4的值是:( D). A、2.750000 B、0.000000 C、3.500000 D、2.500000

语句printf(\"a\\bre\\'hi\\'y\\\\\\bou\\n\");的输出结果是(B)(说明:'\\b'是退格符)。 A、a\\bre\\'hi\\'y\\\\\\bou B、re'hi'you C、a\\bre\\'hi\\'y\\bou D、abre'hi'y\\bou 已知键盘输入a=4,b=3,下面程序输出的结果是(C ). main() { int a,b,s;

scanf(\"a=%d,b=%d\

s=a; if(aA、9 B、13 C、16 D、15 执行下面程序段后,i的值是(A ).

int i=10;switch(i){case 9: i+=1;case 10: i--; case 11: i*=3; case 12: ++i;} A、28 B、10 C、9 D、27

从键盘输入的整数中找出最小值min,输入0时结束.请在A处填写正确语句( D)。 #include \"stdio.h\" main()

{ int min=0,a; do{

scanf(\"%d\ printf(\"%d\A、a=0 B、a==0 C、a>0&&a<0 D、a!=0 下面程序的运行结果是:(B )。 #include \"stdio.h\" void main()

{ int x,i; for(i=1;i<=100;i++)

{ x=i;if(++x%2==0) if(++x%3==0) if(++x%7==0) printf(\"%d\A、4284 B、2870 C、3981 D、2668 与下面程序段对应的正确输入语句是(C ). void main() {int i;

char a[10]; for(i=0;i<10;i++)____;.......}

A、scanf(\"%s\ B、scanf(\"%s\、scanf(\"%c\ D、scanf(\"%c\以下函数的类型是(C )。 fff(float x) { return 5;}

A、void 类型B、与参数x的类型相同C、int类型D、无法确定 设有以下宏定义: #define M 4 #define T(t) ((M+1)*t) 则执行语句:y=2*(M+T(4+1));后,y的值为(B ). A、28 B、50 C、出错 D、58 下面判断正确的是(D)。

A、char c[4]=\"abc\等价于 char c[4]=d[4]=\"abc\"; B、char str[10]={\"china\等价于char str[10];str[]={\"china\

C、char *a=\"china\";等价于 char *a;*a=\"china\";D、char *s=\"china\";等价于 char *s;s=\"china\"; 判断

c程序总是从程序的第一条语句开始执行. 错误

在C语言中,各种类型的整型数据在内存中都占2个字节。错误 条件表达式x?'a':'b'中,若x=0时,表达式的值为'b'. 正确 在do-while循环中,根据情况可以省略while. 错误

对于continue 和break这两条语句,均可用来实现循环体的中止. 错误 数组的首地址不一定是第一个数组元素的地址. 错误 函数调用时,要求实参与形参的个数必须一致,对应类型一致. 正确

被包含文件是在编译时先单独生成目标文件,然后连接到可执行文件中去. 错误 数组名与指针变量是相互等价的. 错误

结构体变量的成员可以象普通变量一样进行各种运算. 正确 填空

1 若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量c中的值是 __9___ . c=(a-=(b-5)); c=(a%11)+(b=3);

2 当a=1,b=2,c=3时,执行以下程序段后a=3_____. if (a>c) b=a; a=c; c=b; 3 若所用变量均已正确定义,则执行下面程序段执行后,输出的值是_____. for(i=0 ; i<2 ; i++ ) printf(\"YES\"); printf(\"YES\"); YESYESYES 4 若有定义:int a[6]={2,4,6,8,10,12};,则*(a+1)的值是__4___.

5 如果函数不要求返回值,可用_____来定义函数为空类型. void 【程序设计】

题目:用while语句求1~n的累计和。 #include void TestFunc(); int fun(int n)

{/*********Begin**********/ 【参考代码】 int i=1,sum=0; while(i<=n)

{ sum=sum+i; i++; } return sum;

/********** End **********/ }

void main()

{ int sum = 0; sum=fun(100);

printf (\"sum = %d\\n\ TestFunc(); }

void TestFunc()

{ FILE *IN,*OUT; int i;

int iIN,iOUT;

IN=fopen(\"in.dat\

if(IN==NULL)

{ printf(\"Please Verify The Currernt Dir..It May Be Changed\"); } OUT=fopen(\"out.dat\ if(OUT==NULL)

{ printf(\"Please Verify The Current Dir.. It May Be Changed\"); }

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

{ fscanf(IN,\"%d\ iOUT=fun(iIN);

fprintf(OUT,\"%d\\n\ } fclose(IN); fclose(OUT);}

【程序改错】功能:将字符串s中最后一次出现的子字符串t1替换成字符串t2, 所形成的新串放在w所指的数组中,在此处,要求t1和t2 所指字符串的长度相同。 例如:当s所指字符串中的内容为\"abcdabfabc\",t1中的内容为\"ab\",t2中的内容为\"99\"时,结果w所指数组中的内容应为\"abcdabf99c\"。

#include \"conio.h\"#include \"stdio.h\" #include \"string.h\" int fun (char *s, char *t1, char *t2 , char *w) { int i; char *p , *r, *a; strcpy( w, s );

/**********ERROR**********/ while ( w )

{ p = w; r = t1; while ( *r )

/**********ERROR**********/ if ( *r = *p ) {r++; p++; } else break;

/**********ERROR**********/ if ( *r == '/0' ) a = w; w++; } r = t2;

while ( *r )

{ /**********ERROR**********/ a = *r; a++; r++; }} main()

{ char s[100], t1[100], t2[100], w[100];

printf(\"\\nPlease enter string S:\"); scanf(\"%s\ printf(\"\\nPlease enter substring t1:\"); scanf(\"%s\ printf(\"\\nPlease enter substring t2:\"); scanf(\"%s\ if ( strlen(t1)==strlen(t2) ) { fun( s, t1, t2, w);

printf(\"\\nThe result is : %s\\n\ }

else printf(\"\\nError : strlen(t1) != strlen(t2)\\n\");}

【参考答案】while (*w) while (*w!=0) for (;*w!='\\0';)【参考答案】if (*r==*p)

【参考答案】 if (*r=='\\0') a=w; if (*r==0 ) a=w; if(!*r) a=w;【参考答案】*a=*r; 第十二套 下列正确的标识符是(C ).

A、a+b B、6a C、_do D、%y

执行以下程序段后,输出结果和a的值是(B)。 int a=10; printf(\"%d\

A、11 和 10 B、10 和 11 C、11 和 11 D、10 和 10 以下不正确的if语句形式是(B)。

A、if(xy&&x!=y); D、if(x==y) x+=y;

int a=3,b=2,c=1; if(a>b && b>c)a=b; else a=c; 则a的值为(C)。 A、1 B、0 C、2 D、3

对for(表达式1; ;表达式3)可以理解为(C ).

A、for(表达式1;表达式3;表达式3) B、for(表达式1;表达式1;表达式3) C、for(表达式1;1;表达式3) D、for(表达式1;0;表达式3) 运行结果是\" 11 12\"的程序段是:请在A处填写正确内容(B )。 for(i=1;i<=2;i++) ___A___

A、for(j=1;j<=2;j++)printf(\"%3d\B、{for(j=1;j<=2;j++)printf(\"%3d\C、for(j=1;j<=2;j++)printf(\"%3d\D、{for(j=1;j<=2;j++)printf(\"%3d\static char str[10]=\"China\";数组元素个数为(D)。 A、6 B、9 C、5 D、10 以下程序的输出结果是:( C). fun(int x, int y, int z) { z=x*x+y*y; }main( )

{ int a=31;fun(5,2,a); printf(\"%d\ a);} A、无定值 B、29 C、31 D、0 文件包含中,被包含文件(B ).

A、可以是可执行文件.B、可以嵌套其它文件.

C、可以是目标文件或源文件.D、必须用\".h\"为后缀. 下列程序段的输出结果是:(C ). void fun( int *x, int *y)

{ printf(\"%d %d\main( )

{ int x=1, y=2; fun(&y, &x);printf(\"%d %d\A、2 1 1 2 B、1 2 3 4 C、2 1 4 3 D、1 2 1 2 判断

在C程序中,main函数必须位于程序的最前面 错误 表达式 (j=3, j++) 的值是4. 错误

已知a=3,b=4,c=5,则逻辑表达式a||b+c && b-c的值为0. 错误 循环结构中的continue语句是使整个循环终止执行 错误 在实际编程中,do-while循环完全可以用for循环替换. 正确 引用数组元素时,数组元素下标必须是整型常量. 错误

如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。正确 带参数的宏定义不是进行简单的字符串替换,还要进行参数替换. 正确 下列的初始化的方式是正确的吗?char st[10]; st=\"string\"; 错误 在定义结构体变量时不允许对它赋初值. 错误 填空

1int a=1,b=2,c=3; 执行语句a=b=c;后a的值是_3____.

2当a=3,b=2,c=1;时,执行以下程序段后 c=2_____. if(a>b) a=b; if(b>c) b=c; else c=b; c=a; 3设i,j,k均为int型变量,则执行完下面的for循环后,k的值为_10____. 4 for(i=0,j=10;i<=j;i++,j--) k=i+j;

5 static int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};其中a[1][2]的值为__6___.

6 结构体是不同数据类型的数据集合,作为数据类型, 必须先说明结构体_____,再说明结构体变量. 类型

【程序设计】将主函数中输入的字符串反序存放。例如:输入字符串\"abcdefg\",则应输出\"gfedcba\"。

#include \"stdio.h\" #include \"string.h\" #include \"conio.h\" #define N 81

void fun(char str[],int n)

{ /*********Begin**********/ 【参考代码】 int i,j; char c;

for(i=0,j=n-1;i} /********** End **********/} void main()

{ void TestFunc(); char s [N]; int l;

printf(\"input a string:\");gets(s); l=strlen(s); fun(s,l);

printf(\"The new string is :\");puts(s); TestFunc(); } fclose(OUT);}

【程序改错】先从键盘上输入一个3行3列矩阵的各个元素的值,然后输 出主对角线上的元素之和sum。 #include \"stdio.h\" int fun()

{ int a[3][3],sum; int i,j;

/**********ERROR**********/ a=0;

for(i=0;i<3;i++) for(j=0;j<3;j++)

/**********ERROR**********/ scanf(\"%d\ for(i=0;i<3;i++)

/**********ERROR**********/ sum=sum+a[i][j];

/**********ERROR**********/ printf(\"sum=%f\\n\}

void main() { fun();}

【参考答案】sum=0;【参考答案】scanf(\"%d\

【参考答案】sum=sum+a[i][i];【参考答案】printf(\"sum=%d\\n\ 第十三套

以下运算符中优先级最低的是(C)。 A、&& B、| C、|| D、&

已定义两个字符数组a,b,则以下正确的输入格式是( B )。

A、scanf(\"%s%s\ B、scanf(\"%s%s\ C、get(a, b); D、gets(\"a\"),gets(\"b\"); C语言的if语句中,用作判断的表达式为(A )。

A、任意表达式B、算术表达式C、逻辑表达式D、关系表达式 不合法的if语句是:(D )

A、if(表达式) 语句1 else 语句2 B、if(表达式) 语句 C、if(表达式1) 语句1 else if(表达式2)语句2 else 语句3 D、if 关系表达式 语句1 else 语句2 以下不是无限循环的语句为(D )。 A、while(1){x++;} B、for(;;x++=i);

C、for(i=10;;i--) sum+=i; D、for(y=0,x=1;x>++y;x=i++) i=x; 语句while(!E);中的表达式!E等价于( D)。 A、E==1 B、E!=0 C、E!=1 D、E==0

若有说明 int a[3][4];则对a数组元素的正确引用是(C)。 A、a[1,3] B、a[2][4] C、a[1+1][0] D、a(2)(1) 本类型变量做函数参数, 实参和对应的形参(B ). A、不占用存储单元B、各自占用独立的存储单元 C、同名时才能共用存储单元D、共占用一个存储单元 已知有宏定义#define F(a) a*(a+2),则F(4+3)的值为(D ). A、24 B、15 C、63 D、31

int a[10]; 给数组a的所有元素分别赋值为1、2、3、……的语句是(D)。 A、for(i=1;i<11;i++)a[i]=i; B、for(i=1;i<11;i++)a[0]=1; C、for(i=1;i<11;i++)a[i+1]=i; D、for(i=1;i<11;i++)a[i-1]=i;

C程序的每行中只能写一条语句 错误

若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28。 错误 错误 do-while的循环体不能是复合语句. 错误 continue能够终止当前进行的多层循环. 错误

若有定义 int a[10];则 for (i=0;i<=10;i++) a[i]=i;编译时无语法错误. 正确 C语言中,若对函数的类型未加显示说明,则函数的类型是不确定的. 错误 C程序中有调用关系的所有函数必须放在同一个源程序文件中。 错误

设有定义: int a[ ]={5,8,7,6,2,7,3}; int *p=&a[1];则 表达式 (*--p)++等同于a[0]++. 正确 不能直接整体引用结构体变量,而只能引用结构体最底层成员变量. 正确

1 表达式 a+=b 相当于表达式_____.a=a+b

2 当a=3,b=2,c=1;时,执行以下程序段后 c=__2___. if(a>b) a=b; if(b>c) b=c; else c=b; c=a;

3 设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是_3____. for (x=0,y=0;y!=123&&x<3;x++) scanf (\"%d\4 连接字符串的函数是_____,只写函数名即可. strcat

下面语句的功能是从一文本文件中读入一个数据(数据保存格式为:XXXX)到一整型变量i中,请填空,_____(fp,\"_____\; fscanf %4d 【程序设计】

功能:从键盘输入一个大于3的整数,调用函数fun判断其是否素数,然后在main函数中输出相应的结论 信息。例如:7是素数,8不是素数。请编写fun函数。素数是 仅能被1和自身整除的数。 #include \"stdio.h\"

#include \"math.h\" int fun(int n)

{ /*********Begin**********/ int i;int j;j= 1; for(i=2;i/********** End **********/ }

void main()

{ void TestFunc(); int m,flag;

printf(\"input an integer:\"); scanf(\"%d\ flag=fun(m); if(flag)

printf(\"%d is a prime.\\n\ else

printf(\"%d is not a prime.\\n\ TestFunc(); }

【程序改错】

功能:给定n个实数,输出平均值,并统计在平均值以下(含平均值)的实数个数。例如:n=6时,输入23.5, 45.67, 12.1, 6.4,58.9, 98.4所得平均值为40.828335,在平均值以下的实数个数应为3。 #include \"stdio.h\" int fun(float x[],int n) { int j,c=0;

/**********ERROR**********/ float j=0;

/**********ERROR**********/ for(j=0;j<=n;j++) xa+=x[j]; xa=xa/n;

printf(\"ave=%f\\n\

/**********ERROR**********/ for(j=0;j<=n;j++)

if(x[j]<=xa) c++;

/**********ERROR**********/ return xa; }

void main()

{ float x[]={23.5,45.67,12.1,6.4,58.9,98.4}; printf(\"%d\\n\}

【参考答案】float xa=0;【参考答案】for(j=0;j【程序填空】功能:分别求出一批非零整数中的偶数、奇数的平均值,用零作为终止标记。 #include \"stdio.h\" main()

{ int x,i=0,j=0;

float s1=0,s2=0,av1,av2; scanf(\"%d\

/***********FILL***********/ while(_____)

{ if(x%2==0) {s1=s1+x;i++;} /***********FILL***********/ _____

{ s2=s2+x;j++;}

/***********FILL***********/ _____; }

if(i!=0) av1=s1/i; else av1=0; if(j!=0)

/***********FILL***********/

_____ ;

else av2=0;

printf(\"oushujunzhi:%7.2f,jishujunzhi:%7.2f\\n\【参考答案】x!=0【参考答案】else else if(x%2==1) 【参考答案】scanf(\"%d\【参考答案】av2=s2/j 第十四套

已知字母A的ASCII码为十进制数65,且c为字符型,则执行语句c='A'+'6'-'3';后,c中的值为:( D).

A、c B、不确定的值 C、d D、D

已知下面的程序段,若使得i=10,j=15,x=9.6,y=81.73正确的输入语句是(D ). main()

{int i,j;float x,y;

A、scanf(\"%d,%d\B、scanf(\"%d,%d\C、scanf(\"%d,%d\D、scanf(\"%d,%d\

为了避免在嵌套的条件语句 if-else 中产生二义性,C语言规定:else子句总是与(A)配对。 A、其之前最近的未配对的ifB、其之后最近的if C、同一行上的if D、缩排位置相同的if

C语言的if语句中,用作判断的表达式为( A)。

A、任意表达式B、算术表达式C、逻辑表达式D、关系表达式 以下正确的描述是(A ).

A、只能用continue语句来终止本次循环B、switch语句中不能出现continue语句 C、在循环中break语句不能独立出现D、goto语句只能用于退出多层循环 从循环体内某一层跳出,继续执行循环外的语句是(C )。 A、continue语句B、空语句C、break语句D、return语句 以下对二维数组a的正确说明是(D)。

A、int a[3][ ] B、float a(3,4) C、float a(3)(4) D、double a[1][4] 以下程序的输出结果是(C ).

void fun(int a, int b, int c) { a=456; b=567; c=678; } main()

{ int x=10, y=20, z=30;fun(x, y, z);printf(\"%d,%d,%d\\n\A、10,20,30 B、678567456 C、30,20,10 D、456567678 关于宏的下列说法正确的是(D ).

A、宏名必须用大写字母表示.B、宏定义是特殊的C语句,应在行末加分号.

C、在#define R 4.5中,R代替了常量4.5.D、可以用#undef命令终止宏定义的作用域. 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是(A)。 A、*p=*&j; B、i=**p; C、i=*p; D、i=&j; C程序的基本组成单位是函数 正确 x*=y+8 等价于 x=x*(y+8)。 正确

已知a=1,b=2,c=3,d=4,则条件表达式a>b?a:(c>d?c:d)的值为4. 正确 无论哪种循环语句,都必须给出循环结束条件. 正确 continue语句只能用于循环语句中. 正确

对静态变量的初始化不是在编译阶段完成的. 错误

在C语言中,函数名仅仅代表函数的名称,没有任何含义. 错误

如果字符串与宏名相同,则不管其是否在双括号内,都要进行宏替换. 错误 若 p 为指针变量,a 为数组名,则 a-p是合法的表达式. 正确

共用体类型可以出现在结构体类型定义中,但结构体类型不能出现在共用体类型定义中.错误

执行下列语句后,z 的值是_30____.int x=4,y=25,z=5; z=y/x*z;

当a=3,b=2,c=1;时,执行以下程序段后 c=_2____. if(a>b) a=b; if(b>c) b=c; else c=b; c=a; 程序段int k=10; while(k=0) k=k-1;循环体语句执行__0___次.

C语言中,数组名是一个不可变的_____量,不能对它进行加减和赋值运算. 若a=1,b=2,c=3,d=4,则表达式a>b?a:c>d? c:d的值是_4____。

【程序设计】功能:输入一个字符串,过滤此串,只保留串中的字母字 符,并统计新生成串中包含的字母个数。

例如:输入的字符串为ab234$df4,新生成的串为abdf 。 #include \"stdio.h\" #include \"conio.h\" #define N 80 void main()

{char str[N];int fun(char ptr[ ]); void TestFunc(); int s;

printf(\"input a string:\");gets(str);

printf(\"The original string is :\"); puts(str); s=fun(str);

printf(\"The new string is :\");puts(str);

printf(\"There are %d char in the new string.\ TestFunc(); }

int fun(char ptr[ ])

{ /*********Begin**********/ 【参考代码】 int i,j;

for(i=0,j=0; ptr[i]!='\\0';i++)

if(ptr[i]<='z'&& ptr[i]>='a'|| ptr[i]<='Z' && ptr[i]>='A') { ptr[j]= ptr[i]; j++;} ptr[j]='\\0'; return(j);

/********** End **********/} 【程序改错】

功能:输入一行英文文本,将每一个单词的第一个字母变成大 写。 例如:输入\"This is a C program.\",输出为\"This Is A C Program.\"。 #include \"stdlib.h\"#include \"string.h\"#include \"stdio.h\"#include \"conio.h\" /**********ERROR**********/

常量 fun(char p) { int k=0;

/**********ERROR**********/ do while(*p=='\\0')

{ if(k==0&&*p!=' ') { *p=toupper(*p);

/**********ERROR**********/ k=0; } else if(*p!=' ') k=1; else k=0;

/**********ERROR**********/ *p+; }} main()

{ char str[81];

printf(\"please input a English text line:\"); gets(str);

printf(\"The original text line is :\"); puts(str); fun(str);

printf(\"The new text line is :\"); puts(str); }

【参考答案】fun(char *p)【参考答案】while(*p!='\\0')【参考答案】k=1;【参考答案p++; 【程序填空】功能:计算并输出500以内最大的10个能被13或17整除的自然数之和。 #include \"stdio.h\"

/***********FILL***********/ int fun(_____ )

{ int m=0, mc=0, j, n;

/***********FILL***********/ while (k >= 2 && _____)

{ /***********FILL***********/ if (k%13 == 0 || _____)

{ m=m+k; mc++; } k--; } /***********FILL***********/ _____; }

void main ( )

{ printf(\"%d\\n\

【参考答案】int k【参考答案】mc < 10【参考答案】k%17 == 0【参考答案】return m 第十五套

下列不正确的C语言语句是(B ).

A、x++; B、y=int(x); C、x=1,y=2; D、x=y=5; 关于%-m.nf格式符,下列描述中正确的是(A ).

A、字符\"-\"表示输出字符靠左对齐.B、字符\"-\"表示在输出字符前面加上字符\"-\" . C、字符\"-\"表示输出字符靠右对齐.D、字符\"-\"表示在输出字符最后加上字符\"-\" .

已知键入a=4,b=3,执行下面程序输出的结果是(B ). main()

{ int a,b,s; scanf(\"a=%d,b=%d\A、13 B、9 C、16 D、15

下面程序的功能是计算1~100中所有9的倍数的数值之和,请在A处填写正确语句.( D)。 #include \"stdio.h\"void main()

{ int i,sum=0; for (i=1; i<=100 ; i++)

if (i%9!=0 ) ___A__ else sum=sum+i; printf (\"sum=%d\A、i--; B、break; C、goto; D、continue;

下列是能够完成求出两个正整数a,b最大公约数max的程序段.请在下划线处填写内容正确内容(B )。if(a>=b) t=b;else t=a;

for(i=1;i<=t;i++) _______________ max=i;printf(\"%d\A、if(a%i==0||b%i==0) B、if(a%i==0&&b%i==0) C、if(a%i!=0&&b%i!=0) D、if(a%i!=0||b%i!=0)

在C语言中,一维数组的定义方式为:类型说明符 数组名(B)。 A、[整型常量]或[整型表达式] B、[正整型常量表达式] C、[整型表达式] D、[常量表达式]

如果在一个函数中的复合语句中定义了一个变量,以下正确的说法是( C ). A、该变量在本程序范围内均有效 B、该变量在主函数中有效 C、该变量只在该复合语句中有效 D、该变量在该函数中有效 已知有宏定义#define SQR(a) 2*a*a,则SQR(3+4)的值为A( ). A、22 B、32 C、98 D、18

若有int i=3,*p;p=&i;下列语句中输出结果为3的是(A)。

A、printf(\"%d\、printf(\"%d\、printf(\"%d\、printf(\"%d\

从本程序的main函数开始,到main函数结束 正确

若 a=3,b=2,c=1 则关系表达式\"(a>b)==c\" 的值为\"真\"。 正确 已知a=4,b=2,c=3,d=5,表达式a>b?a:c数组整体可以参加各种数学运算,数组元素也可以参加各种数学运算. 错误 C语言中,通过函数调用只能获得一个返回值. 错误 一个include 命令只能指定1个被包含的文件。 正确

如果需要向函数内传递多个值,用数组和用指针效果是一样的. 正确

结构体类型数据由多个成员构成,这些成员的类型可以不同,它们共同描述一个对象. 正确

设x=2.5,a=7,y=4.7,算术表达式x+a%3*(int)(x+y)%2/4的值为__2。5___.

当a=1,b=2,c=3时,执行以下程序段后b=__2___. if (a>c) b=a; a=c; c=b; 以下程序的输出结果为__10___,#include \"stdio.h\" void main(){int a;for(a=0;a<10;a++);printf(\"%d\

按内存排列顺序, 数组char a[2]中的所有元素是a[0]和a[1]

在C语言中,文件的存取是以_____为单位的,这种文件被称为_____文件.字符 流式

【程序设计】功能:输入一个字符串,过滤此串,只保留串中的字母字符,并统计新生成串

中包含的字母个数。例如:输入的字符串为ab234$df4,新生成的串为abdf 。 #include \"stdio.h\"#include \"conio.h\"#define N 80 void main()

{ char str[N]; int fun(char ptr[ ]);void TestFunc(); int s;

printf(\"input a string:\");gets(str);

printf(\"The original string is :\"); puts(str); s=fun(str);

printf(\"The new string is :\");puts(str);

printf(\"There are %d char in the new string.\ TestFunc();

}int fun(char ptr[ ])

{ /*********Begin**********/ /********** End **********/ }【参考代码】 int i,j;

for(i=0,j=0; ptr[i]!='\\0';i++)

if(ptr[i]<='z'&& ptr[i]>='a'|| ptr[i]<='Z' && ptr[i]>='A') {ptr[j]= ptr[i];j++;} ptr[j]='\\0';return(j);

【程序改错】功能:求出两个非零正整数的最大公约数,并作为函数值返回。 例如:若给num1和num2分别输入49和21,则输出的最大公约数为7。 #include \"stdio.h\"int fun(int a,int b) { int r,t;if(a/**********ERROR**********/ b=a;

/**********ERROR**********/ a=t; } r=a%b; while(r!=0) { a=b; b=r;

/**********ERROR**********/ r=a/b; }

/**********ERROR**********/ return a;} void main()

{ int num1,num2,a;

scanf(\"%d%d\ a=fun(num1,num2);

printf(\"the maximum common divisor is %d\\n\\n\

}【参考答案】a=b;【参考答案】b=t;【参考答案】r=a%b;【参考答案】return b;

【程序填空】以下程序可求出所有的水仙花数。(所谓水仙花数是指一个三位正整数,

其各位数字的立方之和等于该正整数。

例如;407=4×4×4+0×0×0+7×7×7,故407是一个水仙花数。) #include void main()

{ int x,y,z,a[8],m,i=0;

printf(″The special numbers are:\\n″); /**********FILL**********/ for (m=100;_____; m++) { x=m/100;

/**********FILL**********/ y=_____; z=m%10;

if (x*100+y*10+z==x*x*x+y*y*y+z*z*z) /**********FILL**********/ {_____;i++;} }

for (x=0;xprintf(″%6d″,a[x]); }

【参考答案】m<1000【参考答案】(m-x*100) /10【参考答案】a[i]=m

第十六套

设有说明语句:char a='\\72';则变量a(c)。

A、说明不合法B、包含3个字符C、包含1个字符D、包含2个字符

已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'.执行语句printf(\"%d,%d\后,输出结果是(A )。 A、65,66 B、65,68 C、A,68 D、A,B

已知键盘输入a=4,b=3,下面程序输出的结果是( C). main()

{ int a,b,s;scanf(\"a=%d,b=%d\

s=a; if(amain() { int num = 0; while( num <= 2 ) { num++; printf( \"%d,\ } A、0,1,2 B、1,2,3, C、1,2,3,4, D、1,2,

C语言中 while 和 do-while 循环的主要区别是(A )。A、do-while 的循环体至少无条件执行一次 B、do-while 的循环体不能是复合语句C、do-while 允许从外部转到循环体内 D、while的循环控制条件比 do-while的循环控制条件更严格

以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是(C)。 A、char t[]=\"abcdefg\ B、char s[10]=\"abcdefg\";

C、char s[10];s=\"abcdefg\"; D、char s[10];strcpy(s,\"abcdefg\");

在所有函数之前,定义一个外部变量的形式为static int x; 那么错误的叙述是(A ). A、x的值不可以永久保留 B、将变量存放在静态存储区

C、使变量x可以由系统自动初始化为0 D、使x只能被本文件中的函数引用 C程序中的宏展开是在(C)。

A、编辑时进行的 B、编译时进行的 C、编译前预处理时进行的 D、程序执行时进行的

若有定义int a[10],*p=a;,则p+5表示(D )。

A、元素a[5]的值 B、元素a[6]的值 C、元素a[6]的地址 D、元素a[5]的地址

在一个源程序中,main函数的位置可以任意 正确 a=(b=4)+(c=6) 是一个合法的赋值表达式。 正确

已知x=3,y=1,执行分支语句 if(x>y){t=x;x=y;y=t;} else printf(\"error!\");后,结果为error!. 错误 for循环语句的三个表达式不能同时省略. 错误 执行continue语句并不能使整个循环终止. 正确

C语言中引用数组元素的方括号可以用花括号代替. 错误

在C语言中,程序总是从第一个函数开始执行,最后一个函数结束. 错误 宏定义不是C语句,不必在行末加分号. 正确

有如下说明:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是 *(P+8). 正确 在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。 正确 若有以下定义,则计算表达式y+=y-=m*=y后的y值是_-16____. int m=5,y=2; C程序在执行过程中,不检查数组下标是否_____. 越界 若有fp=fopen(\"a1.dat\打开文件语句,这个文件的数据是以_____的形式存放在内存中,该文件的使用方式为_____。 文本文件 读写

(设计)位数的正整数a、b合并形成一个整数放在 c中。合并的方式是:将a数的十位和个位数依次放 在c数的百位和个位上,数的十位和个位数依次放 在c数的十位和千位上。 #include \"stdio.h\"

long fun(int a, int b)

{ /*********Begin**********/ 【参考代码】 long c; int i,j,k,t; i=a/10; j=a%10; k=b/10; t=b%10;

c=t*1000+100*i+10*k+j; return c;

/********** End **********/ }

void main() { int a,b; long c; void NONO ( );

printf(\"Input a, b:\"); scanf(\"%d%d\ c=fun(a,b);

printf(\"The result is: %ld\\n\ NONO(); }

【程序改错】功能:实现两个字符串的连接。

例如:输入dfdfqe和12345时,则输出dfdfqe12345.

#include \"stdio.h\" void main()

{ char s1[80],s2[80];

void scat(char s1[],char s2[]); gets(s1); gets(s2); scat(s1,s2); puts(s1); }

void scat (char s1[],char s2[]) { int i=0,j=0;

/**********ERROR**********/ while(s1[i]= ='\\0') i++;

/**********ERROR**********/ while(s2[j]= ='\\0')

{ /**********ERROR**********/ s2[j]=s1[i]; i++; j++; }

/**********ERROR**********/ s2[j]='\\0';}

【参考答案】while(s1[i]!='\\0')i++;【参考答案】while(s2[j]!='\\0') 【参考答案】s1[i]=s2[j];【参考答案】s1[i]='\\0';

【程序填空】求一个二维数组中每行的最大值和每行的和,b数组放最大值,c数组和值。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得 出正确的结果。

#include \"stdio.h\"#include \"stdlib.h\" void main()

{ int a[5][5],b[5],c[5],i,j,k,s; for(i=0;i<5;i++) for(j=0;j<5;j++)

a[i][j]=(int)(10.0*rand()/(RAND_MAX+1.0)); //产生10以内的随机数 for(i=0;i<5;i++)

{ /***********FILL***********/ k=a[i][0]; _____ ; for(j=0;j<5;j++)

{ /***********FILL***********/ if(k/***********FILL***********/ _____ ; }

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

{ for(j=0;j<5;j++)

/***********FILL***********/

printf(\"%5d\ printf(\"%5d%5d\ printf(\"\\n\"); }}

【参考答案】s=0【参考答案】k=a[i][j]【参考答案】c[i]=s【参考答案】a[i][j]

第十七套

设a=12,且a定义为整型变量。执行语句a+=a-=a*=a;后a的值为(A)。 A、0 B、144 C、132 D、12

设变量定义为\"int a, b;\执行下列语句时,输入(A ),则a和b的值都是10. scanf(\"a=%d, b=%d\

A、a=10, b=10 B、a=10 b=10 C、10, 10 D、10 10 main(){int x=1,a=0,b=0;

switch (x) { case 0: b++;case 1: a++ case 2: a++;b++; } printf(\"a=%d,b=%d\该程序的输出结果是(D ) A、a=1,b=1 B、a=1,b=0 C、a=2,b=2 D、a=2,b=1 以下正确的描述是( A).

A、只能在循环体内和switch语句内使用break语句 B、continue语句的作用是终止整个循环的执行

C、从多层嵌套的外层循环中退出时,只能使用goto语句 D、在循环体内使用break和continue语句的作用相同 设有如下程序段:

int k=10;while(k==0) k--;则下述说明中正确的是A( ).

A、循环体一次也不执行B、循环体执行一次C、死循环D、循环体执行10次 对以下说明语句 int a[10]={6,7,8,9,10}; 的正确理解是(B)。

A、将5个初值依次赋给a[6]至a[10]B、将5个初值依次赋给a[0]至a[4] C、因为数组长度与初值的个数不相同,所以此语句不正确D、将5个初值依次赋给a[1]至a[5] 下面叙述中正确的是(D )。

A、空函数不完成任何操作,不符合c语言语法规则。B、对于用户自己定义的函数,在使用前必须加以声明C、声明函数时不必明确其参数类型和返回类型 D、函数可以返回一个值,也可以什么值也不返回 若有#define S(r) PI*r*r,则S(a+b)展开后的形式为( B).

A、PI*a*a+PI*b*b B、PI*a+b*a+b C、PI*(a+b)*(a+b) D、PI*r*r*(a+b) 若有说明:int *p,m=5,n;以下正确的程序段是(D)。 A、scanf(\"%d\ B、p=&n;scanf(\"%d\、p=&n;scanf(\"%d\、p=&n;*p=m; 一个C程序的执行是从本程序文件的第一个函数开始,到本程序main函数结束 错误

C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线 正确

已知a=3,b=4,c=5.则逻辑表达式a+b>c && b==c值为0. 正确 for循环可以用于循环次数不确定而给出循环条件的情况下. 正确 在while循环中允许使用嵌套循环,但只能是嵌套while循环. 错误 如果不对静态数组赋初值,则计算机默认静态数组初始值为0. 正确 某些情况下,在主调函数中可以缺省对被调用函数的说明. 正确 宏替换在运行程序时进行,占用运行时间. 错误 在C语言中 \"*\"是仅用于指针的运算符; 错误

结构体变量所占的内存长度等于最长的成员的长度. 错误

若a是int型变量,且a的初值为6,则计算表达式 a+=a-=a*a 后a的值为____-60 程序段int k=10; while(k=0) k=k-1;循环体语句执行___0__次.

【程序设计】-题目:用函数求一个N阶方阵右下三角元素的和(包括副对角线上的元素)。 #include \"stdlib.h\" #include \"stdio.h\" #define N 3

int sum(int a[][N])

{ /*********Begin**********/ 【参考代码】 int i,j,k=0;

for(i=0;ifor(j=N-1-i;j/********** End **********/ }

void main()

{ int a[N][N],i,j; void TestFunc(); for(i=0;i{ for(j=0;j{ a[i][j]=rand()%10+10; //rand函数的功能是产生一个随机整数 printf(\"%3d\ printf(\"\\n\"); }

printf(\"===================\\n\"); printf(\"sum=%5d\\n\第十八套

以下正确的指数表示方法是(A )。

A、1.23e11 B、4.5e-5.6 C、8.5e4288 D、e-32 以下程序的输出结果是:(A )

main(){int m=5;if(m++>5) printf(\"%d\\n\A、6 B、5 C、7 D、4

以下程序段的输出结果为( C)。

for(i=4;i>1;i--) for(j=1;j针对for循环语句,for(表达式1;表达式2;表达式3),下列说法正确的是(B ).

A、break语句可以一次性跳出多层嵌套循环B、break语句只能跳出最内层循环

C、continue语句可以一次性跳出多层嵌套循环D、continue语句不能跳出最外层循环 选择正确的输入语句(B ).

(其中:char string[10];)使得string的内容为\"Hello\". A、scanf(\"%c\ B、scanf(\"%s\C、scanf(\"%c\ D、scanf(\"%s\在C语言中,调用函数除函数名外,还必须有(A)。 A、( ) B、函数预说明 C、形式参数 D、函数返回值

设有宏定义#define MAX(x,y) (x)>(y)?(x):(y),则F=MAX(2*4,3*4)的值为(C ). A、8 B、2 C、12 D、3 int (*p)[6]; 它的含义为(C)。

A、指向6个整数中的一个的地址 B、具有6个元素的一维数组

C、定义了一个指向具有6个元素的一维数组的指针变量 D、指向整型指针变量

一个C源程序必须包含一个main函数 正确 关系运算符<= 与 == 的优先级相同。 错误 下面程序段的输出结果为A。

int i=20;switch(i/10){case 2:printf(\"A\");case 1:printf(\"B\");} 错误 for语句的循环体至少执行一次.错误

for循环体中遇到continue语句,会转向执行for语句中的条件判断(语句2). 错误 定义一维数组的形式为:类型说明数组名[表达式],其中表达式必须是整型常量.错误 在定义宏时,在宏名与带参数的括弧之间不应加空格.正确

若定义 int array[5] ,*p=array;则赋值语句 p=&array;是正确的. 错误

在引用结构体成员时,只能对最低级的成员进行赋值或存取操作及计算. 正确

设有int x=11,则表达式(x++ * 1/3)的值是__3___。

设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是__3___. for (x=0,y=0;y!=123&&x<3;x++) scanf (\"%d\C语言中调用_____函数来打开文件. fopen 【程序设计】

功能:编写程序,实现矩阵(3行3列)的转置(即行列互换) 例如:输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出: 100 400 700 200 500 800

300 600 900 #include \"stdio.h\"

void fun(int array[3][3])

{ /*********Begin**********/ 【参考代码】 int i,j,t;

for(i=0; i < 3; i++) for(j=0; j < i; j++) { t=array[i][j];

array[i][j]=array[j][i]; array[j][i]=t; }

/********** End **********/ }

main() { int i,j; void NONO();

int array[3][3]={{100,200,300},

{400,500,600}, {700,800,900}}; for (i=0; i < 3; i++)

{ for (j=0; j < 3; j++) printf(\"%7d\ printf(\"\\n\"); }

fun(array);

printf(\"Converted array:\\n\"); for (i=0; i < 3; i++)

{ for (j=0; j < 3; j++) printf(\"%7d\ printf(\"\\n\"); } NONO(); }

【程序改错】功能:求一个3行4列矩阵的外围元素之和。 注意:矩阵四个角上的元素不能重复加。

例如:矩阵元素为1,2,3,4,5,6,7,8,9,10,11,12时, 四框元素值之和应为65。 #include \"stdio.h\"

int fun(int a[3][4],int m,int n)

{ /**********ERROR**********/ int i,j,s,s1=s2=s3=s4=0; for(j=0;j/**********ERROR**********/ s2=s2+a[m][j];

} /**********ERROR**********/ for(i=0;i/**********ERROR**********/ s=s1-s2-s3-s4; return s; }

main()

{ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; printf(\"total=%d\\n\

}【参考答案】int i,j,s,s1=0,s2=0,s3=0,s4=0;【参考答案】s2=s2+a[m-1][j]; 【参考答案】for(i=1;i【程序填空】功能:在歌星大奖赛中,有10个评委为参赛的选手打分,分数为 1~100分。选手最后得分为:去掉一个最高分和一个最低分 后其余8个分数的平均值。请编写一个程序实现。 #include \"stdio.h\"

void main()

{ int score,i,max,min,sum;

max=-32768; min=32767; sum=0;

for(i=1;i<=10;i++)

{ printf(\"Input number %d=\ /***********FILL***********/

scanf(\"%d\ sum+=score;

/***********FILL***********/

if(_____) max=score; /***********FILL***********/

if(_____) min=score; }

printf(\"Canceled max score:%d\\nCanceled min score:%d\\n\ /***********FILL***********/

printf(\"Average score:%f\\n\ }

【参考答案】&score【参考答案】score>max

【参考答案】score对于赋值语句char cx='\\037';判断正确的是:( D). A、cx的值是四个字符B、不合法,不能赋值 C、cx的值是三个字符D、cx的值是一个字符 根据下面的程序,正确的输出形式是(A ); #include \"stdio.h\"void main()

{ int i=5,j=10; printf (\"i=%d,\ printf (\"j=%d \A、i=5, j=10 B、10,5 C、5,10 D、i=5Uj=10 执行下面程序段后,k的值是:( B)

int k=2; switch(k+1){case 3:k+=1; case 4:k--;break;case 5:k*=3;case 6:++k;} A、10 B、2 C、28 D、27

假定所有变量均已正确定义,下列程序段运行后x的值是(A)。 k1=1;k2=2;k3=3;x=15;if(!k1) x--;else if(k2) x=4; else x=3; A、4 B、1 5 C、3 D、14 有以下程序段 int n=0,p;do

{scanf(\"%d\此处do-while循环的结束条件是( A)。 A、p的值等于12345或者n的值大于等于3B、p的值等于12345并且n的值大于等于3 C、p的值不等于12345并且n的值小于3D、p的值不等于12345或者n的值小于3 以下能计算1+2+3+┈+10的程序段是(B ).

A、do { i=1;s=0;s=s+i; i++;} while(i<=10) ;B、i=1;s=0;while(i<=10){s=s+i; i++;} C、i=1;s=0; do { s=s+i;i++;} while(i>=10) ;D、i=1;s=0;while(i>=10) {s=s+i;i++;} 在C语言中,变量的隐含存储类别是(D)。

A、无存储类别 B、auto C、static D、extern 以下叙述中正确的是(A)。

A、宏替换不占用运行时间,只占编译时

B、使用带参数的宏时,参数的类型应与宏定义时的一致 C、在程序的一行上可以出现多个有效的预处理命令行

D、在以下定义中 C R 是称为\"宏名\"的标识符 #define C R 045 下列程序的输出结果是(A ).

#include \"stdio.h\" sub(int x, int y, int *z) {*z=y-x; } main()

{int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf(\"%d,%d,%d\A、-5,-12,-7 B、5,-2,-7 C、5,2,3 D、-5,-12,-17

C语言本身没有输入输出语句 正确

设g=1,h=2,k=3,则逻辑表达式k+g||!h&&k-h的值为0 错误

while循环的循环体至少执行一次,而不论while表达式的值是\"真\"或\"假\". 错误 循环体如果包含一个以上的语句,应该用圆括号括起来,以复合语句形式出现. 错误 C语言中数组元素的方括号不可以用花括号代替. 正确

字符处理函数strcpy(str1,str2)的功能是把字符串1接到字符串2的后面. 错误

被包含文件与其所在的文件(即用#include命令的源文件),在预编译后,成为同一个文件.正确 int i,*p=&i;是正确的C说明。 正确

使几个不同的变量共占同一段内存的结构,称为\"结构体\"类型.错误

以下do-while语句中循环体的执行次数是_3____. a=10; b=0; do { b+=2; a-=2+b; } while (a>=0);

若有以下数组aa[10],其值为 9 4 12 8 2 10 7 5 1 3 该数组的元素中,数值最大的元素的下标值是____2_. 【程序设计】

功能:从键盘为一维整型数组输入10个整数,调用fun 函数找出其中最小的数,并在main函数中输出。 请编写fun函数。 #include \"stdio.h\" int fun(int x[],int n)

{ /*********Begin**********/ 【参考代码】 int min,i; min=x[0];

for(i=1;iif(x[i]/********** End **********/ }

void main()

{ void TestFunc(); int a[10],i,min;

for(i=0;i<10;i++) scanf(\"%d\ for(i=0;i<10;i++) printf(\"%3d\ printf(\"\\n\"); min=fun(a,10); printf(\"%d\\n\ TestFunc(); }

【程序改错】功能:计算数组元素中值为正数的平均值(不包括0)。 例如:数组中元素的值依次为39,-47,21,2,-8,15,0, 则程序的运行结果为19.250000。 double fun(int s[])

{ /**********ERROR**********/ int sum=0.0; int c=0,i=0;

/**********ERROR**********/ while(s[i] =0) { if (s[i]>0)

{ sum+=s[i]; c++; } i++; } /**********ERROR**********/ sum\\=c;

/**********ERROR**********/ return c;} main()

{ int x[1000];int i=0; do

{ scanf(\"%d\ while(x[i++]!=0) printf(\"%f\\n\

【参考答案】double sum=0.0;【参考答案】while(s[i]!=0)while(!s[i]==0)while(!0==s[i]) 【参考答案】sum/=c;sum=sum/c;【参考答案】return sum; 【程序填空】

功能:编程求任意给定的n个数中的奇数的连乘积,偶数的平方和 以及0的个数,n通过scanf()函数输入。 #include \"stdio.h\" void main()

{ int r=1,s=0,t=0,n,a,i;

printf(\"n=\");scanf(\"%d\ for(i=1;i<=n;i++) { printf(\"a=\");

/***********FILL***********/ scanf(\"%d\

/***********FILL***********/ if(_____!=0)

/***********FILL***********/

_____=a; else if(a!=0)

/***********FILL***********/ s+=_____; else t++; }

printf(\"r=%d,s=%d,t=%d\\n\

【参考答案】&a【参考答案】a%2【参考答案】r*【参考答案】a*a

第二十套

下列程序段的输出结果为(C)。float x=213.82631; printf(\"%3d\A、213.82 B、213.83 C、213 D、3.8

a,b为整型变量,二者均不为0,以下关系表达式中恒成立的是(A)。 A、a/b*b+a%b==a B、a/b*b==a C、a*b/a*b==1 D、a/b*b/a==1 int a=1,b=2,c=3; if(a>b)a=b; if(a>c)a=c; 则a的值为(C)。 A、3 B、2 C、1 D、不一定

设j和k都是int类型,则下面的for循环语句(D )。 for(j=0,k=0;j<=9&&k!=876;j++) scanf(\"%d\

A、最多执行9次 B、是无限循环 C、循环体一次也不执行 D、最多执行10次 以下程序中,while循环的循环次数是(C ). main()

{ int i=0;while(i<10) { if(i<1) continue; if(i==5) break; i++; }} A、1 B、6 C、死循环,不能确定次数 D、4 以下不能对二维数组a进行正确初始化的语句是(A)。

A、int a[2][3]={{1,2},{3,4},{5,6}}; B、int a[][3]={{1,2},{0}}; C、int a[2][3]={0}; D、int a[][3]={1,2,3,4,5,6};

下面函数调用语句中,fun含有实参的个数为( D). fun((x,y),(x+y,z,x/y)); A、1 B、4 C、5 D、2

在\"文件包含\"的预处理中,被包含的文件应是(A ).

A、源文件 B、可执行文件 C、目标文件 D、批处理文件 以下程序的输出结果是( B ). #include void main( )

{int a[ ]={2,4,6,8},*p=a,i;for(i=0;i<4;i++) a[i ]=*p++; printf(\"%d\\n\ A、2 B、6 C、8 D、4

printf 函数的一般格式为:printf (格式控制,输出表列). 正确 若 a=3,b=2,c=1 则关系表达式\"(a>b)==c\" 的值为\"真\"。 正确

语句if(a>b) printf(\"%d\可以用条件表达式a>b?a:b取代. 错误 若有说明int c;则while(c=getchar());没有语法错误。 正确

C语言中三种基本结构:顺序、选择、循环,其结构内的每个部分都会被执行到.. 错误 数值型数组整体不参加数据处理(即不参加各种运算),参加数据处理的只能是数组的元素. 正确

没有初始化的数值型静态局部变量的初值是不确定的值. 错误 一个include 命令可以指定多个被包含的文件。 错误

定义 int a[ ]={1,2,3,4},y,*p=&a[1];,则执行y=(*--p)++后,y的值是2. 错误

共用体变量使用过程中,可在同一内存段中存放几种不同类型的成员. 正确

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

【参考答案】10 ,6

设有以下共用体类型说明和变量定义,则变量d在内存所占字节数是 _12__。 union stud { short int num; char name[8];float score[3]; double ave; } d,stu[3]; 【程序设计】功能:求n阶方阵主、副对角线上的元素之积。 #define N 4

#include \"stdlib.h\" #include \"stdio.h\" float mul(int arr[][N])

{/*********Begin**********/ 【参考代码】 int i,j;

float t=1;

for(i=0;i/********** End **********/ }

void main()

{ int a[N][N],i,j; void TestFunc(); for(i=0;i{ for(j=0;jprintf(\"%4d\ } printf(\"The sum is %f\\n\

【程序改错】功能:为一维数组输入10个整数;将其中最小的数与第一个数 对换,将最大的数与最后一个数对换,输出数组元素。 #include \"stdio.h\" void main ( ) { int a[10]; void input(); void output(); void max_min(); input(a,10); max_min(a,10); output(a,10);

}

void input(int arr[],int n) { int i;

printf(\"please enter 10 integers:\\n\"); for(i=0;i/**********ERROR**********/ scanf(\"%d\}

void max_min(int arr[],int n) { int max,min,t,i; min=max=0; for(i=1;i/**********ERROR**********/ if(arr[i]else if(arr[i]arr[n-1]=arr[max]; arr[max]=t; }

void output(int arr[],int n) { int i;

printf(\"The changed array is:\\n\"); /**********ERROR**********/ while(i=0;i}【参考答案】scanf(\"%d\【参考答案】if(arr[i]>arr[max])

【参考答案】if(max==0)【参考答案】for(i=0;ii;i++) 【程序填空】

功能:以下程序的功能如(图1)。

请在程序的下划线处填入正确的内容,并把下划线删除,使程序得 出正确的结果。 #include \"stdio.h\"

/***********FILL***********/ double f(_____)

{ /***********FILL***********/ _____;

/***********FILL***********/ if (_____) y=2.0*x*x+3.0*x+4.0; else y=-2.0*x*x+3.0*x-4.0;

/***********FILL***********/ _____; }

void main ( )

{ printf(\"%f\\n\

【参考答案】float x double x【参考答案】double y float y 【参考答案】x<=2 2>=x【参考答案】 return y

第二十一套

若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是(A)。 A、2.0B、2.5C、1D、2

执行下面程序中的输出语句后,输出的值是:(A ), main(){int a=5; printf(\"%d\\n\A、20 B、65 C、10 D、15

以下不正确的if语句形式是(B)。

A、if(xy&&x!=y);D、if(x==y) x+=y; 执行下面程序段后,s的值是( C )。

int s=5;switch(++s){case 6: case 7:s+=2;case 8: case 9:s+=2;} A、8 B、C、10 D、6

下面程序段运行的结果是( A). x=-1;do{ x=x*x; }while (!x);

A、循环执行一次B、有语法错误C、死循环D、循环执行两次

程序main( ){char s[10]; s=\"abcd\";printf(\"%s\\n\的运行结果(以下U代表空格)是(C ). A、输出abcdB、输出abcdUUUUUC、编译不通过D、输出a 函数的形式参数系统默认存储类型说明是(D)。 A、static B、extern C、register D、auto

若file1中包含file2,file2中要用到file3,若file2中不用 #include \"file3.h\则在file1.c中应进 行如下定义( D).

A、#include \"file2.h\" 和 #include \"file3.h\" B、#include \"file2.h , file3.h\" C、#include \"file2.h\" , \"file3.h\" D、#include \"file3.h\" 和 #include \"file2.h\" 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是(C)。 A、*p=*q;B、n=*q;C、p=n;D、p=q;

设i=1,j=2,k=3,则逻辑表达式!(i>j)||!k&&1的值为0. 错误 若定义 int array[5] , *p; 则赋值语句 p=array;是正确的.正确

函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是5.错误 用一个#include命令可以同时指定数个被包含文件.错误 下列的语句是正确的:int **p;正确

两个类型相同的结构体变量,可以互相赋值.正确

已知:int i=8,j=10,m,n;m=++i;n=j++;问语句执行后m=_____,n=_____。 【参考答案】9 10

将file_point定义为文件指针的语句为_____,写出应包含的头文件语句_____。 FILE *file_point; #include 【程序设计】:从键盘输入一个大于3的整数,调用函数fun判断 其是否素数,然后在main函数中输出相应的结论 信息。

#include \"stdio.h\"#include \"math.h\" int fun(int n) {【参考代码】

int i;int j;j= 1;for(i=2;i{ void TestFunc();

int m,flag; printf(\"input an integer:\"); scanf(\"%d\

if(flag) printf(\"%d is a prime.\\n\ else printf(\"%d is not a prime.\\n\ TestFunc();}

【程序改错】功能:找出大于m的最小素数,并将其作为函数值返回。 #include \"math.h\" #include \"stdio.h\" int fun( int m) { int i,k;

for(i=m+1;;i++)

{ /**********ERROR**********/ for(k=1;k/**********ERROR**********/ if(i%k!=0) break;

/**********ERROR**********/ if(k/**********ERROR**********/ return k; }} void main()

{ int n; scanf(\"%d\ printf(\"%d\\n\

【参考答案】for(k=2;k【程序填空】将一个字符串中下标为m的字符开始的全部字符复制成为另一个字符串。 #include \"stdio.h\"void strcopy(char *str1,char *str2,int m) { char *p1,*p2;

/***********FILL***********/ _____;

p2=str2; while(*p1)

/***********FILL***********/ _____; /***********FILL***********/ _____;} main()

{int i,m;char str1[80],str2[80]; gets(str1); scanf(\"%d\

/***********FILL*********** _____; puts(str1);puts(str2);} 【参考答案】p1=str1+m 【参考答案】*p2++=*p1++

【参考答案】*p2='\\0' *p2=0【参考答案】strcopy(str1,str2,m)

因篇幅问题不能全部显示,请点此查看更多更全内容