C语言例题
1.有以下程序 (03-3-26)
main()
{ char a,b,c*d;
a=’\’; b=’\xbc’;
c=’\0xab’; d=”\0127”;
printf("%c %c %c%c\n",a,b,c,*d);
}
编译时出现错误,以下叙述中正确的是
A.程序中只有a=’\’;语句不正确B.b=’\xbc’; 语句不正确
C.d=”\0127”; 语句不正确D. a=’\’;和c=’\0xab’; 语句不正确
2.程序执行结果(宏替换)
#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.12C.13 D.15
3.以下非法的赋值语句是
A.n=(i=2,++i);
B.j++;
B.++(i+1);
D.x=j>0;
4.设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(02-9-16)
A.6.500000 B.6 C.5.500000 D.6.00000
5.已有定义:int x=3, y=4, z=5;则表达式!(x+y)+z-1&&y+z/2的值是(02-9-21)
A.6 B.0 C.2 D.1
6.以下选项中,与k=n++完全等价的表达式是(02-9-23)
A.k=n,n=n+1;
B.n=n+1,k=n;
C.k=++n;
D.k+=n+1;
7.变量范围)(1;6,3;2,3)
#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);
}
8.有以下程序(03-9-14)
main()
{int a; char c=10;
float f=100.0; double x;
a=f/=c*(x=6.5);
printf(“%d %d %3.1f %3.1f\n”,a,c,f,x);
}
程序运行后输出结果是
A.1 65 1 6.5 B.1 65 1.5 6.5 C.1 65 1.0 6.5 D.2 65 1.5 6.5
9.若有以下程序段(n所赋的是8进制数)(03-4-16)
int m=32767;n=032767;
printf("%d,%o\n",m,n);
其输出结果为:
A.32767, 32767 B.32767,032767 C. 32767,77777 D. 32767,077777
10.有以下程序(03-9-16 )短路
main()
{int a=1,b=2,m=0,n=0,k;
k=(n=b>5)||(m=a
printf(“%d, %d\n”,k,m);
}
程序运行后输出结果是
A.0,0 B.0,1 C.1,0 D.1,1
11.输出结果(03-9-18)
int x=2002,y=2003;
printf("%d \n",(x,y,x+y));
12.若float x; x已赋值,能将x保留小数点后两位,并将第三位四舍五入的是(03-9-19)
A.x=x*100+0.5/100.0; B.x=(x*100+0.5)/100.0;
C.x=(int)(x*100+0.5)/100.0; D.x=(x/100+0.5)*100.0;
13.有以下程序(03-9-30)
#include
main()
{printf("%d \n",NULL); }
输出结果为
A.0 B.1 C.-1 D.NULL没定义,出错
14.要求程序的功能是计算:
(03-9-24)
main()
{int n;float s;
s=1.0;
for(n=10;n>1;n--) s=s+1/n;
printf("%6.4f \n",s);
}
程序运行后输出结果错误,导致错误结果的程序行是
A.s=1.0; B. for(n=10;n>1;n--)
C.s=s+1/n;D.printf(“%6.4f \n”,s);
15.输出结果(03-9-6)
main()
{int p=30;
printf("%d \n",(p/3>0 ? p/10 : p%3));
}
16.(静态变量)(8,17)
#include
main()
{ int k=4,m=1,p;
p=func(k,m);
printf(“%d”,p);
p=func(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);
}
17.输出结果(03-9-t-14)
int a=5;
fun(int b)
{static int a=10;
a+=b++;
printf("%d\n",a);
}
main()
{int c=20;
fun(c);
a+=c++;
printf("%d \n",a);
}
30 25
18.有以下程序 (03-4-44)
main(int argc, char *argv[])
{ int n,i=0;
while(argv[1][i]!=’\0’) { n=fun(); i++; }
printf("%d ",n*argc);
}
int fun()
{static int s=0;
s+=1;
return s;
}
若程序经编译、连接后生成可执行文件exam.exe,则键入一下命令行
exam 123执行后输出结果是
A.6 B.8 C.3 D.4
19.输出结果(3.141592 )( m2-47 )
#include
#include
main()
{int s=1;
float n=1.0,pi=0.0;
double t=1.0;
while(fabs(t)>=2e-6)
{pi+=t;
n+=2;
s=-s;
t=s/n;
}
pi *= 4;
print(“pi=%d.6f \n”,pi);
}
20.输出结果
int x =3, y=0;
printf(“%d,%d”,-1>x>-10&&1y>-10&&1
A. 0 3 B. 3 0 C. 3 3 D.1 1
21.如下程序段
int m=0xabc, n=0xabc;
m-=n;
printf("%X\n",m);
执行结果是:
A. 0X0 B.0x0 C.0 D.0xABC
22.下列关于单目运算符++、--的叙述中正确的是
a)他们的运算对象可以是任何变量和常量
b)他们的运算对象可以是char型变量和int型变量,但不能是float型变量
c)他们的运算对象可以是int型变量,但不能是double型变量和float型变量
d)他们的运算对象可以是char型变量、int型变量和float型变量
23.关于指针的说法,错误一条为:
a)变量的指针就是变量的地址
b)可以将一个整型量或任何其它非地址类型的数据付给一个指针量
c)一个指针变量只能指向统一类型的变量
d)指针变量中只能存放地址(指针)
24.关于scanf格式字符的叙述中,错误的一条是
a)对unsigned型数据,可以用%d或%u、%x格式输入
b)d格式字符用来输入十进制整数
c)o格式字符用来输入八进制整数
d)x格式字符用来输入十六进制整数
25.在下列叙述中,错误的一条是
a)主函数main()中定义的变量在整个文件或程序中有效
b)不同函数中,可以使用相同名字的变量
c)形式参数是局部变量
d)在一个函数内部,可在符合语句中定义变量,这些变量只在本复合语句中有效。
26.下列语句中,其含义为“p为指向含n个元素的一排数组的指针变量”的定义语句是
a)int p[n];
b)int *p( ) ;
c)int *p[n];
d)int (*p)[n];
27.设有语句char a=’\72’;,则变量a
(八进制表示)
A.包含1个字符
B.包含2个字符
C.包含3个字符
D.说法不合法
28.下列叙述错误的一条是(m3-48)
a)关系表达式的值是一个逻辑值,即“真”或“假”,可付给一个逻辑变量
b)数组必须先定义,后使用,并且只能逐个引用数组元素,而不能一次引用整个数组
c)在C语言中,判断一个量是否为“真”时,用0代表“假”,以1代表“真”
d)将字符串变量赋给字符数组时,必须在字符串后加’\0’,表示字符串结束。
29.以下叙述中不正确的是(03-4-49)
a)C语言中的文本文件以ASCII码形式存储数据
b)C语言中对二进制文件的访问速度比文本文件快
c)C语言中,随机读写方式不适用于文本文件
d)C语言中,顺序读写方式不适用于而进制文件
30.下列语句中不正确的是
a)static int a[5] = {1,2,3,4,5}
b)static int a[5] = {1,2,3}
c)static int a[] = {0,0,0,0,0}
d)static int a[5] = {0*5}
31.若要说明一个类型名STP,使得定义语句STP s;等价于char *s;以下选项中正确的是(03-4-46)
A. typedef STP char *s;
B.typedef *char STP;
C. typedef STP *char;
D.typedef char *STP;
32.设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是(03-4-48)
A.10101001 B.10101000 C.11111101 D.01010101
33.若输入60和13,以下程序的输出结果为
#define SURPLUS(a,b) ((a)%(b))
main()
{int a,b;
scanf(“%d,%d”,&a,&b);
printf(“\n”,SURPLUS(a,b));
}
A.60 B.13 C.73 D.8
34.程序执行输出结果
#include
main()
{int a=2,c=5;
printf(“a=%%d,b=%%d\n”,a,c);
A. a=%2, b=%5 B. a=2, b=5 C. a=%%d, b=%%d D. a=%d, b=%d
35.程序执行输出结果
#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
36.程序执行输出结果
main()
{unsigned int a=65535;
int b=-2;
printf(“\n a=%d, %u;b=%d, %u”,a,a,b,b);
}
A. –1,65535;-2,65534 B. 65535,65535;-2,65534
C. 65535,65535;65534,65534 D. -1,65535;65534,65534
37.选择正确语句
a)static char str[] = “China”;
b)static char str[] ;str= “China”;
c)static char str1[5],str2[]={ “China”};str1=str2;
d)static char str1[],str2[]; str2 = {“China”};strcpy(str1,str2);
38.执行结果( m3-24)宏、变量
#define GZ 30
main()
{int num,total,gz;
gz=40;num=10;
total=num*GZ;
printf(“total = %d\n",total);
}
A.total=40 B.total=300 C.total=10 D.total=400
39.执行结果( m3-25)运算符结合
main()
{int x,y,z;
x=0;y=z=-1;
x+=-z---y;
printf("x = %d\n",x);
}
A.x=4 B.x=0 C.x=2 D.x=3
40.以下叙述中,正确的一条是(m3-32)
a)语句”goto 12;”是合法的
b)for(;;)语句相当于while(1)语句
c)if(表达式)语句中,表达式的类型只限于逻辑表达式
d)break语句可用于程序的任何地方,以终止程序的执行
41.执行结果(m3-33)位操作
y=5;p=&y;x=*p++;
A.x=5,y=5 B.x=5,y=6 C.x=6,y=5 D.x=6,y=6
42.执行结果(m4-25)
int x=23;
do
{printf("- ",x--);}
while(!x);
A.打印出321 B.打印出23 C.不打印任何内容D.陷入死循环
43.输出结果(m4-26)
printf("%d \n",strlen(“\t\”\065\xff\n”);
A. 5 B.14 C.8 D.输出项不合法,无法正常输出
44.设有如下枚举类型定义:(m4-28)
enum language{Basic=3,Pascal,Ada=100,COBOL,Fortran};
枚举里Fortran的值为
A.4 B.7 C.102 D.103
45.标准库函数fgets(s,n,f)的功能是(m4-29)
A.从文件f中读取长度为n的字符串存放指针s所指的内存
B.从文件f中读取长度不超过n-1的字符串存放指针s所指的内存
C.从文件f中读取n个字符串存放指针s所指的内存
D.从文件f中读取长度为n-1的字符串存放指针s所指的内存
46.字符(char)型数据在微机内存中的存储形式是(m4-35)
A.反码B.补码C.EBCDIC码D.ASCII码
47.C语言规定,程序中各函数之间(m4-37)
a)即允许直接递归调用也允许间接递归调用
b)不允许直接递归调用也不允许间接递归调用
c)允许直接递归调用不允许间接递归调用
d)不允许直接递归调用允许间接递归调用
48.设有static char str[]=”Beijing”; (m4-40)
则执行printf("%d \n",strlen(strcpy(str,”China”)));
后输出结果为
A.5 B.6 C.12 D.14
49.下面函数的功能是(m4-43)
sss(s,t)
char *s,*t;
{while((*s)&&(*t)&&(*t++= = *s++));
return(*s-*t);
}
A.球字符串的长度B.比较两个字符串的大小
C.将字符串s复制到字符串t中D.将字符串s接续到字符串t中
50.请选出以下程序段的输出结果(m4-47)
#include
main()
{char s1[10],s3[10],s3[10],s4[10];
scanf(“%s%s”,s1,s2);gets(s3);gets(s4);
puts(s1); puts(s2); puts(s3); puts(s4);
}
输入数据如下:(此处代表回车符)
aaaa bbbb
cccc dddd
A
B
C
D
aaaa
aaaa
Aaaa
aaaa bbbb
bbbb
bbbb
Bbbb
cccc
cccc
cccc dddd
dddd
cccc dddd
dddd
Eeee
51.请选出以下程序段的输出结果(m4-48)
#include
fun(itn *s,int n1,int n2)
{int i,j,t;
i=n1;j=n2;
while(i
{t=*(s+i);*(s+i)=*(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
52.请选出以下程序段的输出结果(m4-49)
#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(int *s,int 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
53.已有定义如下:
struct node
{int data;
struct node *next;
}*p;
以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。请填空。
p=(struct node*)malloc();
sizeof(struct node)