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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一套试题
、单项选择题(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( “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. _______________________________________________ 根据以下说明语句,贝U下面的叙述中不正确的是________________________________________________________ 。

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/;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. ch仁“ a” ; B . ch1= ‘ a';
C. ch1="语言程序设计”;D ch1 ='语言程序设计';
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.叶B . rb C . wb D . ab
二、填空题(5个小题,每题2分,共10分):
1. __________________________________________________________ 若有int i=1,j=7,a; 执行语句
a=i+(j%4!=0); 后,a 的值是____________________________________________
2 .执行以下程序后,运行结果是__________ _
#include<stdio.h>
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( “n%d ,a);}
3. _______________________________________________________________ 源程序中用到了strcat函数,需要包含的头文件(即库文件)为_______________________________________________ _
4. 执行以下程序后,运行结果是_________ _
#include<stdio.h>
void main()
{ int a=2;
float n=5.888,b;
b=a+(int)n;
printf( 'h%f ,b);}
5. 语句scanf("a=%d,b=%d",&a,&b); 若将3和4分别输入给a和b ,则正确的输入方式为
<CR>。

三、程序分析题,写岀程序的运行结果(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 n ” ,a,b);}
2. 在运行以下程序时,输入“Turbo C++
3.0
#include<stdio.h>
void main()
{ char str[40];
printf("Input a string:");
scanf("%s",str);
puts(str);}
3. #include<stdio.h>
void f(int y)
{ static int i=5;
int j=3;
j++;
printf( “ %d+%d+%d=%id ”,i,jj+j+y);
i*=2;}
void main()
{ int x;
for(x=1;x<=2;++x) f(x);}
4. #include<stdio.h>
void swap(int *pa,int *pb)
{ int *p;
p=pa;
pa=pb;
pb=p; }
void main()
{ int a=10,b=20;
int *p 仁&a,*p2=&b;
if(a<b) swap(p1,p2);
printf("%d,%d\n",a,b); }
5. #include<stdio.h>
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;
printf( “ a+b=%nd ,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.Q f ,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 ",m);
}
int length(char *p)
{ int n=0;
while( ② ){ n++; p++; }
return n;}
4. 输入10个整数,按每行3个数输岀这些整数,最后输岀10个整数的平均值#include “ stdio.h ”
{ int i,n=10,a[10];
float avg=0;
for(i=0;i<n;i++)
scanf( “ %d” ,&a[i]);
for(i=0;i<n;i++)
{ if( ①)prints” ); “
printf( “ %d ” ,a[i]);
}
for(i=0;i<n;i++)
②;
avg=avg/n;
printf( “ average=%” ,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 .① jv=i ② printf(n ”)“
2 .① float average(float a[10]) 或float average(float a[])
② return (sum/10)
3 .① m=length(str) ② *p!=或*p
4 .① i%3==0 ② avg+=a[i]或avg=avg+a[i]
5 .① *cp=*cp+32 或*cp=*cp+ - 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",a,b,c); 分 (1)
}
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:);
scanf( “ %f”,&score);
}
if(score>=90) printf( n” ); a A-分・3 else if(score>=80) printf( n ”); “B else if(score>=70) printf( n ”); “C
else if(score>=60) printf( n ”); “D
else printf( n ” “E
}
3. #include "stdio.h"
#define N 10
void sort(int a[]); 分 (1)
void main()
{ int a[N],i,j;
printf("input %d numbers:\n",N); for(i=0;i<N;i++) 分 (2)
scanf("%d", &a[i]);
sort(a); 分 (2)
for(i=0;i<N;i++)
printf("%d ",a[i]);
}
void sort(int a[])
{ int i,j,temp;
for(i=0;i<N- 1;i++) …分5
for(j=0;j<N-1-i;j++)
if(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+该表达式的值为
A. A B . a C . Z D . z
6. 以下叙述正确的是_
A. 用do-while
B. 用do-while
C .用do-while
D.用do-while 语句构成的循环不能用其它语句构成的循环来代替
语句构成的循环只能用break语句退出
语句构成循环时,当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"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 "D ,*c=Ctair *c,c= ‘ x ' ,c=&c ;
15. 以只读”方式打开文本文件aa.dat,下列语句中哪一个是正确的_________
A. fp=fopen( " aa.dat "
B." fp=f6pen( " aa.dat " , " a");
C. fp=fopen( " aa.dat "
D. Wp='fopen( " aa.dat " , " r ");
二、填空题(15个小题,每空1分,共15分):
1 .结构化程序设计的三种基本程序结构为顺序结构、选择结构和__________
2 .条件“ 30 < x ^且80工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",*p);的输出结果是_______________ _
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 ,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",c)
}
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",fun(a+fun(d)))
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<n ;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=O ;i<n ;i++)
scanf( “ %d” ,&a[i]) ;
for(i=0 ;i<n ;i++)
{ if(i%3==0) (1)
printf( “ %d” ,a[i]) ;
}
for(i=0 ;i<n ;i++) avg+=a[i] ;

printf( “ average=%” ,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 ;i<N-1 ;i++)
{ (1)
for(j=i+1 ;j<N ;j++)
if(⑵)r=j ;
if(r!=i)
{ temp=a[r] ;a[r]=a[i] ;a[i]=temp ;}
}
printf("the array after sort:\n") ;
for(i=0 ;i<N ;i++)
printf("%5d",a[i]);
}
3. 输岀九九乘法表。

#include "stdio.h"
void main()
{ int i,j ;
for(i=1 ;i<=9 ;i++)
{ for( (1))
printf("%3d*%d=%-3d", (2)) ;
printf("\n");
}
4. 通过调用子函数average,分别求出主函数main中x和y数组的平均值并输出#include "stdio.h"
strlen( )。

( 8 float average( (1))
{ int i ;
float sum=0 ;
for(i=0 ; i<n ; i++) sum=sum+a[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) ;
avg=average(y,5);
printf("The array y average is %5.2f\n",avg) ;
}
5. 将字符数组中大写字符改为小写字符 ,将小写字符改为大写字符。

#include "stdio.h"
void main()
{ char str[30]= “I am a string ” ,*cp ;

while(*cp)
{ if(*cp>= ‘ A ' &&*cp<= ‘ Z '
*cp=*cp+32 ;
else if(*cp1 >= ‘ a ' &&*cp<= ‘ z ')
*cp=*cp-32 ;
else
*cp=*cp ;

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

( 7 分)
2. 编写一个计算字符串长度的函数 ,模拟C 的“ string.h 函数库内的计算字符串长度的函数 分)
第二套试题答案
一、 单项选择题(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]<a[r]
3. ( 1)j=1 ; j<i ; j++ ( 2)i,j,i*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!+ …分0!=%f\n",s ); ................... 分 1
}
2. #include “ stdio.h ” int strlength (char *s ) ;
void main ()
{ int n1,n2 ;
char *l ist1= “ See no evil,hear no evil
”;
char *list2= “ blind and deaf? ; n1=strlength (list1);
n2=strlength(list2);
puts(listl);
printf( “ The length of list仁%cn ” ,n1) puts(list2);
printf( “ The length of list2=%ct)” ,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",&a,&b,&c);
C. scanf("%d%d%d",&a&b&c); D . scanf("%d%d%d",a,b,c);
6、为表示关系x > y >应使用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( n'”%d, 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",strlen("\n123\\")); 的输出结果是7。

()
10、用在循环结构中,可以结束本次循环的语句是continue。

()
三、填空题(9个小题,每空2分,共20分):
1、C语言源程序文件的扩展名是____ 。

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

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

4、调用C语言对字符串处理的库函数时,在#include命令行中应包含的头文件是 _________
5、终止switch语句执行的语句是 ________ _
6、用数组名作为函数参数是地址传递方式。

地址传递是______ (单向/双向)传递。

7、在C语言中,所谓指针”就是 ________
8、C程序的main函数是否允许有参数。

_______ (是/否)。

9、文件打开时使用的函数是_______
四、读下面程序,从选择项选出相应执行结果(每小题4分,共20分):
1、main()
{char a[]="l am a boy.",b[20],*p1,*p2;
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",b[i]);
}
执行结果是()
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",a);
}
执行结果是()
3、#define N 2
#define M N+1
main()
{ int i;
for(i=1;i<=M;i++);
printf("%d\n",i);
}
执行结果是()
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",y);
}
执行结果是()
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",k);
}
执行结果是()
程序选择项:
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",sum);
}
2、求100~200间的全部素数。

# include <math.h>
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",m);_ ⑥ ___;}
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;jv=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",a[i]);
}
第三套试题答案
一、选择题(15个小题,每小题2分,共30分):
I、 C 2、A 3、D 4、A 5、B
6、D
7、D
8、A
9、D 10、C
II、 A 12、C 13、D 14、D 15、C
二、判断题(10个小题,每小题1分,共10分):
1、“
2、“
3、X
4、X
5、“
6、X
7、“
8、X
9、X 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 ' && ‘ a<=b C .. a||b+c&&b-c D . !((a<b)&& !c||1)
3、若有以下定义和语句:char c1= ' b' ,c2= ' e';
printf( “ %di;%c ,e21,c2- ' a' + 贝1J输出结果是 _____ 。

A. 2, M B . 3, E
C. 2, e D .输入项与对应的格式控制不一致,输出结果不确定
4、当运行以下程序时,在键盘上从第一列开始输入9876543210<CR> (此处<CR>代表Enter),则程序的输岀结果是―。

main()
{ int a ;float b,c ;
scanf( “ %2d%3f%4f ” ,&a,&b,&c) ;
printf( “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( “n%d ,f( “ goodbye! ” ));
A. 3 B . 6 C . 8 D . 0
6、以下程序的输岀结果是―_
main()
{ int w=4,x=3,y=2,z=1 ;
printf( “n%dw<x?w:z<y?z:x));
}
A. 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( “n%d ,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 ;i<m ;i++) a+=f(i);
printf( 'h%f ,a);
}
A. 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( “n%d ,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( “n%x ,p);
printf( “n%x ,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( ”n%d ,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( 'h%f ,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( “n%d,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( “n%d ,MUL(1+2)+3) ;
9、若有定义和语句:char str[ ]= “ ABCD” ,*p=str ;
printf( "n%d ,*(p+4))则输出结果是__________ 。

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

三、读下面程序,写岀执行结果(4个小题,每小题5分,共20分):
1、若运行以下程序时,从第一列开始输入数据:2473<CR> ( <CR>代表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=%nf ,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=%nT ,x,y,z) ;
}
3、#include ” stdio.h ”
#include ” string.h ”
main()
{ char *p1= ” abc ” ,*p2= ” ABC”,str[50]= ” xyz
strcpy(st r+2,strcat(p1,p2));
printf( "n%s ,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 ;i<NUM ;i++)
printf( ” %4d ” ,a[i]) ;
printf( n”” );
}
void invert(int *a,int n)
{ int i,j,t ;
i=0 ;j=n-1 ;
while(ivj)
{ 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分):
I、 D 2、D 3、B 4、C 5、C 6、A 7、D 8、D 9、B 10、A
II、 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=n%f ,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<= ?'(Eh+)2 ):ch,该表
达式的值为_____
A. A B . a C . Z D . z
3. 在C语言中,合法的字符常量是______
A.' 084 ' B .x43 ' C ab '0”D .“
4. 当运行以下程序时,在键盘上从第一列开始输入
9876543210<CR> (此处<CR>代表Enter ),则程序
的输岀结果是_____
main()
{ int a ;float b,c ;
scanf( “ %2d%3f%4f ” ,&a,&b,&c) ;
printf( “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( ’h%d,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( "n%d ,s);
A. 9
B. 1 C . 11 D . 10
8. 设有如下函数:ggg(float *x)
{ printf( “"%d*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 ;i<m ;i++) a+=f(i);
printf( 'h%f ,a);
}
A. 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( n ” %fda)) ;
}
A. 7 B . 7 C . 7 D . 7
8 9 10 7。

相关文档
最新文档