您的当前位置:首页正文

青岛科技大学c语言试题库

来源:一二三四网
第一套试题

一、单项选择题(15个小题,每题2分,共30分):

1.一个C语言程序的执行是从_____。 A.main函数开始,直到main函数结束 B.第一个函数开始,直到最后一个函数结束 C.第一个函数开始,直到最后一个语句结束 D.main函数开始,直到最后一个函数结束 2. 正确的自定义标识符是_____。 A.x_2 B.a-b C.2sum D.$123 3.下面程序的运行结果是_____。 #define F(x) x*x void main( ) { int a=2,b=1;

prinft(“%d\\n”,F(a+b)); }

A.3 B.5 C.8 D.9

4.读以下程序段,判断a的值为_____。 int *p,a=10,b=1; p=&a; a=*p+b;

A.12 B.10 C.11 D.编译出错

5.根据以下说明语句,则下面的叙述中不正确的是_____。 struct student { int num; char name[10]; int score; }stu;

A.struct是定义结构体类型的关键字 B.stu是结构体变量名

C.num, name, score都是结构体成员名 D.stu是结构体类型名

6.已知字母A的ASCII码为十进制数65,变量ch1为字符型,则执行语句ch1=‘A’+‘5’-‘2’;后,ch1中的值是_____。

A.D B.67 C.一个不确定的值 D.C

7.以下哪种方法不能对一维数组进行正确的初始化_____。 A.int a[ ]={1,2,3}; B.int a[5]={ };

C.int a[5]=(1,2,3,4,5); D.int a[ ]={2,3,4*5,6}; 8.已正确定义字符变量ch1,下面能正确赋值的是_____。 A.ch1=“a”; B.ch1=‘a’;

C.ch1=“C语言程序设计”; D.ch1=‘ C语言程序设计’; 9.逗号表达式 (a=3*4,a*4),a+5 的值是_____。 A.53 B.17 C.20 D.48

10.设n为float型,m为int型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍

五入的表达式是_____。

A.n=(n*100+0.5)/100.0 B.n=n*100+0.5/100.0 C.m=n*100+0.5,n=m/100.0 D.n=(n/100+0.5)*100.0 11.设i=2,j=3,则表达式(i++)*(++j)的值为_____。 A.6 B.8 C.9 D.12

12.关于以下程序段,说法正确的是_____。 x=-1; do

{ x=x*x; }while(!x);

A.死循环 B.循环体执行二次 C.循环体执行一次 D.有语法错误

13.若有下列定义:char c[5],*p=c; 则对c数组元素地址的正确引用是_____。 A.p+2 B.&c[5] C.c++ D.&c

14.当调用函数时,实参是一个数组名,则向函数传送的是_____。 A.数组的长度 B.数组每个元素中的值 C.数组每一个元素的地址 D.数组的首地址

15.文件中利用fopen函数打开文件,如果以只读方式打开二进制文件,则以下打开方式正确的是_____。

A.r+ B.rb C.wb D.ab

二、填空题(5个小题,每题2分,共10分):

1.若有int i=1,j=7,a; 执行语句 a=i+(j%4!=0); 后,a的值是_______。 2.执行以下程序后,运行结果是_______。 #include void main( ) { int a,b;

for(a=1,b=1;a<=100;a++) { if(b>=10) break;

if(b%3==1) { b+=3; continue; } }

printf(“%d\\n”,a);}

3.源程序中用到了strcat函数,需要包含的头文件(即库文件)为_______。 4.执行以下程序后,运行结果是_______。 #include void main( ) { int a=2; float n=5.888,b; b=a+(int)n;

printf(“%f\\n”,b);}

5.语句 scanf(\"a=%d,b=%d\若将3和4分别输入给a和b,则正确的输入方式为____ 。 三、程序分析题,写出程序的运行结果(5个小题,每题4分,共20分): 1.#include void main( )

{ int x=1,y=0,a=0,b=0; switch(x)

{ case 1: switch(y)

{ case 0: a++; break; case 1: b++; break; }

case 2: a++; b++; break;} printf(“a=%d,b=%d\\n”,a,b);}

2.在运行以下程序时,输入“Turbo C++ 3.0”,写出程序的运行结果。 #include void main( ) { char str[40];

printf(\"Input a string:\"); scanf(\"%s\puts(str);}

3.#include void f(int y) { static int i=5; int j=3; j++;

printf(“%d+%d+%d=%d\\n”,i,j,y,i+j+y); i*=2;} void main( ) { int x;

for(x=1;x<=2;++x) f(x);} 4.#include void swap(int *pa,int *pb) { int *p; p=pa; pa=pb; pb=p; } void main( ) { int a=10,b=20; int *p1=&a,*p2=&b; if(a int a=5; int b=7; int plus(int x,int y) { int z; z=x+y; return (z);} void main( ) { int a=4,b=5,c; c=plus(a,b);

printf(“a+b=%d\\n”,c); }

四、程序填空题,将下面程序补充完整(10个填空,每空2分,共20分):

1.输出九九表。 #include “stdio.h” void main( ) { int i,j; for(i=1;i<=9;i++) {for(j=1; ① ;j++)

printf(“%3d*%d=%2d”,i,j,i*j); ② ; } }

2.利用函数形式,求x数组所有元素的平均值并输出。 #include “stdio.h” ① ;

void main( )

{ float avg,x[10]={1.2,3.6,4.5,5.1,6.9,7,8,9,10.5,11.3}; avg=average(x);

printf(“The average is %5.2f\\n”,avg); }

float average(float a[10]) { int i; float sum=0;

for(i=0;i<10;i++) sum=sum+a[i]; ② ; }

3.编写一个计算字符串长度的函数length。 #include “stdio.h” void main( ) { char str[20]; int m;

int length(char *p);

printf(\"Input a string:\\n\"); gets(str); ① ;

printf(\"\\n the length of str is%d \}

int length(char *p) { int n=0;

while( ② ) { n++; p++; } return n;}

4.输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。 #include “stdio.h” void main( ) { int i,n=10,a[10]; float avg=0;

for(i=0;i{ if( ① ) printf(“\\n”); printf(“%d ”,a[i]); }

for(i=0;iprintf(“average=%f\\n”,avg); }

5.将字符数组中大写字符改为小写字符,将小写字符改为大写字符,利用指针完成。 #include “stdio.h” void main( )

{ char str[30]=“Welcome to C Language”,*cp=str; while(*cp)

{ if(*cp>=‘A’&&*cp<=‘Z’) ① ;

else if(*cp>=‘a’&&*cp<=‘z’) *cp=*cp-32; ② ; }

puts(str); }

五、程序设计题(3个小题,共20分):

1.设三个整型变量a,b,c,编写程序为a,b,c输入数据,并要求a,b,c按由小到大排序后输出。(5分) 2.学生成绩可分为五分制与百分制,编程将百分制转换为五分制输出。(5分)

3.编写排序函数sort(int a[ ]),实现对数组a中的元素进行排序,并利用该函数,从键盘输入若干个数(如10个)将其按升序排列。(10分)

第一套试题

一、单项选择题(15个小题,每题2分,共30分): 1-5:AABCD 6-10:ACBBC 11-15:BCADB 二、填空题(5个小题,每题2分,共10分): 1.2 2.4 3.string.h 4.7.000000 5.a=3,b=4

三、程序分析题,写出程序的运行结果(5个小题,每题4分,共20分): 1.a=2,b=1 2.Turbo 3.5+4+1=10 4.10,20 5.a+b=9 10+4+2=16

四、程序填空题,将下面程序补充完整(10个填空,每空2分,共20分): 1.①j<=i ②printf(“\\n”)

2.①float average(float a[10]) 或 float average(float a[ ]) ②return (sum/10)

3.①m=length(str) ②*p!=‘\\0’ 或 *p

4.①i%3==0 ②avg+=a[i] 或 avg=avg+a[i] 5.①*cp=*cp+32或*cp=*cp+‘a’-‘A’ ②cp++ 五、程序设计题(3个小题,共20分): 1.#include “stdio.h” void main( ) { int a,b,c,t;

printf(\"input a,b and c:\"); scanf(\"%d%d%d\&a,&b,&c); „„1分 if(a>b) { t=a; a=b; b=t; } „„3分 if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } printf(\"%d%d%d\分 }

2.#include “stdio.h” void main( ) { float score;

printf(“Input a score:”); scanf(“%f”,&score);

while(score>100||score<0) „„2分

{ printf(“Error! Please input again:\\n”); scanf(“%f”,&score); }

if(score>=90) printf(“A\\n”); „„3分 else if(score>=80) printf(“B\\n”); else if(score>=70) printf(“C\\n”); else if(score>=60) printf(“D\\n”); else printf(“E\\n”); }

3.#include \"stdio.h\" #define N 10

void sort(int a[ ]); „„1分 void main( ) { int a[N],i,j;

printf(\"input %d numbers:\\n\for(i=0;ivoid sort(int a[ ]) { int i,j,temp;

for(i=0;iif(a[j]>a[j+1])

{ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } }

第二套试题

一、 单项选择题(15个小题,每小题2分,共30分): 1.在一个源程序中,main函数的位置_____。 A.必须在最前面 B.必须在系统调用的库函数的后面 C.没有具体要求 D.必须在最后 2.正确的用户自定义标识符是_____。 A.a=2 B.a+b C.name D.default 3.以下叙述中正确的是_____。 A.break语句只能用于switch语句体中

B.continue语句的作用是:使程序的执行流程跳出包含它的所有循环 C.break语句只能用在循环体内和switch语句体内 D.在循环体内使用break语句和continue语句的作用相同 4.C语言中最简单的数据类型包括_____。 A.整型、实型、逻辑型 B.整型、实型、字符型 C.整型、字符型、逻辑型 D.字符型、实型、逻辑型

5. 设ch是char型变量,其值为‘A’,且有表达式ch=(ch>=‘A’&&ch<=‘Z’)?(ch+32):ch,该表达式的值为_____。 A.A B.a C.Z D.z 6. 以下叙述正确的是_____。

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

C.用do-while语句构成循环时,当while后的表达式成立时结束循环 D.用do-while语句构成循环时,当while后的表达式不成立时结束循环 7.为了判断两个字符串s1和s2是否相等,应当使用_____。 A.if(s1==s2) B.if(s1=s2)

C.if(strcmp(s1,s2))真 D.if(strcmp(s1,s2)==0) 假

8.当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是_____。

A.k%2 (k/2) B.k%2==1 C.(k%2)!=0 D.!k%2==1 9.下列是关于数组的叙述,不正确的是_____。

A.在定义数组时,数组名前的类型是指明数组各元素的类型 B.数组各元素的类型是相同的,而且是有序的

C.在引用数组元素时,数组元素的下标表达式必须是常量整型表达式 D.对整型数组来说,未初始化时,各数组元素的值是不确定的 10.有字符数组x[50],y[50],则正确的输出语句是_____。 A.printf(″%s″,″%s″,x,y); B.puts(x);puts(y); C.putchar(x,y); D.puts(x,y);

11.以下对一维数组a进行不正确初始化的是_____。

A.int x[5]={}; B.int x[5]=(0,0,0); C.int x[ ]={0}; D.int x[5]={2*3}; 12.下列叙述中错误的是_____。

A.主函数中定义的变量在整个程序中都是有效的

B.在其他函数中定义的变量,没有特殊声明在主函数中不能使用 C.形式参数也是局部变量

D.复合语句中定义的变量只在该复合语句中有效 13.设有函数原型、一维数组和变量定义如下: 函数原型 void fun(int x[ ],int n);

数组定义 int a[4]={1,2,3,4}; float b[4]={1.0,2.0,3.0,4.0}; 变量定义 int m=4,value;

下列函数调用中,正确的是_____。(函数返回值?) A.fun(a,m); B.value=fun(a[1],m); C.value=fun(a,4); D.fun(b,m); 14.以下对指针定义合法的语句是_____。

A.int *p=&x=3; B.int y[5]={1,2,3,4,5},*p=&y;

C.char ch[12]=″Hello World″,*c=ch; D.char *c,c=‘x’,c=&c; 15.以“只读”方式打开文本文件aa.dat,下列语句中哪一个是正确的_____。 A.fp=fopen(″aa.dat″,″r+″); B.fp=fopen(″aa.dat″,″a″); C.fp=fopen(″aa.dat″,″wb″); D.fp=fopen(″aa.dat″,″r″); 二、填空题(15个小题,每空1分,共15分):

1. 结构化程序设计的三种基本程序结构为顺序结构、选择结构和________。 2. 条件“30≤x≤80且x≠50”的C语言表达式是________。 3. C语言源程序文件的后缀是________。

4. 有如下定义:int m=1,n=1,x=3;则执行语句:if(!n) x+=1;if(m) x-=2;后,x的值是________。 5. 执行如下语句: int i=10; do

{ i=i+10;}while(i>20);后,i的值是________。

6. 若a、b、c和d都是int型变量,则执行表达式d=(a=2,b=4,c=a*b);后,d的值为________。 7. 在使用数组元素的过程中,C语言编译系统________(是/否)检查下标“越界”。 8. 设m=4,n=7,表达式x=(m++)*(--n)的值是________。 9. 执行如下语句:int k;k值不确定

for(k=0;k=1;k++); 则该循环执行的次数是________。

10. 有如下定义:int x[5]={1,3,5,7,9},*p=&x[2];则执行语句printf(\"%d\;的输出结果是________。 11. 有如下结构体定义:

struct date { int year; int month; int day; };

struct worklist { char name[20]; char sex;

struct date birthday; }person;

若对结构体变量person的出生年份赋值为1990,则正确的赋值语句是________。 12. C语言提供的预处理命令有________、文件包含和条件编译三种。

13.设有数组定义:char string[ ]= \"Student\",则数组所占的存储空间为________个 字节。 14.指针变量只能存放内存储单元的________。

15.在C语言中,当函数返回值的类型缺省时,表示该函数返回值的类型是________。 三、写出程序的运行结果(5个小题,每小题4分,共20分): 1.#include \"stdio.h\" void main( )

{ int x=1,y=0,a=0,b=0; switch(x)

{ case 1: switch(y) { case 0: a++;break; case 1: b++;break; }

case 2: a++;b++;break; }

printf(“a=%d,b=%d\\n”,a,b); }

2.#include \"stdio.h\" void f(int b[ ]) { int i;

for(i=2;i<6;i++) b[i]*=2; }

void main( )

{ int a[10]={1,2,3,4,5,6,7,8,9,10}; f(a);

for(i=0;i<10;i++) printf(“%d”,a[i]); }

3.#include \"stdio.h\" int a=5,b=7; int plus(int x,int y) { int z; z=x+y;

return (z); }

void main( ) { int a=4,b=5,c; c=plus(a+b);

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

4. #include \"stdio.h\" int d=1; fun(int p) { static int d=5; d+=p; return (d); }

void main( ) { int a=3;

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

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

{ char ch[15]={“abcdefg”}; char c,*cp1,*cp2; int i,n=0; cp1=ch; cp2=ch;

while(*cp2!=‘\\0’) { n++;cp2++;} cp2--; n=n/2;

for(i=0;i{ c=*cp1;*cp1=*cp2;*cp2=c; cp1++; cp2--; }

puts(ch); }

四、完善程序,在空白处填上相应的语句内容(5个小题,每小题4分,共20分) 1. 输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。 #include \"stdio.h\" void main( ) { int i,n=10,a[10];

float avg=0; for(i=0;ifor(i=0;iprintf(“average=%f\\n”,avg); }

2. 利用选择排序法使数组中的数按照从大到小的次序(升序)排列。 #include \"stdio.h\" #define N 10 void main( )

{ int a[N]={3,8,5,2,10,9,4,1,7,6},i,j,r,temp; for(i=0;ifor(j=i+1;j{ temp=a[r]; a[r]=a[i]; a[i]=temp; } }

printf(\"the array after sort:\\n\"); for(i=0;i3. 输出九九乘法表。 #include \"stdio.h\" void main( ) { int i,j; for(i=1;i<=9;i++) { for( (1) )

printf(\"%3d*%d=%-3d\; printf(\"\\n\"); } }

4.通过调用子函数average,分别求出主函数main中x和y数组的平均值并输出。 #include \"stdio.h\" float average( (1) ) { int i; float sum=0;

for(i=0;i}

void main( )

{ float x[10]={1,2,3,4,5,6,7,8,9,10}; float y[5]={1.5,2.5,3.5,4.5,5.5}; float avg; avg=average(x,10);

printf(\"The array x average is %5.2f\\n\; avg=average(y,5);

printf(\"The array y average is %5.2f\\n\; }

5.将字符数组中大写字符改为小写字符,将小写字符改为大写字符。 #include \"stdio.h\" void main( )

{ char str[30]=“I am a string”,*cp; (1) while(*cp)

{ if(*cp>=‘A’&&*cp<=‘Z’) *cp=*cp+32;

else if(*cp1 >=‘a’&&*cp<=‘z’) *cp=*cp-32; else *cp=*cp; (2) }

puts(str); }

五、 程序设计题(2个小题,共15分): 1. 求1!-2!+3! -4!+ „ -10!。(7分)

2. 编写一个计算字符串长度的函数,模拟C的“string.h”函数库内的计算字符串长度的函数strlen( )。(8分)

第二套试题答案

一、 单项选择题(15个小题,每小题2分,共30分): 1-5 C C C B B 6-10 D D D C B 11-15 B A A C D 二、 填空题(15个小题,每空1分,共15分):

1. 循环结构

2. (x>=30)&&(x<=80)&&(x!=50) 3. .c 4. 1 5. 20 6. 8 7. 否

8. 24 9. 无限次 10. 5

11. person.birthday.year=1990 12. 宏定义 13. 8 14. 地址 15. int/整型

三、写出程序的运行结果(5个小题,每小题4分,共20分): 1. a=2,b=1 2. 1 2 6 8 10 12 7 8 9 10 3. a+b=9 4. 15 5. gfedcba

四、完善程序,在空白处填上相应的语句内容(5个小题,每小题4分,共20分): 1.(1)printf(“\\n”); (2)avg=avg/n; 2.(1)r=i; (2)a[j]4.(1)float a[ ],int n (2)return (sum/n); 5.(1)cp=str; (2)cp++;

五、程序设计题(2个小题,共15分): 1. #include “stdio.h” void main( )

{ float s=0,t=1; „„„„„„„„ 1分 int n,p=1; „„„„„„„„ 1分

for(n=1;n<=10;n++) „„„„„„„„ 4分 { t=t*n; s=s+t*p; p=-p; }

printf(\"1!-2!+„„-10!=%f\\n\; „„„„„„„„ 1分 }

2. #include “stdio.h” int strlength(char *s); void main( ) { int n1,n2;

char *list1=“See no evil,hear no evil”; char *list2=“blind and deaf?; n1=strlength(list1); n2=strlength(list2); puts(list1);

printf(“The length of list1=%d\\n”,n1); puts(list2);

printf(“The length of list2=%d\\n”,n2); }

int strlength(char *s)

{ int n=0; while(*s!=‘\\0’) { n++; s++; } return (n); }

第三套试题

一、 选择题(15个小题,每小题2分,共30分): 1、C语言编译程序是____。

A.C程序的机器语言版本 B.一组机器语言指令

C.将C源程序编译成目标程序的程序 D.由制造厂家提供的一套应用软件 2、在一个C语言的源程序中,( )。 A.必须有一个主函数 B.可以有多个主函数 C.必须有主函数和其它函数 D.可以没有主函数 3、以下选项中不合法的用户标识符是____。 A.ABC B.abc C.a_bc D.ab.c

4、C语言中运算对象必须是整型的运算符是____。 A.% B./ C. ! D.*

5、若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是____。 A.read(a,b,c); B.scanf(\"%d,%d,%d\C.scanf(\"%d%d%d\.scanf(\"%d%d%d\6、为表示关系x≥y≥z,应使用C语言表达式____。 A.(x>=y)&(y>=z) B.(x>=y)AND(y>=z) C.x>=y>=z D.(x>=y)&&(y>=z)

7、以下对二维数组a进行不正确初始化的是_____。

A.int a[ ][3]={3,2,1,1,2,3}; B.int a[ ][3]={{3,2,1},{1,2,3}}; C.int a[2][3]={{3,2,1},{1,2,3}}; D.int a[ ][ ]={{3,2,1},{1,2,3}}; 8、若有定义:int x,*pb;则以下正确的赋值表达式是____。 A.pb=&x B.pb=x C.*pb=&x D.*pb=* 9、C语言中函数返回值的类型是由_____决定。

A.return语句中的表达式类型 B.调用函数的主调函数类型 C.调用函数时临时决定 D.定义函数时所指定的函数类型 10、设有如下函数: fff(float x)

{ printf(“%d\\n” , x*x); } 请问fff函数的返回值类型是____。

A.与参数x的类型相同 B.是void C.是int D.无法确定 11、在C语言程序中,下列说法正确的是_____。 A.函数的定义不可以嵌套,但函数的调用可以嵌套 B.函数的定义可以嵌套,但函数的调用不可以嵌套 C.函数的定义和调用都不可以嵌套 D.函数的定义和调用都可以嵌套

12、下述对C语言字符数组的描述中错误的是_____。

A.字符数组可以存放字符串

B.字符数组中的字符串可以整体输入、输出

C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D.不可以用算术运算符对字符数组中的字符串进行运算 13、以下叙述正确的是_____。

A.do_while语句构成的循环不能用其它语句构成的循环来代替 B.do_while语句构成的循环只能用break语句退出

C.用do_while语句构成循环时,只有在while后的表达式为非零时结束循环 D.用do_while语句构成循环时,只有在while后的表达式为零时结束循环 14、( )是不正确的C语言赋值语句。

A.x=1, y=2 ; B.x++ ; C.x=y=5 ; D.y=int(x) ; 15、若有如下说明,则_____的叙述是正确的。 struct st { int a; int b[2]; }a;

A.结构体变量a与结构体成员a同名,定义是非法的 B.程序只有在执行到该定义时才为结构体st分配存储单元 C.程序运行时为结构体变量a分配6个字节存储单元 D.不能将结构体类型说明与变量定义紧凑写在一起 二、 判断题(10个小题,每小题1分,共10分): 1、C语言是计算机高级语言。( ) 2、C语言中用非零表示逻辑值“真”。( ) 3、表达式3.5+3/5的计算结果是4.1。( )

4、能够实现局部翻转(0变1,1变0)的位运算是求反。( ) 5、若有以下定义:double w[10];则w数组元素下标的上界是9。( ) 6、C语言中的简单数据类型只有整型、实型两种。( ) 7、C语言源程序的基本单位是函数。( )

8、设有语句char a=‘\\72’; 则变量a声明不合法。( ) 9、printf(\"%d\\n\的输出结果是7。( ) 10、用在循环结构中,可以结束本次循环的语句是continue。( ) 三、 填空题(9个小题,每空2分,共20分): 1、C语言源程序文件的扩展名是____。

2、程序设计的三种基本结构是顺序结构、____、____。

3、设ch是char型变量,其值为A,且有表达式:ch=(ch>=‘A’&&ch<=‘Z’)?(ch+32):ch,该表达式的值为____。

4、调用C语言对字符串处理的库函数时,在#include命令行中应包含的头文件是______。 5、终止switch语句执行的语句是______。

6、用数组名作为函数参数是地址传递方式。地址传递是______(单向/双向)传递。 7、在C语言中,所谓“指针”就是______。

8、C程序的main函数是否允许有参数。____(是/否)。 9、文件打开时使用的函数是______。

四、 读下面程序,从选择项选出相应执行结果(每小题4分,共20分): 1、main()

{char a[]=\"I am a boy.\int i; p1=a;p2=b;

for(;*p1!='\\0';p1++,p2++) *p2=*p1; *p2='\\0';

printf(\"string b is:\"); for(i=0;b[i]!='\\0';i++) printf(\"%c\}

执行结果是( ) 2、main( ) { int a=0,i; for(i=1;i<5;i++) { switch(i) { case 0: case 3: a+=2; case 1: case 2: a+=3; default: a+=5; } }

printf(\"%d\\n\}

执行结果是( ) 3、#define N 2 #define M N+1 main( ) { int i;

for(i=1;i<=M;i++); printf(\"%d\\n\}

执行结果是( ) 4、main( )

{ int a[ ]={2,4,6,8,10}; int y=1,*p,x; p=&a[1];

for(x=0;x<3;x++) y+=*(p+x); printf(\"%d\\n\}

执行结果是( )

5、#define MIN(x,y) (x)<(y)?(x):(y) main( )

{ int i,j,k;

i=10; j=15; k=10*MIN(i,j); printf(\"%d\\n\}

执行结果是( ) 程序选择项:

A.31 B.string b is:I am a boy. C.100 D.3 E.19 五、 程序填空题(3个小题,每空2分,共20分): (根据程序要求,将程序补充完整,每空只能填写一条语句) 1、求1+2+„+100的和 main( ) {

int i, __①___; i=1; do

{ sum=sum+i; __②___; }while(__③___); printf(\"%d\}

2、求100~200间的全部素数。 # include main( ) {

int m,k,i,n=0;

for(m=101; ___④__;m=m+2) { k=sqrt(m); for (i=2;i<=k;i++) if (m%i==0) __⑤___;

if (i>=k+1){printf(\"%d\ if(n%10==0) printf(\"\\n\"); }

printf (\"\\n\"); }

3、用起泡法对10个输入数排序(从小到大)。 main( ) {

int a[11]; int __⑦___;

printf(\"input 10 numbers :\\n\"); for (i=1;i<11;i++) scanf(\"%d\ printf(\"\\n\");

for(j=1;j<=9;j++)

for(i=1; __⑨___;i++) if (a[i]>a[i+1])

{t=a[i];a[i]=a[i+1]; __⑩___;} printf(\"the sorted numbers :\\n\"); for(i=1;i<11;i++) printf(\"%d\}

第三套试题答案

一、选择题(15个小题,每小题2分,共30分): 1、C 2、A 3、D 4、A 5、B 6、D 7、D 8、A 9、D 10、C 11、A 12、C 13、D 14、D 15、C

二、判断题(10个小题,每小题1分,共10分): 1、√ 2、√ 3、× 4、× 5、√ 6、× 7、√ 8、× 9、× 10、√

三、填空题(9个小题,每空2分,共20分): 1、.c或c 2、条件结构、循环结构 3、a 4、string.h 5、break 6、双向 7、地址 8、是 9、fopen

四、读下面程序,从选择项选出相应执行结果(每小题4分,共20分): 1、B 2、D 3、E 4、A 5、C

五、程序填空题(3个小题,每空2分,共20分):

①sum=0或sum ②i++ ③i<=100 ④m<=200 ⑤break ⑥n=n+1 ⑦i,j,t ⑧&a[i] ⑨i<=10-j ⑩a[i+1]=t

第四套试题

一、选择题(20个小题,每小题2分,共40分): 1、以下不正确的C语言标识符是____。 A.ABC B.abc C.a_bc D.ab.c

2、设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是____。 A.‘a’&&‘b’ B.a<=b C.a||b+c&&b-c D.!((aprintf(“%d,%c\\n”,c2-c1,c2-‘a’+‘A’);则输出结果是____。 A.2,M B.3,E

C.2,e D.输入项与对应的格式控制不一致,输出结果不确定

4、当运行以下程序时,在键盘上从第一列开始输入9876543210(此处代表Enter),则程序的输出结果是____。 main( )

{ int a;float b,c;

scanf(“%2d%3f%4f”,&a,&b,&c); printf(“\\na=%d,b=%f,c=%f\\n”,a,b,c); }

A.a=98,b=765,c=4321 B.a=10,b=432,c=8765

C.a=98,b=765.000000,c=4321.000000 D.a=98,b=765.0,c=4321.0 5、设有如下函数定义:int f(char *s) { char *p=s;

while(*p!=‘\\0’) p++; return (p-s); }

如果在主程序中用下面的语句调用上述函数,则输出结果为____。 printf(“%d\\n”,f(“goodbye!”)); A.3 B.6 C.8 D.0

6、以下程序的输出结果是____。 main( )

{ int w=4,x=3,y=2,z=1;

printf(“%d\\n”,(wA.1 B.2 C.3 D.4

7、以下程序段的输出结果是____。 int k,j,s;

for(k=2;k<6;k++,k++) { s=1;

for(j=k;j<6;j++) s+=j; }

printf(“%d\\n”,s); A.9 B.1 C.11 D.10 8、以下叙述正确的是____。

A.do_while语句构成的循环不能用其它语句构成的循环来代替

B.do_while语句构成的循环只能用break语句退出

C.用do_while语句构成循环时,只有在while后的表达式为非零时结束循环 D.用do_while语句构成循环时,只有在while后的表达式为零时结束循环 9、以下函数调用语句中,含有的实参个数是____。 func((exp1,exp2),(exp3,exp4,exp5)); A.1 B.2 C.4 D.5

10、以下程序的输出结果是____。 double f(int n) { int i; double s=1.0;

for(i=1;i<=n;i++) s+=1.0/i; return s; } main( ) { int i,m=3; float a=0.0;

for(i=0;iA.5.500000 B.3.000000 C.4.000000 D.8.25 11、以下程序段的输出结果是____。 int i,j,m=0; for(i=1;i<=15;i+=4) for(j=3;j<=19;j+=4) m++; printf(“%d\\n”,m); A.12 B.15 C.20 D.25

12、以下程序中若第一个printf语句输出的是194,则第二个printf语句输出结果是____。 main( )

{ int a[ ]={1,2,3,4,5,6,7,8,9,10},*p; p=a;

printf(“%x\\n”,p); printf(“%x\\n”,p+9); }

A.212 B.204 C.1a4 D.1a6

13、若有定义:int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素的引用不正确的是____。

A. a[p-a] B. *(&a[i]) C. p[i] D. *(*(a+i)) 14、以下程序的输出结果是____。 main( )

{ int aa[3][3]={{2},{4},{6}},i,*p=&aa[0][0]; for(i=0;i<2;i++)

{ if(i==0) aa[i][i+1]=*p+1; else ++p;

printf(“%d”,*p); }

printf(“\\n”); }

A.23 B.26 C.33 D.36

15、执行下列程序后,y的值是____。 main( )

{ int a[ ]={2,4,6,8,10}; int y=1,*p,x; p=&a[1];

for(x=0;x<3;x++) y+=*(p+x);

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

A.17 B.18 C.19 D.20 16、以下程序的输出结果是____。 void sub(float x,float *y,float *z) { *y=*y-1.0; *z=*z+x; } main( )

{ float a=2.5,b=9.0,*pa,*pb; pa=&a; pb=&b; sub(b-a,pa,pa); printf(“%f\\n”,a); }

A.9.000000 B.1.500000 C.8.000000 D.10.500000 17、下面程序的输出结果是____。 #include “stdio.h” main( )

{ static char b[ ]= “Goodbye”; char *chp=&b[7];

while(--chp>=&b[0]) putchar(*chp); putchar(‘\\n’); }

A.Goodbye B.gOODBYE C.无任何输出 D.eybdooG 18、若有如下说明,则____的叙述是正确的。 struct st { int a; int b[2]; }a;

A.结构体变量a与结构体成员a同名,定义是非法的 B.程序只有在执行到该定义时才为结构体st分配存储单元

C.程序运行时为结构体变量a分配6个字节存储单元 D.不能将结构体类型说明与变量定义紧凑写在一起 19、设有如下定义:struct std { int a; float b; }data ,*p;

若有p=&data;则对data中的成员变量a的正确引用是____。 A.(*p).data.a B.(*p).a C.p->data.a D.p.data.a 20、以下程序的输出结果是____。 main( ) { char x=040;

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

A.100 B.160 C.120 D.64

二、填空题(10个小题,每小题2分,共20分):

1、若a是int型变量,则执行表达式 a=25/3%3 后,a的值为____。 2、C语言中用____表示逻辑值“真”。

3、用在循环结构中,可以结束本次循环的语句是____。

4、用数组名作为函数参数是地址传递方式。地址传递是____(单向/双向)传递。

5、在二维数组初始化时,可以省略数组的____(行下标/列下标),系统会根据初值的个数,算出该下标的大小。

6、若输入字符‘A’,在以下while语句执行后ch的值为____。 while(ch=getchar( )==‘A’); 7、所谓“指针”,就是____。

8、设有宏定义:#define MUL(z) (z)*(z),则执行以下语句后,输出结果为____。 printf(“%d\\n”,MUL(1+2)+3);

9、若有定义和语句:char str[ ]=“ABCD”,*p=str; printf(“%d\\n”,*(p+4)); 则输出结果是____。

10、能够实现局部翻转(0变1,1变0)的位运算是____。

三、读下面程序,写出执行结果(4个小题,每小题5分,共20分):

1、若运行以下程序时,从第一列开始输入数据:2473代表Enter),写出程序的执行结果。 #include “stdio.h” main( ) { char c;

while((c=getchar( ))!=‘\\n’) switch(c-‘2’) { case 0:

case 1 :putchar(c+4); case 2 :putchar(c+4);break; case 3 :putchar(c+3); default:putchar(c+2);break; }

printf(“\\n”);

}

2、main( )

{ int x=2,y=3,z=0; try(x,y,z);

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

try(int x,int y,int z) { z=x+y; x=x*x; y=y*y;

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

3、#include “stdio.h” #include “string.h” main( )

{ char *p1=“abc”,*p2=“ABC”,str[50]=“xyz”; strcpy(str+2,strcat(p1,p2)); printf(“%s\\n”,str); }

4、#include “stdio.h” #define NUM 8

void invert(int *a,int n); main( )

{ int a[NUM]={10,20,30,40,50,60,70,80},i; invert(a,NUM); for(i=0;ivoid invert(int *a,int n) { int i,j,t; i=0;j=n-1; while(i{ t=a[i];a[i]=a[j];a[j]=t; i++;j--; } }

四、编程题(2个小题,每小题10分,共20分):

1、编写程序,计算如下公式的值:t=1-1/(2*2)-1/(3*3)-„-1/(m*m)。 例如,若m=5,则应输出0.536389。 要求:利用scanf函数输入m的值。

利用子函数形式,m充当参数,不能只利用main函数形式实现。

2、编写程序,从输入的10个字符串中通过比较,找出最小和最大的字符串进行输出。 要求:利用二维字符数组。

利用gets函数进行输入,puts函数进行输出。

第四套试题答案

一、选择题(20个小题,每小题2分,共40分): 1、D 2、D 3、B 4、C 5、C 6、A 7、D 8、D 9、B 10、A

11、C 12、D 13、D 14、A 15、C 16、B 17、D 18、C 19、B 20、D 二、填空题(10个小题,每小题2分,共20分): 1、2 2、非零值 3、continue 4、双向 5、行下标 6、1 7、地址 8、12 9、0 10、^(异或)

三、读下面程序,写出执行结果(4个小题,每小题5分,共20分): 1、668977 2、(1)x=4,y=9,z=5 (2)x=2,y=3,z=0 3、xyabcABC

4、 80 70 60 50 40 30 20 10

四、编程题(2个小题,每小题10分,共20分): 1、main( )

{ float fun(int m),t; int m;

scanf(“%d”,&m); t=fun(m);

printf(“t=%f\\n”,t); }

float fun(int m) { float t=1,s; int i;

for(i=2;i<=m;i++) { s=1.0/(i*i); t=t-s; }

return t; }

2、#include “stdio.h” #include “string.h” main( )

{ char str[10][20],s[20]; int i;

for(i=0;i<10;i++) gets(str[i]); for(i=1;i<10;i++)

if(strcmp(str[0],str[i])>0) { strcpy(s,str[0]); strcpy(str[0],str[i]); strcpy(str[i],s); }

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

if(strcmp(str[i],str[9])>0) { strcpy(s,str[i]); strcpy(str[i],str[9]); strcpy(str[9],s); }

puts(str[0]); puts(str[9]); }

第五套试题

一、单项选择题(30个小题,每题2分,共60分): 1.一个C语言程序的执行是从_____。

A.main函数开始,直到main函数结束 B.第一个函数开始,直到最后一个函数结束 C.第一个函数开始,直到最后一个语句结束 D.main函数开始,直到最后一个函数结束

2.设ch是char型变量,其值为‘A’,且有表达式:ch=(ch>=‘A’&& ch<=‘Z’)?(ch+32):ch,该表达式的值为_____。 A.A B.a C.Z D.z

3.在C语言中,合法的字符常量是_____。 A.‘\\084’ B.‘\\x43’ C.‘ab’ D.“\\0”

4.当运行以下程序时,在键盘上从第一列开始输入9876543210(此处代表Enter),则程序的输出结果是_____。 main( )

{ int a;float b,c;

scanf(“%2d%3f%4f”,&a,&b,&c); printf(“\\na=%d,b=%f,c=%f\\n”,a,b,c); }

A.a=98,b=765,c=4321 B.a=10,b=432,c=8765

C.a=98,b=765.000000,c=4321.000000 D.a=98,b=765.0,c=4321.0 5.以下叙述正确的是_____。

A.do_while语句构成的循环不能用其它语句构成的循环来代替 B.do_while语句构成的循环只能用break语句退出

C.用do_while语句构成循环时,只有在while后的表达式为非零时结束循环 D.用do_while语句构成循环时,只有在while后的表达式为零时结束循环 6.以下的序的输出结果是_____。 main( )

{ int x=10,y=3;printf(“%d\\n”,y=x/y);} A.0 B.1 C.3 D.不确定的值 7.以下程序段的输出结果是_____。 int k,j,s;

for(k=2;k<6;k++,k++) { s=1;

for(j=k;j<6;j++) s+=j; }

printf(“%d\\n”,s); A.9 B.1 C.11 D.10

8.设有如下函数:ggg(float *x)

{ printf(“%d\\n”,*x);} 则函数的类型是_____。 A.与参数x的类型相同 B.void C.int D.无法确定 9.C语言源程序的基本单位是_____。 A.过程 B.函数 C.子程序 D.标识符 10.以下程序的输出结果是_____。 double f(int n)

{ int i; double s=1.0; for(i=1;i<=n;i++) s+=1.0/i; return s; } main( )

{ int i,m=3;float a=0.0; for(i=0;iA.5.500000 B.3.000000 C.4.000000 D.8.25 11.以下程序的输出结果是_____。 f(int a)

{ int b;static int c=3; b++; c++; return(a+b+c); } main( ) { int a=2,i;

for(i=0;i<3;i++) printf(“%d\\n”,f(a)); }

A.7 B.7 C.7 D.7 8 9 10 7 9 11 13 7

12.若a、b、c1、c2、x、y均是整型变量,正确的switch语句是_____。 A. switch(a+b);

{ case 1 : y=a+b;break; case 3 : y=a-b;break; }

B.switch(a*a+b*b) { case 3 ;

case 1 : y=a+b;break; case 3 : y=a-b;break;

C.switch a

{ case c1 : y=a-b;break; case c2 : y=a*b;break; default : x=a+b; }

D.switch(a-b)

{ default : y=a*b;break; case 3 : case 4 : x=a+b;break; case 10 : case 11 : y=a+b;break;

13.在C语言中,以下所列的各函数首部正确的是_____。

A.void play(var a : Integer,var b : Integer) B.void play(int a,b) C.void play(int a,int b) D.void play(a As Integer,b As Integer)

14.设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是_____。

A.把x和y按从大到小排序 B.把x和y按从小到大排序 C.无确定结果 D.交换x和y中的值 15.在执行以下程序时,如果从键盘上输入:ABCdef<回车>,则输出为_____。 #include main( ) { char ch;

while((ch=getchar( ))!=‘\\n’) { if(ch>=‘A’&& ch<=‘Z’) ch=ch+32; else if(ch>=‘a’&& ch<=‘z’) ch=ch-32; printf(“%c”,ch); } }

A.ABCdef B.abcDEF C.abc D.DEF 16.下列程序的运行结果是_____。 main( ) { int i,j,x=0; for(i=0;i<2;i++) { x++;

for(j=0;j<=3;j++) { if(j%2) break; x++; } x++; }

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

A.x=4 B.x=8 C.x=6 D.x=12

17.为表示关系x≥y≥z,应使用的C语言表达式是_____。

A.(x>=y)&&(y>=z) B.(x>=y)AND(y>=z) C.(x>=y>=z) D.(x>=y)&(y>=z) 18.设有语句char a=‘\\72’; 则变量a_____。

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

19.下面程序的输出结果是_____。 #include “stdio.h” main( ) { int num=0; while(num<=2) { num++;

printf(“%d\\n”,num); } }

A.1 B. 2 C. 1 D.1 2 2 2 3 3 4

20.下面程序的输出结果是_____。 void fun(int *x,int *y)

{ printf(“%d %d”,*x,*y); *x=3; *y=4;} main( ) { int x=1,y=2;

fun(&y,&x); printf(“%d %d”,x,y);} A.2 1 4 3 B.1 2 1 2 C.1 2 3 4 D.2 1 1 2 21.下面程序的输出结果是_____。 #include “stdio.h” #include “string.h” main( )

{ char *p1=“abc”,*p2=“ABC”,str[50]=“xyz”; strcpy(str+2, strcat(p1, p2)); printf(“%s\\n”,str); }

A.xyzabcABC B.zabcABC C.yzabcABC D.xyabcABC 22.以下程序的输出结果是_____。 void prtv(int *x)

{ printf(“%d\\n”,++*x);} main( ) { int a=25; prtv(&a); }

A.23 B.24 C.25 D.26

23.以下程序中的for循环执行的次数是_____。 #define N 2 #define M N+1 #define NUM (M+1)*M/2 main( ) { int i;

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

printf(“%d\\n”,i); }

A.5 B.6 C.8 D.9

24.以下对二维数组a进行不正确初始化的是_____。

A.int a[ ][3]={3,2,1,1,2,3}; B.int a[ ][3]={{3,2,1},{1,2,3}}; C.int a[2][3]={{3,2,1},{1,2,3}}; D.int a[ ][ ]={{3,2,1},{1,2,3}}; 25.若有定义和语句:char s[10]; s=“abcd”;

printf(“%s\\n”,s); 则结果是_____。 A.abcd B.a C.“abcd” D.编译不通过 26.执行下列程序后,y的值是_____。 main( )

{ int a[ ]={2,4,6,8,10},y=1,*p,x; p=&a[1];

for(x=0;x<3;x++) y+=*(p+x); printf(“%d\\n”,y); }

A.17 B.18 C.19 D.20 27.以下程序的输出结果是____。 main( )

{ char s[ ]=“ABCD”,*p;

for(p=s;p28.对于如下的结构体定义:

struct date { int year,month,day;}; struct worklist { char name[20]; char sex;

struct date birthday;

}person; 若对变量person的出生年份进行赋值,_____是正确的赋值语句。

A.year=1976; B.birthday.year=1976; C.person.birthday.year=1976; D.person.year=1976; 29.以下程序的输出结果是_____。 main( )

{ int aa[3][3]={{2},{4},{6}},i,*p=&aa[0][0]; for(i=0;i<2;i++)

{ if(i==0) aa[i][i+1]=*p+1; else ++p;

printf(“%d”,*p); }

printf(“\\n”); }

A.23 B.26 C.33 D.36

30.根据以下定义,能输出字母‘M’的语句是_____。 struct person { char name[9];int age;};

struct person class[4]={“John”,17,“Paul”,19,“Mary”,18,“Adam”,16}; A. printf(“%c\\n”,class[3].name); B. printf(“%c\\n”,class[3].name[1]); C. printf(“%c\\n”,class[2].name[1]); D. printf(“%c\\n”,class[2].name[0]); 二、读下面程序,写出执行结果(5个小题,每题4分,共20分): 1.int i,j,m=0; for(i=1;i<=15;i+=4) for(j=3;j<=19;j+=4) m++; printf(“%d\\n”,m); 2.f(int b[ ],int n) { int i,r=1;

for(i=0;i<=n;i++) r=r*b[i]; return r; } main( )

{ int x,a[ ]={2,3,4,5,6,7,8,9}; x=f(a,3);

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

3.若输入“adequacy” ,写出程序的执行结果。 #include main( )

{ char c; int v0=0,v1=0,v2=0; while((c=getchar( ))!=‘\\n’) { switch(c) { case ‘a’: case ‘e’: case ‘i’:

case ‘o’: case ‘u’:v1++; default:v0++;v2++; } }

printf(“v0=%d,v1=%d,v2=%d\\n”,v0,v1,v2); }

4.main( )

{ char a[ ]=“ABCDEDGH”,b[ ]=“abCDefGh”,*p1=a,*p2=b; int k;

for(k=0;k<=7;k++)

if(*(p1+k)==*(p2+k)) printf(“%c”,*(p1+k)); printf(“\\n”); }

5.若输入“I am a boy!” ,写出程序的执行结果。

char connect(char *string1 ,char *string2 ,char *string) { int i,j;

for(i=0;string1[i]!=‘\\0’;i++) string[i]=string1[i]; for(j=0;string2[j]!=‘\\0’;j++) string[i+j]=string2[j]; string[i+j]=‘\\0’; } main( )

{ char s1[100],s2[100],s[100];

printf(“输入string1:\\n”); scanf(“%s”,s1); printf(“输入string2:\\n”); scanf(“%s”,s2); connect(s1,s2,s); printf(“%s\\n”,s); }

三、编写程序题(3个小题,共20分):

1.利用scanf函数输入三个整数,按从小到大的顺序输出。(5分) 2.求n!,即计算1*2*3*„*n的值。(5分)

3.输入10个学生的成绩,求平均成绩,并将低于平均成绩的分数输出。(要求:(1)使用数组存放成绩,数组名为score。 (2)编写三个函数,函数input:输入学生成绩, 函数average:求平均成绩,

函数result:将低于平均成绩的分数输出。

第五套试题答案

一、单项选择题(30个小题,每题2分,共60分): 1.A 2.B 3.B 4.C 5.D 6.C 7.D 8.C 9.B 10.A

11.A 12.D 13.C 14.D 15.B 16.C 17.A 18.A 19.C 20.A 21.D 22.D 23.C 24.D 25.D 26.B 27.A 28.C 29.A 30.D

10分) 二、读下面程序,写出执行结果(5个小题,每题4分,共20分): 1.20 2.120 3.v0=8,v1=4,v2=8 4.CDG 5.Iam 三、编写程序题(3个小题,共20分):

1.利用scanf函数输入三个整数,按从小到大的顺序输出。(5分) main( ) { int a,b,c,t;

printf(“Enter a,b and c:”); scanf(“%d,%d,%d”,&a,&b,&c); if(a>b) { t=a; a=b; b=t; } if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } printf(“%d,%d,%d\\n”,a,b,c); }

2.求n!,即计算1*2*3*„*n的值。(5分) main( ) { int s=1,i,n; printf(“Enter n:”); scanf(“%d”,&n);

for(i=1;i<=n;i++) s=s*i; printf(“s=%d\\n”,s); }

3.输入10个学生的成绩,求平均成绩,并将低于平均成绩的分数输出。(要求:(1)使用数组存放成绩,数组名为score。 (2)编写三个函数,函数input:输入学生成绩, 函数average:求平均成绩,

函数result:将低于平均成绩的分数输出。 void input(float score[10],int n) { int i;

printf(“Enter student’s scores:\\n”); for(i=0;ifloat average(float score[10],int n) { float sum=0; int i;

for(i=0;ivoid result(float score[10],float ave,int n) { int i;

printf(“Below the average:\\n”);

10分) for(i=0;iif(score[i]{ float ave,score[10]; input(score,10); ave=average(score,10);

printf(“average=%6.2f\\n”,ave); print(score,ave,10); }

第六套试题

一、 选择题(15*2=30分)

1、下列对C语言的特点说法不正确的是_____。 A.c语言是结构化设计语言 B.c语言是机器语言

C.c语言生成目标代码质量高,程序执行效率高 D.c语言简洁、紧凑、使用方便、灵活 2、一个C语言程序的执行是从_____。

A.第一个函数开始,直到最后一个函数结束 B. main函数开始,直到main函数结束 C.第一个函数开始,直到最后一个语句结束 D.main函数开始,直到最后一个函数结束 3、下列标识符错误的是_____。 A.Hot_dog B.cat1 C.2dog D.S_exp 4、以下叙述正确的是_____。

A.do_while语句构成的循环不能用其它语句构成的循环来代替 B.do_while语句构成的循环只能用break语句退出

C.用do_while语句构成循环时,当while后的表达式成立时结束循环 D.用do_while语句构成循环时,当while后的表达式不成立时结束循环 5、以下程序的输出结果是_____。 main( )

{ int x=10,y=3;printf(“%d\\n”,y=x/y);} A.0 B.1 C.3 D.不确定的值 6、以下程序段的输出结果是_____。 int k,j,s;

for(k=2;k<6;k++,k++) { s=1;

for(j=k;j<6;j++) s+=j; }

printf(“%d\\n”,s); A.9 B.1 C.11 D.6

7、如果有下列说明int p,a=3;执行了p=&a;则与&*p表达的意思一致的是_____。 A.&a B.a C.&p D.*p

8、为表示关系x≥y≥z,应使用的C语言表达式是_____。

A.(x>=y)&&(y>=z) B.(x>=y)AND(y>=z) C.(x>=y>=z) D.(x>=y)&(y>=z) 9、设有语句char a=‘\\72’; 则变量a_____。

A.包含1个字符 B.包含2个字符 C.包含3个字符 D.说明不合法 10、以下对二维数组a进行不正确初始化的是_____。

A.int a[ ][3]={3,2,1,1,2,3}; B.int a[ ][3]={{3,2,1},{1,2,3}}; C.int a[2][3]={{3,2,1},{1,2,3}}; D.int a[ ][ ]={{3,2,1},{1,2,3}}; 11、对于如下的结构体定义: struct date { int year;int month;int day;}; struct worklist { char name[20]; char sex;

struct date birthday; }person;

若对变量person的出生年份进行赋值,_____是正确的赋值语句。

A.year=1976;B.birthday.year=1976;C.person.birthday.year=1976; D.person.year=1976; 12、如果int *p,a[3]={1,2,3};执行p=a;那么运行printf(“%d”,*p++);输出结果是_____。 A.1 B.2 C.3 D.不确定

13、下面是有关对算法的说法,其中不正确的是_____。

A. 算法是程序的灵魂 B.算法是解决“做什么”和“怎么做”的问题 C.N-S流程图表示算法比传统流程图紧凑易画,尤其是它废除了流程线。

D.传统的流程图表示算法如:顺序、选择、循环三种结构,一般有多个入口,多个出口 14、如果int a[]={1,2,3,4,5};int p=a+3; 那么printf(“%d”,*p+3);输出结果是_____。 A.4 B.1 C.5 D.7

15、下列对全局变量和局部变量说法不正确的是_____。 A.全局变量可以为其他文件中的函数所共用

B.全局变量的有效范围为从定义变量的位置开始到本源文件结束 C.局部变量只有在本函数内才能使用它们 D.局部变量不能为其他文件中的函数所共用 二、 程序填空(5*5=25分) 1、 将下列空白行程序填写完整

1) 下列程序完成打印出以下图案的功能,请将程序中的一处补充完整。 Main() * * * * * * * * * * * * * * * * {int i,j,k; for(i=0;i<=3;i++) { for( )

printf(“ ”); for(k=0;k<=2*i;k++) printf(“*”); printf(“\\n”); }

2) 下列程序完成求一个字符串长度的功能,请将程序中的两处补充完整。 Main() { int len; char *str[20];

printf(“Input string:”); scanf(“%s”, ); len=length(str);

printf(“The length of string is %d.”,len); }

length(char *p) { int n=0;

while(*p!=’\\0’); {n++; ; }

return(n); }

2、 写出下列程序的运行结果 1) main()

{int a=1;b=2;c=3; switch((a=b)= =c)

{case 0:printf(“false”); case 1: printf(“true”); case 2:

case 3:printf(“2,3”); } }

程序运行结果是: 2) main() { int n=0; char c;

while((c=getchar())!=’2’) n++,printf(“0%c”,c); printf(“%d”,n); }

假如输入1992,那么输出结果是: 3)

#include main()

{int m,i,k; scanf(\"%d \k=sqrt(m); for(i=2;i<=k;i++); if(m%i= =0) break; if(i>k) printf(“YES”); else printf(“NO”); }

假如输入19,那么输出结果是: 三、 程序改错(3*5=15分)

说明:如果第4行有错,就写:第4行应改成*****;如果需要在第3行和第4行插入代码就写:在第3、4中间插入*****。 1、 求1!+2!+3!+4!+5! 1) #include 2) #include 3) main() 4) {

5) float s=0,t=1; 6) int n;

7) for(n=1;n<=5;n++) 8) t=t*n; 9) s=s+t;

10) printf(\"1!+2!+3!+4!+5!=%f\\n\11) }

此程序运行后,没有任何语法错误提示,输出结果:120.000000,显然错误。请对以上程序改动2行后能使程序正常运行并输出正确结果:153.000000。 ① ②

2、 交换两个数 1) main() 2) {int a,b; 3) int *p1,*p2;

4) scanf(\"%d,%d\5) p1=&a; p2=&b; 6) if (a8) printf(\"\\n%d,%d\\n\9) }

10) swap(int *pa,int *pb) 11) {int p;

12) p=pa;pa=pb;pb=p; 13) }

此程序运行后,没有任何语法错误提示,如果输入3,4输出结果:3,4,显然错误。请对以上程序改动1行后能使程序正常运行并输出正确结果:4,3。 ①

四、 程序设计(2*15=30分)

1、下列这个程序是用函数的方式完成编写一个Fibonacci数列, 请补充完成函数number_fibonacci( )的代码。

这个数列有如下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。即: F1=1 (n=1) F2=1 (n=2)

Fn=Fn-1+Fn-2 (n>=3) 运行结果为: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 . . . . . . . . 程序如下 main() { int n; scanf(\"%d\number_fibonacci(n); printf(\"\\n\"); }

void number_fibonacci(int n) { }

2、利用所学知识,设计下列程序

打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为 153=1*1*1+5*5*5+3*3*3

第六套试题答案

一、 选择题(15*2=30分)

1—5 BBCDC 6—10 DAAAD 11—15 CADDA 二、 程序填空(5*5=25分) 1、 完成下列程序

1) for(j=0;j<=2-i;j++) 2) str (2分) p++(3分) 2、 写出下列程序的运行结果 1) falsetrue 2,3 2) 0109093 3) NO

三、 程序改错(5*3=15分)

1、① 在第7和8行之间插入 {或者将第7行改为{ t=t*n; ② 在第9和10行之间插入 }或者将第9行改为s=s+t;} 2、① 第11行改成 p=*pa;*pa=*pb;*pb=p; 四、 程序设计(3*10=30分) 1、

void number_fibonacci(int n) { int m;

long fib,fib1=1,fib2=1; printf(\"%1d%1d\for(m=3;m<=n;m++) {

fib=fib1+fib2; fib1=fib2; fib2=fib;

printf(\"%1d\} return; } 2、 main() {

int i,j,k,n;

printf(“水仙花数是”); for(n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n%10;

if(n= =i*i*i+j*j*j+k*k*k) printf(“%4d”,n); }

pintf(“\\n”);}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top