c语言学习知识资料检验测试试题.doc
一、填空 共5题 (共计20分)第1题 (4.0分) 题号:341定义int a23;表示数组a中的元素个数是【1】个.答案:6第2题 (4.0分) 题号:308当a=3,b=2,c=1;时,执行以下程序段后 a=【1】.if(ab) a=b; if(bc) b=c;else c=b;c=a;答案:2第3题 (4.0分) 题号:1524下列程序的输出是【1】,main()int a=011;printf(%dn,+a);答案:10第4题 (4.0分) 题号:658int x=2;x*=y=z=4; 则x的值为【1】.答案:8第5题 (4.0分) 题号:312以下程序段要求从键盘输入字符,当输入字母为Y 时,执行循环体,则括号内应填写【1】.ch=getchar();while(ch _ Y)/*在括号中填写*/ch=getchar();答案:=二、单项选择 共15题 (共计30分)第1题 (2.0分) 题号:98以下标识符中,不能作为合法的C用户定义标识符的是()。A:For B:Printf C:WORD D:sizeof答案:D第2题 (2.0分) 题号:152以下程序的运行结果是()。main() int n; for(n=1;n=10;n+) if(n%3=0) continue; printf(%d,n); A:12457810 B:369 C:12 D:1234567890答案:A第3题 (2.0分) 题号:184下列定义不正确的是()。A:#define PI 3.141592 B:#define S 345C:int max(x,y); int x,y; D:static char c;答案:C第4题 (2.0分) 题号:513int a10;合法的数组元素的最小下标值为()。A:10 B:9 C:1 D:0答案:D第5题 (2.0分) 题号:573C语言中运算对象必须是整型的运算符是()。A:%= B:/ C:= D:=答案:A 第6题 (2.0分) 题号:640以下对二维数组a的正确说明是()。A:int a3 B:float a(3,4)C:double a14 D:float a(3)(4)答案:C第7题 (2.0分) 题号:527全局变量的定义不可能在()。A:函数内部B:函数外面C:文件外面D:最后一行答案:A第8题 (2.0分) 题号:605以下所列的C语言常量中,错误的是()。A:0xFF B:1.2e0.5 C:2L D:72答案:B第9题 (2.0分) 题号:148C语言中要求对变量作强制定义的主要理由是()。A:便于移植 B:便于写文件C:便于编辑预处理程序的处理 D:便于确定类型和分配空间答案:D第10题 (2.0分) 题号:588若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是()。A:1 B:2 C:2.0 D:2.5 答案:C第11题 (2.0分) 题号:645若有说明 int a34;则对a数组元素的正确引用是()。A:a24 B:a1,3 C:a1+10 D:a(2)(1) 答案:C第12题 (2.0分) 题号:677若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。A:函数调用可以作为独立的语句存在B:函数调用可以作为一个函数的实参C:函数调用可以出现在表达式中D:函数调用可以作为一个函数的形参 答案:D第13题 (2.0分) 题号:599假设所有变量均为整型,则表达式(a=2,b=5,b+,a+b)的值是()。A:7 B:8 C:6 D:2 答案:B第14题 (2.0分) 题号:3093已定义两个字符数组a,b,则以下正确的输入格式是A:scanf(%s%s, a, b); B:get(a, b); C:scanf(%s%s, &a, &b);D:gets(a),gets(b);答案:A第15题 (2.0分) 题号:3113设变量定义为int a, b;,执行下列语句时,输入_,则a和b的值都是10. scanf(a=%d, b=%d,&a, &b);A:10 10 B:10, 10 C:a=10 b=10 D:a=10, b=10 答案:D三、程序填空 共5题 (共计30分)第1题 (6.0分) 题号:432/*-【程序填空】-功能:计算平均成绩并统计90分以上人数。-*/#include main()int n,m; float grade,average; average=0.0; /*SPACE*/ n=m=【?】; while(1) /*SPACE*/ 【?】(%f,&grade); if(grade0) break; n+; average+=grade; /*SPACE*/ if(grade90)【?】; m+; if(n) printf(%.2f%dn,average/n,m);答案:0scanfcontinue第2题 (6.0分) 题号:11功能:求100999之间的水仙花数说明:水仙花数是指一个三位数的各位数字的立方和是这个数本身。例如:153135333)。-*/#include int fun(int n) int i,j,k,m; m=n; /*SPACE*/ 【?】; for(i=1;i4;i+) /*SPACE*/ 【?】; m=(m-j)/10; k=k+j*j*j; if(k=n) /*SPACE*/ 【?】; else return(0);main() int i; for(i=100;i1000;i+) /*SPACE*/ if(【?】=1) printf(%d is ok!n ,i);答案:k=0 j=m%10或j=m-m/10*10或j=m-10*(m/10)return(1) fun(i)第3题 (6.0分) 题号:4功能:下面的程序是求1!+3!+5!+n!的和。-*/#include main() long int f,s; int i,j,n; /*SPACE*/ 【?】; scanf(%d,&n); /*SPACE*/ for(i=1;i=n; 【?】) f=1; /*SPACE*/ for(j=1; 【?】;j+) /*SPACE*/ 【?】; s=s+f; printf(n=%d,s=%ldn,n,s);答案: (答案1) s=0 (答案2) i+=2或i=i+2或i+,i+ (答案3) j=j或jj(答案4) f= f * j 或f *= j 第4题 (6.0分) 题号:6功能:以下程序是用选择法对10个整数按升序排序。-*/#include /*SPACE*/【?】main()int i,j,k,t,aN; for(i=0;i=N-1;i+) scanf(%d,&ai); for(i=0;iN-1;i+) /*SPACE*/ 【?】; /*SPACE*/ for(j=i+1; 【?】;j+) if(ajak) k=j; /*SPACE*/ if(【?】) t=ai; ai=ak; ak=t; printf(output the sorted array:n); for(i=0;i=N-1;i+) printf(%5d,ai); printf(n);答案:(答案1).#define N 10 (答案2) k=i (答案3)jj=或=j=j=(答案4)= k != i 第5题 (6.0分) 题号:8功能:以每行5个数来输出300以内能被7或17整除的偶数,并求出 其和。-*/#include #include main()int i,n,sum; sum=0; /*SPACE*/ 【?】; /*SPACE*/ for(i=1; 【?】 ;i+) /*SPACE*/ if(【?】) if(i%2=0) sum=sum+i; n+; printf(%6d,i); /*SPACE*/ if(【?】) printf(n); printf(ntotal=%d,sum);答案:=(答案1)=n=0=(答案2)=i=300=或=i=i=或=300i(答案3) i%7 = 0 | i%17 = 0或!(i%7)|!(i%17)或!(i%17)|!(i%7)或!(i%7&i%17)=(答案4)= n%5 = 0或!(n%5或n/5*5=n四、程序设计 共2题 (共计20分)第1题 (10.0分) 题号:411功能:对任意输入的 x,用下式计算并输出 y 的值。 -1 x0-*/#includevoid wwjt(); int fun(int n) /*Program*/ /* End */ void main () int x,y; printf(enter x:); scanf(%d,&x); y=fun(x); printf(x=%d,y=%dn,x,y); wwjt();void wwjt() FILE *IN,*OUT; int i; int iIN; long int iOUT; IN=fopen(in.dat,r); if(IN=NULL) printf(Please Verify The Currernt Dir.it May Be Changed); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Please Verify The Current Dir. it May Be Changed); for(i=0;i5;i+) fscanf(IN,%d,&iIN); iOUT=fun(iIN); fprintf(OUT,%ldn,iOUT); fclose(IN); fclose(OUT);答案: int m; if(n=0) if(n0) m=1; else m=0; else m=-1;return m;第2题 (10.0分) 题号:509功能:编写函数fun其功能是:根据整型形参m,计算如下 公式的值:y=11/31/51/71/(2m+1)例如:若m=9,则应输出:2.133256-*/#include void wwjt(); double fun(int m) /*Program*/ /* End */main() int n; printf(Enter n: ); scanf(%d, &n); printf(nThe result is %1fn, fun(n); wwjt(); void wwjt()FILE *IN,*OUT; int s,i ;int t;float o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); for(i=0;i5;i+) fscanf(IN,%d,&t); o=fun(t); fprintf(OUT,%fn,o); fclose(IN); fclose(OUT);答案:- double y=1; int i; for(i=1; i=m; i+) y+=1.0/(2*i+1); return(y);-
收藏
- 资源描述:
-
一、填空 共5题 (共计20分)
第1题 (4.0分) 题号:341
定义int a[2][3];表示数组a中的元素个数是【1】个.答案:6
第2题 (4.0分) 题号:308
当a=3,b=2,c=1;时,执行以下程序段后 a=【1】.
if(a>b) a=b;
if(b>c) b=c;
else c=b;
c=a;答案:2
第3题 (4.0分) 题号:1524
下列程序的输出是【1】,
main(){int a=011;printf("%d\n",++a);}答案:10
第4题 (4.0分) 题号:658
int x=2;x*=y=z=4; 则x的值为【1】.答案:8
第5题 (4.0分) 题号:312
以下程序段要求从键盘输入字符,当输入字母为Y 时,执行循环体,则括号内应填写【1】.
ch=getchar();
while(ch ____ Y)/*在括号中填写*/
ch=getchar();
答案:==
二、单项选择 共15题 (共计30分)
第1题 (2.0分) 题号:98
以下标识符中,不能作为合法的C用户定义标识符的是()。
A:For B:Printf C:WORD D:sizeof
答案:D
第2题 (2.0分) 题号:152
以下程序的运行结果是()。main()
{ int n;
for(n=1;n<=10;n++)
{if(n%3==0) continue;
printf("%d",n); }
}
A:12457810 B:369 C:12 D:1234567890
答案:A
第3题 (2.0分) 题号:184
下列定义不正确的是()。
A:#define PI 3.141592 B:#define S 345
C:int max(x,y); int x,y; { } D:static char c;
答案:C
第4题 (2.0分) 题号:513
int a[10];合法的数组元素的最小下标值为()。
A:10 B:9 C:1 D:0
答案:D
第5题 (2.0分) 题号:573
C语言中运算对象必须是整型的运算符是()。
A:%= B:/ C:= D:〈=
答案:A
第6题 (2.0分) 题号:640
以下对二维数组a的正确说明是()。
A:int a[3][] B:float a(3,4)
C:double a[1][4] D:float a(3)(4)答案:C
第7题 (2.0分) 题号:527
全局变量的定义不可能在()。
A:函数内部B:函数外面C:文件外面D:最后一行答案:A
第8题 (2.0分) 题号:605
以下所列的C语言常量中,错误的是()。
A:0xFF B:1.2e0.5 C:2L D:\72答案:B
第9题 (2.0分) 题号:148
C语言中要求对变量作强制定义的主要理由是()。
A:便于移植 B:便于写文件
C:便于编辑预处理程序的处理 D:便于确定类型和分配空间答案:D
第10题 (2.0分) 题号:588
若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是()。
A:1 B:2 C:2.0 D:2.5 答案:C
第11题 (2.0分) 题号:645
若有说明 int a[3][4];则对a数组元素的正确引用是()。
A:a[2][4] B:a[1,3] C:a[1+1][0] D:a(2)(1) 答案:C
第12题 (2.0分) 题号:677
若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。
A:函数调用可以作为独立的语句存在
B:函数调用可以作为一个函数的实参
C:函数调用可以出现在表达式中
D:函数调用可以作为一个函数的形参 答案:D
第13题 (2.0分) 题号:599
假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()。
A:7 B:8 C:6 D:2 答案:B
第14题 (2.0分) 题号:3093
已定义两个字符数组a,b,则以下正确的输入格式
是
A:scanf("%s%s", a, b); B:get(a, b); C:scanf("%s%s", &a, &b);
D:gets("a"),gets("b");答案:A
第15题 (2.0分) 题号:3113
设变量定义为"int a, b;",执行下列语句时,输入_____,则a和b的值都是10.
scanf("a=%d, b=%d",&a, &b);
A:10 10 B:10, 10 C:a=10 b=10 D:a=10, b=10 答案:D
三、程序填空 共5题 (共计30分)
第1题 (6.0分) 题号:432
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:计算平均成绩并统计90分以上人数。
-------------------------------------------------------*/
#include
main()
{int n,m;
float grade,average;
average=0.0;
/***********SPACE***********/
n=m=【?】;
while(1)
{ /***********SPACE***********/
【?】("%f",&grade);
if(grade<0) break;
n++;
average+=grade;
/***********SPACE***********/
if(grade<90)【?】;
m++;
}
if(n) printf("%.2f%d\n",average/n,m);
}
答案:
0
scanf
continue
第2题 (6.0分) 题号:11
功能:求100-999之间的水仙花数
说明:水仙花数是指一个三位数的各位数字的立方和是这个数本身。
例如:153=1^3+5^3+3^3)。
-------------------------------------------------------*/
#include
int fun(int n)
{ int i,j,k,m;
m=n;
/***********SPACE***********/
【?】;
for(i=1;i<4;i++)
{ /***********SPACE***********/
【?】;
m=(m-j)/10;
k=k+j*j*j;
}if(k==n)
/***********SPACE***********/
【?】;
else
return(0);}
main()
{ int i;
for(i=100;i<1000;i++)
/***********SPACE***********/
if(【?】==1)
printf("%d is ok!\n" ,i);
}
答案:
k=0 j=m%10或j=m-m/10*10或j=m-10*(m/10)
return(1) fun(i)
第3题 (6.0分) 题号:4
功能:下面的程序是求1!+3!+5!+……+n!的和。
-------------------------------------------------------*/
#include
main()
{ long int f,s;
int i,j,n;
/***********SPACE***********/
【?】;
scanf("%d",&n);
/***********SPACE***********/
for(i=1;i<=n; 【?】)
{ f=1;
/***********SPACE***********/
for(j=1; 【?】;j++)
/***********SPACE***********/
【?】;
s=s+f;
}printf("n=%d,s=%ld\n",n,s);
}答案: (答案1) s=0 (答案2) i+=2或i=i+2
或i++,i++ (答案3) j<=i或i>=j
或jj
(答案4) f= f * j 或f *= j
第4题 (6.0分) 题号:6
功能:以下程序是用选择法对10个整数按升序排序。
-------------------------------------------------------*/
#include
/***********SPACE***********/
【?】
main()
{int i,j,k,t,a[N];
for(i=0;i<=N-1;i++)
scanf("%d",&a[i]);
for(i=0;ij=========或=========j<=N-1=========或==N-1>=j=======(答案4)======= k != i
第5题 (6.0分) 题号:8
功能:以每行5个数来输出300以内能被7或17整除的偶数,并求出
其和。
-------------------------------------------------------*/
#include
#include
main()
{int i,n,sum;
sum=0;
/***********SPACE***********/
【?】;
/***********SPACE***********/
for(i=1; 【?】 ;i++)
/***********SPACE***********/
if(【?】)
if(i%2==0)
{sum=sum+i;
n++;
printf("%6d",i);
/***********SPACE***********/
if(【?】)
printf("\n");
}
printf("\ntotal=%d",sum);
}
答案:
=======(答案1)=======
n=0
=======(答案2)=======
i<=300
=========或=========
i<300
=========或=========
300>=i
=========或=========
300>i
(答案3) i%7 == 0 || i%17 == 0
或!(i%7)||!(i%17)
或!(i%17)||!(i%7)
或!(i%7&&i%17)
=======(答案4)======= n%5 == 0
或!(n%5
或n/5*5==n
四、程序设计 共2题 (共计20分)
第1题 (10.0分) 题号:411
功能:对任意输入的 x,用下式计算并输出 y 的值。
-1 x<0
y= 0 x=0
1 x>0
------------------------------------------------*/
#include
void wwjt();
int fun(int n)
{
/**********Program**********/
/********** End **********/
}
void main ()
{ int x,y;
printf("enter x:");
scanf("%d",&x);
y=fun(x);
printf("x=%d,y=%d\n",x,y);
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
int i;
int iIN;
long int iOUT;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("Please Verify The Currernt Dir..it May Be Changed");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("Please Verify The Current Dir.. it May Be Changed");
}
for(i=0;i<5;i++)
{
fscanf(IN,"%d",&iIN);
iOUT=fun(iIN);
fprintf(OUT,"%ld\n",iOUT);
}
fclose(IN);
fclose(OUT);
}
答案: int m;
if(n<0)
m=-1;
else
if(n==0) m=0;
else m=1;
return m;
或
int m;
if(n>=0)
if(n>0)
m=1;
else m=0;
else m=-1;
return m;
第2题 (10.0分) 题号:509
功能:编写函数fun其功能是:根据整型形参m,计算如下
公式的值:y=1+1/3+1/5+1/7+…+1/(2m+1)
例如:若m=9,则应输出:2.133256
------------------------------------------------*/
#include
void wwjt();
double fun(int m)
{/**********Program**********/
/********** End **********/
}
main()
{int n;
printf("Enter n: ");
scanf("%d", &n);
printf("\nThe result is %1f\n", fun(n));
wwjt();
} void wwjt()
{FILE *IN,*OUT;
int s,i ;int t;float o;
IN=fopen("in.dat","r");
if(IN==NULL)
{printf("Read FILE Error");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{printf("Write FILE Error");
} for(i=0;i<5;i++)
{ fscanf(IN,"%d",&t);
o=fun(t);
fprintf(OUT,"%f\n",o);
}
fclose(IN);
fclose(OUT);
}答案:----------------------
double y=1;
int i;
for(i=1; i<=m; i++)
{y+=1.0/(2*i+1); }
return(y);
----------------------
展开阅读全文