C语言程序设计  试卷1C语言程序设计  试卷1
C语言程序设计 试卷1
一、单选题
1. 请读程序片段(字符串内没有空格字符):
printf("%d/n",strlen("ATS/n012/1//") );
上面程序片段的输出结果是______。
A、11
B、10
C、9
D、8
2. 执行下面程序片段的结果是______。
int x=23;
do
{
printf("%2d",x--);
}
while(!x);
A、打印出321
B、打印出23
C、不打印任何内容
D、陷入死循环
3. 设有
static char str[]="Beijing";
则执行
printf("%d/n",strlen(strcpy(str,"China") ) );
后的输出结果为______。
A、5
B、7
C、12
D、14
4. C语言中,下列叙述正确的是______。
A、不能使用do-while语句构成的循环
B、do-while语句构成的循环,必须用break语句才能退出
C、do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D、do-while语句构成的循环,当while语句中的表达式值为零时结束循环
5. 请选出可用做C语言用户标识符的一组标识符______。
① void ② a3_b3 ③ For ④ 2a
define _123 _abc DO
WORD IF case sizeof
A、①
B、②
C、③
D、④
6. 以下选项中,能定义s为合法的结构体变量的是______。
A、typedef struct abc
{ double a;
char b[10];
} s;
B、struct
{ double a;
char b[10];
}s;
C、struct ABC
{ double a;
char b[10];
}
ABC s;
D、typedef ABC
{ double a;
char b[10];
}
ABC s;
7. 以下程序的输出结果是______。
main()
{ int a=-1,b=1, k;
if((++a<0)&&!(b--<=0))
printf("%d %d/n",a,b);
else
printf("%d %d/n",b,a);
}
A、-1 1
B、0 1
C、1 0
D、0 0
8. 若有以下说明和语句,请选出哪个是对c数组元素的正确引用______。
int c[4][5],(*cp)[5];
cp=c;
A、cp+1
B、*(cp+3)
C、*(cp+1)+3
D、*(*cp+2)
9. 以下程序的输出结果是______。
#include <stdio.h>
#include <string.h>
main() {
char str[12]={'s','t','r','i','n','g'};
printf("%d/n",strlen(str) );
}
A、6
B、7
C、11
D、12
10. 请读程序:
#include <stdio.h>
func(int a, int b){
int c;
c=a+b;
return c;
}
main( ) {
int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf("%d/n", r);
}
上面程序的输出结果是______。
A、11
B、20
C、21
D、31
11. 以下程序的输出结果是______。
main( )
{ int w=5; fun(w); printf("/n"); }
fun(int k)
{ if(k>0) fun(k-1);
printf("%d",k);
}
A、5 4 3 2 1
B、0 1 2 3 4 5
C、1 2 3 4 5
D、5 4 3 2 1 0
12. 设有如下的程序段
char str[]="Hello";
char *ptr;
ptr=str;
执行完上面的程序段后,*(ptr+5)的值为______。
A、'o'
B、'/0'
C、不确定的值
D、'o'的地址
13. 下面各语句行中,能正确进行给字符串赋值操作的语句行是______。
A、char st[4][5]={"ABCDE"};
B、char s[5]={'A','B','C',
'D','E'};
C、char *s="ABCDE";
D、char *s; scanf("%s",*s);
14. 设有以下语句
char a=3,b=6,c;
c=a^b<<2;
则c的二进制值是______。
A、00011011
B、00010100
C、00011100
D、00011000
15. 若x是int型变量,且有下面的程序片段
for(x=3;x<6;x++) printf((x%2)?("**%d"):("##%d/n"),x);
上面程序片段的输出结果是______。
① **3 ② ##3 ③ ##3 ④ **3##4
##4 **4 **4##5 **5
**5 ##5
A、①
B、②
C、③
D、④
16. 请读程序:
#include <stdio.h>
main()
{
int a, b ;
for(a = 1 , b = 1 ; a <= 100 ; a++) {
if(b >= 20) break ;
if (b%3 == 1) { b += 3 ; continue ; }
b -= 5 ;
}
printf("%d/n", a) ;
}
上面程序的输出结果是______。
A、7
B、8
C、9
D、10
17. 以下程序的输出结果是______。
main()
{int k=17;
printf("%d,%o,%x/n",k,k,k);
}
A、17,021,0x11
B、17,17,17
C、17,0x11,021
D、17,21,11
18. 请选出以下程序段的输出结果______。
#include <stdio.h>
#define MIN(x,y) (x<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
19. 已知字符0的ASCII码为十六进制的30,下面程序
main()
{
union{
unsigned char c;
unsigned int i[4];
}z;
z.i[0]=0x39;
z.i[1]=0x36;
printf("%c/n",z.c);
}
的输出是______。
A、6
B、9
C、0
D、3
20. 有以下程序
main()
{ int c;
while((c=getchar() )!='/n') {
switch(c-'2') {
case 0: case 1: putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c+2);break; }
}
}
从第一列开始输入以下数据,↙代表一个回车符。
2473↙
程序的输出结果是______。
A、668977
B、668966
C、66778777
D、6688766
21. 以下程序的输出结果是______。
#include <stdio.h>
main()
{ int i;
for(i=1;i<5;i++) {
if(i%2) printf("*");
else continue;
printf("#");
}
printf("$/n");
}
A、*#*#*#$
B、#*#*#*$
C、*#*#$
D、#*#*$
22. 请读程序:
#include <stdio.h>
int a[ ]={2,4,6,8,};
main( )
{
int i;
int *p=a;
for( i=0;i<4;i++) a[i]=*p++;
printf("%d/n",a[2]);
}
上面程序的输出结果是______。
A、6
B、8
C、4
D、2
23. 请读程序:
#include <stdio.h>
#include <string.h>
main()
{
char *s1="AbCdEf", *s2="aB";
s1++; s2++;
printf("%d/n",strcmp(s1,s2) );
}
上面程序的输出结果是______。
A、正数
B、负数
C、零
D、不确定的值
24. 若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是______。
A、p+1
B、a+1
C、a++
D、++p
25. 以下程序的输出结果是______。
main()
{ int n=4;
while(n--)printf("%d ",--n);
}
A、2 0
B、3 1
C、3 2 1
D、2 1 0
26. 执行下面程序中的输出语句后,
main()
{
int a;
printf("%d/n",(a=3*5,a*4),a+5);
}
a的值是______。
A、15
B、20
C、10
D、60
27. 请选出以下程序的输出结果______。
#include <stdio.h>
sub(int *s,int y)
{ static int t=3;
y=s[t];t--;
}
main()
{ int a[]={1,2,3,4},i, x=0;
for(i=0;i<4;i++) {
sub(a,x);printf("%d",x); }
printf("/n");
}
A、1234
B、4321
C、0000
D、4444
28. 以下程序的输出结果是______。
main()
{ int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
for(i=0;i<4;i+=2) printf("%d",p[i]);
}
A、52
B、51
C、53
D、97
29. 有以下程序:
#include <stdio.h>
union 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
30. 下面程序的输出是______。
int m=13;
int fun2(int x,int y)
{ int m=3;
return(x*y-m);
}
main( )
{ int a=7,b=5;
printf("%d/n",fun2(a,b)/m);}
A、1
B、2
C、7
D、10
二、填空题
1、以下程序的输出结果是______。
void fun()
{
static int a=0;
a+=2;
printf("%d",a);
}
main()
{
int cc;
for(cc=1;cc<4;cc++) fun();
printf("/n");
}
2、在对文件进行操作的过程中,若要求文件的位置回到文件的开头,应当调用的函数是______函数。
3、若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是______。
int a[10]={19,23,44,17,37,28,49,36},*p;
p=a;while语句的执行流程
4、函数mycmp(char *s,char *t)的功能是比较字符串s和t的大小,当s等于t时返回0,当s>t返回正值,当s<t时返回负值。请填空。
mycmp( char *s,char *t)
{ while (*s==*t)
{ if (*s=='/0')return 0;
++s;++t;
}
return(______);
}
5、下列程序中字符串中各单词之间有一个空格,则程序的输出结果是______。
# include<string.h>
main( )
{ char str1[ ]="How do you do", *p1=str1;
strcpy(str1+strlen(str1)/2,"es she");
printf("%s/n",p1);
}
6、以下函数inverse的功能是使一个字符串按逆序存放。
inverse(str)
char str[];
{
char m;
int i,j;
for(i=0,j=strlen(str);i<strlen(str)/2;______,j--)
{
m=str[i];
str[i]=______;
______;
}
}
7、若要使指针p指向一个double类型的动态存储单元,请填空。
p = ______malloc(sizeof(double));
8、下列程序的运行结果是______。
main()
{ union EXAMPLE
{ struct
{ int x; int y; } in;
int a;
int b;
}e;
e.a=1;e.b=2;
e.in.x=e.a*e.b;
e.in.y=e.a+e.b;
printf("%d,%d/n",e.in.x,e.in.y);
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。