1、 东北大学(秦皇岛)c语言考试题7 一、选择题答案 1. 若a、 b、c1、c2、x、y、均是整型变量,正确的switch语句是 A) swich(a+b); B) switch(a*a+b*b) { case 1:y=a+b; break; {case 3: case 0:y=a-b; break; case 1:y=a+b;break; } case 3:y=b-a,break;
2、 } C) switch a D) switch(a-b) { case c1 :y=a-b; break {default:y=a*b;break case c2: x=a*d; break case 3:case 4:x=a+b;break default:x=a+b; case 10:case 11:y=a-b;break; } }
3、你所选择的答案是:*,正确答案是:D × 2. 以下程序执行后sum的值是 main() { int i , sum; for(i=1;i<6;i++) sum+=i; printf("%d\n",sum); } A)15 B)14 C) 不确定 D)0 你所选择的答案是:*,正确答案是:C × 3. 若变量c为char类型,能正确判断出c为小写字母的表达式是 A) 'a'<=c<= 'z' B) (c>= 'a')||(c<= 'z') C) ('a'<=c)and ('z'>=c) D) (c>= 'a')&&(c<= 'z')
4、你所选择的答案是:*,正确答案是:D × 4. 以下所列的各函数首部中,正确的是 A) void play(var :Integer,var b:Integer) B) void play(int a,b) C) void play(int a,int b) D) Sub play(a as integer,b as integer) 你所选择的答案是:*,正确答案是:C × 5. 下列程序的运行结果是 void fun(int *a, int *b) { int *k; k=a; a=b; b=k; } main() { int a=3
5、 b=6, *x=&a, *y=&b; fun(x,y); printf("%d %d", a, b); } A) 6 3 B) 3 6 C) 编译出错 D) 0 0 你所选择的答案是:*,正确答案是:B × 6. 以下只有在使用时才为该类型变量分配内存的存储类说明是 A) auto和 static B) auto和 register C) register和 static D) extern和 register 你所选择的答案是:*,正确答案是:B × 7. 以下程序的输出结果是 main() { int a[3][
6、3]={ {1,2},{3,4},{5,6} },i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++)s+=a[i][j]; printf("%dn",s); } A) 18 B) 19 C) 20 D)21 你所选择的答案是:*,正确答案是:A × 8. 以下合法的赋值语句是 A) x=y=100 B) d--; C) x+y; D) c=int(a+b); 你所选择的答案是:*,正确答案是:B × 9. 设正x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是 printf("%d,
7、d\n",x--,--y);
A) 10,3
B) 9,3
C) 9,2
D) 10,2
你所选择的答案是:*,正确答案是:D ×
10. 假定w、x、y、z、m均为int型变量,有如下程序段:
w=1; x=2; y=3; z=4;
m=(w 8、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
8
9
B) 7
9
11
C) 7
10
13
D) 7
7
7
你所选择的答案是:*,正确答案是:A ×
12. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是
A) 3
B 9、) 6
C) 10
D) 20
你所选择的答案是:*,正确答案是:D ×
13. 以下程序的输出结果是
main()
{ char st[20]= "hello\0\t\\\";
printf(%d %d \n",strlen(st),sizeof(st));
}
A) 9 9
B) 5 20
C) 13 20
D) 20 20
你所选择的答案是:*,正确答案是:B ×
14. 以下程序段的输出结果是
int a=1234;
printf("%2d\n",a);
A) 12
B) 34
C) 1234
D) 提示出错、无结果
10、
你所选择的答案是:*,正确答案是:C ×
15. 以下程序的输出结果是
main()
{ char x=040;
printf("%d\n",x<<1);
}
A) 100
B) 80
C) 64
D) 32
你所选择的答案是:*,正确答案是:C ×
16. 以下程序的输出结果是
main()
{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++) t=t+b[i][b[j][j]];
printf("%d\n",t);
11、
}
A) 3
B) 4
C) 1
D) 9
你所选择的答案是:*,正确答案是:B ×
17. 若以下定义:
struct link
{ int data;
struck link *next;
}a,b,c,*p,*q;
且变量a和b之间已有如下图所示的链表结构:
a b
data next data next
┌──┬──┐ ┌──┬──┐
│ 5 │ ┼──→ │ 9 │ \0 │
└──┴──┘ └──┴──┘
↑p
c
dat 12、a next
┌──┬──┐
│ 7 │ │
└──┴──┘
↑q
指针p指向变量a,q指向变量c。则能够把c插入到a和b 之间并形成新的链表的语句组是:
A) a.next=c; c.next=b;
B) p.next=q; q.next=p.next;
C) p->next=&c; q->next=p->next;
D) (*p).next=q; (*q).next=&b;
你所选择的答案是:*,正确答案是:C ×
18. 已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'\101'是
A 13、) 字符A
B)字符a
C)字符e
D)非法的常量
你所选择的答案是:*,正确答案是:A ×
19. 以下非法的赋值语句是
A) n=(i=2,++i);
B)j++;
C) ++(i+1);
D)x=j>0;
你所选择的答案是:*,正确答案是:C ×
20. 设有定义:long x=-123456L;,则以下能够正确输出变量x值的语句是
A)printf("x=%d\n",x);
B) printf("x=%Ld\n",x);
C)printf("x=%8dL\n",x);
D)printf("x=%LD\n",x);
你所选择的答案是:* 14、正确答案是:B ×
21. 有以下程序段
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
你所选择的答案是:*,正确答案是:D ×
22. 以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序
void sort(int a[],int n)
15、
{ int i,j,t;
for(i=0;i 16、9,8,7,6,5,4,3
你所选择的答案是:*,正确答案是:C ×
23. 以下叙述中错误的是
A) 二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B) 在程序结束时,应当用fclose函数关闭已打开的文件
C) 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D) 不可以用FILE定义指向二进制文件的文件指针
你所选择的答案是:*,正确答案是:D ×
24. 在一个C程序中( )。
A) main函数必须出现在所有函数之前
B) main函数可以在任何地方出现
C) main函数必须出现在所有函数之后 17、
D) main函数必须出现在固定位置
你所选择的答案是:*,正确答案是:B ×
25. 下列关于C语言用户标识符的叙述中正确的是
A)用户标识符中可以出现在下划线和中划线(减号)
B)用户标识符中不可以出现中划线,但可以出现下划线
C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头
D)用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头
你所选择的答案是:*,正确答案是:B ×
26. 有以下程序
main()
{ int x[8]={8,7,6,5,0,0},*s;
s=x+3
printf 18、"%d\n",s[2]);
}
执行后输出结果是( )。
A) 随机值
B) 0
C) 5
D) 6
你所选择的答案是:*,正确答案是:B ×
27. 有以下程序
main()
{ int s=0,a=1,n;
scanf("%d",&n);
do
{ s+=1; a=a-2; }
while(a!=n);
printf("%d\n",s);
}
若要使程序的输出值为2,则应该从键盘给n输入的值是( )。
A)-1
B)-3
C)-5
D)0
你所选择的答案是:*,正确答案 19、是:B ×
28. 以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址
#include
#include
char *scmp(char *s1, char *s2)
{ if(strcmp(s1,s2)<0)
return(s1);
else return(s2);
}
main()
{ int i; char string[20], str[3][20];
for(i=0;i<3;i++) gets(str[i]);
strcpy(string,scmp(str[0],str[ 20、1])); /*库函数strcpy对字符串进行复制*/
strcpy(string,scmp(string,str[2]));
printf("%s\n",string);
}
若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为( )。
A)abcd
B)abba
C)abc
D)abca
你所选择的答案是:*,正确答案是:B ×
29. 有以下程序
main()
{
int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++) p[i]=i+1;
printf("%d 21、\n",a[1][2]);
}
程序运行后的输出结果是( )。
A)3
B)6
C)9
D)2
你所选择的答案是:*,正确答案是:B ×
30. 以下叙述中正确的是( )。
A) C语言的源程序不必通过编译就可以直接运行
B) C语言中的每条可执行语句最终都将被转换成二进制的机器指令
C) C源程序经编译形成的二进制代码可以直接运行
D) C语言中的函数不可以单独进行编译
你所选择的答案是:*,正确答案是:D ×
31. 以下符合C语言语法的实型常量是( )。
A) 1.2E0.5 B) 3.14.159E 22、C) .5E-3 D) E15
你所选择的答案是:*,正确答案是:C ×
32. 有以下程序
main( )
{
int x=0,y=5,z=3;
while(z-->0&&++x<5) y=y-1;
printf("%d,%d,%d\n",x,y,z);
}
程序执行后的输出结果是( )。
A) 3,2,0 B) 3,2,-1 C) 4,3,-1 D) 5,-2,-5
你所选择的答案是:*,正确答案是:B ×
33. 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是( )。 23、
A) p=1; B) *q=2; C) q=p; D) *p=5;
你所选择的答案是:*,正确答案是:D ×
34. 有以下程序
main( )
{
char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"};
printf("%d\n",strlen(p[4]));
}
执行后输出结果是( )。
A) 2 B) 3 C) 4 D) 5
你所选择的答案是:*,正确答案是:A ×
35. 下面程序的功能是输出以下形式的金字塔图案是:
*
***
*****
24、
*******
main( )
{ int i,j;
for(i=1;i<=4;i++)
{ for(j=1;j<=4-i;j++) printf(“ “);
for(j=1;j<=_______;j++) printf(“*”);
printf(“\n”);
}
}
在下划线处应填入的是( )。
A) i B) 2*i-1 C) 2*i+1 D) i+2
你所选择的答案是:*,正确答案是:B ×
36. 有以下程序
void f(int a[],int i,int j)
{
int t; 25、
if(i 26、double a,b; int w; long c;
若各变量已正确赋值,则下列选项中正确的表达式是( )。
A)a=a+b=b++
B)w%(int)a+b)
C)(c+w)%(int)a
D)w=a==b;
你所选择的答案是:*,正确答案是:C ×
38. 有以下程序
main()
{ int i;
for(i=0;i<3;i++)
switch(i)
{
case 0:printf("%d",i);
case 2:printf("%d",i);
default:printf("%d",i);
27、 }
}
程序运行后的输出结果是 ( )。
A)022111
B)021021
C)000122
D)012
你所选择的答案是:*,正确答案是:C ×
39. 若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是 ( )。
A)abs(x-y)<10
B)x-y>-10&& x-y<10
C)!(x-y)<-10||!(y-x)>10
D)(x-y)*(x-y)<100
你所选择的答案是:*,正确答案是:C ×
40. 有以下程序
main()
{ char a,b,c,d;
scanf(" 28、c,%c,%d,%d",&a,&b,&c,&d);
printf("c,%c,%c,%c\n",a,b,c,d);
}
若运行时从键盘上输入:6,5,65,66<回车>。则输出结果是( )。
A)6,5,A,B
B)6,5,65,66
C)6,5,6,5
D)6,5,6,6
你所选择的答案是:*,正确答案是:A ×
41. s12和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是( )。
A)if(s1>s2)S;
B)if(strcmp(s1,s2))S;
C)if(strcmp 29、s2,s1)>0)S;
D)if(strcmp(s1,s2)>0)S;
你所选择的答案是:*,正确答案是:D ×
42. 有以下定义和语句
int a[3][2]={1,2,3,4,5,6,},*p[3];
p[0]=a[1];
则*p[0]+1)所代表的数组元素是( )。
A)a[0][1]
B)a[1][0]
C)a[1][1]
D)a[1][2]
你所选择的答案是:*,正确答案是:C ×
43. 有如下程序
#include
main()
{FILE *fp1;
fp1=fopen("f1.txt","w" 30、);
fprintf(fp1,"abc");
fclose(fp1);
}
若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为( )。
A)goodabc
B)abcd
C)abc
D)abcgood
你所选择的答案是:*,正确答案是:C ×
44. 有以下程序
#include "stdio.h"
#include "string.h"
main()
{
char a[7]="abcd";int i,j;
i=sizeof(a); j=strlen(a);
printf("%d %d 31、 ",i,j);
}
程序运行后的输出结果是 ( )。
A)2 2
B)7 4
C)7 2
D)6 2
你所选择的答案是:*,正确答案是:B ×
45. 以下能正确定义一维数组的选项是 ( )。
A)int a[5]={0,1,2,3,4,5};
B)char a[]={0,1,2,3,4,5};
C)char a={'A','B','C'};
D)int a[5]="0123";
你所选择的答案是:*,正确答案是:B ×
46. 有以下程序
#define N 20
fun(int a[],int n,int m)
{ int 32、 i,j;
for(i=m;i>=n;i--)
a[i+1]=a[i];
}
main()
{
int i,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,2,9);
for(i=0;i<5;i++)
printf("%d",a[i]);
}
程序运行后的输出结果是 ( )。
A)10234
B)12344
C)12334
D)12234
你所选择的答案是:*,正确答案是:C ×
47. 以下语句或语句组中,能正确进行字符串赋值的是( )。
A)char *sp; *sp="right!";
B)char s[10 33、]; s="right!";
C)char s[10]; *s="right!";
D)char *sp="right!";
你所选择的答案是:*,正确答案是:D ×
48. 设有如下说明
typedef struct ST
{
long a;
int b;
char c[2];
} NEW;
则下面叙述中正确的是 ( )。
A)以上的说明形式非法
B)ST是一个结构体类型
C)NEW是一个结构体类型
D)NEW是一个结构体变量
你所选择的答案是:*,正确答案是:C ×
49. 有以下程序
main()
{
char s[]="1 34、59",*p;
p=s;
printf("%c",*p++);
printf("%c",*p++);
}
程序运行后的输出结果是 ( )。
A)15
B)16
C)12
D)59
你所选择的答案是:*,正确答案是:A ×
50. 有以下程序
main()
{
int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{
for(j=1;j<=i;j++) printf("%c",' ');
for(j= j<4;j++) print 35、f("%4d",num[i][j]);
printf(" ");
}
}
若要按以下形式输出数组右上半三角
1 2 3 4
6 7 8
11 12
16
则在程序下划线处应填入的是 ( )。
A) i-1
B) i
C) i+1
D) 4-i
你所选择的答案是:*,正确答案是:B ×
51. 当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是( )。
A)k%2 B)k%2==1 C)(k%2)!=0 D)!k%2==1
你所选择的答案是:*,正确答案是:D ×
36、 52. 设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是( )。
A)k=k>=k B)-k++ C)k%int(f) D)k>=f>=m
你所选择的答案是:*,正确答案是:C ×
53. 有以下程序
main()
{
char p[]={'a', 'b', 'c'}, q[]="abc";
printf("%d %d\n", sizeof(p),sizeof(q));
}
程序运行后的输出结果是( )。
A)4 4 B)3 3 C)3 4 D)4 3
你所选择的答案 37、是:*,正确答案是:C ×
54. 有以下程序
main()
{
int a=0,b=0,c=0,d=0;
if(a=1) b=1;c=2;
else d=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
程序输出
A)0,1,2,0
B) 0,0,0,3
C)1,1,2,0
D)编译有错
你所选择的答案是:*,正确答案是:D ×
55. 以下叙述中错误的是
A)C程序必须由一个或一个以上的函数组成
B)函数调用可以作为一个独立的语句存在
C)若函数有返回 38、值,必须通过return语句返回
D)函数形参的值也可以传回对应的实参
你所选择的答案是:*,正确答案是:D ×
56. 以下叙述中正确的是
A)预处理命令行必须位于C源程序的起始位置
B)在C语言中,预处理命令行都以“#”开头
C)每个C程序必须在开头包括预处理命令行:#include
D)C语言的预处理不能实现宏定义和条件编译的功能
你所选择的答案是:*,正确答案是:B ×
57. 下列定义变量的语句中错误的是________。
A)int _int; B)double int_; C)char For; D)float 39、USS
你所选择的答案是:*,正确答案是:D ×
58. 有以下程序
fun(int x,int y){return(x+y);}
main()
{
int a=1,b=2,c=3,sum;
sum=fun((a++,++b,a+b),c++);
printf("%d\n",sum);
}
执行后的输出结果是________。
A)6 B)7 C)8 D)9
你所选择的答案是:*,正确答案是:C ×
59. 有以下程序
main()
{
int x[3][2]={0},i;
for(i=0;i<3;i++) sca 40、nf("%d",x[i]);
printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);
}
若运行时输入:2 4 6<回车>,则输出结果为________。
A)2 0 0 B)2 0 4 C)2 4 0 D)2 4 6
你所选择的答案是:*,正确答案是:B ×
60. 有以下程序
main()
{char s[ ]={ "aeiou"},*ps;
ps=s; printf("%c\n",*ps+4);
}
程序运行后的输出结果是________。
A)a B)e C)u D)元素s[4]的地址
41、
你所选择的答案是:*,正确答案是:B ×
二、填空题
1. 以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空.
#include"ctype.h"
#include"stdio.h"
main()
{ char str[81],*sptr;
int i;
for(i=0;i<80;i++)
{ str[i]=getchar();
if(str[i]=='\n') break;
}
str[i]=______;
sptr=str;
while(*sptr) putchar(*sptr++); 42、
}
你所选择的答案是:,正确常答案是:'\0' 或 0, ×
2. 在计算机中,字符的比较是对它们的( )进行比较。
你所选择的答案是:,正确常答案是:ASCII码 或 ASCII, ×
3. 下列程序的输出结果是16.00,请填空。
main()
{int a=9, b=2;
float x=_____, y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n", z );
}
你所选择的答案是:,正确答案是:6.6 , ×
4. 设有定义“struct {int a; float b; char c;} ab 43、c, *p_abc=&abc;”,则对结构体成员a的引用方法可以是abc.a和( )。
你所选择的答案是:,正确常答案是:p_abc->a 或 (*p_abc).c, ×
5. 以下程序将数组a的4个元素和数组b的6个元素写到名为lett.dat的二进制文件中,请填空。
#include 44、
fwrite(b,6*sizeof(char),1,fp);
fclose(fp);
}
你所选择的答案是:,正确答案是:lett.dat , ×
6. 以下程序输出的结果是( )。
main()
{ int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
你所选择的答案是:,正确答案是:0 , ×
7. 设x,y,z和t均为int型变量,执行以下语句:x=y=z=1; t=++x||++y&&++z; 后t的值为____________。
你所选择的答案是:,正确常答案是:1 或 1.0, ×
45、8. 用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。
st=(char*) 【 】 ;
你所选择的答案是:,正确常答案是:malloc(11) 或 malloc(sizeof(char)*11), ×
9. 以下程序的输出结果是【 】 。
main()
{ int a=177;
printf("%o\n",a);
}
你所选择的答案是:,正确答案是:261 , ×
10. 以下程序运行后的输出结果是 _______ 。
main()
{ int a,b,c;
a=25;
b=025;
c=0x25;
printf("%d %d %d\n',a,b,c);
}
你所选择的答案是:,正确答案是:25 21 37 , ×






