19、有定义语句:int x,y;。若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是______。
A、11 12↙
B、11,12↙
C、11, 12↙
D、11,↙12↙
20、有以下程序
main()
{ int x=3, y=2, z=1;
printf("%d/n",x/y&~z);
}
程序运行后的输出结果是______。
A、3
B、2
C、1
D、0
21、有以下程序
#include
main()
{ char str[][20]={"Hello","Beijing"},*p=str;
printf("%d/n",strlen(p+20));
}
程序运行后的输出结果是______。
A、0
B、5
C、7
D、20
22、以下选项中不能正确把cl定义成结构体变量的是______。
1、typedef struct
{int red;
int green;
int blue;
} COLOR;
COLOR cl;
2、struct color cl
{ int red;
int green;
int blue;
};
3、struct color
{ int red;
int green;
int blue;
}cl;
4、struct
{int red;
int green;
int blue;
}cl;
A、1
B、2
C、3
D、4
23、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为______。
A、0
B、1
C、-1
D、一个非0值
24、有以下程序
void fun(char *a, char *b)
{ a=b; (*a)++; }
main()
{ char c1='A',c2='a',*p1,*p2;
p1=&c1; p2=&c2; fun(p1,p2);
printf("%c%c/n",c1,c2);
}
程序运行后的输出结果是______。
A、Ab
B、aa
C、Aa
D、Bb
25、下列关于c语言数据文件的叙述中正确的是______。
A、文件由ASCII码字符序列组成,C语言只能读写文本文件
B、文件由二进制数据序列组成,C语言只能读写二进制文件
C、文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D、文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
26、以下叙述中正确的是______。
A、C程序中注释部分可以出现在程序中任意合适的地方
B、花括号"{"和"}"只能作为函数体的定界符
C、构成C程序的基本单位是函数,所有函数名都可以由用户命名
D、分号是C语句之间的分隔符,不是语句的一部分
27、有以下程序
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
28、有以下结构体说明和变量定义,如下图所示,指针p、q、r分别指向一个链表中的三个连续结点。
struct node
{ int data;
struct node *next;
}*p,*q,*r;
data next data next data next
┌─┬─┐ ┌─┬─┐ ┌─┬─┐
─→│ │ ┼→│ │ ┼→│ │ ┼→
└─┴─┘ └─┴─┘ └─┴─┘
↑p ↑q ↑r
现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是______。
A、r->next=q;q->next=r->next;p->next=r;
B、q->next=r->next;p->next=r;r->next=q;
C、p->next=r;q->next=r->next;r->next=p;
D、q->next=r->next;r->next=q;p->next=r;
29、已定义以下函数:
fun(int *p)
{ return *p; }
该函数的返回值是______。
A、不确定的值
B、形参p中存放的值
C、形参p所指存储单元中的值
D、形参p的地址值
30、以下选项中可作为C语言合法整数的是______。
A、10110B
B、0386
C、0Xffa
D、x2a2
31、有以下程序
fun(int a, int b)
{ if(a>b) return(a);
else return(b);
}
main()
{ int x=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%d/n",r);
}
程序运行后的输出结果是______。
A、3
B、6
C、8
D、12
32、有以下程序段
main()
{ int a=5,*b,**c;
c=&b; b=&a;
……
}
程序在执行了c=&b;b=&a;语句后,表达式:**c的值是______。
A、变量a的地址
B、变量b中的值
C、变量a中的值
D、变量b的地址
33、下列函数定义中,会出现编译错误的是______。
A、max(int x,int y,int *z)
{*z=x>y ? x:y;}
B、int max(int x,y)
{ int z;
z=x>y ? x:y;
return z;}
C、max(int x,int y)
{ int z;
z=x>y?x:y; return(z);}
D、int max(int x,int y)
{ return(x>y?x:y); }
34、有以下程序:
main()
{ int k=4,n=0;
for( ; n
{ n++;
if(n%3!=0) continue;
k--; }
printf("%d,%d/n",k,n);
}
程序运行后的输出结果是______。
A、1,1
B、2,2
C、3,3
D、4,4
35、以下不能正确定义二维数组的选项是______。
A、int a[2][2]={{1},{2}};
B、int a[][2]={1,2,3,4};
C、int a[2][2]={{1},2,3}
D、int a[2][]={{1,2},{3,4}}
36、下列选项中正确的语句组是______。
A、char s[8]; s={"Beijing"}
B、char *s; s={"Beijing"}
C、char s[8]; s="Beijing"
D、char *s; s="Beijing"
37、以下能正确定义一维数组的选项是______。
A、int num[]
B、#define N 100
int num[N]
C、int num[0..100]
D、int N=100;
int num[N]
38、已定义c为字符型变量,则下列语句中正确的是______。
A、c='97'
B、c="97";
C、c=97;
D、c="a";
39、以下程序中函数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、baca
40、设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是______。
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;
[填空题]
6、以下程序运行后输入:3,abcde↙,则输出结果是______。
#include
move(char *str, int n)
{ char temp; int i;
temp=str[n-1];
for(i=n-1;i>0;i--) str[i]=str[i-1];
str[0]=temp;
}
main()
{ char s[50]; int n,i,z;
scanf("%d,%s",&n,s);
z=strlen(s);
for(i=1;i<=n;i++) move(s,z);
printf("%s/n",s);
}
7、以下程序运行后的输出结果是______。
main()
{ int p=30;
printf("%d/n",(p/3>0 ? p/10 :p%3));
}
8、以下程序运行后的输出结果是______。
main()
{ int i,n[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{ n[i]=n[i-1]*2+1;
printf("%d ",n[i]);
}
}
9、已有定义如下:
struct node
{ int data;
struct node *next;
}*p;
以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。请填空。
p=(struct node *)malloc(______);
10、请在以下程序第一行的下划线处填写适当内容,使程序能正常运行。
______( double,double);
main()
{ double x,y;
scanf("%1f%1f",&x,&y);
printf(%1f/n",max(x,y));
}
double max(double a,double b)
{ return(a>b ? a:b);}
11、以下程序运行后的输出结果是______。
int a=5;
fun(int b)
{ static int a=10;
a+=b++;
printf("%d ",a);
}
main()
{ int c=20;
fun(c);
a+=c++;
printf("%d/n",a);
}
12、以下程序运行后的输出结果是______。
(注:如果结果中含有回车,可加一空格写在一行,例如:
1 1 1
1 1 1
1 1 1可以写成1 1 1 1 1 1 1 1 1)
main()
{ int i,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
for(j=i+1;j<3;j++) a[j][i]=0;
for(i=0;i<3;i++)
{ for(j=0;j<3;j++) printf("%d ",a[i][j]);
printf("/n");
}
}
13、以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。
例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。
#include
#include
main()
{ char s[80],d[80]; int i,j;
gets(s);
for(i=j=0;s[i]!='/0';i++)
if(______) { d[j]=s[i]; j++; }
d[j]='/0';
puts(d);
}
14、以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。
int fun ( int n)
{ int m=0,f=1,i;
for(i=1; i<=n; i++)
{ m+=i*f;
f=______;
}
return m;
}
main()
{ printf("m=%d/n",______);}