资源描述
东北大学(秦皇岛)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;
}
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;
} }
你所选择的答案是:*,正确答案是: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')
你所选择的答案是:*,正确答案是: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, 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][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,%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<x)?w; x; m=(m<y)?m;y; m=(m<z)?m; z;
则该程序运行后,m的值是it
A) 4
B) 3
C) 2
D) 2
你所选择的答案是:*,正确答案是:D ×
11. 设有以下函数:
f ( int a)
{ int b=0;
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
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) 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) 提示出错、无结果
你所选择的答案是:*,正确答案是: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);
}
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
data 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) 字符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);
你所选择的答案是:*,正确答案是: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)
{ int i,j,t;
for(i=0;i<N-1;I++
for(j=i+1,j<N;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
你所选择的答案是:*,正确答案是:C ×
23. 以下叙述中错误的是
A) 二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B) 在程序结束时,应当用fclose函数关闭已打开的文件
C) 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D) 不可以用FILE定义指向二进制文件的文件指针
你所选择的答案是:*,正确答案是:D ×
24. 在一个C程序中( )。
A) main函数必须出现在所有函数之前
B) main函数可以在任何地方出现
C) main函数必须出现在所有函数之后
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("%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
你所选择的答案是:*,正确答案是: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[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 \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 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;则以下选项中,正确的赋值语句是( )。
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. 下面程序的功能是输出以下形式的金字塔图案是:
*
***
*****
*******
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;
if(i<j)
{
t=a[i]; a[i]=a[j];a[j]=t;
f(a,i+1,j-1);
}
}
main( )
{
int i,aa[5]={1,2,3,4,5};
f(aa,0,4);
for(i=0;i<5;i++) printf("%d,",aa[i]); printf("\n");
}
执行后输出结果是( )。
A) 5,4,3,2,1, B) 5,2,3,4,1, C) 1,2,3,5,4, D) 1,2,3,4,5,
你所选择的答案是:*,正确答案是:A ×
37. 有以下定义语句
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);
}
}
程序运行后的输出结果是 ( )。
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("%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(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");
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 ",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 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]; 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[]="159",*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++) printf("%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 ×
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
你所选择的答案是:*,正确答案是: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)若函数有返回值,必须通过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 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++) scanf("%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]的地址
你所选择的答案是:*,正确答案是: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++);
}
你所选择的答案是:,正确常答案是:'\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;} abc, *p_abc=&abc;”,则对结构体成员a的引用方法可以是abc.a和( )。
你所选择的答案是:,正确常答案是:p_abc->a 或 (*p_abc).c, ×
5. 以下程序将数组a的4个元素和数组b的6个元素写到名为lett.dat的二进制文件中,请填空。
#include <stdio.h>
main ()
{ FILE *fp;
char a[4]="1234",b[6]="abcedf";
if((fp=fopen("_______","wb"))==NULL)exit(0);
fwrite(a,sizeof(char),4,fp);
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, ×
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 , ×
展开阅读全文