《c语言考试题及答案》由会员分享,可在线阅读,更多相关《c语言考试题及答案(93页珍藏版)》请在装配图网上搜索。
1、一、选择题
(1) 在C语言中,如果下面的变量都是int类型,则输出的结果是
sum=pad=5; pad=sum + + ,pad + + , + + pad;
printf("%d\n",pad);
A) 7 B) 6 C) 5 D) 4
(2) 以下程序的输出结果是
# include
main()
{ int i=010 , j = 10;
printf("%d,%d\n",+ +i , j - -); }
A) 11,10 B) 9,10 C) 010,9 D) 10,9
(3) 已知在ASCII代码中,字母A的序号为65,以下程序的输出的结
2、果是
# include
main()
{ char c1=A, c2=Y;
printf("%d,%d\n",c1,c2); }
A) 因输出格式不合法,输出错误信息 B)65,90 C)A,Y D)65,89
(4) 指针s所指字符串的长度为
char *s="\\"Name\\Address\n";
A) 19 B) 15 C) 18 D) 说明不合法
(5) 设有说明int(*ptr)[m];其中的标识符ptr是
A)M个指向整型变量的指针
B)指向M个整型变量的函数指针
C)一个指向具有M个整型元素的一维数组的指针
D)具有M个指针元素
3、的一维指针数组,每个元素都只能指向整型量
(6) 语句while(!E);中的条件!E等价于
A)E = = 0 B)E!=1 C)E!=0 D)~E
(7) 以下程序的输出结果是
# include
main()
{ printf("%d\n",NULL); }
A) 不确定的(因变量无定义) B)0 C)-1 D)1
(8) 以下函数调用语句中含有的实参个数为。
func((exp1,exp2),(exp3,exp4,exp5));
A) 1 B) 2 C) 4 D) 5
(9) 设有以下语句:
char a=3,b=6,c;
c=a^b<<2
4、;
则c的二进制值是
A) 00011011 B)00010100 C)00011100 D)00011000
(10) 下面的程序中第几行有错误(每行程序前面的数字是行号)。
1 #include
2 main()
3 {
4 float a[3]={0,0};
5 int i;
6 for(i=0;i<3;i + + ) scanf("%d",&a[i]);
7 for(i=1;i<3;i + + ) a[0]=a[0]+a[i];
8 printf("%f\n",a[0]);
9 }
A) 没有 B)第4行 C)第6行 D)第8行
(11)
5、 设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值是
A)3 B)0 C)9 D)-12
(12) 以下的for循环
for(x=0,y=0; (y!=123)&&(x<4); x + + );
A) 是无限循环 B)循环次数不定 C)执行4次 D)执行3次
(13) 设有语句char a=\72;则变量a
A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法
(14) 以下程序的输出结果是
# include
# include
main()
{ int a=1,b=4,c=2;
float
6、 x=10..5 , y=4.0 , z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
pritnf("%f\n",z); }
A) 14.000000 B) 015.400000 C) 13.700000 D) 14.900000
(15) sizeof(double)是
A)一种函数调用 B)一个双精度型表达式
C)一个整型表达式 D)一个不合法的表达式
(16) C语言中
A)不能使用do-while语句构成的循环
B)do-while语句构成的循环必须用break语句才能退出
C)do-while语句构成的循环,当while语句中的表达式
7、值为非零时结束循环
D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环
(17) 以下程序的输出结果是
# include
# include
main()
{ char str[12]={s,t,r,i,n,g};
printf("%d\n",strlen(str)); }
A) 6 B) 7 C) 11 D) 12
(18) 以下程序的输出结果是
# include
main()
{ int a=2,c=5;
printf("a=%%d,b=%%d\n",a,c); }
A
8、) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d
(19) 以下程序的输出结果是
# include
main()
{ int a ,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b); }
A) 6,1 B) 2,1 C) 6,0 D) 2,0
(20) 以下程序的输出结果是
# include
main()
{ int i;
for ( i=1;i<=5;i + + ) {if ( i%2 ) printf("*"
9、);
else continue; printf("#");}
printf("$\n"); }
A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$
(21) 以下for语句构成的循环执行了多少次
# include
# define N 2
# define M N+1
# define NUM (M+1)*M/2
main()
{ int i , n=0;
for ( i=1;i<=NUM;i + + );
{n + + ; printf("%d",n); }
printf("\n"); }
A) 5 B) 6 C
10、) 8 D) 9
(22) 设有以下语句,则不是对a数组元素的正确引用的选项是(其中0≤i<10)
int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;
A) a[p-a] B) *(&a[i]) C) p[i] D) *(*(a+i))
(23) 有以下程序:
# include
# define N 6
main()
{ char c[N]; int i=0;
for ( ;i
11、
输入以下三行,每行输入都是在第一列上 开始,代表一个回车符:
a
b
cdef
程序的输出结果是
A) abcdef B) a C) a D) a
b b b
c cd cdef
d
e
f
(24) 以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空。
# include
findmax ( s ,
12、 t , k )
int *s , t , *k;
{ int p; for(p=0,*k=p;p s[*k] )_________; }
main()
{ int a[10] , i , k ;
for ( i=0 ; i<10 ; i + + ) scanf("%d",&a[i]);
findmax ( a,10,&k );
printf ( "%d,%d\n" , k , a[k] ); }
A) k=p B) *k=p-s C) k=p-s D) *k=p
(25) 有以下程序:
#include
u
13、nion pw
{ int i; char ch[2]; } a;
main()
{ a.ch[0]=13; a.ch[1]=0; printf("%d\n",a.i); }
程序的输出结果是(注意: ch[0]在低字节,ch[1]在高字节。)
A) 13 B) 14 C) 208 D) 209
(26) 有以下程序:
# include
main()
{ int c;
while((c=getchar())!=\n)
{ switch(c-2)
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+4
14、);break;
case 3: putchar(c+3);
case 4: putchar(c+2);break; } }
printf("\n"); }
从第一列开始输入以下数据,代表一个回车符。
2743
程序的输出结果是
A) 668977 B) 668966 C) 6677877 D) 6688766
(27) 以下程序的输出结果为
main()
{ char *alpha[6]={"ABCD","IJKL","MNOP","QRST","UVWX"};
char **p; int i;
p=alpha;
for(i=0;i<4;i + +
15、) printf("%s",p[i]); printf("\n"); }
A) ABCDEFGHIJKL B) ABCD C) ABCDEFGHIJKLMNOP D) AEIM
(28) 以下程序的输出结果是
# include
# define FUDGE(y) 2.84+y
# define PR(a) printf("%d",(int)(a))
# define PRINT1(a) PR(a);putchar(\n)
main()
{int x=2; PRINT1(FUDGE(5)*x); }
A) 11 B) 12 C) 13 D) 15
(29)
16、 以下程序的输出结果是
# include
main()
{ int i=1,j=3;
printf("%d",i + + );
{ int i=0; i+=j*2; printf("%d,%d",i,j); }
printf("%d,%d\n",i,j); }
A) 1,6,3,1,3 B) 1,6,3,2,3 C) 1,6,3,6,3 D) 1,7,3,2,3
(30) 以下程序的输出结果是
# include
main()
{ int k=4,m=1,p;
p=func(k,m); printf("%d,",p); p=fun
17、c(k,m); printf("%d\n",p);}
func(a,b)
int a,b;
{ static int m=0,i=2;
i+=m+1; m=i+a+b; return(m); }
A) 8,17 B) 8,16 C) 8,20 D) 8,8
(31) 设有以下语句:
char str[4][12]={"aaa","bbbb","ccccc","dddddd"},
*strp[4];
int i;
for(i=0;i<4;i + + )strp[i]=str[i];
不是对字符串的正确引用的选项是(其中0≤k<4)
A) strp B) str[k] C
18、) strp[k] D) *strp
(32) 设有以下语句:
char str1[]="string",str2[8],*str3,*str4="string";
则不是对库函数strcpy的正确调用的选项是(库函数用于复制字符串)
A) strcpy(str1,"HELLO1"); B) strcpy(str2,"HELLO2");
C) strcpy(str3,"HELLO3"); D) strcpy(str4,"HELLO4");
(33) C语言中形参的缺省存储类别是
A)自动(auto) B)静态(static) C)寄存器(register) D)外部(exte
19、rn)
(34) 设有以下语句:
struct st {int n; struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,\0},*p;
p=&a[0];
则下列哪一个表达式的值是6
A)p + + ->n B) p->n + + C) (*p).n + + D) + + p->n
(35) 以下四个程序中,哪一个不能对两个整型变量的值进行交换
A)# include
main()
{ int a=10,b=20; swap(&a,&b);
printf("%d %d\n",a,b)
20、;
}
swap(p,q)
int *p,*q;
{
int *t;
t=(int )malloc(sizeof(int));
t=p;*p=*q;*q=*t; }
B) # include
main()
{
int a=10,b=20;
swap(&a,&b);
printf("%d %d\n",a,b);
}
swap(p,q)
int p,q;
{
int *t;
t=*p;*p=*q;*q=t;
}
C) # include
main()
{
int *a,*b;
*a=10,*
21、b=20;
swap(a,b);
printf("%d %d\n",*a,*b);
}
swap(p,q)
int *p,*q;
{
int t;
t=*p;*p=*q;*q=t;
}
D) # include
main()
{
int a=10,b=20;
int x=&a,y=&b;
swap(x,y);
printf("%d %d\n",a,b);
}
swap(p,q)
int *p,*q;
{
int t;
t=*p;*p=*q;*q=t;
}
二、填空题
(1) 以下C语言程序将磁盘中的一个文件复制到另一个
22、文件中,两个文件名在命令行中给出。
#include
main(argc,argv)
int argc; char *argv[];
{ FILE *f1,*f2; char ch;
if(argc< 【1】 )
{ printf("Parameters missing!\n"); exit(0); }
if( ((f1=fopen(argv[1],"r")) = = NULL)||((f2=fopen(argv[2],"w")) = = NULL))
{ printf("Can not open file!\n"); exit(0);}
while( 【
23、2】 )fputc(fgetc(f1),f2);
fclose(f1); fclose(f2); }
(12) 以下程序中的trap函数是一个用梯形法求定积分的通用函数。梯形法求定积分的公式为:
n-1 a-b
s=((f(a)+f(b))/2+∑ f(a+i*h))*h , h=|----|
i=1 n
其中,n为积分小区间数。以下程序调用trap函数求定积分,被积函数是:
f(x)=x*x+3*x+2,且n=1000,a=0,b=4。
#include
3include
double trap(fun,a,b)
double (*
24、fun)(),a,b;
{ double t,h;
int i,n=1000;
t=0.5*((*fun)(a)+(*fun)(b)); h=fabs(a-b)/(double)(n);
for(i=1;i<=n-1;i + + ) t=t+ 【3】 ;
t=t*h; return(t); }
double mypoly(x)
double x;
{ return(x*x+3.0*x+2.0); }
main()
{ double y,(*pf)(); pf= 【4】 ;
y=trap(pf,0.0,4.0); printf("%f\n",y); }
(13) 以下程序
25、求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。
#include
main()
{ int i,a[10],*p=a,sum=0;
printf("Enter 10 num:\n");
for(i=0;i<10;i + + ) scanf("%d",&a[i]);
for(i=0;i<10;i + + )
if(isprime(*(p+ 【5】 )) = = 1){ printf("%d",*(a+i)); sum+=*(a+i); }
printf("\nThe sum=%d\n",sum)
26、; }
isprime(x)
int x;
{ int i; for(i=2;i<=x/2;i + + )
if(x%i = = 0) return (0); 【6】 ; }
(14) 以下程序调用invert函数按逆序重新放置a数组中元素的值。a数组中的值在main函数中读入。
#include
#define N 10
invert(s,i,j)
int *s,i,j;
{ int t; if(i
27、N],i;
for(i=0;inext = = NULL).
#include
struct list { int data;struct list *next;};
【9】 creatli
28、st()
{ struct list *p,*q,*ph; int a;
ph=(struct list *) malloc(sizeof(struct list));
p=q=ph; printf("Input an integer number,enter -1 to end:\n");
scanf("%d",&a):
while(a!=-1)
{ p=(struct list *)malloc(sizeof(struct list));
p->data=a; q->next=p; 【10】 =p; scanf("%d",&a); }
p->next=\0; return(
29、ph); }
main()
{ struct list *head; head=creatlist();}
参考答案
选择题:
(1)C (2)B (3)D (4)B (5)C (6)A (7)B (8)B (9)A (10)C
(11)D (12)C (13)A (14)C (15)C (16)D (17)A (18)D (19)B (20)A
(21)C (22)D (23)C (24)D (25)A (26)A (27)C (28)B (29)B (30)A
(31)A (32)C (33)A (34)D (35)C
填空题:
(1)3
(2)!feof(
30、f1)或feof(f1)==0
(3)(*fun)(a+i*h)
(4) mypoly
(5)I
(6)return 1 或 return (1)
(7)i+1
(8) I
(9) struct list *
(10) q
一、选择题
(1) 请选出可用作C语言用户标识符的一组标识符
A) void B) a3_b3 C) For D) 2a
define _123 -abc DO
WORD IF Case sizeof
(2) 设 int a=12,则执行完语句 a+=a-=a*a后,a的值是
A) 552 B) 264 C) 144 D) -264
(3)
31、C语言程序的基本单位是
A) 程序行 B) 语句 C) 函数 D) 字符
(4) 请选出合法的C语言赋值语句
A) a=b=58 B) i++; C) a=58,b=58 D) k=int(a+b);
(5) 执行下面程序片段的结果是
int x=23;
do
{ printf("%2d",x--);}
while(!x);
A) 打印出321 B) 打印出23 C) 不打印任何内容 D) 陷入死循环
(6) 请选出以下语句的输出结果
printf("%d\n",strlen("\t\"\065\xff\n"));
A) 5 B) 14 C) 8 D) 输出项不合法,无
32、正常输出
(7) 设有如下的函数
ggg(x)
float x;
{ printf("\n%d",x*x);}
则函数的类型
A) 与参数x的类型相同 B) 是void C) 是int D) 无法确定
(8) 设有如下枚举类型定义:
enum language { Basic=3,Assembly,Ada=100,COBOL,Fortran};
枚举量Fortran的值为
A) 4 B) 7 C) 102 D) 103
(9) 若有以下说明和语句,请选出哪个是对c数组元素的正确引用
int c[4][5], (*cp)[5];
cp=c;
A) cp+1 B) *(
33、cp+3) C) *(cp+1)+3 D) *(*cp+2)
(10) 标准函数 fgets(s, n, f) 的功能是
A) 从文件f中读取长度为n的字符串存入指针s所指的内存
B) 从文件f中读取长度不超过n-1的字符串存入指针s所指的内存
C) 从文件f中读取n个字符串存入指针s所指的内存
D) 从文件f中读取长度为n-1的字符串存入指针s所指的内存
(11) 设有如下一段程序:
int *var,ab;
ab=100
var=&ab;
ab=*var+10;
执行上面的程序后,ab的值为
A) 120 B) 110 C) 100 D) 90
(12) 以下程序
34、段给数组所有的元素输入数据,请选择正确答案填入。
#include
main()
{ int a[10],i=0;
while(i<10) scanf("%d",________ );
┇
}
A) a+(i++) B) &a[i+1] C) a+i D) &a[++i]
(13) 设有如下的程序段:
char str[ ]="Hello";
char *ptr;
ptr=str;
执行上面的程序段后,*(ptr+5)的值为
A) o B) \0 C) 不确定的值 D) o的地址
(14) 在宏定义 #define PI 3.14159中,用宏名P
35、I代替一个
A) 单精度数 B) 双精度数 C) 常量 D) 字符串
(15) 字符(char)型数据在微机内存中的存储形式是
A) 反码 B) 补码 C) EBCDIC码 D) ASCII码
(16) 执行下面的程序段
int x=35;
char z=A;
int b;
B=((x&15)&&(z
36、接递归调用
(18) 假设在程序中a,b,c均被定义成整型,并且已赋大于1的值,则下列能正确表示代数式 的表达式是
A) 1/a*b*c B) 1/(a*b*c) C) 1/a/b/(float)c D) 1.0/a/b/c
(19) 若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是
A) pb=&x B) pb=x; C) *pb=&x; D) *pb=*x
(20) 设有
static char str[ ]="Beijing";
则执行
printf("%d\n", strlen(strcpy(str,"China")));
后的输出结果为
A) 5
37、 B) 7 C) 12 D) 14
(21) 设有如下程序:
#include
main()
{ int **k, *j, i=100;
j=&i; k=&j;
printf("%d\n", **k);
}
上面程序的输出结果是
A) 运行错误 B) 100 C) i的地址 D) j的地址
(22) 设 a=5, b=6, c=7, d=8, m=2, n=2, 执行
(m=a>b)&&(n=c>d)
后n的值为
A) 1 B) 2 C) 3 D) 4
(23) 下面函数的功能是
sss(s, t)
char *s, *t;
{ while
38、((*s)&&(*t)&&(*t++== *s++));
return(*s-*t);
}
A) 求字符串的长度 B) 比较两个字符串的大小
C) 将字符串s复制到字符串t中 D) 将字符串s接续到字符串t中
(24) 请选出以下程序的输出结果
#include
sub(x,y,z)
int x, y, *z;
{ *z=y-x; }
main()
{ int a, b, c;
sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);
printf("%d,%d,%d\n", a,b,c);
}
A) 5,2,3 B) -5
39、,-12,-7 C) -5,-12,-17 D) 5,-2,-7
(25) 下面程序的输出结果是
#include
main()
{ int i=2,p;
p=f(i,i+1);
printf("%d",p);
}
int f(a,b)
int a,b;
{ int c;
if(a>b) c=1;
else
if(a==b) c=0;
else c=-1;
return(c);
}
A) -1 B) 0 C) 1 D) 2
(26) 请选出以下程序段的输出结果
#include
#define MIN(x,y) (x)
40、<(y)? (x):(y)
main()
{ int i,j,k;
i=10; j=15;
k=10*MIN(i,j);
printf("%d\n",k);
}
A) 15 B) 100 C) 10 D) 150
(27) 请选出以下程序段的输出结果
#include
main()
{ char sl[10], s2[10], s3[10], s4[10];
scanf("%s%s",s1,s2); gets(s3); gets(s4);
puts(s1); puts(s2); puts(s3); puts(s4);
}
输入数据如下:(此处
41、R>代表回车符)
aaaa bbbb
cccc dddd
A) aaaa B) aaaa C) aaaa D) aaaa bbbb
bbbb bbbb bbbb cccc
cccc cccc dddd dddd
cccc dddd dddd eeee
(28) 请选出以下程序的输出结果
#include
fun(s, n1, n2)
int *s, n1, n2;
{ int i, j, t;
i=n1; j=n2;
while(i
42、)= *(s+j); *(s+j)=t;
i++; j--;
}
}
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,0},i, *p=a;
fun(p,0,3); fun(p,4,9); fun(p,0,9);
for(i=0; i<10; i++) printf("%d", *(a+i));
printf("\n");
}
A) 0 9 8 7 6 5 4 3 2 1 B) 4 3 2 1 0 9 8 7 6 5
C) 5 6 7 8 9 0 1 2 3 4 D) 0 9 8 7 6 5 1 2 3 4
(29) 请选出以下程序的输出结果
43、
#include
main()
{ int a[ ]={ 1,2,3,4 },i;
int x=0;
for(i=0; i<4; i++)
{ sub(a,x); printf("%d",x);}
printf("\n");
}
sub(s,y)
int *s, y;
{ static int t=3;
y=s[t]; t--;
}
A) 1 2 3 4 B) 4 3 2 1 C) 0 0 0 0 D) 4 4 4 4
(30) 下面程序的输出结果为
struct st
{ int x;
int *y;
} *p;
int dt[4]
44、={10,20,30,40};
struct st aa[4]={ 50,&dt[0],60,&dt[1],
70,&dt[2],80,&dt[3] };
main()
{ p=aa;
printf("%d\n", ++p->x );
printf("%d\n", (++p)->x);
printf("%d\n", ++( *p->y));
}
A) 10 B) 50 C) 51 D) 60
20 60 60 70
20 21 21 31
二、填空题
(1) 设有如下程序段:
int i
45、=0, sum=1;
do
{ sum+=i++;}
while(i<6);
printf("%d\n", sum);
上述程序段的输出结果是 【1】 。
(2) 阅读下列程序:
#include
main()
{ int i, j, row, column,m;
static int array[3][3]={{100,200,300},
{28,72,-30},
{-850,2,6}
};
m=array[0][0];
for (i=0; i<3; i++)
for (j=0; j<3; i++)
if (array[i][j]
46、{ m=array[i][j]; row=i; column=j;}
printf("%d,%d,%d\n",m,row,column);
}
上述程序的输出结果是 【2】 。
(3) 设a、b、c为整型数, 且a=2、b=3、c=4, 则执行完以下语句:
a*=16+(b++)-(++c);
后,a的值是 【3】 。
(4) 下面程序的输出结果是 【4】 。
#include
main()
{ int a=3, b=2, c=1;
c-=++b;
b*=a+c;
{ int b=5, c=12;
c/=b*2;
a-=c;
printf( %
47、d,%d,%d,",a,b,c);
a+=--c;
}
printf( %d,%d,%d,",a,b,c);
}
(5) 设有如下程序:
#include
main(argc,argv)
int argc; char *argv[ ];
{ while( --argc>0) printf("%s",argv[argc]);
printf("\n");
}
假定上述程序经编译和连接后生成可执行文件PROG.EXE,如果在DOS提示符下键入PROG ABCD EFGH IJKL ,则输出结果为 【5】 。
(6) 阅读下列程序:
#includ
48、e
#define MAX_COUNT 4
void fun();
main()
{ int count;
for (count=1; count<=MAX_COUNT; count++) fun();
}
void fun()
{ static int i;
i+=2; printf("%d",i);
}
上述程序的输出结果是 【6】 。
(7) 设有下列程序:
#include
#include
main()
{ int i;
char str[10], temp[10];
gets(temp);
49、
for (i=0; i<4; i++)
{ gets(str);
if (strcmp(temp,str)<0) strcpy(temp,str);
}
printf("%s\n",temp);
}
上述程序运行后,如果从键盘上输入(在此代表回车符):
C++
BASIC
QuickC
Ada
Pascal
则程序的输出结果是 【7】 。
(8) 设有如下程序:
#include
main(argc,argv)
int argc; char *argv[ ];
{ FILE *fp;
vo
50、id fc();
int i=1;
while( --argc>0)
if((fp=fopen(argv[i++],"r"))==NULL)
{ printf("Cannot open file! \n");
exit(1);
}
else
{ fc(fp); fclose(fp); }
}
void fc(ifp)
FILE *ifp;
{ char c;
while((c=getc(ifp))!=#) putchar(c-32);
}
上述程序经编译、连接后生成可执行文件名为cpy.exe。假定磁盘上有三个
文本文件,其文件名和内容分别为:
文件名 内容
51、
a aaaa#
b bbbb#
c cccc#
如果在DOS下键入
cpy a b c
则程序输出 【8】 。
(9) 若输入3个整数3,2,1,则下面程序的输出结果是【9】 。
#include
void sub( n,uu)
int n, uu[ ];
{ int t;
t=uu[n--]; t+=3*uu[n];
n=n++;
if(t>=10)
{ uu[n++]=t/10; uu[n]=t%10;}
else uu[n]=t;
}
main( )
{ int i, n, aa[10]={0,0,0,0,0,0}
sca
52、nf( "%d%d%d",&n,&aa[0],&aa[1]);
for(i=1; i
#include
main( )
{ int num[26],i; cha
53、r c;
for(i=0; i<26; i++) num[i]=0;
while( 【12】 !=#) /*统计从终端输入的大写字母个数*/
if( isupper(c)) num[c-65]+=1;
for(i=0; i<26; i++) /*输出大写字母和该字母的个数*/
if(num[i]) printf("%c:%d\n,i 【13】 , num[i]);
}
(12) 下面的程序调用getone函数开辟一个动态存储单元,调用assone函数把数据输入此动态存储单元,调用outone函数输出此动态存储单元中的数据。请填空。
#include
get
54、one(s)
int **s;
{ *s=(int *)malloc(sizeof(int));}
assone(a)
int *a;
{ scanf("%d", 【14】 );}
outone(b)
int *b;
printf("%d\n", 【15】 );}
main( )
{ int *p;
getone(&p);
assone(p);
outone(p);
}
选择题:
(1)B (2)D (3)C (4)B (5)B (6)A (7)C (8)C (9)D (10)B
(11)B (12)A (13)B (14)D (15)D (16)
55、B (17)A (18)D (19)A (20)A
(21)B (22)B (23)B (24)B (25)A (26)A (27)A (28)C (29)C (30)C
填空题:
(1) 16
(2) -850,2,0若遗漏逗号扣1分
(3) 28
(4) 2,5,1,2,3,-2若遗漏逗号扣1分
(5) IJKLEFGHABCD 若在字符间嵌入空格扣1分 若在字符间嵌入空格扣1分
(6)2468
(7) QuickC 若大写字母写成小写字母,或小写字母写成大写字母扣1分
(8) AAAABBBBCCCC 若在字符间嵌入空格扣1分若用小写字母扣1分
(9) 2 7
56、 2 1 或2721
(10) 9
(11) 0
(12) (c=getchar()) 注意,外层括号不得遗漏
(13) +65 或 +A
(14) a 或&*a
(15) *b
一、选择题
(1) 下列叙述中正确的是
A) C语言编译时不检查语法
B) C语言的子程序有过程和函数两种
C) C语言的函数可以嵌套定义
D) C语言所有函数都是外部函数
(2) 以下所列的C语言常量中,错误的是
A) 0xFF B) 1.2e0.5 C) 2L D) \72
(3) 下列选项中,合法的C语言关键字是
A) VAR B) cher C) integer D) def
57、ault
(4) 以下变量x.、y、z均为double类型且已正确赋值,不能正确表示数学式子 的C语言表达式是
A) x/y*z B) x*(1/(y*z)) C) x/y*1/z D) x/y/z
(5) 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是
A) -3 B) 9 C) -12 D) 6
(6) 设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为
A) 不定值 B) 4 C) 3 D) 1
(7) 若变量已正确说明为float类型,要通过语句scanf("%f %f %f ",&a,&b,&c);给a赋
58、于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:
A) 10<回车> B) 10.0,22.0,33.0<回车>
22<回车>
33<回车>
C) 10.0<回车> D) 10 22<回车>
22.0 33.0<回车> 33<回车>
(8) 若执行以下程序时从键盘上输入9,则输出结果是
A) 11 B) 10 C) 9 D) 8
Main0
{ int n;
scanf("%d",&n);
if(n++<10) printf("%d\n",n);
else printf("%d\n",n--);
}
(9) 若a、 b、c1、c2、x、y、均是整型变
59、量,正确的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:
60、case 11:y=a-b;break;
} }
(10) 有以下程序段
int k=0
while(k=1)k++;
while 循环执行的次数是
A) 无限次 B) 有语法错,不能执行
C) 一次也不执行 D) 执行1次
(11) 以下程序执行后sum的值是
A)15 B)14 C) 不确定 D)0
min()
{ int i , sum;
for(i=1;i<6;i++) sum+=i;
printf("%d\n",sum);
}
(12) 有以下程序段
int x=3
do
{ printf("%d",x-=2); }
while (!(--x))
61、;
其输出结果是
A) 1 B) 3 0 C) 1 -2 D) 死循环
(13) 若变量c为char类型,能正确判断出c为小写字母的表达式是
A) a<=c<= z B) (c>= a)||(c<= z)
C) (a<=c)and (z>=c) D) (c>= a)&&(c<= z)
(14) 以下所列的各函数首部中,正确的是
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 intege
62、r)
(15) 以下程序的输出结果是
A) 0 B) 29 C) 31 D) 无定值
fun(int x, int y, int z)
{ z=x*x+y*y; }
main()
{ int a=31;
fun(5,2,a);
printf("%d",a);
}
(16) 下列程序段的输出结果是
A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2
void fun(int *x, int *y)
{ printf("%d %d", *x, *y); *x=3; *y=4;}
main()
{ int x=1,y=2;
fun(
63、&y,&x);
printf("%d %d",x, y);
}
(17) 下列程序的输出结果是
A) 非法 B)a[4]的地址 C)5 D)3
main()
{ char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
printf("%d",*--p);
}
(18) 下列程序的运行结果是
A) 6 3 B) 3 6 C) 编译出错 D) 0 0
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
64、,y);
printf("%d %d", a, b);
}
(19) 下面程序的输出结果是
A) 0 B) 1 C) 10 D) 9
main()
{ int a[ ]={1,2,3,4,5,6,7,8,9,0,},*p;
p=a;
printf("%d\n",*p+9);
}
(20) 当调用函数时,实参是一个数组名,则向函数传送的是
A) 数组的长度 B) 数组的首地址
C) 数组每一个元素的地址 D) 数组每个元素中的值
(21) 设有以下说明语句
struct ex
{ int x ; float y; char z ;} example;
则下面的叙述
65、中不正确的是
A) struct结构体类型的关键字 B) example是结构体类型名
C) x,y,z都是结构体成员名 D) struct ex是结构体类型
(22) 以下只有在使用时才为该类型变量分配内存的存储类说明是
A) auto和 static B) auto和 register
C) register和 static D) extern和 register
(23) 若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是
A) EOF B) -1 C) 非零值 D) NULL
(24) 以下程序的输出结果是
A) 20 B) 21 C) 2
66、2 D)23
main()
{ int i, k, a[10], p[3];
k=5;
for (i=0;i<10;i++) a[i ]=i;
for (i=0;i<3;i++) p[i ]=a[i *(i+1)];
for (i=0;i<3;i++) k+=p[i] *2;
printf("%d\n",k);
}
(25) 以下程序的输出结果是
A) 1,5,9 B) 1,4,7 C) 3,5,7 D)3,6,9
main()
{ int i, x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++) printf("%d,",x[i][2-i]);
}
(26) 以下程序的输出结果是
A) 18 B) 19 C) 20 D)21
main()
{ int a[3][3]={ {1,2},{3,4},{5,6} },i,j,s=0;
for(i=1;i<3;i++)
for(j=0;