① c语言期中考试例题
不就是计算十个数的全排列
② 求一份大一c语言考试试卷,加答案
附件上传失败...
C语言期末考试题及答案(1)
1、构成C语言的基本单位是___B____。
过程?
函数?
语句?
命令?
2、设x为整型变量,不能正确表达数学关系:5<x<10的c语言表达式是__B___。
5
x>5&&x<10?
x==6||x==7||x==8||x==9?
!(x<=5)&&(x<10)?
3、在C语言中,逻辑运算符的优先级从高到低的排列顺序为__D___。
&&、||、!?
||、&&、!?
&&、!、||?
!、&&、||?
4、下面语句中,正确的是__D___。
printf("%c\n","student");?
printf("%c\n","c");?
printf("%s\n",&a);?
printf("%s\n","hello");?
5、对于for(表达式1;;表达式3)可以理解为__B___。
for(表达式1;0;表达式3)?
for(表达式1;1;表达式3)?
for(表达式1;表达式1;表达式3)?
for(表达式1;表达式3;表达式3)?
6、执行下面程序段的结果是__B___。 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",a,b); }
a=1,b=1?
a=2,b=1?
a=1,b=0?
a=2,b=2?
7、执行下面程序段的结果是__D___。 int x=0; do { printf(“%2d”,x--); }while(x);
打印出321?
打印出23?
不打印任何结果?
陷入死循环?
8、设x=10,y=5;z=15,执行下面一段程序后z的结果是__C___。 If(x>y) if(y>z)x=y; else z=y;
7?
6?
5?
4?
9、如果一个函数被说明为static,那么__B___。
该函数只能被main函数调用?
该函数能被当前文件的函数调用,但不能被其他文件的函数调用?
该函数不能被当前文件的函数调用,可以被其他文件的函数调用?
任何文件的函数都可以调用该函数?
10、下面关于局部变量的描述中,错误的是__D___。
函数的局部变量的有效范围只能在本函数?
函数的形式参数也是局部变量?
局部变量的名称不能和函数同名称?
不同的函数中不能定义相同名称的局部变量?
11、下列初始化字符数组的语句中,错误的是__A___。
char str[5]="hello";?
char str[]={'h','e','l','l','o','\0'};?
char str[5]={"hi"};?
char str[100]="";?
12、引用数组元素时,数组下标可以是__D___。
整型常量?
整型变量?
整型表达式?
以上均可?
13、 已知:char str[10],*p=str; 下面的语句中正确的是__B___。
str="ABC";?
p="ABC";?
*str="ABC";?
*p="ABC";?
14、下面语句中,错误的是___D__。
int i;int *p;p=&i;?
int i,*p;p=&a;?
int i,*p=&a;?
int i,*p;*p=i;?
15、下面对于结构体类型的描述正确的是__A___。
结构体类型的大小为各成员变量所占内存的总和?
结构体类型变量与简单数据类型变量的引用规则一致。?
结构体类型的大小为其成员中所占内存空间最大的变量的大小?
结构体类型的大小为其最后一个成员中所占内存空间的大小?
16、C语言规定:在一个源程序中,main函数的位置____C____。
必须在最开始?
必须在系统调用的库函数的后面?
可以任意?
必须在最后?
17、表达式18/4*sqrt(4.0)/8值的数据类型是 ___C____。
int?
float?
double?
不确定?
18、在c语言中,char型数据在内存中的存储形式是 ___D___。
补码?
反码?
原码?
ASCII码?
19、阅读以下程序,当输入的数据形式为:25,13,10<CR>时,正确的输出结果为___D___。 main() { int x,y,z; scanf("%d%d%d",&x,&y,&z); printf("x+y+z=%d\n",x+y+z); }
x+y+z=48?
x+y+z=35?
x+z=35?
不能确定?
20、有如下程序 void main() { float x=2.0,y; if(x<0.0) y=0.0; else if(x<10.0) y=1.0/x; else y=1.0; printf(“%f\n”,y); } 该程序的输出结果是( C )。
0.000000?
0.250000?
0.500000?
1.000000?
21、判断char型变量s是否为小写字母的正确表达式是__C____。
'a'<=s<='z'?
(s>='a')&(s<='z')?
(s>='a')&&(s<='z')?
('a'<=s)and('z'>=s)?
22、执行以下语句后,y 的值为___A___。 int x,y,z; x=y=z=0; ++x || ++y && ++z;
0?
1?
2?
不确定值?
23、有如下程序段: int number=0; while(number++<=3) printf(“%d\n”,number++); 则正确的执行结果是___C___。
2 3 4?
0 1 2?
1 3?
2 4?
24、有如下程序 void main() { int n=9; while(n>6) { n--; printf(“%d”,n); } } 该程序段的输出结果是__B___。
987?
876?
8765?
9876?
25、要使以下程序段输出10个整数,请在空格中填入一个整数。 for(i=0;i<=___B___;printf("%d\n",i+=2));
15?
18?
20?
10?
26、设函数fun的定义形式为: fun(char ch,float x){…} 则以下对函数fun的调用语句中正确的是___B___。
fun(“abc”,3)?
t=fun(‘D’,5)?
fun(‘ab’,3)?
fun(‘78’,1)?
27、函数求sum(int n)的功能是计算自然数1到n的和,即1+2+…+n。 Main() { printf("The sum=%d\n",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i<=n;i++) _____B_____ } 请从备选答案中选择一答案,补全程序。
s=s+n;return s;?
s=s+i;return s;?
return s;?
return s+=I;?
28、设函数fun的定义形式为 int fun(int a[],int n) { int s=0,i=0; for(i=0;i<n;i++)s+=a[i]; return s; } main() { int a[10]={1,2,3,4,5}; printf("sum=%d", fun(&a[2],2)); } 则程序的运行结果为___C___。
3?
5?
7?
9?
29、若有说明:int a[10];则对数组元素的正确引用是___D____。
a[10]?
a[3,5]?
a(5)?
a[10-10]?
30、以下不正确的定义语句是___B___。
double x[5]={2.0,4,0,6,0,8,0,10.0};?
int y[5]={0,1,3,5,7,9};?
char c1[]={'1','2','3','4','5'};?
char c2[]={'\x10','\xa','\x8'};?
31、下面程序的运行结果是___B____。 #include "stdio.h" main() { char str[]="SWLIA",c; int k; for(k=0;(c=str[k])!='\0';k++) { switch(c) { case 'I':++k;break; c
SWA?
SW*?
SW*A?
SW?
32、以下能正确进行字符串赋值操作的是___D___。
char s[5]={"12345"};?
char s[5]={'1','2','3','4','5',‘6’};?
char *s;*s="12345";?
char *s="12345";?
33、以下程序段的运行结果是___C___。 Char a[ ]="program", *p; p=a; while (*p!='g') { printf("%c", *p-32); p++; }
PROgram?
PROGRAM?
PRO?
proGRAM?
34、若有说明:char *pc[ ]={"aaa", "bbb", "ccc", "ddd"};,则以下叙述正确的是__C____。
*pc[0]代表的是字符串"aaa"的首地址?
*pc[0]代表的是字符'a'的首地址?
pc[0]代表的是字符串"aaa"的首地址?
pc[0]代表的是字符'a'的首地址?
35、下列程序的运行结果是___B___。 #include <stdio.h> #include <string.h> void f (char *s, int n) { char a,*q1,*q2; q1=s;q2=s+n-1; while(q1<q2) { a=*q1++; *q1=*q2--; *q2=a;} } main() { char b[]="ABCDEFG"; f(b, s
GAGGAGA?
AGAAGAG?
GFEDCBA?
AGADAGA?
36、定义如下的结构体描述同学信息 struct Student { unsigned long id; char name[30]; char class[30]; }s; 假设此同学的序号为1002,姓名为黎明,班级为冶金3班,则描述正确的为___C__。
id=1002; name=黎明; class=冶金3班;?
id=1002; name=”黎明”; class=”冶金3班”;?
s.id=1002; s.name=”黎明”; s.class=”冶金3班”;?
s.id=1002; s.name=黎明; s.class=冶金3班;?
37、用来描述C程序中注释的是__C___。
//?
?
**?
38、下列变量中合法的定义是__A___。
short _a=2-1?
long if=0xabcL?
double 1_d=1.5e2?
float a=1.5e2.7?
39、当c的值不为0时,能够将c的值赋给变量a和b的是__C___
c=b=a?
(a=c)||(b=c)?
(a=c)&&(b=c)?
a=c=b?
40、设有以下程序段,执行后的输出结果是___B__ int x=100,y=200; printf("%d",(x,y));
100?
200?
100,200?
编译出错
C语言期末考试题及答案(2)
1、若执行下面的程序时从键盘输入10,则输出是__B__ main( ) { int a; scanf(“%d”,&a); if(a++>10) printf(“%d\n”,++a); else printf("%d\n",a--); }
12?
11?
10?
9?
2、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--); }while(x);
打印出321?
打印出23?
不打印任何结果?
陷入死循环?
3、执行与句:for(n=0;n++<4; ); 后,变量n的值是__C__。
3?
4?
5?
不定?
4、以下关于循环的描述中,错误的是__D___。
可以用for语句实现的循环一定可以用while语句实现?
可以用while语句实现的循环一定可以用for语句实现?
可以用do…while语句实现的循环一定可以用while语句实现?
do…while语句与while语句的区别仅仅是关键字while的位置不同?
5、下面的描述错误的是__C__。
函数可以有多个形式参数?
函数可以没有返回值?
函数内可以嵌套定义函数?
函数可以被其他函数调用?
6、函数返回值的类型是由__A__决定的。
定义函数时指定的返回类型?
函数中return语句的表达式类型?
主调函数的实际参数类型?
主调函数的返回值类型?
7、定义了一维int型数组a[10]后,下面错误的引用是__B__。
a[0]=1;?
a[10]=2;?
a[0]=5*2;?
a[1]=a[2]*a[0];?
8、定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为__B__。
24?
25?
18?
17?
9、下面语句中,错误的是__D__。
int i; int *p; p=&i;?
int i,*p; p=&a;?
int i,*p=&a;?
int i,*p; *p=i;?
10、 已知int型二维数组a[3][4],数组元素a[1][2]的地址不能表达为__C__。
&a[1][2]?
a[1]+2?
*a[1]+2?
*(a+1)+2?
11、C语言中,5种基本数据类型的存储空间长度的排列顺序为___A___。
char
char=int
char
char=int=long int<=float
12、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是 ___B___。
7?
8?
6?
2?
13、若有说明语句:char c='\72';则变量c ___A___。
包含1个字符?
包含2个字符?
包含3个字符?
说明不合法,c的值不确定?
14、若x,y均定义为整型,z定义为double型,以下不合法的scanf函数调用语句是___C___。
scanf("%d%lx,%le",&x,&y,&z);?
scanf("%2d * %d%lf",&x,&y,&z);?
scanf("%x%*d%o",&x,&y,&z);?
scanf("%x%o%6.2f",&x,&y,&z);?
15、若输入字符串:abcde<回车>,则以下while循环体将执行___A___次。 while((ch=getchar())=='e') printf("*");
1次?
死循环?
0次?
5次?
16、执行下面的程序段后,k的值是___C___。 k=1;n=263; do{k*=n%10;n/=10;}while(n);
3?
63?
36?
2?
17、下面程序段中循环的执行次数是___B___。 a=10;b=0; do{b+=2;a-=2+b;}while(a>=0);
10?
3?
5?
4?
18、下面程序段的运行结果是__D____。 x=2; do{printf("*");x--;}while(!x==0);
*?
***?
没有输出?
**?
19、下面程序段的运行结果是___B___。 i=1;s=1;a=0; do{a=a+s*i;s=-s;i++;}while(i<=10); printf("%d",a);
2?
-2?
3?
0?
20、有如下程序 void main() { int a=2,b=-1,c=2; if(a) if(b<0) c=0; else c++; printf("%d\n",c); } 该程序的输出结果是___A___。
0?
1?
2?
3?
21、程序中对fun函数有如下说明 void fun(); 下面说明是错误的是___B___。
fun函数无返回值?
fun函数的返回值可以是任意的数据类型?
fun函数没有形式参数?
void 可以省略?
22、函数求sum(int n)的功能是计算自然数1到n的和,即1+2+…+n。 main() { printf("The sum=%d\n",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i<=n;i++) _____B_____ } 请从备选答案中选择一答案,补全程序。
s=s+n; return s;?
s=s+i; return s;?
return s;?
return s+=i;?
23、 有以下程序 int f1(int x,int y){return x>y?x:y;} int f2(int x,int y){return x>y?y:x;} main() { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf()__A___
4,3,7?
3,4,7?
5,2,7?
2,5,7?
24、若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维的大小是___B___。
2?
3?
4?
无确定值?
25、判断字符串s1是否大于字符串s2,应当使用___D____。
if(s1>s2)?
if(strcmp(s1,s2))?
if(strcmp(s2,s1)>0)?
if(strcmp(s1,s2)>0)?
26、当运行以下程序时,从键盘输入:AhaMA Aha<CR> <CR>表示回车,则下面程序的运行结果是___A____。 #include "stdio.h" main() { char s[80],c='a'; int i=0; scanf("%s",s); while(s[i]!='\0') { if(s[i]==c)
ahAMa?
AhAMa?
AhAMa ahA?
ahAMa ahA?
27、以下程序执行后a的值为___C____。main( ) { int a,m=2, k=1, *p=&k; a=p!=&m; printf("%d\n",a); }
-1?
0?
1?
2?
28、以下能正确读入字符串的程序段是____C___。
char *p;scanf("%s", p);?
char str[10];scanf("%s", &str);?
char str[10], *p;p=str; scanf("%s", p);?
char str[10], *p=str;scanf("%s", p[1]);?
29、若有定义:int i, x[3][4];,则不能将x[1][1]的值赋给变量i的语句是___B___。
i=x[1][1] ?
i=*(*(x+1))?
i=*(*(x+1)+1)?
i=*(x[1]+1)?
30、下面程序的运行结果是____A___。 # include <stdio.h> # include <string.h> fun(char *s) { char t,*a,*z; a=s; z=s+strlen(s)-1; while(a++<z--) { t=*a++; *a=*z--; *z=t;} } main() { char *p; p="a
abdddfg?
afcdebg?
gbedcfa?
gfedcba?
31、用来描述C程序中注释的是__C___
/ /?
?
* *?
32、对于"xy\n\102\\\'"字符串的长度是__B___
7?
6?
12?
13?
33、已知:int x=10;执行语句x-=x+x;后x的值是__A___
-10?
10?
-20?
20?
34、下列描述中,正确的是__A___
所有的输入/输出都是通过调用库函数处理的?
所有的输入/输出都是通过输入/输出语句实现的?
getchar和putchar可以省略#include?
在输入/输出格式中的*表示跳过数据的含义?
35、设x=10,y=5;z=15,执行下面一段程序后z的结果是__C___ if(x>y) if(y>z)x=y; else z=y;
7?
6?
5?
4?
36、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--); }while(x);
打印出321?
打印出23?
不打印任何结果?
陷入死循环?
37、以下关于switch语句和break语句的描述正确的是__D___
在switch语句中必须使用break语句?
break语句只能用于switch语句体中?
break语句只能用于循环语句中?
在switch语句中可以使用break语句?
38、与语句while(!x)等价的语句是__A___
while(x==0)?
while(x!=0)?
while(x!=1)?
while(~x)?
39、下面的描述错误的是__C___
?函数可以有多个形式参数?
?函数可以没有返回值?
?函数内可以嵌套定义函数?
?函数可以被其他函数调用?
40、 下面关于局部变量的描述中,错误的是__D___
?函数的局部变量的有效范围只能在本函数?
?函数的形式参数也是局部变量?
?局部变量的名称不能和函数同名称?
?不同的函数中不能定义相同名称的局部变
③ 中南大学c语言试题
C
语言程序设计试卷
一、单项选择题(每题1分,共20分)
1.
C语言规定:在一个源程序中,main函数的位置(
①
)。
A.
必须在最开始
B.
必须在系统调用的库函数的后面
C.
可以任意
D.
必须在最后
2.
下面四个选项中,均是合法浮点数的选项是(
①
)。
A.
+1e+1
5e-9.4
03e2
B.
-.60
12e-4
-8e5
C.
123e
1.2e-.4
+2e-1
D.
-e3
.8e-4
5.e-0
3.
若a=-14,b=3,则条件表达式
a
#define
F(y)
8.19-y
#define
PRINT(a)
printf("%d",(int)(a))
void
main(void)
{
int
x=2;
PRINT(x*F(3));
}
A.
10
B.
13
C.
11
D.
报错
11.
以下程序中编译和运行结果均正确的一个是(
①
)。
A.
A.
void
main(void)
{
union
{
int
n;
float
x;
}
comm={1};
printf("%d",comm.n);
}
B.
B.
void
main(void)
{
union
{
int
n;
float
x;
}
comm={12.5};
printf("%f",comm.x);
}
C.
C.
void
main(void)
{
union
{
float
x;
int
n;
}
comm={12.5}
printf("%f",comm.x);
}
D.
D.
void
main(void)
{
union
{
int
n;
float
x;
}
comm=5;
printf("%
④ 中南大学c语言试题
C 语言程序设计试卷
一、单项选择题(每题1分,共20分)
1. C语言规定:在一个源程序中,main函数的位置( ① )。
A. 必须在最开始
B. 必须在系统调用的库函数的后面
C. 可以任意
D. 必须在最后
2. 下面四个选项中,均是合法浮点数的选项是( ① )。
A. +1e+1 5e-9.4 03e2
B. -.60 12e-4 -8e5
C. 123e 1.2e-.4 +2e-1
D. -e3 .8e-4 5.e-0
3. 若a=-14,b=3,则条件表达式 a<b? a:b+1的值为 。
A. -14 B. -13 C. 3 D. 4
4. 已知:int n,i=1,j=2;执行语句n=i<j?i++:j++;则i和j的值是( ① ).
A. 1,2 B. 1,3 C. 2,2 D. 2,3
5. 为了判断两个字符串s1和s2是否相等,应当使用( ① )
A. if (s1==s2) B. if(s1=s2)
C. if (strcmp(s1,s2))
D. if (strcmp(s1,s2)==0)
6. 以下正确的描述是( ① )。
A. 函数的定义可以嵌套,但函数的调用不可以嵌套。
B. 函数的定义不可以嵌套,但函数的调用可以嵌套。
C. 函数的定义和函数的调用均不可以嵌套。
D. 函数的定义和函数的调用均可以嵌套。
7. 在C语言中,下面对函数不正确的描述是( ① )。
A. 当用数组名作形参时,形参数组值的改变可以使实参数组之值相应改变。
B. 允许函数递归调用。
C. 函数形参的作用范围只是局限于所定义的函数内。
D. 子函数必须位于主函数之前。
8. 如果在一个函数中的复合语句中定义了一个变量,则以下正确的说法是( ① )。
A. 该变量只在该复合语句中有效
B. 该变量在该函数中有效
C. 该变量在本程序范围内均有效
D. 该变量为非法变量
9. 以下正确的函数形式是( ① )。
A. double fun(int x,int y) { z=x+y;return z;}
B. fun(int x,y) { int z; return z;}
C. fun(x,y) { int x,y; double z; z=x+y; return z;}
D. double fun( int x,int y) {double z; z=x+y; return z; }
10. 以下程序的输出结果是( ① )。
#include<stdio.h>
#define F(y) 8.19-y
#define PRINT(a) printf("%d",(int)(a))
void main(void)
{
int x=2;
PRINT(x*F(3));
}
A. 10 B. 13 C. 11 D. 报错
11. 以下程序中编译和运行结果均正确的一个是( ① )。
A. A. void main(void)
{
union
{
int n;
float x;
} comm={1};
printf("%d",comm.n);
}
B. B. void main(void)
{
union
{
int n;
float x;
} comm={12.5};
printf("%f",comm.x);
}
C. C. void main(void)
{
union
{
float x;
int n;
} comm={12.5}
printf("%f",comm.x);
}
D. D. void main(void)
{
union
{
int n;
float x;
} comm=5;
printf("%d", comm.n);
}
12. 设有定义:int a=1,*p=&a; float b=2.0; char c='A'; 以下不合法的运算是( ① )。
A. p++; B. a--; C. b++; D. c--;
13. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是( ① )。
main()
{
int *p,*q,a,b;
p=&a;
printf("input a:");
scanf("%d",*p);
…
}
A. *p表示的是指针变量p的地址
B. *p表示的是变量a 的值,而不是变量a的地址
C. *p表示的是指针变量p的值
D. *p只能用来说明p是一个指针变量
14. 若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32);后num的值为( ① )。
A. 4 B. 16 C. 32 D. 52
15. 已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是( ① ),(注: _ 表示空格)
int al,a2,char c1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
A. 10A_20_B B. 10_A_20_B C. 10A20B D. 10A20_B
16. 若有说明:int a[10]; 则对a数组元素的正确引用是( ① )。
A. a[10] B. a[3.5] C. a[5-3] D. a[-1]
17. 在C语言中, 一维数组的定义方式为:
类型说明符 数组名 ① ;
A. [整型常量表达式] B. [表达式]
C. [整型常量] D. [整型表达式]
18. 以下能对一维数组a进行正确初始化的语句是( ① )。
A. in a[10]=(0,0.0,0,0);
B. int a[10]={}; C. int a[]={0};
D. int a[10]={10*1};
19. 以下程序段( ① )。
x=-1;
do
{
x=x*x;
}
while(! x);
A. 是死循环 B. 循环执行二次
C. 循环执行一次 D. 有语法错误
20. 以下关于do-while循环的不正确描述是( ① )。
A. do-while的循环体至少执行一次
B. do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C. 在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作
D. do-while的循环体可以是复合语句
二、是非判断题(每题1分,共15分)
1. C语言规定,标识符中的字母一般区分大、小写。
2. 控制台标准输入设备一般是指键盘。
3. 使用while和do-while循环时,循环变量初始化的操作应在循环语句之前处理。
4. 循环体中continue语句的作用是结束整个循环的执行。
5. 关系表达式的值是0或1。
6. 若有说明:int a[3][4]={0},则只有元素a[0][0]可得到初值0。
7. 字符串作为一维数组存放在内存中。
8. 字符数组中的一个元素存放一个字符。
9. 字符数组中的最后一个字符必须是'\0'。
10. 形参为指针变量时,实参必须是数组名。
11. 用数组名作函数参数时传递的是数组的值。
12. 全局变量可以被任何一个函数中的任何一个表达式使用。
13. 一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据。
14. 表达式i++与++i在任何场合功能完全相同。
15. 在赋值表达式中,赋值号左边的变量和右边的表达式之值的数据类型可以不相同。
三、多项选择题(每题1分,共5分)
1. 若要求在if 后一对圆跨括号中表示a不等于0的关系,则不能正确表示这一关系
的表达式为( ① ).
A.a<>0
B.!a
C.a=0
D.a
E.a!=0
2. 选出所有合法的常量( ① )。
A.3e22.5
B.-e-3
C.-.1e-1
D.'BASIC'
E.'\045'
F.0fd
G.0xfdaL
H.e8
I.'\\'
J."\""
3. 以下关于函数原型说法错误的是:
(1)对变量的定义”和“声明”是一回事,对函数的“定义”和“声明”也是一回事。
(2)在声明函数原型时,允许只写出参数的类型,而不必写出参数的名称。
(3)如果在定义函数时不指定函数类型,系统会隐含指定函数类型为int型。
(4)调用一个函数时,函数名、实参个数、实参类型必须与函数原型一致。
(5)如果被调函数的定义出现在主调函数之前,可以不必加以声明。
(6)所有的函数之间可以互相调用。
(7)在C语言中,所有函数都是平行的,一个函数不能从属于另一个函数,即不能嵌套定义的。
(8)如果函数没有返回值,在定义时可以省略函数类型。
(9)在C语言中,任何函数的定义都不允许为空。
(10)C语言规定,实参变量对形参变量的数据传递是“值传递”。
4. 请从下面关于指针的叙述中, 选出5个正确的叙述。
(1)指针即地址。
(2)指针须先赋值后使用。
(3)当指针p指向数组a的首址后,由于p[i]和a[i]都能引用数组元素,所以这里p和a是等价的。
(4)int *p表示定义了一个指向int类型数据的指针变量p。
(5)数组的指针是指数组的起始地址。
(6)若有定义int a[4],*p=a,则p++后p指向数组a所占内存的第二个字节。
(7)使用指针变量作函数参数采取的是"值传递"的方式。
(8)相同类型的指针可以进行减法运算。
(9)指针变量和许多变量一样可以进行四则运算。
(10)指针p指向数组元素a[2],若要其指向a[4],执行p=p*2即可。
5. 以下关于数组的叙述中,5个最确切的说法是:
(1)在声明一个数组变量时必须指定大小。
(2)必须用常量表达式来说明一个数组变量的大小。
(3)在对数组进行初始化时大括号中的数据个数必须和数组的大小相同。
(4)有变量定义int a[3]={0,1,2},b[3];,可以用b=a,使数组b的每个元素和a的每个元素相等。
(5)在C语言中,可以将字符串作为字符数组来处理。
(6)定义了字符数组char c[11];为了给它赋值,可以用c="china";。
(7)如果有char s[15]={"I am a\0 student"};,则strlen(s)的值为6。
(8)C语言中,二维数组中元素排列的顺序是:按行存放。
(9)在C语言中,不能对局部的数组变量进行初始化。
(10)在声明时对数组进行进行初始化必须指定数组大小。
四、程序运行结果题(每题4分,共20分)
1. (4分)
下面程序的运行结果是( ① ) 。
#include<stdio.h>
void main(void)
{
int i;
char a[]="Time",b[]="Tom";
for(i=0;a[i]!='\0'&&b[i]!='\0';i++)
if (a[i]==b[i])
if (a[i]>='a' && a[i]<= 'z') printf("%c",a[i]-32);
else printf("%c",a[i]+32);
else printf("*");
}
2. (4分)
下面程序段的运行结果是( ① ) 。
i=1;s=3
do
{
s+=i++;
if (s%7==0) continue;
else ++i;
} whlie(s<15);
printf("%d",i);
3. (4分)
若运行时输入:5999,则以下程序的运行结果(保留小数点后一位)是( ① )。
void main(void)
{
int x;
float y;
scanf("%d",&x);
if (x>=0 && x<=2999) y=18+0.12 * x;
if (x>=3000 && x<=5999) y=36+0.6*x;
if (x>=6000 && x<=10000) y=54+0.3*x;
printf("%6.1f",y);
}
4. (4分)
以下程序的运行结果是( ① )。
void main(void)
{
int a=1,k;
for(k=0;k<3;k++) printf("%4d",f1(a))
}
int f1(int x)
{
static int z=3,y=0;
y++;
z++;
return(x+y+z);
}
5. (4分)
以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。
#include<stdio,h>
#include<math.h>
float fun1(float,float);
void main(void)
{
float x,y,z,sum;
scanf("%f%f%",&x,&y,&z);
sum=fun1( ① )+ fun1 ( ② );
printf("sum=%f\n",sum);
}
float fun1(float a,float b)
{
float num;
num=a/b;
return num;
}
五、程序填空题(每题2分,共20分)
1.下面程序的功能是用公式:π×π/6=1/(1×1)+1/(2×2)+1/(3×3)+......
求π的近似值, 直到最后一项的值小于10e-6为止。
#include <stdio.h>
#include <math.h>
void main(void)
{
long i=1;
① pi=0;
while (i*i<=10e+6) { pi= ② ; i++; }
pi=sqrt(6.0*pi);
printf("pi=%10.6f\n",pi);
}
2. 下面程序的功能是把以下给定的字符按其矩阵格式读入数组str1中,并输出行列号之和是3的数组元素。
void main(void)
{
char str1[4][3]={'A','b','C','d','E','f','G','h','I','j','K','i'
};
int x,y,z;
for(x=0;x<4;x++)
for(y=0; ① ;y++)
{
z=x+y;
if ( ② ) printf("%c\n",str1[x][y]);
}
}
3. 以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。
递归公式如下:
age(1)=10
age(n)=age(n-1)+2 (n>1)
#include<stdio.h>
int age(int n)
{
int c;
if (n==1) c=10;
else c= ① ;
return c;
}
4. 以下程序的功能是判断输入的年份是否是闰年。
void main(void)
{
int year,yes;
scanf("%d",&year);
if (year%400==0) yes=1;
else if ( ① ) yes=1;
else ② ;
if(yes) printf("%d is ",year);
else printf("%d is not ",year);
printf("a leap year.\n");
}
5. 以下程序实现: 输入三个整数,按从大到小的顺序进行输出。
void main(void)
{
int x,y,z,c;
scanf("%d %d %d",&x,&y,&z);
if ( ① ) { c=y;y=z;z=c;}
if ( ② ) { c=x;x=z;z=c;}
if ( ③ ) { c=x;x=y;y=c;}
printf("%d,%d,%d",x,y,z);
}
六、填空题(每题1分,共20分)
1. 在C语言中,一个float型数据在内存中所占的字节数为( ① )个字节;一个double型数据在内存中所占的字节数为( ② )个字节。
2. 若有定义:char c='\010'; 则变量C中包含的字符个数为( ① )。
3. C源程序的基本单位是( ① )。
4. 在C语言中(以16位PC机为例),一个char型数据在内存中所占的字节数为( ① );
一个int型数据在内存中所占的字节数为( ② )。
5. 已有定义:
int m;
float n,k;
char chl,ch2;
为使m=3, n=6.5, k=12.6, ch1='a', ch2='A', 输入数据的格式为:
3 6.5 12.6aA
则对应的scanf语句是( ① );。
6. 执行下面的程序片段后,x的值是( ① )。
i=10; i++; x=++i;
7. 设a、b、c均是int 型变量,则执行以下for循环后,c的值为( ① )。
for(a=1,b=5;a<=b;a++) c=a+b;
8. 以下do-while语句中循环体的执行次数是( ① )。
a=10;
b=0;
do { b+=2; a-=2+b; } while (a>=0);
9. 设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是( ① )。
for (x=0,y=0;y!=123&&x<3;x++)
scanf ("%d",&y);
10. 若有以下定义和语句:
int *p[3],a[9],i;
for(i=0;i<3;i++) p[i]=&a[3*i];
则*p[0]引用的是数组元素( ① ); *(p[1]+1)引用的是数组元素( ② )。
11. 设a=3,b=4,c=5,则表达式a||b+c&&b==c的值是( ① )。
12. 进行逻辑与运算的运算符是( ① )。
13. 若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是( ① )。
14. 下面程序片段中循环体的执行次数是( ① )次。
for(i=1,s=0;i<11;i+=2) s+=i;
15. 若有以下定义和语句:
int a[4]={0,1,2,3},*p;
p=&a[2];
则*--p的值是( ① )。
16. 执行以下程序段后, s的值是( ① )
int a[]={5,3,7,2,1,5,3,10},s=0,k;
for(k=0;k<8;k+=2)
s+=*(a+k);
17. 执行以下程序段后,m的值是( ① )
int a[]={7,4,6,3,10},m,k,*ptr;
m=10;
ptr=&a[0];
for(k=0;k<5;k+=2)
m=(*(ptr+k)<m)?*(ptr+k):m;
答案:
一、单项选择题(20分)
1.~5.CBACD 6.~10.BDADB
11.~15.CABCC 16.~20.CACCB
二、是非判断题(15分)
√√√×√ √√√×× × √
三、多项选择题(5分)
1.ABC 2.CEGIJ 3.ADFHI 4.ABDEH 5.BEGHI
四、程序运行结果题(20分)
1. t*M
2. 8
3. 3635.4
4. 6 8 10
5. z+y,z-y^x+y,x-y
五、程序填空题(20分)
1. ①double ②pi+1.0/(i*i)
2. ①y<3 ②z==2
3. ①age(n-1)+2
4. ①year%4==0&&yeaar%100!=0 ②yes=0
5. ①z>y ②z>x ③y>x
六、填空题(20分)
1. ①4 / 四 ②8 / 八
2. ①1 / 1个
3. ①函数
4. ①1 / 一 ②2 / 二
5. ①scanf("%d%f%f%c%c",&m,&n,&k,&ch1,&ch2)
6. ①12
7. ①10
8. ①3..9. ①3..10. ①a[0] ②a[4]
11. ①112. ①&&13. ①1.14. ①5
15. ①1
16. ①16
17. ①6
⑤ c语言考试,求答案,急!!急!!
一、选择题((1)—(40)每题1分,(41)—(50)每题2分,共60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 在32位计算机中,一个字长所占的字节数为( )。
A) 1
B) 2
C) 4
D) 8
(2) 与十进制数511等值的十六进制数为( )。
A) 1FF
B) 2FF
C) 1FE
D) 2FE
(3) 能将高级语言编写的源程序转换成目标程序的是( )。
A) 编程程序
B) 编译程序
C) 解释程序
D) 链接程序
(4) 在计算机系统中,存储一个汉字的国标码所需要的字节数为( )。
A) 1
B) 2
C) 3
D) 4
(5) 下列带有通配符的文件名中,能表示文件ABC.TXT的是( )。
A) *BC.?
B) A?.*
C) ?BC.*
D) ?.?
(6) 在多媒体计算机系统中,不能用以存储多媒体信息的是( )。
A) 光缆
B) 软盘
C) 硬盘
D) 光盘
(7) DOS命令“COPY/?”的功能是( )。
A) 将当前盘当前目录中的所有文件复制到当前盘的根目录下
B) 将当前盘当前目录中所有以单个字符命名的文件复制到当前盘的根目录下
C) 以提示方式复制文件
D) 显示COPY命令的帮助信息
(8) 在Windows环境下,若要将当前活动窗口存入剪贴板,则可以按( )。
A) Ctrl+PrintScreen键
B) Ctrl+PrintScreen键
C) Shift+PrintScreen键
D) PrintScreen键
(9) 在Windows环境下,单击当前应用程序窗口中的“关闭”按钮,其功能是( )。
A) 将当前应用程序转为后台运行
B) 退出Windows后再关机
C) 退出Windows后重新启动计算机
D) 终止当前应用程序的运行
(10) 在Windows环境中,粘贴按钮是( )。
A) ctrl+A
B) ctrl+C
C) ctrl+X
D) ctrl+V
(11) 以下叙述中正确的是( )。
A) 构成C程序的基本单位是函数
B) 可以在一个函数中定义另一个函数
C) main()函数必须放在其它函数之前
D) 所有被调用的函数一定要在调用之前进行定义
(12) 以下选项中合法的实型常数是( )。
A) 5E2.0
B) E-3
C) .2E0
D) 1.3E
(13) 以下选项中合法的用户标识符是( )。
A) long
B) _2Test
C) 3Dmax
D) A.dat
(14) 已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\101’是( )。
A) 字符A
B)字符a
C)字符e
D)非法的常量
(15) 以下非法的赋值语句是( )。
A) n=(i=2,++i);
B)j++;
C) ++(i+1);
D)x=j>0;
(16) 设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是( )。
A)6.500000
B)6
C) 5.500000
D) 6.000000
(17) 已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是( )。
A) scanf(“%2d%2d%2d”,&i,&j,&k);
B) scanf(“%d %d %d”,&i,&j,&k);
C) scanf(“%d,%d,%d”,&i,&j,&k);
D) scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);
(18) 与数学式子 对应的C语言表达式是( )。
A) 3*x^n(2*x-1)
B) 3*x**n(2*x-1)
C) 3*pow(x,n)*(1/(2*x-1))
D) 3*pow(n,x)/(2*x-1)
(19) 设有定义:long x=-123456L;,则以下能够正确输出变量x值的语句是( )。
A)printf(“x=%d\n”,x);
B) printf(“x=%1d\n”,x);
C)printf(“x=%8dL\n”,x);
D)printf(“x=%LD\n”,x);
(20) 若有以下程序:
main()
{ int k=2,i=2,m;
m=(k+=i*=k);printf(“%d,%d\n”,m,i);
}
执行后的输出结果是( )。
A) 8,6
B) 8,3
C) 6,4
D) 7,4
(21) 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是( )。
A) 6
B) 0
C) 2
D) 1
(22) 有一函数, ,以下程序段中不能根据x值正确计算出y值的是( )。
A) if(x>0) y=1; B) y=0;
else if(x==0) y=0; if(x>0) y=1;
else y=-1; else if(x<0) y=-1;
C)y=0; D)if(x>=0)
if(x>=0); if(x>0) y=1;
if(x>0) y=1 ; else y=0;
else y=-1; else y=-1;
(23) 以下选项中,与k=n++完全等价的表达式是( )。
A) k=n,n=n+1
B) n=n+1,k=n
C) k=++n
D) k+=n+1
(24) 以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:
main()
{ int n,k;
float score ,sum,ave;
sum=0.0;
for(n=1;n<=10;n++)
{ for(k=1;k<=4;k++)
{ scanf(“%f”,&score); sum+=score;}
ave=sum/4.0;
printf(“NO%d:%f\n”,n,ave);
}
}
上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是( )。
A) sum=0.0;
B) sum+=score;
C) ave=sun/4.0;
D) printf(“NO%d:%f\n”,n,ave);
(25) 有以下程序段
int n=0,p;
do{scanf(“%d”,&p);n++;}while(p!=12345 &&n<3);
此处do—while循环的结束条件是( )。
A) P的值不等于12345并且n的值小于3
B) P的值等于12345并且n的值大于等于3
C) P的值不等于12345或者n的值小于3
D) P的值等于12345或者n的值大于等于3
(26) 有以下程序
main()
{ int a=15,b=21,m=0;
switch(a%3)
{ case 0:m++;break;
case 1:m++;
switch(b%2)
{ default:m++;
case 0:m++;break;
}
}
printf(“%d\n”,m);
}
程序运行后的输出结果是( )。
A) 1
B) 2
C) 3
D) 4
(27) C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( )。
A) void
B) int
C) float
D) double
(28) 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是( )。
A) p=q;
B) *p=*q;
C) n=*q;
D) p=n;
(29) 有以下程序
float fun(int x,int y)
{ return(x+y); }
main()
{ int a=2,b=5,c=8;
printf(“%3.0f\n”,fun(int)fun(a+c,b),a-c));
}
程序运行后的输出结果是( )。
A) 编译出错
B) 9
C) 21
D) 9.0
(30) 有以下程序
void fun(char *c,int d)
{ *c=*c+1;d=d+1;
printf(“%c,%c,”,*c,d);
}
main()
{ char a=’A’,b=’a’;
fun(&b,a); printf(“%c,%c\n”,a,b);
}
程序运行后的输出结果是( )。
A)B,a,B,a
B) a,B,a,B
C) A,b,A,b
D) b,B,A,b
(31) 以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序
void sort(int a[],int n)
{ int i,j,t;
for(i=0;i
for(j=i+1,j
if(a[i]
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=o;i<10;i++) print(“%d,”,aa[i]);
printf(‘\n”);
}
程序运行后的输出结果是( )。
A)1,2,3,4,5,6,7,8,9,10
B) 10,9,8,7,6,5,4,3,2,1,
C) 1,2,3,8,7.6.5.4.9,10
D) 1,2,10,9,8,7,6,5,4,3
(32) 有以下程序
int f(int n)
{ if (n==1) return 1;
else return f(n-1)+1;
}
main()
{ int i,j=0;
for(i=i;i<3;i++) j+=f(i);
printf(“%d\n”,j);
}
程序运行后的输出结果是( )。
A) 4
B) 3
C) 2
D) 1
(33) 有以下程序
main()
{ char a[ ]={‘a’,‘b’,‘c’,‘d’, ‘e’, ‘f’, ‘g’,‘h’,‘\0’}; int i,j;
i=sizeof(a); j=strlen(a);
printf(“%d,%d\b”i,j);
}
程序运行后的输出结果是( )。
A)9,9
B)8,9
C)1,8
D)9,8
(34) 以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。
void reverse(int a[ ],int n)
{ int i,t;
for(i=0;i{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
reverse(b,8);
for(i=6;i<10;i++) s+=b[i];
printf(“%d\n”,s);
}
程序运行后的输出结果是( )。
A) 22
B) 10
C) 34
D) 30
(35) 有以下程序
main()
{ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,s=0
for(i=0;i<4;i++) s+=aa[i][1];
printf(“%d\n”,s);
}
程序运行后的输出结果是( )。
A) 11
B) 19
C) 13
D) 20
(36) 有以下程序
#include
main()
{ char *p=“abcde\Ofghjik\0”;
printf(“%d\n”,strlen(p));
}
程序运行后的输出结果是( )。
A) 12
B) 15
C) 6
D) 5
(37) 程序中头文件typel.h 的内容是:
#define N 5
#define M1 N*3
程序如下:
#define “type1.h”
#define M2 N*2
main()
{ int i;
i=M1+M2; printf(“%d\n”,i);
}
程序编译后运行的输出结果是:( )。
A) 10
B) 20
C) 25
D) 30
(38) 有以下程序
#include
main()
{ FILE *fp; int i=20,j=30,k,n;
fp=fopen(“d1.dat”“w”);
fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”j);
fclose(fp);
fp=fopen(“d1.dat”, “r”);
fp=fscanf(fp,“%d%d”,&k,&n); printf(“%d%d\n”,k,n);
fclose(fp);
}
程序运行后的输出结果是( )。
A) 20 30
B) 20 50
C) 30 50
D) 30 20
(39) 以下叙述中错误的是( )。
A) 二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B) 在程序结束时,应当用fclose函数关闭已打开的文件
C) 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D) 不可以用FILE定义指向二进制文件的文件指针
(40) 有以下程序
#include
main(int argc,char *argv[])
{ int i,len=0;
for(i=1;iprintf(“%d\n”,len);
}
程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:
ex1 abcd efg 10<回车>
则运行的结果是:( )。
A) 22
B) 17
C) 12
D) 9
(41) 有以下程序
int fa(int x)
{ return x*x; }
int fb(int x)
{ return x*x*x; }
int f(int (*f1)(),int (*f2)(),int x)
{ return f2(x)-f1(x); }
main()
{ int i;
i=f(fa,fb,2); printf(“%d\n”,i);
}
程序运行后的输出结果是( )。
A) -4
B) 1
C) 4
D) 8
(42) 有以下程序
int a=3;
main()
{ int s=0;
{ int a=5; s+=a++; }
s+=a++;printf(“%d\n”,s);
}
程序运行后的输出结果是( )。
A) 8
B) 10
C) 7
D) 11
(43) 有以下程序
void ss(char *s,char t)
{ while(*s)
{ if(*s==t) *s=t-‘a’+’A’;
s++;
}
}
main()
{ char str1[100]=“abcddfefdbd”,c=’d’;
ss(str1,c); printf(“%s\n”,str1);
}
程序运行后的输出结果是( )。
A) ABCDDEFEDBD
B) abcDDfefDbD
C) abcAAfefAbA
D) Abcddfefdbd
(44) 有以下程序
struct STU
{ char num[10]; float score[3]; };
main()
{ struct stu s[3]={{“20021”,90,95,85},
{“20022”,95,80,75},
{“20023”,100,95,90}},*p=s;
int i; float sum=0;
for(i=0;i<3,i++)
sum=sum+p->score[i];
printf(“%6.2f\n”,sum);
}
程序运行后的输出结果是( )。
A) 260.00
B) 270.00
C) 280.00
D) 285.00
(45) 设有如下定义:
struck sk
{ int a;
float b;
}data;
int *p;
若要使P指向data中的a域,正确的赋值语句是( )。
A) p=&a;
B) p=data.a;
C) p=&data.a;
D) *p=data.a;
(46) 有以下程序
#include
struct NODE
{ int num; struct NODE *next; };
main()
{ struct NODE *p,*Q,*R;
p=(struct NODE*)malloc(sizeof(struct NODE));
q=(struct NODE*)malloc(sizeof(struct NODE));
r=(struct NODE*)malloc(sizeof(struct NODE));
p->num=10; q->num=20; r->num=30;
p->next=q;q->next=r;
printf(“%d\n”,p->num+q->next->num);
}
程序运行后的输出结果是( )。
A) 10
B) 20
C) 30
D) 40
(47) 若有以下说明和定义
typedef int *INTEGER;
INTEGER p,*q;
以下叙述正确的是( )。
A) P是int型变量
B) p是基类型为int的指针变量
C) q是基类型为int的指针变量
D) 程序中可用INTEGER代替int类型名
(48) 有以下程序
main()
{ unsigned char a,b,c;
a=0x3; b=a|0x8; c=b<<1;
printf(“%d%d\n”,b,c);
}
程序运行后的输出结果是( )。
A) –11 12
B) –6 –13
C) 12 24
D) 11 22
(49) 有以下程序
#include
main()
{ char *p,*q;
p=(char*)malloc(sizeof(char)*20); q=p;
scanf(“%s%s”,p,q); printf(“%s%s\n”,p,q);
}
若从键盘输入:abc def<回车>,则输出结果是:( )。
A) def def
B) abc def
C) abc d
D) d d
(50) 以下程序中函数f的功能是将n个字符串按由大到小的顺序进行排序。
#include
void f(char p[][10],int n)
{ char t[20]; int i,j;
for(i=0;ifor(j=i+1;jif(strcmp(p[i],p[j])<0)
{ strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}
}
main()
{ char p[][10]={“abc”,“aabdfg”,“abbd”,“dcdbe”,“cd”};int i;
f(p,5); printf(“%d\n”,strlen(p[0]));
}
程序运行后的输出结果是( )。
A) 6
B) 4
C) 5
D) 3
二、填空题(每空2分,共40分)
请将答案分别写在答题卡中序号为【1】至【20】的横线上,答在试卷上不得分。
1、计算机软件分为系统软件和应用软件,操作系统属于 [1] 。
2、在DOS环境下,代表键盘和显示器的设备文件名为 [2] 。
3、支持Internet基本服务的协议是 [3] 。
4、从Windows环境进入MS-DOS方式后,返回Windows环境的DOS命令为 [4] 。
5、某微型机的运算速度为2MIPS,则该微型机每秒执行 [5] 条指令。
6、设有定义:int n,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充完整。
scanf(“%d, ” [6] );
printf(“%d\n”, [7] 。);
7、以下程序运行后的输出结果是 [8] 。
main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf(“%d,%d \n”,x,y);
}
8、以下程序运行后的输出结果是 [9] 。
main()
{ int x=15;
while(x>10 && x<50)
{ x++;
if(x/3){x++;break;}
else continue;
}
printf(“%d\n”,x);
}
9、有以下程序:
#include
main()
{ char c;
while((c=getchar( ))!=’?’) putchar(--c);
}
程序运行时,如果从键盘输入:Y?N?<回车>,则输出结果为 [10] 。
10、以下程序运行后的输出结果是 [11] 。
void fun(int x,int y)
{ x=x+y;y=x-y;x=x-y;
printf(“%d,%d,”,x,y); }
main()
{ int x=2,y=3;
fun(x,y);
printf(“%d,%d\n”,x,y);
}
11、以下函数的功能是计算s=1+ + +……+ ,请填空。
double fun(int n)
{ double s=0.0,fac=1.0; int i;
for(i=1,i<=n;i++)
{ fac=fac [12] ;
s=s+fac;
}
return s;
}
12 fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。
#include
#define N 100
int fun(int(*a)[N])
{ int row,col,max,min;
for(row=0;row{ for(max=a[row][0],col=1;colif( [13] )max=a[row][col];
if( row==0)min=max;
else if( [14] )min=max;
}
return min;
}
13、函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。
#include
int sstrcmp(char *s,char *t)
{ while(*s&&*t&& *s== [15] )
{ s++;t++;}
return [16] ;
}
14、下面程序的运行结果是 [17] 。
#define N 10
#define s(x) x*x
#define f(x) (x*x)
main()
{ int i1,i2;
i1=1000/s(N); i2=1000/f(N);
printf(“%d %d\n”,i1,i2);
}
15、下面程序的运行结果是: [18] 。
void swap(int *a,int *b)
{ int *t;
t=a; a=b; b=t;
}
main()
{ int x=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf(“%d%d\n”,*p,*q);
}
16、下面程序的运行结果是: [19] 。
typedef union student
{ char name[10];
long sno;
char sex;
float score[4];
}STU;
main()
{ STU a[5];
printf(“%d\n”,sizeof(a));
}
(17) 函数sstrcmp()的功能是对两个字符串进行比较。当s 所指字符串和t所指字符相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。
#include <stdio.h>
int sstrcmp(char *s,char *t)
{while(*s&&*t&&*s==【19】)
{s++;t++; }
return 【20】;
}
⑥ c语言期中考试 急!!!!!!!正在考 能答几个都行
第一个:odd是从0到1000之间所有偶数的和
even是从1到1000之间所有奇数的和
第二个:even是能被2整除的数的和
odd是不能被2整除的数的和
第一个odd和even都要从1加到1000
第二个只需要加一次较简单
⑦ 求:C语言程序设计试卷及答案一份
一、选择题(1~40题每题1分,41~50题每题2分,共60分)下列各题A、B、C、D四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
1.微型计算机的运算器、控制器及内存储器组合在一起,称之为()(本题分值:1分)
【正确答案】D
A.ALU
B.CPU
C.MPU
D.主机
2.下列存储器中,存取速度最快的是()(本题分值:1分)
【正确答案】D
A.软盘
B.硬盘
C.光盘
D.内存
3.系统软件中最重要的是()(本题分值:1分)
【正确答案】A
A.操作系统
B.语言处理程序
C.工具软件
D.数据库管理系统
4、CPU处理的数据基本单位为字,一个字的字长()(本题分值:1分)
【正确答案】D
A.为8个二进制位
B.为16个二进制位
C.为32个二进制位
D.与CPU芯片的型号有关
5.打印当前屏幕内容应使用的控制键是()(本题分值:1分)
【正确答案】D
A.Scroll-Lock
B.Num-Lock
C.PgDn
D.PrtSc(Print Screen)
6.能将高级语言源程序转换成目标程序的是()(本题分值:1分)
【正确答案】C
A.调试程序
B.解释程序
C.编译程序
D.编辑程序
7.二进制数1110111.11转换成十进制数是()(本题分值:1分)
【正确答案】B
A.119.375
B.119.75
C.119.125
D.119.3
8.十六进制数FF.1转换成十进制数是()(本题分值:1分)
【正确答案】A
A.255.0625
B.255.125
C.127.0625
D.127.125
9.中国国家计算机网络设施是()(本题分值:1分)
【正确答案】A
A.NCFC
B.CERNET
C.ISDN
D.Internet
10.控制键^C的功能为()(本题分值:1分)
【正确答案】A
A.终止当前操作
B.系统复位
C.暂停标准输出设备的输出
D.结束命令行
11.COMMAND.COM为命令处理程序,DOS系统启动后,它()(本题分值:1分)
【正确答案】B
A.驻留在外存,需要时装入内存
B.常驻内存,包含所有内部命令
C.不能处理外部命令
D.不能处理后缀为.EXE的可执行文件
12.为了将所有扩展名为.PAS的文件改成扩展名为.P,应使用命令()(本题分值:1分)
【正确答案】C
A.REN *.PAS .?AS
B.REN PAS P
C.REN *.PAS *.P
D.REN *.PAS *.P??
13.设当前盘中文件XY.C的路径为\A\B\XU,当前目录为\A\B。为了查看文件XY.C的内容,应使用命令()(本题分值:1分)
【正确答案】A
A.TYPE XU\XY.C
B.TYPE \XU\XY.C
C.DIR XU\XY.C
D.DIR \A\B\XU\XY.C
14.要将提示符改成当前盘当前目录后加一个大于号“>”,应使用命令()(本题分值:1分)
【正确答案】B
A.PROMPT
B.PROMPT $ p $ g
C.PROMPT $ $
D.PROMPT C\>
15.在多媒体计算机系统中,CD-ROM属于()(本题分值:1分)
【正确答案】D
A.感觉媒体
B.表示媒体
C.表现媒体
D.存储媒体
16.设当前盘为C盘,将A盘根目录下的文件目录信息存放到当前盘当前目录下的文件AB中,应使用命令()(本题分值:1分)
【正确答案】C
A.TYPE A:\>AB
B.DIR >AB
C.DIR A:\>AB
D.DIR \>AB
17.在位运算中,操作数每右移一位,其结果相当于()(本题分值:1分)
【正确答案】B
A.操作数乘以2
B.操作数除以2
C.操作数除以16
D.操作数乘以16
18.在当前盘当前目录下有一个文件A.BAT,其内容为
CD \
MD \XYZ\AB\B\C
CD XYZ\AB\B
在正确执行上述文件后,接着执行下列命令时,不会发生错误的是()(本题分值:1分)
【正确答案】C
A.MD C
B.RD \XYZ
C.RD C
D.RD B
19.下列命令组中两个DOS命令互相等价的是()(本题分值:1分)
【正确答案】D
A.TYPE AB.TXT与DIR AB.TXT
B.DISKCOMP A:B:与COMP A:.* B:*.
C.TYPE AB.TXT>>XY.TXT与COPY AB.TXT XY.TXT
D.TYPE AB.TXT>XY.TXT与COPY AB.TXT XY.TXT
20.设A盘为启动盘,其目录结构为
根目录
DOS子目录 COMAND.COM
USER子目录 AUTOEXEC.BAT
其文件AUTOEXEC.BAT的内容如下:
MD \XYZ
CD \DOS\USER
则由A盘启动成功后,A盘的当前目录是()(本题分值:2分)
【正确答案】C
A.\DOS\USER
B.\XYZ
C.根目录
D.\DOS
21.C语言提供的合法关键字是()(本题分值:1分)
【正确答案】C
A.switch
B.cher
C.case
D.default
22.在C语言中,合法的字符常量是()(本题分值:1分)
【正确答案】B
A.′\084′
B.′\x43′
C.′ab′
D.′\0′
23.若已定义x和y为double类型,则表达式: x=1,y=x+3/2的值是()(本题分值:1分)
【正确答案】C
A.1
B.2
C.2.0
D.2.5
24.合法的数组定义是()(本题分值:1分)
【正确答案】D
A.int a[]=〃string〃;
B.int a[5]={0,1,2,3,4,5};
C.char a=〃string〃;
D.char a[]={0,1,2,3,4,5};
25.设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是()(本题分值:1分)
【正确答案】A
A.10<a<15
B.a==11||a==12||a==13||a==14
C.a>10&&a<15
D.!(a<=10)&&!(a>=15)
26.若t为double类型,表达式t=1,t+5,t++的值是()(本题分值:1分)
【正确答案】C
A.1
B.6.0
C.2.0
D.1.0
27.若有定义和语句:
char s[10];s=〃abcd〃;printf(〃%s\n〃,s);
则结果是(以下μ代表空格)()(本题分值:1分)
【正确答案】D
A.输出abcd
B.输出a
C.输出abcdμμμμμ
D.编译不通过
28.若有定义和语句:
int **pp,*p,a=10,b=20;
pp=&p;p=&a;p=&b;printf(〃%d,%d\n〃,*p,**pp);
则输出结果是()(本题分值:1分)
【正确答案】D
A.10,10
B.10,20
C.20,10
D.20,20
29.若有以下定义和语句:
int u=010,v=0x10,w=10;
printf(〃%d,%d,%d\n〃,u,v,w);
则输出结果是()(本题分值:1分)
【正确答案】A
A.8,16,10
B.10,10,10
C.8,8,10
D.8,10,10
30.若有以下定义和语句:
char c1=′b′,c2=′e′;
printf(〃%d,%c\n〃,c2-c1,c2-′a′+′A′);
则输出结果是()(本题分值:1分)
【正确答案】B
A.2,M
B.3,E
C.2,E
D.输出项与对应的格式控制不一致,输出结果不确定
31.若有定义:int a[3][4];,()不能表示数组元素a[1][1]。(本题分值:1分)
【正确答案】D
A.*(a[1]+1)
B.*(&a[1][1])
C.(*(a+1))[1]
D.*(a+5)
32.若i、j已定义为int型,则以下程序段中内循环体的总的执行次数是()(本题分值:1分)
for(i=5;i>0;i--)
for(j=0;j<4;j++){…}
【正确答案】A
A.20
B.24
C.25
D.30
33.若有以下定义和语句:
char *s1=〃12345〃,*s2=〃1234〃;
printf(〃%d\n〃,strlen(strcpy(s1,s2)));
则输出结果是()(本题分值:1分)
【正确答案】A
A.4
B.5
C.9
D.10
34.若有以下定义和语句:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则不能表示a数组元素的表达式是()(本题分值:1分)
【正确答案】B
A.*p
B.a[10]
C.*a
D.a[p-a]
35.下面程序的输出结果是()(本题分值:2分)
【正确答案】C
A.k=3 a=2 b=3
B.k=3 a=3 b=2
C.k=2 a=3 b=2
D.k=2 a=2 b=3
36.下面程序的输出结果是()(本题分值:1分)
main()
{unsigned a=32768;
printf(〃a=%d\n〃,a);}
【正确答案】C
A.a=32768
B.a=32767
C.a=-32768
D.a=-1
37.执行下面语句后的输出结果为()(本题分值:1分)
int i=-1;
if(i<=0) printf(〃****\n〃);
else printf(〃%%%%\n〃)
【正确答案】D
A.****
B.%%%%
C.%%%%c
D.有语法错误,不能正确执行
38.对于条件表达式(M)?(a++):(a--),其中的表达式M等价于()(本题分值:1分)
【正确答案】C
A.M==0
B.M==1
C.M!=0
D.M!=1
39.下述程序段的输出结果是()(本题分值:1分)
int x=10;
int7nbspy=x++;
printf(〃%d,%d〃,(x++,y),y++);
【正确答案】A
A.11,10
B.11,11
C.10,10
D.10,11
40.若有以下的定义:
int a[]={1,2,3,4,5,6,7,8,9,10},*p=a
则值为3的表达式是()(本题分值:1分)
【正确答案】A
A.p+=2,*(p++)
B.p+=2,*++p
C.p+=3,*p++
D.p+=2,++*p
41.假定所有变量均已正确说明,下列是程序段运行后x的值是()(本题分值:2分)
a=b=c=0;x=35;
if(!a) x--;
else if(b);
if(c) x=3;
else x=4;
【正确答案】B
A.34
B.4
C.35
D.3
42.在以下一组运算中,优先级最高的运算符是()(本题分值:2分)
【正确答案】C
A.<=
B.=
C.%
D.&&
43.若有以下定义和语句:
int w[2][3],(*pw)[3];pw=w;
则对w数组元素的非法引用是()(本题分值:2分)
【正确答案】A
A.*(w[0]+2)
B.*(pw+1)[2]
C.pw[0][0]
D.*(pw[1]+2)
44.若有以下程序片段: char str[ ]=〃ab\n\012\\\\〃; printf(〃%d〃,strlen(str));
上面程序片段的输出结果是()(本题分值:2分)
【正确答案】C
A.3
B.4
C.6
D.12
45.函数调用:strcat(strcpy(str1,str2),str3)的功能是()(本题分值:2分)
【正确答案】C
A.将串str1复制到串str2中后再连接到串str3之后
B.将串str1连接到串str2之后再复制到串str3之后
C.将串str2复制到串str1中后再将串str3连接到串str1之后
D.将串str2连接到串str1之后再将串str1复制到串str3中
46.以下对C语言函数的有关描述中,正确的是()(本题分值:2分)
【正确答案】A
A.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.C函数既可以嵌套定义又可以递归调用
C.函数必须有返回值,否则不能使用函数
D.C程序中有调用关系的所有函数必须放在同一个源程序文件中
47.以下叙述中不正确的是()(本题分值:2分)
【正确答案】C
A.在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值
B.在C中,在调用函数时,实参和对应形参在类型上只需赋值兼容
C.在C中,外部变量的隐含类别是自动存储类别
D.在C中,函数形参可以说明为register变量
48.设有以下定义或语句,则输出的结果是(用small模式编译,指针变量占2个字节)()(本题分值:2分)
struct date
{long *cat;
struct date *next;
double dog;
}too;
printf(〃%d〃,sizeof(too));
【正确答案】D
A.20
B.16
C.14
D.12
49.设有定义:struct sk
{int a;float b;}data,*p;
若有p=&data;,则对data中的a域的正确引用是()(本题分值:2分)
【正确答案】B
A.(*p).data.a
B.(*p).a
C.p->data.a
D.p.data.a
50.以下对枚举类型名的定义中正确的是()(本题分值:2分)
【正确答案】B
A.enum a={one,two,three};
B.enum a{one=9,two=-1,three};
C.enum a={〃one〃,〃two〃,〃three〃};
D.enum a{〃one〃,〃two〃,〃three〃};
二、填空题(每空2分,共40分)请将答案分别写在答题卡中序号【1】至【20】的横线上,答在试卷上不得分。
1、与十进制数101等值的二进制数为。(本题分值:2分)
【正确答案】
【1】1100101
2、DOS命令分为内部命令与外部命令,XCOPY命令属于命令。(本题分值:2分)
【正确答案】
【2】外部
3、设当前盘为A盘,当前系统提示符为“>”,在不改变当前盘的情况下,显示C盘的当前目录路径,应使用命令。 (本题分值:2分)
【正确答案】
【3】CD C:
4、自动批处理文件名必须是。(本题分值:2分)
【正确答案】
【4】AUTOEXEC.BAT
5、设在当前盘当前目录下有两个文件W.TXT与P.TXT,现要将文件P.TXT连接到文件W.TXT的后面,若使用COPY命令,则完整的命令为。(本题分值:2分)
【正确答案】
【5】COPY W.TXT+P.TXT W.TXT
6、表示条件10<x<100或x<0的C语言表达式是。(本题分值:2分)
【正确答案】
【6】(x>10&& x<100)||x<0
或(10<x&&x<100)||x<0
或x<0 ||(x>10&&x<100)
或0>x ||(10<x&&x<100)
7、以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最笾怠G胩羁铡?br> #define N 3
#define M 4
void LineMax(int x[N][M])
{ int i,j,p;
for(i=0;i<N;i++)
{p=0;
for(j=1;j<M;j++)
if(x[i][p]<x[i][j]) ;
printf(〃The max value in line is %d\n〃,);
}
}
main()
{ int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
;
}
(本题分值:6分)
【正确答案】
【7】p=j
【8】x[i][p]
【9】LineMax(x)
8、以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。
main()
{float x[1000],sum=0.0,ave,a;
int n=0,i;
printf(〃Enter mark:\n〃);scanf(〃%f〃,&a);
while(a>= 0.0 && n<1000)
{sum+=;x[n]=;
n++; scanf(〃%f〃,&a);
}
ave= ;
printf(〃Output:\n〃);
printf(〃ave=%f\n〃,ave);
for(i=0;i<n;i++)
if() printf(〃%f\n〃,x[i]);
}
(本题分值:8分)
【正确答案】
【10】a
【11】a
【12】sum/n或sum/(float)n或sum/(double)n
【13】x[i]<ave或!(x[i]>=ave)或ave>x[i]
9、执行以下程序,输入-10的结果是,输入5的结果是,输入10的结果是,输入30的结果是。
(本题分值:8分)
【正确答案】
【14】0
【15】5
【16】10
【17】5
10、以下程序的功能是。
main()
{int num[10]={10,1,-20,-203,-21,2,-2,-2,11,-21};
int sum=0,i;
for(i=0;i<10;i++)
if(num[i]>0)
sum=num[i]+sum;
printf(〃sum=%6d〃,sum);
}
(本题分值:2分)
【正确答案】
【18】计算数组num中大于零的数据之和
11、以下程序可以把从键盘上输入十进制数(long型)以二到十六进制数的形式输出,请填空。
#include
main()
{char
b[16]={′0′,′1′,′2′,′3′,′4′,′5′,′6′,′7′,′8′,′9′,′A′,′B′,′C′,′D′,′E′,′F′};
int c[64],d,i=0,base;
long n;
printf(〃Enter a number:\n〃); scanf(〃%1d〃,&n);
printf(〃Enter new base:\n〃); scanf(〃%1d〃,&base);
do
{c[i]=;
i++;
n=n/base;
}while(n!=0);
printf(〃The result is:\n〃);
for(--i;i>=0;--i)
{?d=c[i];
printf(〃%c〃,b);
}
}
(本题分值:4分)
【正确答案】
【19】n%base
【20】 [d]