第一篇:C语言选择题99道
1.有以下程序 int f1(int x,int y){ return x>y?x:y;} int f2(int x,int y){ return x>y?y:x;} main(){int a=4,b=3,c=5,d,e,f;d=f1(a,b);d=f1(d,c);e=f2(a,b);e=f2(e,c);f=a+b+c-d-e;printf(“%d,%d,%dn”,d,f,e);} 执行后输出的结果是______。A:3,4,5 B:5,3,4 C:5,4,3 D:3,5,4 答案:C
348、有以下程序
int f1(int x,int y){return x>y?x:y;} int f2(int x,int y){return x>y?y:x;} main(){ int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf(“%d,%d,%dn”,e,f,g);} 程序运行后的输出结果是______。
A:4,3,7 B:3,4,7 C:5,2,7 D:2,5,7 答案:A
2.设有定义:float a=2,b=4,h=3;,以下C语言表达式中与代数式1/2(a+b)h计算结果不相符的是______。A:(a+b)*h/2 B:(1/2)*(a+b)*h C:(a+b)*h*1/2 D:h/2*(a+b)
答案:B
3.设有定义:float a=2,b=4,h=3;,以下C语言表达式中与代数式1/2(a+b)h计算结果不相符的是______。A:(a+b)*h/2 B:(1/2)*(a+b)*h C:(a+b)*h*1/2 D:h/2*(a+b)答案:B
261、已有定义:char c;,程序前面已在命令中包含ctype.h文件。不能用于判断c中的字符是否为大写字母的表达式是______。A:isupper(c)B:'A'<=c<='Z' C:'A'<=c&&c<='Z'
D:c<=('z'-32)&&('a'-32)<=c 答案:B
469、有以下程序 main()
{char p[]={'a','b','c'},q[]=“abc”;printf(“%d %dn”,sizeof(p),sizeof(q));}
程序运行后的输出结果是______。A:4 4 B:3 3 C:3 4 D:4 3 答案:C
617、设有以下定义和语句 char str[20]= “Program”,*p;p=str;
则以下叙述中正确的是______。A:*P与str[0]中的值相等 B:str与p的类型完全相同
C:str数组长度和p所指向的字符串长度相等 D:数组str中存放的内容和指针变量p中存放的内容相同 答案:A
513、以下能正确定义数组并正确赋初值的语句是______。
A:int N=5,b[N][N];B:int a[1][2]={{1},{3}};C:int c[2][]={{1,2},{3,4}};D:int d[3][2]={{1,2},{3,4}};答案:D
533、以下不能正确定义二维数组的选项是______。
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}} 答案:D
567、有以下程序:
void sort(int a[],int n){ int i,j,t;for(i=0;i if(a[i] 137、以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序。void sort(int a[],int n) {int i,j,t; for(i=0;i {int aa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5); for(i=0;i<10;i++)printf(“%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 119、以下程序的输出结果是______。#inclue { char b1[8]=“goddwer”,b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pb);printf(“%dn”,strlen(b2));} A:8 B:3 C:1 D:7 答案:D 180、以下选项中不能正确把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 答案:B 694、以下结构体类型说明和变量定义中正确的是______。 A:typedef struct {int n;char c;} REC;REC t1,t2;B:struct REC;{int n;char c;};REC t1,t2;C:typedef struct REC;{int n=0;char c= 'A';}t1,t2;D:struct {int n;char c;} REC;REC t1,t2;答案:A 6、能正确表示a和b同时为正或同时为负的逻辑表达式是______。 A:(a>=0||b>=0)&&(a<0|| b<0)B:(a>=0&&b>=0)&&(a<0&&b<0)C:(a+b>0)&&(a+b<=0)D:a*b>0 答案:D 62、有如下程序 main(){ int n[5] = {0,0,0},i,k = 2; for(i = 0;i < k;i++)n[i] = n[i] + 1;printf(“%dn”,n[k]); } 该程序的输出结果是______。A:不确定的值 B:2 C:1 D:0 答案:D 98、以下程序的输出结果是______。struct HAR { int x,y;struct HAR *p;} h[2];main() { h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h; printf(“%d%dn”,(h[0].p)->x,(h[1].p)->y);} A:12 B:23 C:14 D:32 答案:D 448、以下程序段的输出结果是______。int a=1234;printf(“%2dn”,a);A:12 B:34 C:1234 D:提示出错、无结果 答案:C 260、设有条件表达式:(EXP)?i++:j--,则以下表达式中与(EXP)完全等价的是______。A:(EXP==0)B:(EXP!=0)C:(EXP==1)D:(EXP!=1)答案:B 557、设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是______。A:p=1;B:*q=2;C:q=p;D:*p=5;答案:D 51、有如下程序 main(){ int x=1,a=0,b=0;switch(x){ case 0: b++;case 1: a++;case 2: a++;b++;} printf(“a=%d,b=%dn”,a,b);} 该程序的输出结果是______。A:a=2,b=1 B:a=1,b=1 C:a=1,b=0 D:a=2,b=2 答案:A 663、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是______。A:if(x++);B:if(x>y && y!=0);C:if(x>0)x--else y++;D:if(y<0){;} else x++;答案:C 190、设有定义:float a=2,b=4,h=3;,以下C语言表达式中与代数式1/2(a+b)h计算结果不相符的是______。A:(a+b)*h/2 B:(1/2)*(a+b)*h C:(a+b)*h*1/2 D:h/2*(a+b)答案:B 201、有以下程序 struct STU{ char name[10];int num;}; void f1(struct STU c) {struct STU b={“LiSiGuo”,2042};c=b;} void f2(struct STU *c) {struct STU b={“SunDan”,2044};*c=b;} main(){struct STU a={“YangSan”,2041},b={“WangYin”,2043};f1(a);f2(&b); printf(“%d %dn”,a.num,b.num);} 执行后输出结果是______。A:2041 2044 B:2041 2043 C:2042 2044 D:2042 2043 答案:A 509、有以下程序 #include void f(char *name, int num){ struct STU s[2]={{“SunDan”,20044},{“Penghua”,20045}}; num=s[0].num; strcpy(name,s[0].name);} main(){ struct STU s[2]={{“YangSan”,20041},{“LiSiGao”,20042}},*p;p=&s[1];f(p->name,p->num);printf(“%s %dn”,p->name,p->num);} 程序运行后的输出结果是______。A:SunDan 20042 B:SunDan 20044 C:LiSiGuo 20042 D:YangSan 20041 答案:A 294、不能把字符串:Hello!赋给数组b的语句是______。 A:char b[10]={'H','e','l','l','0','!'};B:char b[10]={'h','e','l','l','0','!'};C:char b[10];strcpy(b,“Hello!”);D:char b[10]=“Hello!”;答案:B 730、假定已建立以下链表结构,且指针p和q已指向如图所示的结点: 394、以下语句或语句组中,能正确进行字符串赋值的是______。 A:char *sp;*sp=“right!”;B:char s[10];s=“right!”;C:char s[10];*s=“right!”;D:char *sp=“right!”;答案:D 44、以下程序的输出结果是______。main() { char *s=“12134211”;int v[4]={0,0,0,0},k,i;for(k=0;s[k];k++){ switch(s[k]){ case '1':i=0;case '2':i=1;case '3':i=2;case '4':i=3;} v[i]++;} for(k=0;k<4;k++)printf(“%d ”,v[k]);} A:4 2 1 1 B:0 0 0 8 C:4 6 7 8 D:8 8 8 8 则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是______。 A:(*p).next=(*q).next;free(p);B:p=q->next;free(q);C:p=q;free(q);D:p->next=q->next;free(q);答案:D 326、若fp是指向某文件的指针,且已读到此文件的末尾,则函数feof(fp)的返回值是______。A:EOF B:0 C:非零值 D:NULL 答案:C 答案:B 14、若x和y都是int型变量,x=100、y=200,且有下面的程序片段 printf(“%d”,(x,y));上面程序片段的输出结果是______。A:200 B:100 C:100 200 D:输入格式符不够,输出不确定的值 答案:A 71、若变量已正确说明为float类型,要通过语句scanf(“%f %f %f”,&a,&b,&c);给 a赋予10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:______。A:10 22 33 B:10.0,22.0,33.0 C:10.0 22.0 33.0 D:10 22 33 答案:B 167、有以下程序 main(){int a[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;else pa[1][i]=1;printf(“%dn”,a[0][1]+a[1][1]+a[1][2]);} 执行后输出结果是______。A:7 B:6 C:8 D:无确定值 答案:A 215、已有定义:int i,a[10],*p;,则合法的赋值语句是______。A:p=100;B:p=a[5];C:p=a[2]+2;D:p=a+2;答案:D 124、以下选项中合法的用户标识符是______。A:long B:_2Test C:3Dmax D:A.dat 答案:B 328、以下对结构体类型变量的定义中,不正确的是______。 ①typedef struct aa { int n;float m;}AA;AA td1;②#define AA struct aa AA{ int n;float m;}td1;③struct { int n; float m;}aa; struct aa td1;④struct { int n; float m;}td1;A:① B:② C:③ D:④ 答案:C 413、以下程序的输出结果是______。main() { int num=0;while(num<=2) { num++;printf(“%dn”,num);} } A)B)C)D)1 1 1 1 2 2 2 3 3 4 A:A)B:B)C:C)D:D)答案:B 231、请读程序: #include int num=0;while(num <=2){ num++;printf(“%dn”,num);} } 上面程序的输出结果是______。① 1 ② 1 ③ 1 ④ 1 2 2 2 3 3 4 A:① B:② C:③ D:④ 答案:C 562、有以下程序 int a=2;int f(int *a){return(*a)++;} main(){ int s=0;{int a=5;s+=f(&a);} s+=f(&a);printf(“%dn”,s);} 执行后输出结果是______。A:10 B:9 C:7 D:8 答案:C 349、已有定义:char a[]=“xyz”,b[]={'x','y','z'};,以下叙述中正确的是______。 A:数组a和b的长度相同 B:a数组长度小于b数组长度 C:a数组长度大于b数组长度 D:上述说法都不对 答案:C 387、当执行下面的程序时,如果输入ABC,则输出结果是______。 #include “stdio.h” #include “string.h” main() { char ss[10]=“12345”;gets(ss);strcat(ss,“6789”);printf(“%sn”,ss);} A:ABC6789 B:ABC67 C:12345ABC6 D:ABC456789 答案:A 471、有以下程序 main() {char a1='M',a2='m';printf(“%cn”,(a1,a2));} 以下叙述中正确的是______。A:程序输出大写字母M B:程序输出小写字母m C:格式说明符不足,编译出错 D:程序运行时产生出错信息 答案:B 472、有以下程序 #include {char c1='1',c2='2'; c1=getchar();c2=getchar();putchar(c1);putchar(c2);} 当运行时输入:a<回车>后,以下叙述正确的是______。 A:变量c1被赋予字符a,c2被赋予回车符 B:程序将等待用户输入第2个字符 C:变量c1被赋予字符a,c2中仍是原有字符2 D:变量c1被赋予字符a,c2中将无确定值 答案:A 284、以下程序的输出结果是______。#include 338、对于基类型相同的两个指针变量之间,不能进行的运算是______。A:< B:= C:+ D:-答案:C 583、若有以下说明和语句 int c[4][5],(*p)[5];p=c;能够正确引用c数组元素的是______。A:p+1 B:*(p+3)C:*(p+1)+3 D:*(p[0]+2)答案:D 63、有如下程序 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 181、已定义以下函数 fun(int *p) { return *p;} 该函数的返回值是______。A:不确定的值 B:形参p中存放的值 C:形参p所指存储单元中的值 D:形参p的地址值 答案:C 197、有以下程序 main(){ int i,n=0;for(i=2;i<5;i++){do { if(i%3)continue;n++;}while(!i);n++;} printf(“n=%dn”,n);} 程序执行后输出结果是______。A:n=5 B:n=2 C:n=3 D:n=4 答案:D 681、以下定义语句中正确的是______。A:int a=b=0;B:char A=65+1,b='b';C:float a=1,*b=&a,*c=&b;D:double a=0.0;b=1.1;答案:B 131、有一函数 ┌ 1 x>0 y = ┤ 0 x=0 a的值是______。 A:15 B:20 C:10 └-1 x<0 以下程序段中不能根据x的值正确计算出y的值的是______。 A:if(x>0)y=1;else if(x==0)y=0;else y=-1;B:y=0;if(x>0)y=1;else if(x<0)y=-1;C:y=0;if(x>=0)if(x>0)y=1;else y=-1;D:if(x>=0)if(x>0)y=1;else y=0;else y=-1;答案:C 719、有以下程序 #include 291、执行下面程序中的输出语句后,main(){ int a;printf(“%dn”,(a=3*5,a*4),a+5);} D:60 答案:A 500、有以下程序 main() { int i=10,j=1; printf(“%d,%dn”,i--,++j);} 执行后输出的结果是______。A:9,2 B:10,2 C:9,1 D:10,1 答案:B 72、若a、b、c1、c2、x、y均是整型变量,正确的switch语句是______。 ① switch(a+b); { case 1:y=a+b;break;case 0:y=a-b;break;} ② switch(a*a+b*b){ case 3: case 1:y=a+b;break;case 3:y=b-a;break;} ③ switch a { case c1:y=a-b;break;case c2:x=a*b;break;default:x=a+b;} ④ switch(a-b) { default:y=a*b;break;case 3:case 4:x=a+b;break;case 10:case 11:y=a-b;break;} A:① D:14.900000 B:② C:③ D:④ 答案:D 628、有以下程序 main(){ char ch[]=“uvwxyz”,*pc;pc=ch;printf(“%cn”,*(pc+5));} 程序运行后的输出结果是______。A:z B:0 C:元素ch[5]的地址 D:字符y的地址 答案:A 217、有以下程序 main(){ unsigned int a;int b=-1;a=b;printf(“%u”,a);} 程序运行后的输出结果是______。A:-1 B:65535 C:32767 D:-32768 答案:B 283、以下程序的输出结果是______。#include 401、有以下结构体说明和变量定义,如图所示: struct node {int data;struct node *next;} *p,*q,*r; 现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是______。A:p->next=q->next;B:p->next=p->next->next;C:p->next=r;D:p=q->next;答案:D 386、以下程序的输出结果是______。main(){ char w[][10]={“ABCD”,“EFGH”,“IJKL”,“MNOP”},k;for(k=1;k<3;k++)printf(“%sn”,w[k]);} A:ABCD FGH KL B:ABCD EFG IJ M C:EFG JK O D:EFGH IJKL 答案:D 230、请读程序: #include 608、有以下程序 main(){ int i,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++)printf(“%d ”,t[2-i][i]);} 程序执行后的输出结果是______。A:7 5 3 B:3 5 7 C:3 6 9 D:7 5 1 答案:B 52、有如下程序 main(){ float x=2.0,y;if(x<0.0)y=0.0;else if(x<10.0)y=1.0/x;else y=1.0;printf(“%fn”,y);} 该程序输出结果是______。A:0.000000 B:0.250000 C:0.500000 D:1.000000 答案:C 535、以下能正确定义一维数组的选项是______。A:int num[] B:#define N 100 int num[N] C:int num[0..100] D:int N=100;int num[N] 答案:B 590、有以下程序 void fun(int *a,int i,int j){ int t;if(i { t=a[i];a[i]=a[j];a[j]=t;i++;j--;fun(a,i,j);} } main() { int x[]={2,6,1,8},i;fun(x,0,3); for(i=0;i<4;i++)printf(“%2d”,x[i]);printf(“n”);} 程序运行后的输出结果是______。A:1 2 6 8 B:8 6 2 1 C:8 1 6 2 D:8 6 1 2 答案:C 466、设有以下说明语句 typedef struct { int n;char ch[8];}PER; 则下面叙述中正确的是______。A:PER是结构体变量名 B:PER是结构体类型名 C:typedef struct是结构体类型 D:struct是结构体类型名 答案:B 532、已定义c为字符型变量,则下列语句中正确的是______。 A:c='97' B:c=“97”;C:c=97;D:c=“a”;答案:C 103、若有说明语言:int a,b,c,*d=&c;则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是______。 A:scanf(“%d%d%d”,&a,&b,d);B:scanf(“%d%d%d”,&a,&b,&d);C:scanf(“%d%d%d”,a,b,d);D:scanf(“%d%d%d”,a,b,*d);答案:A 91、设有以下函数;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(“%dn”,f(a));} A)B)C)D)7 7 7 7 8 9 10 7 9 11 13 7 A:A)B:B)C:C)D:D)答案:A 162、有以下程序 main(){ char s[]=“n123”;printf(“%d,%dn”,strlen(s),sizeof(s)); } 执行后输出结果是______。A:赋初值的字符串有错 B:6,7 C:5,6 D:6,6 答案:C 496、若有以下程序段(n所赋的是八进制数)。int m=32767,n=032767;printf(“%d,%on”,m,n);执行后输出结果是______。A:32767,32767 B:32767,032767 C:32767,77777 D:32767,077777 答案:A 720、有以下程序 #include { int x=1,y=2,z=3;if(x>y) if(y 程序的运行结果是______。A:331 B:41 C:2 D:1 答案:D 384、以下程序的输出结果是。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]);} A:1,5,9,B:1,4,7, C:3,5,7, D:3,6,9, 答案:C 391、以下程序的输出是______。struct st { int x;int *y;} *p;int dt[4]={10,20,30,40};struct st aa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0],};main(){ p=aa;printf(“%dn”,++(p->x));} A:10 B:11 C:51 D:60 答案:C 568、以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是______。A:char s[10]=“abcdefg”;B:char t[]=“abcdefg”,*s=t;C:char s[10];s=“abcdefg”;D:char s[10];strcpy(s,“abcdefg”);答案:C 232、请读程序片段(字符串内没有空格字符): printf(“%dn”,strlen(“ATSn0121”));上面程序片段的输出结果是______。 A:11 B:10 C:9 D:8 答案:C 298、下面程序的输出是______。main(){ int x=3 ,y=6,a=0; while(x++!=(y-=1)){ a+=1; if(y printf(“x=%d,y=%d,a=%dn”,x,y,a);} A:x=4,y=4,a=1 B:x=5,y=5,a=1 C:x=5,y=4,a=3 D:x=5,y=4,a=1 答案:D 411、假定 w、x、y、z、m均为int型变量,有如下程序段: w=1;x=2;y=3;z=4; m=(w 444、有以下程序 main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2; printf(“%dn”,*p+*q);} 程序运行后的输出结果是______。A:16 B:10 C:8 D:6 答案:B 220、以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到 链表的各个结点中,请为下划线处有号码的选择出正确的选项。#include { char data;struct node *next;};___(48)___ CreatList(char *s){ struct node *h,*p,*q;h=(struct node *)malloc(sizeof(struct node));p=q=h;while(*s!=' '){ p=(struct node *)malloc(sizeof(struct node));p->data= ______;q->next=p;q= ______;s++;} p->next=' ';return h;} main(){ char str[]=“link list”;struct node *head;head=CreatList(str);...} A:char * B:struct node C:struct node * D:char 答案:C 605、#include 答案:D 89、以下程序的输出结果是______。main() { int num=0;while(num<=2) { num++;printf(“%dn”,num);} } A)B)C)D)1 1 1 1 2 2 2 3 3 4 A:A)B:B)C:C)D:D)答案:C 347、以下能正确定义一维数组的选项是______。 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 662、有以下程序,其中%u表示按无符号整数输出main() { unsigned int x=0xFFFF;/* x的初值为十六进制数 */ printf(“%un ”,x);} 程序运行后的输出结果是______。 A:-1 B:65535 C:32767 D:0xFFFF 答案:B 473、有以下程序 main(){ int k=5,n=0;while(k>0){switch(k){ default : break;case 1 : n+=k;case 2 : case 3 : n+=k;} k--;} printf(“%dn”,n);} 程序运行后的输出结果是______。 A:0 B:4 C:6 D:7 答案:D 414、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是______。 A:地址传递 B:单向值传递 C:由实参传给形,再由形参传回实参 D:传递方式由用户指定 答案:B 347、以下能正确定义一维数组的选项是______。 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 362、若有以下定义:int t[3][2];能正确表示t数组元素地址的表达式是______。 A:&t[3][2] B:t[3] C:t[1] D:*t[2] 答案:C 392、假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是______。 ↓p ↓q ┌─┬─┐ ┌─┬─┐ ┌─┬─┐ head →│8 │ ┼→…→│4 │ ┼→ │ 3│ ┼→…… └─┴─┘ └─┴─┘ └─┴─┘ data next A:free(q);p->next=q->next; B:(*p).next=(*q).next;free(q); C:q=(*q).next;(*p).next=q;free(q); D:q=q->next;p->next=q;p=p->next;free(p);答案:B 358、若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是______。 A:EOF B:0 C:非零值 D:NULL 答案:C 510、有以下程序 struct STU { char name[10];int num;float TotalScore;};void f(struct STU *p){ struct STU s[2]={{“SunDan”,20044,550},{“Penghua”,20045,537}},*q=s;++p;++q;*p=*q;} main(){ struct STU s[3]={ {“YangSan”,20041,703},{“LiSiGuo”,20042,580}};f(s);printf(“%s %d %3.0fn”,s[1].name, s[1].num,s[1].TotalScore);} 程序运行后的输出结果是______。 A:SunDan 20044 550 B:Penghua 20045 537 C:LiSiGuo 20042 580 D:SunDan 20041 703 答案:B 520、有以下程序 main() {int a[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a; for(i=0;i<3;i++) if(i<2)pa[1][i]=pa[1][i]-1;else pa[1][i]=1; printf(“%dn”,a[0][1]+a[1][1]+a[1][2]);} 执行后输出结果是______。 A:7 B:6 C:8 D:无确定值 答案:A 576、有以下程序 main() { char a='a',b;printf(“%c,”,++a);printf(“%cn”,b=a++);} 程序运行后的输出结果是______。 A:b,b B:b,c C:a,b D:a,c 答案:A 601、若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是______。 A:*p=&a;scanf(“%lf”,p); B:*p=&a;scanf(“%f”,p);B:5 C:-1 D:-2 答案:D 247、设有语句char a=' 72';,则变量a______。 C:p=&a;scanf(“%lf”,*p); D:p=&a;scanf(“%lf”,p);答案:D 191、有以下程序 main(){ int x=102,y=012;printf(“%2d,%2dn”,x,y);} 执行后输出结果是______。 A:10,01 B:02,12 C:102,10 D:02,10 答案:C 207、有以下程序 main(){ int m=3,n=4,x;x=-m++;x=x+8/++n;printf(“%dn”,x);} 程序运行后的输出结果是______。 A:3 A:包含1个字符 B:包含2个字符 C:包含3个字符 D:说明不合法 答案:A 299、下面程序的输出是______。main() { char *s=“12134211”; int v1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){ default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;} printf(“v1=%d,v2=%d,v3=%d,v4=%dn”,v1,v2,v3,v4);} A:v1=4,v2=2,v3=1,v4=1 B:v1=4,v2=9,v3=3,v4=1 C:v1=5,v2=8,v3=6,v4=1 D:v1=8,v2=8,v3=8,v4=8 答案:C 685、若变量已正确定义,有以下程序段 int a=3,b=5,c=7;if(a>b)a=b;c=a;if(c!=a)c=b;printf(“%d,%d,%dn”,a,b,c);其输出结果是______。 A:程序段有语法错 B:3,5,3 C:3,5,5 D:3,5,7 答案:B 【1.1】以下不正确的C语言标识符是____。 A)int B)a_1_2 C)ab1exe D)_x 【1.2】以下是正确的C语言标识符是____。 A)#define B)_123 C)%d D)n 【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 A)print B)iam C)Pxq D)str_l _3d one_half My->book Cpp ••• oodbs tart$it line #pow ••• aBc 3pai His.age while 【1.4】下面各选项组中,均是C语言关键字的组是。 A)auto,enum,include B)switch,typedef,continue C)signed,union,scanf D)if,struct,type 【1.5】下列不属于C语言关键字的是。 A)default B)register C)enum D)external 【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。 A)程序文件的开始 B)程序文件的最后 C)它所调用的函数的前面 D)程序文件的任何位置 【1.7】下列关于C语言的叙述错误的是____ A)大写字母和小写字母的意义相同 B)不同类型的变量可以在一个表达式中 C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D)同一个运算符号在不同的场合可以有不同的含义 【1.8】在C语言中,错误的int类型的常数是。 A)32768 B)0 C)037 D)0xAF 【1.9】执行语句 printf(“%x”,-1);屏幕显示____。 A)-1 B)1 C)-ffff D)ffff 【1.10】已知 long i=32768;执行语句printf(“%d”,i);屏幕显示____。 A)-1 B)-32768 C)1 D)32768 【1.11】已知 long i=65539;执行语句printf(“%d”,i);屏幕显示____。 A)65539 B)-3 C)3 D)程序不能执行 【1.12】在C语言中,整数-8在内存中的存储形式是。 A)1111 1111 1111 1000 B)1000 0000 0000 1000 C)0000 0000 0000 1000 D)1111 1111 1111 0111 【1.13】C语言中字符型(char)数据在内存中的存储形式是____。 A)原码 B)补码 C)反码 D)ASCII码 【1.14】将字符g赋给字符变量c,正确的表达式是。 A)c=147 B)c=“147” C)c=’147’ D)c=’0147’ 【1.15】下列转义字符中错误的一个是____。 A)’ 00’ B)’ 014’ C)’x111’ D)’2’ 【1.16】将空格符赋给字符变量c,正确的赋值语句是____。 A)c=’ ’ B)c=NULL C)c=0 D)c=32 【1.17】已知:char a=’70’;则变量a中。 A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明非法 【1.18】字符串“"EOFn=-61”“的长度是____。 A)8 B)9 C)14 D)非法字符串 【1.19】字符串”“的长度是____。 A)0 B)1 C)2 D)非法字符串 【1.20】已知:char a;int b;float c;double d;执行语句”c=a+b+c+d;“后,变量c的数据类型是。 A)int B)char C)float D)double 【1.21】温度华氏和摄氏的关系是: C=5/9*(F-32)。已知:float C,F;由华氏求摄氏的正确的赋值表达式是____。 A)C=5/9(F-32)B)C=5*(F-32)/9 C)C=5/9*(F-32)D)三个表达式都正确 【1.22】逗号表达式”(a=3*5,a*4),a+15“的值是____。 A)15 B)60 C)30 D)不确定 【1.23】如果int a=1,b=2,c=3,d=4;则条件表达式”a 【1.24】为求出s=10!的值,则变量s的类型应当为。 A)int B)unsiged C)long D)以上三种类型均可 【1.25】已知int i=10;表达式“20-0<=i<=9”的值是____。 A)0 B)1 C)19 D)20 【1.26】已知int x=1,y;执行下述语句后变量x的值是____。 y=++x>5&&++x<10; A)1 B)2 C)3 D)4 【1.27】为判断字符变量c的值不是数字也不是字母时,应采用下述表达式____。 A)c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122 B)!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)C)c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122 D)!(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)【1.28】已知 int a[3][2]={3,2,1}; 则表达式“a[0][0]/a[0][1]/a[0][2]”的值是____。 A)0.166667 B)1 C)0 D)错误的表达式 【1.29】已知 int x=1,y=1,z=1; 表达式“x+++y+++z++”的值是____。 A)3 B)4 C)5 D)表达式错误 【1.30】用十进制表示表达式“12|012”的值是____。 A)1 B)0 C)12 D)14 【1.31】已知以下程序段: int a=3,b=4; a=a^b;0011 0100 0111 b=b^a;0100 0011 0111 0100 a=a^b; 则执行以上语句后a和b的值分别是____。 A)a=3,b=4 B)a=4,b=3 C)a=4,b=4 D)a=3,b=3 【1.32】在位运算中,操作数每右移一位,其结果相当于____。 A)操作数乘以2 B)操作数除以2 C)操作数除以16 D)操作数乘以16 【1.33】已知 char a=222;执行语句a=a&052;后,变量a的值是____。 A)222 B)10 C)244 D)254 【1.34】已知二进制数a是00101101,如果想通过整型变量b与a做异或运算,使变量a的高4位取反,低4位不变,则二进制数b的值应是____。 A)11110000 B)00001111 C)11111111 D)00000000 【1.35】已知 int a=15,执行语句a=a<<2以后,变量a的值是____。 A)20 B)40 C)60 D)80 【1.36】已知int x=5,y=5,z=5;执行语句x%=y+z;后,x的值是____。 A)0 B)1 C)5 D)6 【1.37】使用语句scanf(“x=%f,y=%f”,&x,&y);输入变量x、y的值(□代表空格),正确的输入是____。 A)1.25,2.4 B)1.25□2.4 C)x=1.25,y=2.4 D)x=1.25□y=2.4 【1.38】下列循环语句中有语法错误的是____。 A)while(x=y)5; B)while(0); C)do 2;while(x==b); D)do x++ while(x==10); 【1.39】已知int x=(1,2,3,4);变量x的值是____。 A)1 B)2 C)3 D)4 【1.40】表达式sizeof(double)是。 A)函数调用 B)double型表达式 C)int型表达式 D)非法表达式 【1.41】执行语句printf(“2:%d,”,printf(“1:%d,”,scanf(“%d,”,&x)));以后的输出结果是____。 A)2:1,1:1, B)1:1,2:1, C)2:4,1:1 D)1:1,2:4,【1.42】已知:int x,y;double z;则以下语句中错误的函数调用是。 A)scanf(“%d,%lx,%le”,&x,&y,&z); B)scanf(“-*%d%lf”,&x,&y,&z); C)scanf(“%x%*d%o”,&x,&y); D)scanf(“%x%o%6.2f”,&x,&y,&z); 【1.43】与条件表达式“(n)?(c++):(c--)”中的表达式(n)等价的表达式是____。 A)(n==0)B)(n==1)C)(n!=0)D)(n!=1) 【1.44】已知int i=1,j=0;执行下面语句后j的值是____。 while(i)switch(i) { case 1: i+=1;j++;break; case 2: i+=2;j++;break; case j3: i+=3;++;break; default: i--;j++;break; } A)1 B)2 C)3 D)死循环 【1.45】求取满足式 12+22+32+ …… +n2 ≤1000的n,正确的语句是____。 A)for(i=1,s=0;(s=s+i*i)<=1000;n=i++); B)for(i=1,s=0;(s=s+i*i)<=1000;n=++i); C)for(i=1,s=0;(s=s+i*++i)<=1000;n=i); D)for(i=1,s=0;(s=s+i*i++)<=1000;n=i); 【1.46】下面的for语句。 for(x=0,y=10;(y>0)&&(x<4);x++,y--); A)是无限循环 B)循环次数不定 C)循环执行4次 D)循环执行3次 【1.47】已知int i=1; 执行语句while(i++<4);后,变量i的值为____。 A)3 B)4 C)5 D)6 【1.48】已知int x=12,y=3;执行下述程序后,变量x的值是____。 do { x/=y--; }while(x>y); A)1 B)2 C)3 D)程序运行有错误 【1.49】已知 char a[][20]={“Beijing”,“shanghai”,“tianjin”,“chongqing”} ; 语句printf(“%c”,a[30]);的输出是____。 A)<空格> B)n C)不定 D)数组定义有误 【1.50】若用数组名作为函数调用时的实参,则实际上传递给形参的是。 A)数组首地址 B)数组的第一个元素值 C)数组中全部元素的值 D)数组元素的个数 【1.51】对二维数组的正确说明是____。 A)int a[][]={1,2,3,4,5,6}; B)int a[2][]={1,2,3,4,5,6}; C)int a[][3]={1,2,3,4,5,6}; D)int a[2,3]={1,2,3,4,5,6}; 【1.52】对字符数组s赋值,不合法的一个是____。 A)char s[]=“Beijing”; B)char s[20]={“beijing”}; C)char s[20];s=“Beijing”; D)char s[20]={’B’,’e’,’i’,’j’,’i’,’n’,’g’}; 【1.53】对字符数组str赋初值,str不能作为字符串使用的一个是____。 A)char str[]=“shanghai”; B)char str[]={“shanghai”}; C)char str[9]={’s’,’h’,’a’,’n’,’g’,’h’,’a’,’i’}; D)char str[8]={ ’s’,’h’,’a’,’n’,’g’,’h’,’a’,’i’};选项缺少字符串结束标志。【1.54】对函数形参的说明有错误的是____。 A)int a(float x[],int n)B)int a(float *x,int n)C)int a(float x[10],int n)D)int a(float x,int n) 此处函数形参是一个指针变量,接受实参的地址,而不是一个数组。【1.55】如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,这个变量的存储类型应该被说明为____。 A)静态变量 B)动态变量 C)外部变量 D)内部变量 【1.56】在一个C源程序文件中,•若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要使用的存储类别是。 A)extern B)register C)auto D)static 【1.57】在C语言中,函数的数据类型是指____。 A)函数返回值的数据类型 B)函数形参的数据类型 C)调用该函数时的实参的数据类型 D)任意指定的数据类型 【1.58】已知如下定义的函数: fun1(a) { printf(“n%d”,a); } 则该函数的数据类型是____。 A)与参数a的类型相同 B)void型 C)没有返回值 D)无法确定 【1.59】定义一个函数实现交换x和y的值,并将结果正确返回。能够实现此功能的是____。 A)swapa(int x,int y)函数swapa是值传递,函数的执行结果不能返回 B)swapb(int *x,int *y){ int temp; { int temp; temp=x;x=y;y=temp; temp=x;x=y;y=temp; } } C)swapc(int *x,int *y)D)swapd(int *x,int *y){ int temp; { int *temp; temp=*x;*x=*y;*y=temp; temp=x;x=y;y=temp; } } 【1.60】求一个角的正弦函数值的平方。能够实现此功能的函数是____。 A)sqofsina(x)float x; { return(sin(x)*sin(x)); } B)double sqofsinb(x)float x; { return(sin((double)x)*sin((double)x)); } C)double sqofsinc(x){ return(((sin(x)*sin(x)); } D)sqofsind(x)float x; { return(double(sin(x)*sin(x))); 【1.61】一个函数内有数据类型说明语句如下: double x,y,z(10); 关于此语句的解释,下面说法正确的是____。 A)z是一个数组,它有10个元素。 B)z是一个函数,小括号内的10是它的实参的值。 C)z是一个变量,小括号内的10是它的初值。 D)语句中有错误。 【1.62】已知函数定义如下: float fun1(int x,int y){ float z; z=(float)x/y; return(z); } 主调函数中有int a=1,b=0;可以正确调用此函数的语句是____。 A)printf(“%f”,fun1(a,b)); B)printf(“%f”,fun1(&a,&b)); C)printf(“%f”,fun1(*a,*b)); D)调用时发生错误 (y不能为0) 【1.63】下面函数的功能是____。 a(s1,s2)char s1[],s2[]; { while(s2++=s1++); } A)字符串比较 B)字符串复制 C)字符串连接 D)字符串反向 【1.64】在下列结论中,只有一个是错误的,它是。 A)C语言允许函数的递归调用 B)C语言中的continue语句,可以通过改变程序的结构而省略 C)有些递归程序是不能用非递归算法实现的D)C语言中不允许在函数中再定义函数 【1.65】已知:int a, *y=&a;则下列函数调用中错误的是。 A)scanf(“%d”, &a); B)scanf(“%d”, y); C)printf(“%d”, a); D)printf(“%d”, y); 【1.66】说明语句“int(*p)();”的含义是。 A)p是一个指向一维数组的指针变量 B)p是指针变量,指向一个整型数据 C)p是一个指向函数的指针,该函数的返回值是一个整型 D)以上都不对 【1.67】设有说明int(*p)[4];其中的标识符p是。 A)4个指向整型变量的指针变量 B)指向4个整型变量的函数指针 C)一个指向具有4个整型元素的一维数组的指针 D)具有4个指向整型变量的指针元素的一维指针数组 【1.68】已知:char s[10], *p=s,则在下列语句中,错误的语句是。 A)p=s+5; B)s=p+s; C)s[2]=p[4]; D)*p=s[0]; 【1.69】已知:char s[100];int i;则引用数组元素的错误的形式是。 A)s[i+10] B)*(s+i)C)*(i+s)D)*((s++)+i) 【1.70】已知:char s[6], *ps=s;则正确的赋值语句是。 A)s=“12345”; B)*s=“12345”; C)ps=“12345”; D)*ps=“12345”; 【1.71】已知:char a[3][10]={“BeiJing”,“ShangHai”,“TianJin”}, *pa=a;不能正确显示字符串“ShangHai”的语句是。 A)printf(“%s”,a+1); B)printf(“%s”,*(a+1)); C)printf(“%s”,*a+1); D)printf(“%s”,&a[1][0]); 【1.72】已知:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int(*ptr)[3]=a,*p=a[0]; 则以下能够正确表示数组元素a[1][2]的表达式是。 A)*(*(a+1)+2)B)*(*(p+5))C)(*ptr+1)+2 D)*((ptr+1)[2]) 【1.73】已知:int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a;则值为3的表达式是。 A)p+=2,*(p++)B)p+=2,*++p C)p+=2,*p++ D)p+=2,++*p 【1.74】已知:int a[]={1,2,3,4}, y, *p=a;则执行语句y =(*++p)--;之后, 数组a各元素的值变为______。 A)0,1,3,4 B)1,1,3,4 C)1,2,2,4 D)1,2,3,3 变量y的值是____。 A)1 B)2 C)3 D)4 【1.75】已知:int a[ ]={1,3,5,7}, y *p= a;为使变量y的值为3,下列语句正确的是____。 A)y=++*p++; B)y=++(*p++); C)y=(++*p)++; D)y=(*++p)++; 【1.76】已知:int x[ ]={ 1,3,5,7,9,11 },*ptr=x;则能够正确引用数组元素的语句是。 A)x B)*(ptr--)C)x[6] D)*(--ptr) 【1.77】函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能正确执行此功能的函数是。 A)funa(int *x, int *y)B)funb(int x, int y){ int *p; { int t; p=x;*x=*y;*y=*p; t=x;x=y;y=t; } } C)func(int *x, int *y)D)func(int *x, int *y) { *x=*y;*y=*x; { *x=*x+*y;*y=*x-*y;*x=*x-*y; } } 【1.78】有定义如下: struct sk { int a; float b; }data ,*p; 如果 p=&data;则对于结构变量data的成员a的正确引用是____。 A)(*).data.a B)(*p).a C)p->data.a D)p.data.a 【1.79】已知: struct st { int n; struct st *next; }; static struct st a[3]={1,&a[1],3,&a[2],5,&a[0]},*p; 如果下述语句的显示是2,则对p的赋值是____。 printf(“%d”,++(p->next->n)); A)p=&a[0]; B)p=&a[1]; C)p=&a[2]; D)p=&a[3]; 【1.80】已知: struct person { char name[10]; int age; }class[10]={“LiMing”,29,“ZhangHong”,21,“WangFang”,22}; 下述表达式中,值为72的一个是____。 A)class[0]->age + class[1]->age+ class[2]->age B)class[1].name[5] C)person[1].name[5] D)clase->name[5] 【1.81】已知: struct { int i; char c; float a; }test; 则sizeof(test)的值是。 A)4 B)5 C)6 D)7 【1.82】已知: union { int i; char c; float a; }test; 则sizeof(test)的值是。 A)4 B)5 C)6 D)7 【1.83】已知: union u_type { int i; char ch; float a; }temp; 现在执行“temp.i=266;printf(”%d“,temp.ch)”的结果是。 A)266 B)256 C)10 D)1 【1.84】若有以下程序段: struct dent { int n; int *m; }; int a=1,b=2,c=3; struct dent s[3] = { {101,&a},{102,&b},{103,&c} }; struct dent *p=s; 则以下表达式中值为2的是。 A)(p++)->m B)*(p++)->m C)(*p).m D)*(++p)->m 【1.85】若有以下说明语句,则对结构变量pup中sex域的正确引用是。 struct pupil { char name[20]; int sex; }pup,*p; p=&pup; A)p.pup.sex B)p->pup.sex C)(*p).pup.sex D)(*p).sex 【1.86】以下对结构变量stul中成员age的非法引用是。 struct student { int age; int num; }stu1,*p; p=&stu1; A)stu1.age B)student.age C)p->age D)(*p).age 【1.87】若有以下定义和语句: union data { int i; char c; float f; }a; int n; 则以下语句正确的是______。A)a=5; B)a={2,’a’,1.2}; C)printf(“%dn”,a); D)n=a; 【1.88】已知: struct sk { int a; int age; }date,*p; 如果要使指针p指向data中的成员a,正确的赋值语句是____。 A)p =(struct sk *)&data.a; B)p =(struct sk *)data.a; C)p = &data.a; D)*p = data.a; 【1.89】已知 enum week {sun,mon,tue,wed,thu,fri,sat}day;则正确的赋值语句是____。 A)sun=0; C)san=day; D)sun=mon; D)day=sun; 【1.90】已知 enum color {red,yellow=2,blue,white,black}ren;执行下述语句的输出结果是____。 printf(“%d”,ren=white); A)0 B)1 C)3 D)4 【1.91】已知 enum name{zhao=1,qian,sun,li}man;执行下述程序段后的输出是____。 man=0; switch(man) { case 0: printf(“Peoplen”); case 1: printf(“Mann”); case 2: printf(“Womann”); default: printf(“Errorn”); } A)People B)Man C)Woman D)Error 【1.92】下述关于枚举类型名的定义中,正确的是____。 A)enem a={ one,two,three }; B)enem a { one=9,two=-1,three }; C)enem a={“one”,“two”,“three”}; D)enem a {“one”,“two”,“three”}; 【1.93】C语言中标准输入文件stdin是指。 A)键盘 B)显示器 C)鼠标 D)硬盘 【1.94】要打开一个已存在的非空文件“file”用于修改,选择正确的语句____。 A)fp=fopen(“file”, “r”); B)fp=fopen(“file”, “a+”); C)fp=fopen(“file”, “w”); D)fp=fopen(’file“, ”r+“); 【1.95】当顺利执行了文件关闭操作时,fclose函数的返回值是。 A)-1 B)TRUE C)0 D)1 【1.96】fscanf函数的正确调用形式是。 A)fscanf(文件指针, 格式字符串, 输出列表); B)fscanf(格式字符串, 输出列表, 文件指针); C)fscanf(格式字符串, 文件指针, 输出列表); D)fscanf(文件指针, 格式字符串, 输入列表); 【1.97】使用fgetc函数,则打开文件的方式必须是。 A)只写 B)追加 C)读或读/写 D)参考答案B和C都正确 【1.98】已知宏定义 #define N 3 #define Y(n)((N+1)*n) 执行语句z=2*(N+Y(5+1));后,变量z的值是____。 A)42 B)48 C)52 D)出错 【1.99】已知宏定义 #define SQ(x)x*x,执行语句printf(”%d“,10/SQ(3));后的输出结果是____。A)1 B)3 C)9 D)10 【1.100】已知宏定义如下: #define PR printf #define NL ”n“ #define D ”%d“ #define D1 DNL 若程序中的语句是 PR(D1,a);经预处理后展开为____。 A)printf(%dn,a); B)printf(”%dn“,a); C)printf(”%d“"n”,a); D)原语句错误 【参考答案】 【1.1】答案: A 注释:int是C语言的关键字 【1.2】答案: B 【1.3】答案:A 【1.4】答案:B 注释:include是预处理命令;scanf是函数名;type不是C语言的关键字。【1.5】答案:D 【1.6】答案:D 【1.7】答案:A 【1.8】答案:A 注释:int型表示整数的范围是-32768~32767。【1.9】答案:D 注释:整型常量-1在计算机中表示为补码1111 1111 1111 1111,用十六进制显示这个数时,最左边的1不会被解释为符号位,而是与右边其它位共同转换为十六进制数。【1.10】答案:B 注释:长整型数32768在计算机内的表示是1000 0000 0000 0000,以一般整型进行输出时,此数恰是-32768的补码。【1.11】答案:C 注释:长整型数65539在计算机内的表示是0001 0000 0000 0000 0011,以一般整型进行输出时,仅将右侧16位二进制数转换为十进制数。【1.12】答案:A 注释:C语言中,int型的负数是采用补码表示的。【1.13】答案:D 【1.14】答案:C 注释:变量c是字符型,可用字符常量为它赋值。字符常量必须用单引号括起来,所以B是错误的;在单引号或双引号内的反斜线''用于表示转义字符,A选项在无引号时使用反斜线是错误的;C选项单引号内出现反斜线表示它与后面的数字组成一个转义字符;单引号只允许括起一个字符,D选项在单引号内出现4个字符,是错误的。【1.15】答案:C 【1.16】答案:D 注释:空字符和空格符是不同的两个字符,空格符的ASCII码值是32,空字符的ASCII值是0。【1.17】答案:A 【1.18】答案:B 【1.19】答案:A 【1.20】答案:C 【1.21】答案:B 注释:单纯从C语言语法来说,选项B、C都是正确的,但是选项C中第一个运算的两个对象都是整型常数,其结果也是整型数0,最后的运算结果也就是0了。 【1.22】答案:C 【1.23】答案:A 注释:将条件表达式增加一个括号,此式变为a。 【1.27】答案:D C>=48中的48是字符对应的ASCII码,数字的ASCII码从48到57,大写字母为65到90,小写字母为97到122,在以上范围内表示是数字或字母,对它取非表示既不是数字也不是字母,所以选D。 【1.28】答案:B 注释:数组元素在内存中按行排列,此数组的前3个元素的值分别是3、2、1,表达式中虽然数组下标的写法似乎每行有3个元素,和定义时的3行2列不一致,但是C语言引用数组元素时是根据数组的首地址和给出的下标进行运算决定元素的地址。题中表达式引用了数组前3个元素。【1.29】答案: A 【1.30】答案:D 整数12最低8位二进位是00001100,整数012是八进制数,它的最低8位二进位是00001010.这两个二进位位串信息按位或运算,得到结果是00001110,对应十进制数14,八进制数是016.按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。 按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现。 求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。 左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。其值相当于乘2。 右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。其值相当于除2。 【1.31】答案:B 【1.32】答案:B 【1.33】答案:B 【1.34】答案:A 【1.35】答案:C 【1.36】答案:C 【1.37】答案:C 【1.38】答案:D 【1.39】答案:D 【1.40】答案:C sizeof是求长度的函数,其结果类型就是无符号整形表达式。sizeof(double)是指求double类型数据的数据长度 【1.41】答案:D 注释:scanf函数返回值是输入数据的个数,printf函数的返回值是输出的字符个数。 【1.42】答案:D 【1.43】答案:C 注释:在C语言中,经常用一个变量来作为逻辑表达式,其含义就是:当变量的值不为0时关系成立。【1.44】答案:D 注释:break语句仅可跳出switch语句,不会跳出while循环,这是一个死循环。【1.45】答案:A 【1.46】答案:C 【1.47】答案:C 【1.48】答案:D 注释:当除数y为0时,程序发生溢出错误。【1.49】答案:C 【1.50】答案:A 【1.51】答案:C 【1.52】答案:C 注释:答案C的赋值号左侧是数组s的首地址,是一个常量,赋值号右侧是一个字符串常量,不可能将一个字符串常量赋给一个地址常量。【1.53】答案:D 注释:D选项缺少字符串结束标志。【1.54】答案:C 注释:此处函数形参是一个指针变量,接受实参的地址,而不是一个数组。【1.55】答案:A 【1.56】答案:D 注释:这里首先要明确一些基本概念。在C语言中,程序与文件是不同的概念,一个程序可以由一个文件组成,也可以由多个文件组成;一个文件中又可以包含多个函数;函数是构成C程序的基本单位。变量的作用域因变量的存储类型不同而不同。auto和register类型的变量的作用域是说明变量的当前函数;外部变量的作用域是整个程序,即外部变量的作用域可以跨越多个文件;内部静态变量(定义在一个函数内部的static型的变量)的作用域是当前函数,外部静态变量(定义在函数外面的static型的变量)的作用域是当前文件,即可以跨越同一文件中的不同函数。【1.57】答案:A 【1.58】答案:A 注释:它和参数a一样,数据类型说明被省略,按照C语言的规定,在这种情况下,表示它们是int型。【1.59】答案:C 注释:函数swapa是值传递,函数的执行结果不能返回;函数swapb中变量temp不是指针变量,所以它不能接受地址量,用指针变量x为它赋值是不对的;函数swap中虽然指针变量交换了地址,即它们的指向的目标变量进行了交换,但是目标变量并没有行值的交换。【1.60】答案:B 【1.61】答案:D 【1.62】答案:D 注释:主调函数中b=0,在执行fun1函数里的除法时发生溢出错误。【1.63】答案:B 【1.64】答案:C 【1.65】答案:D 注释:在答案D中,正确的函数调用应当是:printf(“%d”, *y)。【1.66】答案:C 注释:要注意与说明语句“int(*p)[ ];”的区别。说明语句“int(*p)[ ];”说明的是一个指向数组的指针。【1.67】答案:C 注释:题干中由于*和p被小括号括起,所以p应被解释为一个指针,而后的下标运算符[]说明所指向的对象是一个有4个int型元素的一维数组;如果是int(*p)(),则是指向函数的指针。对于int *p[4],则根据运算符的优先级,先考虑p和[]运算符的关系,所以它就是一个指针数组了。【1.68】答案:B 注释:选项B有两处错误,一是数组名是常量,不能出现的赋值好的左侧,二是指针变量只能和整数做加,不能和作为地址常量的数组名相加。【1.69】答案:D 注释:s作为数组名是地址常量,而s++是s=s+1,C语言不允许对常量进行赋值。 【1.70】答案:C 【1.71】答案:C 注释:a是二维数组名,a+1中的1不是1个字节,而是数组的“一行”,即10个字节,所以a+1是第二个字符串的首地址,A选项正确。在C编译系统中对二维数组名可这样理解(注意,这里仅是理解):a指向一个一维数组,故(a+1)是指向a[1]的,*(a+1)就是取a[1]的值,它保存第二个字符串“ShangHai”的首地址,所以选项B也正确。*a是第一个字符串的首地址,加1是第一个字符串中第二个字符的地址,选项C的输出是“beiJing”。选项D中的&a[1][0]是对第二个字符串的第一个字符做取地址运算,得到该地址就是字符串“ShangHai”的首地址。注意,对于二维数组来说,做一次*或[]运算的结果仍是地址量,做两次才是取数值。 【1.72】答案:A 注释:p是一个一级指针,选项B中对它进行了两次*运算是错误的。ptr是一个指向一维数组的指针,它所指向的数组有三个元素,对于这样一个指针,对它进行两次**运算才能取出地址单元中所存的数据,C选项中*ptr表示数组第一行的首地址,该地址是一维数组的地址,+3表示加上三个它所指向的数据类型的长度,所以(*ptr+1)+2是数组中数值4的地址。根据以上分析,选项D对ptr进行了两次地址操作(*和[]),所以结果应是数据,但是它加1后指向数组第二行,根据后面[]中2它的地址增加两个一维数组的长度,就指向数组的最后一行,再做*运算就是数10,即a[3][0]。【1.73】答案:A 【1.74】答案:B B 【1.75】答案:D 【1.76】答案:B 【1.77】答案:D 注释:答案D是另一种交换两个变量值的算法。【1.78】答案:B 【1.79】答案:C 注释:使用C对p进行赋值,则p->next是a[0]的地址,引用其成员n再做前增1运算,结果就是2。【1.80】答案:B 【1.81】答案:D 【1.82】答案:A 【1.83】答案:C 注释:联合变量temp的成员是占用同一存储单元,它的长度是4个字节。266的二进制表示是100001010,存放在存储单元的低端两个字节,如下图: 高字节 0 0 0 0 0 0 0 1 低字节 0 0 0 0 1 0 1 0 引用temp.ch进行输出,只取最低的第一个字节。【1.84】答案:D 注释:由于结构指针指向了结构数组的0号元素,所以表达式(p++)->m的含义是先取出m(变量a的地址),然后指针p加1。表达式*(p++)->m的含义是先取出m的内容(变量a的值),然后指针p再加1。表达式(*p).m的含义是取出m(变量a的地址)。表达式*(++p)->m的含义是先将指针p加1,然后再取m的内容(变量b的值)。【1.85】答案:D 【1.86】答案:B 【1.87】答案:C 【1.88】答案:A 【1.89】答案:D 【1.90】答案:D 【1.91】答案:A 【1.92】答案:B 【1.93】答案:A 【1.94】答案:D 注释:函数fopen中的第二参数是打开模式,“r”模式是只读方式,不能写文件;“a+”模式是读/追加方式,允许从文件中读出数据,但所有写入的数据均自动加在文件的末尾;“w”模式是写方式,允许按照用户的要求将数据写入文件的指定位置,但打开文件后,首先要将文件的内容清空。“r+”模式是读/写方式,不但允许读文件,而且允许按照用户的要求将数据写入文件的指定位置,且在打开文件后,不会将文件的内容清空。本题的要求是“修改”文件的内容,因此只能选择答案D。 【1.95】答案:C 【1.96】答案:D 【1.97】答案:C 【1.98】答案:B 注释:语句z=2*(N+Y(5+1)引用了两个宏定义。C语言是区分字母大小的,第二个宏定义中的N直接用3替换,用5+1替换n,则有z=2*(3+(3+1)*5+1);结果是48。注意对于带参数的宏亦是直接的文本替换,此例中n用5+1去替换,结果是(N+1)*5+1,而不是(N+1)*(5+1)。 【1.99】答案:C 注释:宏替换后的结果是printf(“%d”,10/3*3)。【1.100】答案:C 人生是道选择题 人生是道选择题,其实刚开始我们没得选择!我们无法选择出生,无法选择父母,无法选择死亡和死亡时的环境与时间,无法选择生活的周边环境,无法选择……我们无法选择的太多太多! 人生是道选择题,一落地便是决定,是父母要不要这个孩子作的抉择。一路成长便意味着一路的选择。什么时候上学,选择文理分科,报考什么大学,选择哪个专业……人生是条路,每个选择就是一个十字路口,左转,右转,还是笔直地走下去? 也许,左转遇到的是狂风,右转遇到的是暴雨,坚持笔直走下去可以看到鲜花和彩虹。但也可能事实完全不是这样。我想,人生的难处就在于此,难在未来的不可预测,难在十字路口的抉择。人生是道选择题,有些选择可以凭直觉,有些选择却需要逻辑推断;有些需要果断,有些则需长远计;有些关乎心情,有些却关乎一生。 人生是道选择题,像试卷上的选择题一样,我们在一开始总能排除一些选项,最后要选的往往是AorB?50%的可能性,却是一个恐于轻易开口的决定。 人生是道选择题,一念天堂,一念地狱。 人生是道选择题,不论多难,我们还是得勇敢地做下去! 2.C语言的基本单位是A A 函数 B 源程序 C 语句 D 程序行 3..以下说法中正确的是C A C语言程序总是从第一个定义的函数开始执行C; B C语言程序中至少有一个main函数; C C语言程序总是从main函数开始执行; D C语言程序中的main函数必须放在程序的开始部分; 4.C源程序文件的扩展名为C A.exe B.txt C.c D.obj 5..以下说法中正确的是D A C源程序可以直接运行产生结果; B C源程序经编译后才可直接运行产生结果; C C源程序经连接后才可直接运行产生结果; D C源程序经编译和连接后才可直接运行产生结果; 6.在C程序中,main()函数的位置是C A 必须作为第一个函数; B 必须作为最后一个函数; C 可以任意; D 必须放在它所调用的函数之后; 7.以下叙述不正确的是D A 一个C源程序可由一个或多个函数构成; B 一个C源程序必须包含一个main函数; C C程序的基本组成单位是函数; D 在对一个C程序进行编译的过程中,可发现注释中的拼写错误; 8.C语言中,下列正确的叙述是D A C程序中的关键字必须小写,其他标识符不区分大小写 B C程序中的所有字母都不区分大小写 C C程序中的所有字母都必须小写 D 所有的C语言关键字必须小写 9.要把高级语言编写的源程序转换为目标程序,需要使用D A 编辑程序 B 驱动程序 C 诊断程序 D 编译程序 10.以下叙述中错误的是 D A C语言源程序经编译后生成后缀为.obj的目标程序 B C语言经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件 C 用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中 D C语言的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 11.用C语言编写的代码程序B A 可立即执行 B 是一个源程序 C 经过编译即可执行 D 经过编译解释才能执行 12.以下叙述中正确的是B A C语言的源程序不必通过编译就可以直接运行 B C语言中的每条可执行语句最终都将被转换成二进制的机器指令 C C源程序经编译形成的二进制代码可以直接运行 D C语言中的函数不可以单独进行编译 13.以下叙述中正确的是A A 构成C程序的基本单位是函数 B 可以在一个函数中定义另一个函数 C main()函数必须放在其它函数之前 D 所有被调用的函数一定要在调用之前进行定义 14.能将高级语言源程序转换成目标程序的是C A 调试程序 B 解释程序 C 编译程序 D 编辑程序 15.以下叙述中正确的是C A C程序的基本组成单位是语句 B C程序中的每一行只能写一条语句 C 简单C语句必须以分号结束 D C语句必须在一行内写完 16.计算机能直接执行的程序是D A 源程序 B 目标程序 C 汇编程序 D 可执行程序 17.在语言中,以下叙述不正确的是D A 一个C源程序可由一个或多个函数组成B 一个C源程序必须包含一个main函数 C C程序的基本组成单位是函数 D 在C程序中,注释说明只能位于一条语句的后面 18.C语言规定:在一个源程序中,main函数的位置C A 必须在最开始 B 必须在系统调用的库函数的后面 C 可以任意 D 必须在最后 19.一个C程序的执行是从A A 本程序的main 函数开始,到main函数结束 B 本程序文件中的第一个函数开始,到本程序文件的最后一个函数结束 C 本程序的main 函数开始,到本程序文件的最后一个函数结束 D 本程序文件的第一个函数开始,到本程序main函数结束 20.下列叙述中错误的是A A 主函数中定义的变量在整个程序中都是有效的。 B 在其它函数中定义的变量在主函数中也不能使用。 C 形式参数也是局部变量。 D 复合语句中定义的变量只在该复合语句中有效。 21.在函数的说明和定义时若没有指出函数的类型,则A A 系统自动地认为函数的类型为整型。 B 系统自动地认为函数的类型为字符型。 C 系统自动地认为函数的类型为实型。 D 编译时会出错。 22.下面叙述中正确的是C A 对于用户自己定义的函数,在使用前必须加以说明。 B 说明函数时必须明确其参数类型和返回类型。 C 函数可以返回一个值,也可以什么值也不返回。 D 空函数不完成任何操作,所以在程序设计中没有用处。 23.下面正确的函数定义形式是A A double fun(int x,int y) B double fun(int x;int y)C double fun(int x,int y); D double fun(int x,y); 24.若调用一个函数,且此函数中没有return语句,则正确的说法是(D)该 函数: A 没有返回值 B 返回若干个系统默认值; C 能返回一个用户所希望的函数值; D 返回一个不确定的值 25.下面说法中不正确的是(B)在C语言中 A 实参可以是常量、变量或表达式; B 形参可以是常量、变量或表达式; C 函数的参数是函数间传递数据的一种手段; D 实参个数应与对应的形参个数相等,类型匹配; 26.C语言允许函数返回值类型缺省定义,此时该函数隐含的返回值类型是B A float型 B int 型 C long 型 D double型 27.C语言规定,函数返回值的类型是由D A return语句中的表达式类型所决定; B 调用该函数时的主调函数类型所决定; C 调用该函数时系统临时决定; D 在定义该函数时所指定的函数类型所决定; 28下面函数调用语句含有实参的个数为(B) func((exp1,exp2),(exp3,exp4,exp5));A 1 B 2 C 5 D 4 29.以下错误的描述是(D)函数的调用可以 A 出现在执行语句中; B 出现在一个表达式中; C 为一个函数的实参; D 作为一个函数的形参; 30.下正确的说法是(A)。如果在一个函数中的复合语句中定义了一个变量,则该变量 A 只在该复合语句中有效 B 在该函数中有效 C 本程序中有效 D 为非法变量 31.以下不正确的说法是D A 在不同函数中可以使用相同的名字的变量; B 形式参数是局部变量; C 在函数内定义的变量只在本函数范围内有效; D 在函数内的复合语句中定义的变量在本函数范围内有效; 32.如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见 的,这个变量的存储类型应该被说明为___ A _。 A 静态变量 B 动态变量 C 外部变量 D 内部变量 33.在一个C源程序文件中,•若要定义一个只允许在该源文件中所有函数使用的 变量,则该变量需要使用的存储类别是。D A extern B register C auto D static 34.在C语言中,函数的数据类型是指A A 函数返回值的数据类型 B 函数形参的数据类型 C 调用该函数时的实参的数据类型 D 任意指定的数据类型 35.已知如下定义的函数: fun1(int a){ printf(“n%d”,a); } 则该函数的数据类型是_A___。 A 与参数a的类型相同 B void型 C 没有返回值 D 无法确定 36.有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是A A 3 B 4 C 5 D 有语法错 37.以下所列的各函数首部中,正确的是C 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)38.以下正确的说法是B A 用户若需调用标准库函数,调用前必须重新定义; B 用户可以重新定义标准库函数,若如此,该函数将失去原有含义; C 系统根本不允许用户重新定义标准库函数; D 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调; 39.函数用 return 语句返回计算 20!的结果,此函数的类型应说明为_D_____。 A int B long C unsigned long D 其它三个答案都不对 40.若有以下程序 #include “stdio.h” void f(int n);main(){ void f(int n); f(5);} void f(int n){ printf(“%dn”,n);} 则以下叙述中不正确的是C A 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f B 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f C 对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明 D 函数f无返回值,所以可用void将其类型定义为无值型 41.在C语言中,形参的缺省存储类是A A auto B register C static D extern 42.以下叙述中错误的是 D A C程序必须由一个或一个以上的函数组成 B 函数调用可以作为一个独立的语句存在 C 若函数有返回值,必须通过return语句返回 D 函数形参的值也可以传回对应的实参 43.在C语言中关于函数的正确叙述是B A 函数的定义和调用均可以嵌套 B 函数的定义不可以嵌套,但函数的调用可以嵌套 C 函数的定义和调用均不可以嵌套 D 函数的定义可以嵌套,但函数的调用不可以嵌套 44.有以下程序 int f1(int x,int y){return x>y?x:y;} int f2(int x,int y){return x>y?y:x;} main(){ int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf(“%d,%d%d ”,e,f,g);} 程序运行后的输出结果是(A)。 A 4,3,7 B 3,4,7 C 5,2,7 D 2,5,7 45.以下关于函数的叙述中正确的是B A 每个函数都可以被其它函数调用(包括main函数) B 每个函数都可以被单独编译 C 每个函数都可以单独运行 D 在一个函数内部可以定义另一个函数 46.设函数fun的定义形式为 void fun(char ch, float x){ „ } 则以下对函数fun的调用语句中,正确的是(D)。 A fun(“abc”,3.0);B t=fun(''D'',16.5);C fun(''65'',2.8); D fun(32,32); 47.若程序中定义了以下函数 double myadd(double a,double B){ return(a+B)} 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是(A)。 A double myadd(double a,B) B double myadd(double,double);C double myadd(double b,double A) D double myadd(double x,double y); 48.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是D A 函数调用可以作为独立的语句存在 B 函数调用可以作为一个函数的实参 C 函数调用可以出现在表达式中 D 函数调用可以作为一个函数的形参 49.有以下函数定义: void fun(int n, double x){ „„ } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是(C)。 A fun(int y,double m); B k=fun(10,12.5);C fun(x,n); D void fun(n,x); 50.有以下函数定义: void fun(int n, double x){ „„ } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是(C)。 A fun(int y,double m);B k=fun(10,12.5);C fun(x,n); D void fun(n,x); 51.在一个C程序中B A main函数必须出现在所有函数之前 B main函数可以在任何地方出现 C main函数必须出现在所有函数之后 D main函数必须出现在固定位置 52.有以下程序 int fl(int x,int y) { return x>y?x:y;} int f2(int x,int y) { return x>y?y:x;} main() { int a=4,b=3,c=5,d,e,f; d=f1(a,b);d=f1(d,c);e=f2(a,b);e=f2(e,c); f=a+b+c-d-e;printf(“%d,%d,%dn”,d,f,e);} 执行后输出结果是(C)。 A 3,4,5 B 5,3,4 C 5,4,3 D 3,5,4 53.以下叙述中正确的是B A 全局变量的作用域一定比局部变量的作用域范围大 B 静态(static)类别变量的生存期贯穿于整个程序的运行期间 C 函数的形参都属于全局变量 D 未在定义语句中赋初值的auto变量和static变量的初值都是随机值 54.C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是B A void B int C float D double 55.有以下程序 float fun(int x,int y){ return(x+y);} main() { int a=2,b=5,c=8;printf(“%3.0fn”,fun((int)fun(a+c,b),a-c));} 程序运行后的输出结果是(B)。 A 编译出错 B 9 C 21 D 9.0 56.以下函数值的类型是(A)。 fun(float x){ float y;y= 3*x-4;return y;} A int B 不确定 C void D float 57.下列叙述中正确的是D A C语言编译时不检查语法 B C语言的子程序有过程和函数两种 C C语言的函数可以嵌套定义 D C语言所有函数都是外部函数 58.以下程序的输出结果是(C)。 fun(int x, int y, int z){ z=x*x+y*y;} main(){ int a=31;fun(5,2,a); printf(“%d”,a);} A 0 B 29 C 31 D 无定值 59.有如下程序 int runc(int a,int b){ return(a+b);} main() { int x=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%dn”,r);} 该程序的输出的结果是(D)。 A 12 B 13 C 14 D 15 60.以下叙述中不正确的是D A 在不同的函数中可以使用相同名字的变量 B 函数中的形式参数是局部变量 C 在一个函数内定义的变量只在本函数范围内有效 D 在一个函数内的复合语句中定义的变量在本函数范围内有效 61.有以下程序 viod fun(int a,int b,int c){ a=456;b=567;c=678;} main(){ int x=10,y=20,z=30;fun(x,y,z);printf(“%d,%d,%dn”,z,y,x);} 输出结果是(A)。 A 30,20,10 B 10,20,30 C 456,567,678 D 678,567,456 62.以下叙述中不正确的是C a)A 在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。 B 在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。 C 在C中,外部变量的隐含类别是自动存储类别。 D 在C中,函数形参可以说明为register变量。 63.若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调 用语句中实参的个数是A A 3 B 4 C 5 D 6 64.C语言中,函数的隐含存储类别是C A auto B static C extern D 无存储类别 65.以下说法中正确的是C A C语言程序总是从第一个的函数开始执行 B 在C语言程序中,要调用的函数必须在main()函数中定义 C C语言程序总是从main()函数开始执行 D C语言程序中的main()函数必须放在程序的开始部分 66.下面说法中不正确的是D A 全局变量一定是外部变量 B 局部变量一定是内部变量。 C 全局变量作为函数间传递数据的手段时,与文件的作用类似,都是通过共享某种资源来传递数据。 D 全局变量与局部变量不可以重名 67.C 语言允许函数返回值类型缺省定义,此时该函数返回值默认的类型是B a)A float 型 B int 型 C long 型 D double 型 68.关于流程控制语句,下列说法正确的一项是C A 一个自定义函数中的return语句只能出现一次; B break语句只适用于几种循环语句格式,表示终止当前层的循环; C 在循环体中遇到continue,表示结束本次循环,直接进行下次循环条件的判断; D 在自定义函数的执行过程中,return语句可能被多次执行。 69.若有定义语句:char s[10]=“1234567 ”;,则strlen(s)的值是A A 7 B 8 C 9 D 10 70.若有定义:int x,*pb;则以下正确的赋值表达式是(C) A *pb=&x;B pb=x;C pb=&x;D *pb=*x;71.执行以下程序后,a的值为 main() { int a,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m; b=(-*p1)/(*p2)+7;printf(“a=%dn”,a);printf(“b=%d”,b);} A -1 B 1 C 0 D 4 72.下面程序中调用scanf 函数给变量a输入数值的方法是错误的,其错误原因 是(B)main(){ int *p,q,a,b;p=&a;scanf(“%d”,*p);„„ } A *p表示的是指针变量p的地址; B *p表示的是变量a的值,而不是变量a的地址 C *p表示的是指针变量p的值 D *p只能用来说明p是一个指针变量 73.若有int k=2,*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确 执行的语句是B A k=*ptr1+*ptr2;B ptr2=k; C ptr1=ptr2; D k=*ptr1*(*ptr2); 74.若有语句int *point a=4;和point &a;下面均代表地址的一组选项是C A a,point,*&a B &*a,&a,*point C *&point,*point,&a D &a,&*point,point 75.若有说明:int *p,m=5,n;下面正确的程序段是D a)A p=&n;scanf(“%d”,&p); B p=&n;scanf(“%d”,*p);C scanf(“%d”,&n);*p=n; D p=&n;*p=m 76.下面能正确进行字符串赋值操作的是C A char s[5]={“ABCDE”}; B char s[5]={‘A’,’B’,’C’,’D’,’E’};C char *s s=“ABCDE”;D char *s;scanf(“%s”,s);77.设有下面的程序段: char s[]=”china”;char *p;p=s;则下列叙述正确的是C A s和p完全相同 B 数组s中的内容和指针变量p中的内容相等 C *P与s[0]相等 D s数组长度和p所指向的字符串长度相等 78.下面程序段的运行结果是C char *format=”%s,a=%d,b=%dn”;int a=1,b=10;a+=b;printf(format,”a+=b”,a,b); A for,”a+=b”,ab B format,”a+=b” C a+=b,a=11,b=10 D 以上结果都不对 79.若有语句:char s1[]=”string”,s2[8],*s3,*s4=”string2”;则对库 函数strcpy()的正确调用是D A strcpy(s1,”string2”);B strcpy(s4,”string1”);C strcpy(s3,”string1”); D strcpy(s2,s4);80.下面说明不正确的是D A char a[10]=”china”; B char a[10],*p=a;p=”china”;C char *a;a=”china”; D char a[10],*p;p=a=”china”; 81.语句while(!e);中的条件!e等价于A A e==0 B e!=0 C e!=1 D ~e 82.以下程序的输出结果是(C) main() { int num=0;while(num<=2){ num++;printf(“%d,”,num);} } A 1,B 1,2,C 1,2,3,D 1,2,3,4, 83.以下程序段是(C) x=-1;do { x=x*x;} while(!x); A 死循环 B 循环执行两次 C 循环执行一次 D 有语法错误 84.以下不正确的描述是B A break语句不能用于循环语句和switch语句外的其它语句 B 在switch语句中使用break语句或continue语句的作用相同 C 在循环语句中使用continue语句是为了结束本次循环 D 在循环语句中使用break语句是为了使流程跳出循环体 85.对于for(表达式1;;表达式3)可理解为B A for(表达式1;0;表达式3)B for(表达式1;1;表达式3) C for(表达式1;表达式1;表达式3)D for(表达式1;表达式3;表达式3)86.C语言中D A 不能使用do-whi1e语句构成的循环; B do-while语句构成的循环必须用break语句才能退出; C do-while语句构成的循环,当while语句中的表达式值为非零时结束循环; D do-while语句构成的循环,当while语句中的表达式值为零时结束循环; 87.C语言中while和do-while循环的主要区别是A A do-while的循环体至少无条件执行一次 B while的循环控制条件比do-while的循环控制条件严格 C do-while允许从外部转到循环体内; D do-while的循环体不能是复合语句; 88.若i为整型变量,则以下循环执行的次数是(B) for(i=2;i==0;)printf(“%d”,i--); A 无限次 B 0次 C 1次 D 2次 89.以下for 循环的执行次数是(C) for(x=0,y=0;(y=123)&&(x<4);x++); A 是无限循环 B 循环次数不定 C 执行4次 D 执行3次 90.下列循环语句中有语法错误的是D A while(x=y)5; B while(0); C do 2;while(x==b); D do x++ while(x==10); 91.有关语句for(;;);执行过程的描绘中,正确的是 C 92.A 不执行任何操作 B 空循环一次 C 无休止地执行循环体 D 上都不对 92.下面有关for循环的正确描述是D A for循环只能用于循环次数已经确定的情况 B for循环是先执行循环体语句,后判定表达式 C 在for循环中,不能用break语句跳出循环体 D for循环体语句中,可以包含多条语句,但要用花括号括起来 93.与语句 while(!x);等价的语句是A A while(x==0); B while(x!=0); C while(x!=1); D while(~x); 94.以下for循环是(D) for(x=0,y=0;(y!=123)&&(x<3);x++); A 无限循环 B 循环次数不定 C 执行4次 D 执行3次 95.下列关于switch语句和break语句的结论中,正确的是B A break语句是switch语句中的一部分 B 在switch语句中可以根据需要使用或不使用break语句 C 在switch语句中必须使用break语句 D switch语句是break语句的一部分 96.以下叙述中正确的B A 调用printf函数时,必须要有输出项 B 使用putchar函数时,必须在之前包含头文件stdio.h C 在C语言中,整数可以以十二进制、八进制或十六进制的形式输出 D 调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码 97.有以下程序段 int n,t=1,s=0;scanf(“%d”,&n);do{ s=s+t;t=t-2;}while(t!=n); 为使此程序段不陷入死循环,从键盘输入的数据应该是D。 A 任意正奇数 B 任意负偶数 C 任意正偶数 D 任意负奇数 98.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0) s=a; for(b=1;b<=c;b++)s=s+1; 则与上述程序段功能等价的赋值语句是B A s=a+b;B s=a+c;C s=s+c;D s=b+c;99.有如下程序 B main() { int x=23;do { printf(“%d”,x--);} while(!x);} 该程序的执行结果是 A 321 B 23 C 不输出任何内容 D 陷入死循环 100.以下循环体的执行次数是(C)。main(){ int i,j; for(i=0,j=1;i<=j+1;i+=2, j--)printf(“%d n”,i);} A 3 B 2 C 1 D 0 101.以下不是死循环的语句为(A) A for(y=1,x=1;x>=++y;x++)B for(;;x++) C while(1){x++;} D for(i=10;;i--) 102.在C语言中,假定a和b为int型变量,则执行以下语句后b的值为D a=1; b=10; do { b-=a; a++;} while(b--<0); A 9 B-2 C-1 D 8 103.在C语言中,以下的for循环()。 for(x=0,y=0;(y!=123)&&(x<4);x++);C A 是无限循环 B 循环次数不定 C 执行4次 D 执行3次 104.在TC中,与语句 “while(!x)” 等价的语句是(A)。 A while(x==0) B while(x!=0) C while(x!=1) D while(~x)105.在C语言中,设已定义k为int整型变量,则有下面while循环执行(C)次。k=10;while(k==0)k=k-1; A 10 B 无限 C 0 D 1 106.在C语言中,当do-while语句中的条件为(C)时,结束该循环。 A TURE B 1 C 0 D 非0 107.下列说法中正确的是B A 在程序中定义一个结构体类型,将为此类型分配存储空间。 B 结构体类型的成员名可与结构体以外的变量名相同。 C 结构体类型必须有名称。 D 结构体内的成员不可以是结构体变量。 108.当说明一个结构体变量时系统分配给它的内存是A A 各成员所需内存量的总和; B 结构体中第一个成员所需的内存量; C 成员中内存量最大者所需的容量; D 结构体中最后一个成员所需 的内存量; 109.当说明一个共用体变量时系统分配给它的内存是C A 各成员所需内存量的总和; B 第一个成员所需的内存量; C 成员中内存量最大者所需的容量; D 最后一个成员所需 的内存量; 110.设有以下说明语句 typedef struct { int n;char ch[8];}PER; 则下面叙述中正确的是B A PER 是结构体变量名 B PER是结构体类型名 C typedef struct 是结构体类型 D struct 是结构体类型名 111.以下选项中不能正确把cl定义成结构体变量的是B A typedef struct { int red;int green;int blue;} COLOR;COLOR cl;B struct color cl { int red;int green;int blue;}; C struct color { int red;int green;int blue;} cl; D struct { int red;int green;int blue;} cl;112.设有如下定义: struck sk { int a;float b;}data;int *p; 若要使P指向data中的a域,正确的赋值语句是(C)。A p=&a; B p=data.a; C p=&data.a; D *p=data.a;113.设有以下说明语句 struct ex { int x float y;char z } example;则下面的叙述中不正确的是B A struct结构体类型的关键字 B example是结构体类型名 C x,y,z都是结构体成员名 D struct ex是结构体类型 114.有如下定义 struct person{char name[9];int age;};strict person class[10]={“Johu”, 17, “Mary”, 18, “Adam 16,}; 根据上述定义,能输出字母M的语句是 D A prinft(“%cn”,class[3].mane); B pfintf(“%cn”,class[3].name[1]); C prinft(“%cn”,class[2].name[1]); D printf(“%^cn”,class[2].name[0]); 115.若程序中有下面的说明和定义 struct abc {int x;char y;} struct abc s1,s2;则会发生的情况A A 编译出错 B 程序将顺利编译`连接`执行 C 能顺利通过编译`连接`但不能执行 D 能顺利通过编译`但连接出错 116.设有定义: struct complex { int real,unreal;} data1={1,8},data2;则以下赋值语句中错误的是B A data2=data1;B data2=(2,6); C data2.real=data1.real;D data2.real=data1.unreal; 117.C语言中,逻辑“真”等价于C A 大于零的数 B 大于零的整数 C 非零的数 D 非零的整数 118.C语言的 switch 语句中,case 后B A 只能为常量 B 只能为常量或常量表达式 C 可为常量及表达式或有确定值的变量及表达式 D 可为任何量或表达式 119.main() Paul”, 19 “ { int a,b,d=241;a=d/100%9;b=(-1)&&(-1); printf(“%d,%d”,a,b);}B A 6,1 B 2,1 C 6,0 D 2,0 120.若有int x=10,y=20,z=30;以下语句执行后x,y,z的值是(B) if(x>y) z=x;x=y;y=z; A x=10,y=20,z=30 B x=20,y=30,z=30 C x=20,y=30,z=10 D x=20,y=30,z=20 121.以下程序段的输出结果是B int a=10,b=50,c=30; if(a>b)a=b; b=c; c=a; printf(“a=%d b=%d c=%dn”,a,b,c); A a=10 b=50 c=10 B a=10 b=30 c=10 C a=50 b=30 c=10 D a=50 b=30 c=50 122.已知int i=10;表达式“20-0<=i<=9”的值B A 0 B 1 C 19 D 20 123.设有int i, j, k;则表达式i=1,j=2,k=3, i&&j&&k 的值为A A 1 B 2 C 3 D 0 124.逻辑运算符两侧运算对象的数据类型D A 只能是0或1 B 只能是0或非0正数 C 只能是整型或字符型数据 D 可以是任何类型的数据 125.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假” 的表达式是C A(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B(x>=1)||(x<=10)||(x>=200)||(x<=210) C(x>=1)&&(x<=10)||(x>=200)&&(x<=210)D(x>=1)||(x<=10)&&(x>=200)||(x<=210) 126.已知x=43,ch=’a’,y=0;则表达式(x>=y&&ch<’b’&&!y)的值B A 0 B 1 C 语法错误 D 假 127.执行下列语句后a的值为B int a=5,b=6,w=1,x=2,y=3,z=4;(a=w>x)&&(b=y>z);A 5 B 0 C 2 D 1 128.若w=1,x=2,y=3,z=4,则表达式w 129.设有int a=2,b;则执行b=a&&1;语句后,b的结果是B A 0 B 1 C 2 D 3 130.当a=5,b=2时,表达式a= =b的值为C A 2 B 1 C 0 D 5 131.下列表达式中能表示a在0到100之间的B A a>0&a<100 B!(a<0||a>100)C 0 D!(a>0&&a<100) 132.已知:int x,a,b;下列选项中错误的if语句是B A if(a=b)x++;B if(a<=b)x++;C if(a-b)x++;D if(x)x++; 133.当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三 个选项含义不同,这个选项是(D)。 A k%2 B k%2==1 C(k%2)!=0 D!k%2==1 134.设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是A A(!a==1)&&(!b==0)B a C a && b D a||(b+b)&&(c-a) 135.以下4个选项中,不能看作一条语句的是D A {;} B a=0,b=0,c=0; C if(a>0); D if(b==0)m=1;n=2;136.以下非法的赋值语句是C A n=(i=2,++i); B j++; C ++(i+1); D x=j>0; 137.已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是D A 6 B 0 C 2 D 1 138.有如下程序 main0 { int a=2,b=-1,c=2;if(a 该程序的输出结果是C A 0 B 1 C 2 D 3 139.能表示x为偶数的表达式是A A x%2==0 B x%2==1 C x%2 D x%2!=0 140.下面的程序段中共出现了几处语法错误?C int a,b; scanf(“%d”,a);b=2a; if(b>0)printf(“%b”,b); A 1 B 2 C 3 D 4 141.要打开一个已存在的非空文件“file”用于修改,选择正确的语句_D_ A fp=fopen(“file”, “r”); B fp=fopen(“file”, “a+”); C fp=fopen(“file”, “w”); D fp=fopen(“file”, “r+”); 142.fscanf函数的正确调用形式是。D A fscanf(文件指针, 格式字符串, 输出列表); B fscanf(格式字符串, 输出列表, 文件指针); C fscanf(格式字符串, 文件指针, 输出列表); D fscanf(文件指针, 格式字符串, 输入列表); 143.若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是B A fopen(“A:userabc.txt”,“r”)B fopen(“A:userabc.txt”,“r+”)C fopen(“A:userabc.txt”,“rb”)D fopen(“A:userabc.txt”,“w” 144.以下叙述中错误的C A C语言中对二进制文件的访问速度比文本文件快 B C语言中,随机文件以二进制代码形式存储数据 C 语句 FILE fp;定义了一个名为fp的文件指针 D C语言中的文本文件以ASCII码形式存储数据 145.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数 feof(fp)的值为A A 0 B 1 C-1 D 一个非0值 146.下列关于C语言数据文件的叙述中正确的是D A 文件由ASCII码字符序列组成,C语言只能读写文本文件 B 文件由二进制数据序列组成,C语言只能读写二进制文件 C 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 D 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 147.以下叙述中不正确的是D A C语言中的文本文件以ASCⅡ码形式存储数据 B C语言中对二进制文件的访问速度比文本文件快 C C语言中,随机读写方式不适用于文本文件 D C语言中,顺序读写方式不适用于二进制文件 148.以下叙述中错误的是D A 二进制文件打开后可以先读文件的末尾,而顺序文件不可以 B 在程序结束时,应当用fclose函数关闭已打开的文件 C 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据 D 不可以用FILE定义指向二进制文件的文件指针 149.若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是 C A EOF B 0 C 非零值 D NULL 150.在C程序中,可把整型数以二进制形式存放到文件中的函数是A A fprintf函数 B fread函数 C fwrite函数 D fputc函数 151.使用fopen()以文本方式打开或建立可读可写文件,要求:若指定的文件不存在,则新建一个,并使文件指针指向其开头,若指定的文件存在,打开它,将文件指针指向其结尾。正确的“文件使用方式”描述是B 152.A “r+” B “w+” C “a+” D “a” 153.152.有以下程序 #include 程序运行后的输出结果是C A abc B 28bc C abc28 D 因类型不一致而出错 153.在C语言中,以下哪个函数用于将字符输出到标准输出设备(A) A putchar() B open() C read() D getw()154.C语言中用于结构化程序设计的三种基本结构是A A 顺序结构、选择结构、循环结构 B if、switch、break C for、while、do-while D if、for、continue 155.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值 为 1、j的值为 2、k的值为3,以下选项中正确的输入语句是C A scanf(“%2d%2d%2d”,&i,&j,&k);B scanf(“%d %d %d”,&i,&j,&k);C scanf(“%d,%d,%d”,&i,&j,&k); D scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);156.若有以下程序: main() { int k=2,i=2,m; m=(k+=i*=k);printf(“%d,%dn”,m,i);} 执行后的输出结果是(C)。 A 8,6 B 8,3 C 6,4 D 7,4 157.若有定义:int x,y;char a,b,c;并有以下输入数据(此处< CR> 代表换行 符,/u代表空格): 1u2 AuBuC 则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C 的正确程序段是D A scanf(“x=%d y+%d”,&x,&y);a=getchar();b=getchar();c=getchar();B scanf(“%d %d”,&x,&y);a=getchar();b=getchar();c=getchar();C scanf(“%d%d%c%c%c,&x,&y,&a,&b,&c); D scanf(”%d%d%c%c%c%c%c%c:&x,&y,&a,&a,&b,&b,&c,&c);158.有以下程序 #include main(){ char a,b,c,d;scanf(“%c%c”,&a,&b);c=getchar();d=getchar();printf(“%c%c%c%c ”,a,b,c,d);} 当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:车也是一个字符)12 34 则输出结果是C A 1234 B 12 C 123 D 1234 159.以下关于数组的描述正确的是C A 数组的大小是固定的,但可以有不同的类型的数组元素; B 数组的大小是可变的,但所有数组元素的类型必须相同; C 数组的大小是固定的,但所有数组元素的类型必须相同; D 数组的大小是可变的,但可以有不同的类型的数组元素; 160.在定义int a[10];之后,对a的引用正确的是A A a[9] B a[6.3] C a(6) D a[10] 161.以下对一维数组a进行不正确初始化的是A A int a[10]=(0,0,0,0);B int a[10]={};C int a[]={0}; D int a[10]={10*2}; 162.以下对字符数组进行不正确初始化的是A A static char word[]='cool '; B static char word[]={‘c’,’o’,’o’,’l’};C static char word[]={“cool ”};D static char word[]=”cool ”; 163.在执行char str[10]=”china ”;strlen(str)的结果B A 5 B 6 C 7 D 9 164.在C语言中,引用数组元素时,其数组下标的数据类型允许是B A 整型常量 B 整型表达式或整型常量 C 实型常量 D 任何类型 的表达式 165.以下程序给数组所有的元素输入数据,空处应填入(C) main() { int a[10],i=0; while(i<10)scanf(“%d”,____________);} A &a[i] B a[i++] int a=10,b=50,c=30; if(a>b)a=b; b=c; c=a; printf(“a=%d b=%d c=%dn”,a,b,c); A a=10 b=50 c=10 B a=10 b=30 c=10 C a=50 b=30 c=10 D a=50 b=30 c=50 166.有字符数组a[80],b[80],则正确的输出语句是D A puts(a,b); B printf(“%s,%s”,a[],b[]);C putchar(a,b); D puts(a);puts(b); 167.以下能正确定义字符串的语句是 D A char str[]={' 64'}; B char str=“x43”; C char str=“; D char str[]=” “; 168.以下数组定义中正确的是 D A int x[][3]={0}; B int x[2][3]={{1,2},{3,4},{5,6}}; C nt x[][3]={{1,2,3},{4,5,6}}; D int x[2][3]={1,2,3,4,5,6}; 169.要说明一个有10个int元素的数组,应当选择语句A A int a[10] B int a[2,5] C int a[ ] D int *a[10] 170.已知: int a[10];则对a数组元素引用正确的是D A a[10] B a[3.5] C a(5)D a[10-10] 171.已有定义:char a[]=”xyz“,b[]={''x'',''y'',''z''};,以下叙述中正确的是 C A 数组a和b的长度相同 B a数组长度小于b数组长度 C a数组长度大于b数组长度 D 上述说法都不对 172.以下能正确定义一维数组的选项是B 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“; 173.假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是D A 3 B 6 C 10 D 20 174.执行下面的程序段后,变量k中的值为(A)。 int k=3, s[2];s[0]=k;k=s[1]*10; A 不定值 B 33 C 30 D 10 175.设有数组定义: char array [ ]=”China“;数组 array所占的空间为C A 4个字节 B 5个字节 C 6个字节 D 7个字节 176.下列描述中不正确的是C A 字符型数组中可以存放字符串 B 可以对字符型数组进行整体输入、输出 C 可以对整型数组进行整体输入、输出 D 不能在赋值语句中通过赋值运算符”=“对字符型数组进行整体赋值 177.给出以下定义: char x[ ]=”abcdefg“; char y[ ]={''a'',''b'',''c'',''d'',''e'',''f'',''g''};则正确的叙述为C A 数组X和数组Y等价 B 数组x和数组Y的长度相同 C 数组X的长度大于数组Y的长度 D 数组X的长度小于数组Y的长度 178.定义如下变量和数组: int i; int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是 for(i=0;i<3;i++)printf(”%d“,x[i][2-i]);C A 1 5 9 B 1 4 7 C 3 5 7 D 3 6 9 179.以下一维数组a 的正确定义是D A int a(10); B float n=10,a[n];C int n;scanf(”%d“,&n);float a[n];D #define size 10;long a[size];180.合法的数组定义是D A int a[]=”string“; B int a[5]={0,1,2,3,4,5};C vhst s=”string“; D char a[]={0,1,2,3,4,5}; 181.下列选项中,能正确定义数组的语句是D A int num[0..2008];B int num[]; C int N=2008;int num[N];D #define N 2008 int num[N]; 182.在C语言中,能实现字符串连接的函数是A A strcat()B strcmp()C strcpy() D strlen() 183.在C语言中,定义数组int a[7]={3,4,5,6,7,8,9},则a[5]的值为D A 9 B 6 C 7 D 8 184.在C语言中,定义int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},i=5,则 下列选项中不能正确引用数组元素的是A A a[2*i-12] B a[2*i-2] C a[12-i] D a[2*i] 185.在C语言中,定义 char a[]={'a','b','l','l','o'},已知字符'b'的 ASCII码为98,则 printf(”%dn“,a[0]);的值为A A 97 B a C 98 D b 186.在C语言中,有以下定义:char b[10]={''h'',''n'',''s'',''p'',''k'',''s''};,则语句 printf(”%cn“,b[1]);的结果为B A h B n C s D p 187.在C语言中,定义数组int a [12]={1,2,3,4,5,6,7,8,9,10,11,12},则a[3]的值B A 3 B 4 C 5 D 6 188.在C语言中,有以下程序main(){int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i<5){if(p[i]%2)j+=p[i];i++;}printf(”%dn“,j);}程序运行后的输出结果是A A 39 B 45 C 56 D 60 189.在C语言中,若有定义:int y=3,x[7]={1,2,3,4,5,6,7},则表达式y+=x[2]的值为A A 6 B 5 C 8 D 9 190.在C语言中,若有定义:int y=5,x[7]={1,2,3,4,5,6,7},则表达式y+=x[6]的值为D A 9 B 10 C 11 D 12 191.字符型常量在内存中存放的是A A ASCⅡ 代码 B BCD 代码 C 内部码 D 十进制码 192.下列运算符中,结合方向为自左向右的是B A ? : B ,C += D ++ 193.在C语言中运算对象必须是整型的运算符是A A % B! C / D * 194.下列关于C语言的叙述错误的是A A 大写字母和小写字母的意义相同 B 不同类型的变量可以在一个表达式中 C 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D 同一个运算符号在不同的场合可以有不同的含义 195.在C语言中,错误的int类型的常数是A A 32768 B 0 C 037 D 0xAF 196.C语句x*=y+2;还可以写成C A x=x*y+2; B x=2+y*x;C x=x*(y+2); D x=y+2*x; 197.如果有整型变量x,浮点型变量y,双精度型变量z,则表达式y*z+x+y执 行后的类型为 A A 双精度 B 浮点型 C 整型 D 逻辑型 198.设C语言中,一个int 型数据在内存中占2个字节,则unsigned int 型 数据的取值范围是C A 0—255 B 0—32767 C 0—65535 D 0--2147483647 199.以下说法不正确的D A 在C程序中,逗号运算符的优先级最低; B 在C程序中,aph和aPh是两个不同的变量; C 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变; D 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数; 200.设有float x;则x是__B__变量。 A 整型 B 实型 C 字符型 D 长型 201.若变量已正确定义并赋值,下面符合C语言语法的表达式是B A a:=b+1 B a=b=c+2 C int 18.5%3 D a=a+7=c+b 202.若有float x,y;则以下不合法的语句是B A ++x; B y=(x%2)/10;C x*=y+8;D x=y=10; 203.不合法的十六进制数是A A oxff B 0xabc C 0x11 D 0xbeef 204.现有 #define N 3;的宏定义,执行语句 i=N*3 后,i的值是C A 3 B 6 C 9 D 其它三个答案都不对 205.turbo c中int类型变量所占字节数是B A 1 B 2 C 3 D 4 206.正确的合法的定义变量的语句是B A int ab_=086; B int _ab=0xE8 C char a-b=‘1’;D float a3.b; 207.以下选项中不属于C语言的类型的是D A signed short int B unsigned long int C unsigned int D long short 208.以下叙述中错误的是 D A C程序中的#include和#define行均不是C语句 B 除逗号运算符外,赋值运算符的优先级最低 C C程序中,j++;是赋值语句 D C程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算 209.正确的字符串常量是A A “ABCD” B {ABCD} C ‘ABCD’ D ABCD 210.以下选项中属于C语言的数据类型是C A 复数型 B 逻辑型 C 双精度型 D 集合型 211.以下运算符中优先级最低的运算符是D A && B & C || D = 212.以下叙述中错误的是A A 用户所定义的标识符允许使用关键字 B 用户所定义的标识符应尽量做到“见名知意” C 用户所定义的标识符必须以字母或下划线开头 D 用户定义的标识符中,大、小写字母代表不同标识 213.设有以下定义 int a=0;double b=1.25;char c=’A’;#define d 2 则下面语句中错误的是D A a++; B b++ C c++; D d++;214.下列关于单目运算符++、--的叙述中正确的是D A 它们的运算对象可以是任何变量和常量 B 它们的运算对象可以是char型变量和int型变量,但不能是float型变量 C 它们的运算对象可以是int型变量,但不能是double型变量和float型变量 D 它们的运算对象可以是char型变量、int型变量和float型变量 215.以下选项中合法的实型常数是C A 5E2.0 B E-3 C.2E0 D 1.3E 216.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘101’为A A 字符A B 字符a C 字符e D 非法的常量 217.以下选项中合法的字符常量是B A “B” B ‘ 10’ C 68 D D 218.若变量a、i已正确定义,且i已正确赋值,合法的语句是B A a==1 B ++i; C a=a++=5; D a=int(i); 219.以下选项中合法的字符常量是B A “B” B ‘ 10’ C 68 D D 220.C语言提供的合法的数据类型关键字是B A Double B short C integer D Char 221.在C语言中,合法的长整型常数是B A 0 B 04962710 C 0.054838743 D 2.1869e10 222.表达式(int)2.5的值是A A 2 B 3 C 0 D 2.5 223.以下选项中不能作为C语言合法常量的是A A 'cd' B 0.1e+6 C ”a“ D ' 11' 224.在TC中,已知: int x=10, y=3 , z;则下列语句的输出结果是 C printf(”%dn", z=(x%y,x/y)); A 1 B 0 C 3 D 4 225.若变量a、i已正确定义,且i已正确赋值,合法的语句是(B)。 A a==1 B ++i;C a=a++=5;D a=int(i); 226.设有说明语句:char a=’72’;则变量a为A A 包含1个字符 B 包含2个字符 C 包含3个字符 D 说明不合法 ## ~~~1 下列叙述中正确的是()。程序设计就是编制程序 程序的测试必须由程序员自己去完成 程序经调试改错后还应进行再测试 程序经调试改错后不必进行再测试 ~C ~~~1 以下叙述中正确的是()。C语言的源程序不必通过编译就可以直接运行 C语言中的每条可执行语句最终都将被转换成二进制的机器指令 C源程序经编译形成的二进制代码可以直接运行 C语言中的函数不可以单独进行编译 ~B ~~~1 下面关于算法的正确描述是()。算法就是计算的方法 算法就是解决问题的步骤 一个问题的算法是唯一的 一个问题的算法只能用一种语言设计 ~B ~~~1 对计算机进行程序控制的最小单位是()。语句 字节 指令 程序 ~C ~~~1 编制一个好的程序首先要确保它的正确性和可靠性,除此以外,通常更注重源程序的()。易使用性、易维护性和效率 易使用性、易维护性和易移植性 易理解性、易测试性和易修改性 易理解性、安全性和效率 ~B ~~~1 与高级语言相比,用低级语言(如机器语言等)开发的程序,其结果是()。 运行效率低,开发效率低 运行效率低,开发效率高 运行效率高,开发效率低 运行效率高,开发效率高 ~C ~~~1 程序设计语言的语言处理程序是一种()。系统软件 应用软件 办公软件 工具软件 ~A ~~~1 ()是常见的两类程序设计语言处理程序。 高级语言程序和低级语言程序 解释程序和编译程序 编译程序和操作系统 系统程序和应用程序 ~B ~~~1 计算机只能直接运行()。高级语言源程序 汇编语言源程序 机器语言程序 任何源程序 ~C ~~~1 将高级语言的源程序转换成可在机器上独立运行的程序的过程称为()。解释 编译 连接 汇编 ~B ~~~1 著名计算机科学家Nikiklaus Wirth提出一个公式:程序=______。数据+运算符 数据结构+算法 结构+函数 运算符+运算数 ~B ~~~1 解释程序和编译程序的主要区别之一在于______。单用户与多用户的差别 对用户程序的查错能力 机器执行的效率 是否生成目标程序 ~D ~~~1 以下叙述正确的是______。C语言比其他语言高级 C语言可以不用编译就能被计算机识别执行 C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 C语言出现的最晚、具有其他语言的一切优点 ~C ~~~2 C语言中最简单的数据类型包括()。 整型、实型、逻辑型 整型、实型、字符型 整型、字符型、逻辑型 整型、实型、逻辑型、字符型 ~B ~~~2 请选出可用作C语言用户标识符的一组标识符()。void ,define ,WORD a3_b3,_123,IF FOR,——abc , Case 2a,Do,Sizeof ~B ~~~2 C语言中合法的字符常量是()' 84' 'x43' 'ab' “ ” ~B ~~~2 下列运算符中,哪一个优先级最低? ?: = >= == ~B ~~~2 以下能正确定义且赋初值的语句是()。int n1=n2=10;char c=32;float f=f+1.1;double x=12.3e2.5;~B ~~~2 设有定义:int k=1,m=2;float f=7;则以下选项中错误的表达式是()。k=k>=k-k++ k%f k>=f>=m ~C ~~~2 设有定义:int a=2,b=3,c=4;则以下选项中值为0的表达式是()。 (!a==1)&&(!b==0)!a||b||c a&&b a||(b+b)&&(c=a)~A ~~~2 Char p[]={'a','b','c'},q[]=“abc”;printf(“%d %d %dn”,sizeof(p),sizeof(q),strlen(q));以上程序段的输出结果是()。3 4 4 3 3 3 3 4 3 4 3 4 ~C ~~~2 根据程序段判断:char a1='M',a2='m'; printf(“%cn”,(a1,a2));以下叙述中正确的是()。程序输出大写字母M 程序输出小写字母m 格式说明符不足,编译出错 程序运行时产生出错信息 ~B ~~~2 设有如下定义:int a=1,b=2,c=3,d=4,m=2,n=2;则执行表达式:(m=a>b)&&(n=c>d)后,n的值为()。1 2 3 0 ~B ~~~2 有以下程序段 char c1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);当运行时输入:a<回车>后,以下叙述中正确的是()。 变量c1将被赋字符a,c2被赋回车符 程序将等待用户输入第二个字符 变量c1被赋字符a,c2中仍是原有字符2 变量c1被赋字符a,c2中将无确定值 ~A ~~~2 表达式:10!=9的值是()。true 非零值 0 1 ~D ~~~2 在c语言中,运算对象必须是整型数的运算符是()。% %和 ** ~A ~~~2 以下语句的输出结果是_____。printf(“%dn”,NULL);不确定的(因变量无定义)0-1 1 ~B ~~~2 能正确表示a和b同时为正或同时为负的逻辑表达式是________。 (a>=0||b>=0)&&(a<0||b<0)(a>=0&&b>=0)&&(a<0&&b<0)(a+b>0)&&(a+b<=0)a*b>0 ~D ~~~2 表示关系x>y≥z,则正确的c语言表达式为________。x>y>=z (x>y)&(y>=z)(y 用户所定义的标识符应尽量作到“见名知意” 用户所定义的标识符必须以字母或下划线开头 用户所定义的标识符中,大小写 字母代表不同标识 ~A ~~~2 若int a=3,则执行完表达式a+=a-=a*a后,a的值是()。-3-12 6 ~C ~~~2 设x、y、z和k都是int型变量,则 执 行 表 达 式 : x=(y=4,z=16,k=32)后,x的值为()。4 16 32 52 ~C ~~~2 设有如下的变量定义:int i=8, k, a, b;unsigned long w=5;double x=1.42,y=5.2;则以下符合C语言语法的表达式是()。 a+=a-=(b=4)*(a=3)x%(-3);a=a*3=2 y=float(i)~A ~~~2 假定有以下变量定义:int k=7,x=12;则能使值为3 的表达式是()。x%=(k%=5)x%=(k-k%5)x%=k-k%5(x%=k)-(k%=5)~D ~~~2 以下叙述中正确的是()。输入项可以是一个实型常量,如:scanf(“%f”,3.5); 只有格式控制,没有输入项,也能正确输入数据到内存,例如:scanf(“a=%d,b=%d”);当输入一全实型数据时,格式控制部分可以规定小数点后的位数,例如:scanf(“%4,2f”,&.f);当输入数据时,必须指明变量地址,例如:scanf(“%f”,&f);~D ~~~2 设 x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是()。 把x和y按从大到小排列 把x和y按从小到大排列 无确定结果 交换x和y中的值 ~D ~~~2 以下程序段的输出结果是:()。int a=12,b=12;printf(“%d %dn”,--a,++b); 10 10 12 12 11 10 11 13 ~D ~~~2 编制好的程序时,应强调良好的编程风格,如,选择标识符的名字时应考虑()。 名字长度越短越好,以减少源程序的输入量 多个变量共用一个名字,以减少 变量名的数目 选择含义明确的名字,以正确提示所代表的实体 尽量用关键字作名字,以使名字 标准化 ~C ~~~3 一个C程序的执行是从()。本程序的main函数开始,到main函数的结束 本程序文件的第一个函数开始,到本程序文件的最后一个函数的结束 本程序文件的main开始,到本程序文件的最后一个函数的结束 本程序文件的第一个函数开始,到本程序文件的main函数的结束 ~A ~~~3 以下叙述正确的是()。在C程序中main函数必须位于程序的最前面 C程序的每行中只能写一条语句 C语言本身没有输入输出语句 在对一个C程序进行编译的过程中,可发现注释中的错误 ~C ~~~3 C语言规定,在一个源程序中,main函数的位置()。必须在最开始 必须在系统调用的库函数的后面 可以任意 必须在最后 ~C ~~~3 结构化程序设计所规定的三种基本结构是()。主程序、子程序、函数 树形、网形、环形 顺序、选择、循环 输入、处理、输出 ~C ~~~4 以下叙述中错误的是()。C语句必须以分号结束 复合语句在语法上被看作一条语句 空语句出现在任何位置都不会影响程序运行 赋值表达式末尾加分号就构成赋值语句 ~C ~~~4 当把以下四个表达式用做if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是()。K%2 K%2==1(K%2)!=0!K%2==1 ~D ~~~4 下面有关for循环的正确描述是()。 for循环只能用于循环次数已经确定的情况。 for循环是先执行循环体语句,后进行循环条件判断。在for语句中,不能用break语句跳出循环体。 for循环体语句中,可以包含多条语句,但要用花括号括起来。~D ~~~4 设变量已正确定义,则以下能正确计算f=n!的程序段是()。f=0;for(i=1;i<=n;i++)f*=n;f=0;for(i=1;i<=n;i++)f*=i;f=1;for(i=n;i>1;i++)f*=i;f=1;for(i=n;i>=2;i--)f*=i;~D ~~~4 C语言中下列叙述正确的是()。不能使用do-while语句构成的循环 do-while语句构成的循环,必须用break语句才能退出 do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 do-while语句构成的循环,当while语句中的表达式值为零时 结束循环 ~D ~~~4 以下程序段输出结果是:()。int m=5;if (m++>5) printf(“%dn”,m);else printf(“%dn”,m--);7 6 5 4 ~B ~~~4 当执行以下程序段时:()。x=-1;do {x=x*x;}while(!x);循环体将执行两次 循环体将执行一次 循环体将执行无限次 系统将提示有语法错误 ~B ~~~4 执行以下程序段后,输出的结果是()。int y=10;do {y--;} while (--y);print(“%dn”,y--);-1 1 8 0 ~D ~~~4 为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。缩排位置相同的if 与其之前未配对的if 与其之前未配对的最近的if 同一行上的if ~C ~~~4 有 以 下 程 序 int i,s=0;for(i=1;i<10;i+=2)s+=i+1;printf(“%dn”,s);执行后的输出结果是()。自然数1~9的累加和 自然数1~10的累加和 自然数1~9中的奇数之和 自然数1~10中的偶数之和 ~D ~~~5 以下关于函数的叙述中正确的是()。 每个函数都可以被其他函数调用(包括main函数)每个函数都可以被单独编译 每个函数都可以单独运行 在一个函数内部可以定义另一个函数 ~B ~~~5 设函数FUN的定义形式为:void fun(char ch,float x){„„„„„}以下对函数的调用语句中,正确的是()。fun(“abc”,3.0);t=fun(“abc”,16.5);fun('65',2.8);fun(32,32);~D ~~~5 在C程序中,若对函数类型未加说明,则函数的隐含类型为()。int double void char ~A ~~~5 简单变量做实参时,它相对应形参之间的数据传递方式是()。地址传递 单向值传递 由实参传给形参,再由形参传回给实参 由用户指定传递方式 ~B ~~~5 建立函数的目的选项是()。 提高程序的执行效率 提高程序的可读性 减少程序的篇幅 减少程序文件所占内存 ~B ~~~5 下面关于递归的说法错误的是()。 每次当一个递归函数被调用时, 程序首先应该检查其些基本的条件是否满足了, 例如某个参数的值等于零, 函数应停止递归; 每次当函数被递归调用时, 传递给函数一个或多个参数, 应该以某种方式变得“更简单”;一般情况下, 递归方法比迭代方法快; 递归函数的目的是执行一系列调用, 一直到达某一点, 序列终止。~C ~~~5 下面说法正确的是()。函数定义可以嵌套,但函数调用不能嵌套 函数定义不可以嵌套,但函数调用可以嵌套 函数定义和调用均不能嵌套 函数定义和调用均可以嵌套 ~B ~~~5 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。 函数调用可以作为独立的语句存在 函数调用可以作为一个函数的实参 函数调用可以出现在表达式中 函数调用可以作为一个函数的形参 ~D ~~~5 以下关于说法正确的是()。实参和与其对应的形参各占用独立的存储单元 实参与其对应的形参共占用一个存储单元 实参和与其对应的形参同名时才共占用存储单元 形参虚拟的,不占用存储单元 ~A ~~~5 若调用一个函数(无全局、指针、静态变量),且此函数中没有return语句,则关于该函数正确的说法是()。无返回值 返回若干个系统默认值 能返回一个用户所希望的函数值 返回一个不确定的值 ~A ~~~5 在c语言中以下不正确的说法是()。 实参可以是常量、变量或表达式 形参可以是常量、变量或表达式 实参可以为任意类型 形参应与其对应的实参类型一致 ~B ~~~5 下列程序段的输出结果是()。#define M(x,y) x*y printf(“%d”,M(10+2,2));24 50 32 ~A ~~~5 若程序中定义了以下函数 :double myadd(double a,double b){ return(a+b);}并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是()。double myadd(double a,b);double myadd(double,double);double myadd(double b,double a);double myadd(double x,double y);~A ~~~5 程序设计中,以下错误的描述是()。 在函数之外定义的变量称为外部变量,外部变量是全局变量 在一个函数中既可以使用本函数中的局部变量,又可以使用外部变量 外部变量定义和外部变量说明的含义不同 若在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用 ~A ~~~5 程序设计中,建立函数的首要目的是()。 减少程序的运行时间 提高程序的可读性 减少程序的篇幅 减少程序运行时文件所占内存 ~B ~~~5 程序设计中,下列结论只有一个是正确的,它是()。在递归函数中使用自动变量要十分小心,因为在递归过程中,不同层次的同名变量在赋值的时候一定会相互影响 在递归函数中使用自动变量要十分小心,因为在递归过程中,不同层次的同名变量在赋值的时候可能会相互影响 在递归函数中使用自动变量不必担心,因为在递归过程中,不 同层次的同名变量在赋值的时候肯定不会相互影响 在程序设计语言中无法得出以上结论之一 ~C ~~~5 下面关于变量的说法错误的是()。 全局变量是所有在函数和类外定义的变量 局部变量是在块或函数中定义的变量 在同一作用域内变量不能同名 变量作用域不能重叠 ~D ~~~5 下面关于变量的生存周期的说法错误的是()。 全局变量的生存周期从程序运行开始到程序结束 局部变量的生存周期从块或函数的开始到块或函数的结束 静态局部变量的生存周期与全局变量相同 静态全局变量的作用域是整个程序 ~D ~~~6 下列数据结构中,能用二分法进行查找的是()。 顺序存储的有序线性表(数组)线性链表 二叉链表 有序线性链表 ~A ~~~6 数组名作为参数传递给函数,作为实在参数的数组名被处理为()。 该数组的元素个数 该数组中各元素的值 该数组的首地址 以上答案均不对 ~C ~~~6 若使用一维数组名作函数实参,则以下正确的说法是()。无须在主调函数中说明此数组的大小 实参数组类型与形参数组类型可以不匹配 在被调用函数中,不需要考虑形参数组的大小 实参数组名与形参数组名必须一致 ~C ~~~6 函 数 调 用 strcat(strcpy(str1,str2),str3)的功能是()。 将串str1复制到串str2中后在连接到串str3之后 将串str1连接到串str2之后再复制到串str3之后 将串str2复制到串str1中后再将串str3连接到串str1之后 将串str2连接到串str1中后再将串str1复制到串str3中 ~C ~~~6 下列描述中不正确的是()。字符型数组中可以存放字符串 可以对字符型数组进行整体输入、输出 可以对整型数组进行整体输入、输出 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值 ~C ~~~6 设有数组定义: char array [ ]=“HELLO”;则数组 array的长度为()。4 5 6 7 ~C ~~~6 以下不能正确进行字符串赋初值的语句是()。char str[5]=“good!”;char str[]=“good!”;char *str=“good!”;char str[5]={'g','o','o','d'};~A ~~~6 当调用函数时,实参是一个数组名,则向函数传送的是()。数组的长度 数组的首地址 数组每一个元素的地址 数组每个元素中的值 ~B ~~~6 下面正确进行字符串赋值操作的语句是()。 char s[5]=[“ABCDDE”];char s[4]={'A','B','C','D','E'};char *s;s=“ABCDEF”;char *s;scanf(“%s”,s);~C ~~~6 有以下程序:char a[]=“abcdefg”,b[10]=“abcdefg”;printf(“%d %dn”,sizeof(a),sizeof(b));执行后输出结果是()7 7 8 8 8 10 10 10 ~C ~~~6 以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()。 char s[10]=“abcdefg”;char t[]=“abcdefg”,*s=t; char s[10];s=“abcdefg”;char s[10];strcpy(s,“abcdefg”);~C ~~~6 若有以下程序段:int a[5] = {1,2,3,4,5};int *p = a;则以下说法正确的是() a可以做自增运算,即有a++; p可以做自增运算,即有p++; a和p都可以做自增运算,即有a++和p++; a和p都不能做自增运算。~B ~~~7 若有语句:char *LINE[5];以下叙述中正确的是()。定义LINE是一个数组,每个数组元素是一个基类型为char的指针变量 定义LINE是一个指针变量,该变量可以指向一个长度为5的字符型数组 定义LINE是一个指针数组 定义LINE是一个指向字符型函数的指针 ~A ~~~7 设 有 定 义,int n1=0,n2,*p=&n2,*q=&n1;以下赋值语句中与n2=n1;语句等价是()。*p=*q;p=q;*p=&n1;p=*q;~A ~~~7 若有定义:int x=0,*p=&x;则语句printf(“%dn”,*p);的输出结果是()。随机值 0 x的地址 p的地址 ~B ~~~7 有以下程序: main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p-2; printf(“%dn”,*p+*q);} 程序运行后的输出结果是()。16 10 8 6 ~D ~~~7 已定义以下函数: int fun(int *p){ return *p;} 该函数的返回值是()。不确定的值 形参p中存放的值 形参p所指存储单元中的值 形参p的地址值 ~C ~~~7 若己定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是()。p+l a+l a++ ++p ~C ~~~7 若有说明语句:int a,b,c, *d=&c;则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是()。 scanf(“%d%d%d”,&a,&b,d);scanf(“%d%d%d”,&a,&b,&d);scanf(“%d%d%d”,a,b,d);scanf(“%d%d%d”,a , b,*d);~A ~~~7 设已有定义: char *st=“how are you”;下列程序段中正确的是()。char a[11], *p=a;strcpy(p,&st[4]);char a[11];strcpy(++a, st);char a[11];a=st;char a[],*p;strcpy(p=&a[1],st+2);~D ~~~3 以下叙述中错误的是()。C语言中对二进制文件的访问速度比文本文件快 C语言中,随机文件以二进制代码形式存储数据 语句 FIEL FP ;定义了一个名为FP的文件指针 C语言中的文本文件以ASCII码形式存储数据 ~C ~~~3 通常,文件的逻辑结构可以分为无结构的______和有结构的记录式文件。堆文件 流式文件 索引文件 直接(Hash)文件 ~B ~~~3 通常,文件的逻辑结构可以分为两大类:无结构的流式文件和有结构的______文件。记录式文件 流式文件 索引文件 直接(Hash)文件 ~A ~~~3 在文件系统中最大的数据单位是()。数据项 记录 文件 数据库 ~C 1、把400~448这49个自然数按行赋给二维数组arry[7][7]。 #include { int arry[7][7]; int i,j,k=(1);for(i=0;i<7;i++)for(j=0;j<7;j++){ a[i][j]=k;(2);} } 答案:(1)400(2)k=k+1 2、把400-463这64个自然数按列赋给二维数组arry[8][8]。#include “math.h” #include int arry[8][8]; int i,j,k=(1);for(i=0;i<8;i++)for(j=0;j<8;j++){(2)=k;k=k+1;} } 答案:(1)400(2)a[j][i] 3、编写程序,建立一个20*20的矩阵,该矩阵主对角线元素为其行号(行号从1到20),其它元素均为0。 #include int a[20][20]; int i,j; for(i=0;i<20;i++) for(j=0;j<20;j++) if((1)) a[i][j] =i+1; else a[i][j]=(2);} 答案:(1)i==j(2)0 4、使用字符输入函数getchar()来进行字符串的输入。#include 作 业(使用指针、数组、函数 完成) 1.编写一个通用函数,该函数可以实现判断:一个含有五位数字的整数是否是回文数。回文数的含义是从左向右与从右向左看,数是相同的。如:23732是回文数,而23564则不是。编写主程序调用该函数实现求所有5位数字中满足条件的数的个数。#include if((w==g)&&(q==s)) return 1; else return 0; } void main(){ int count=0;int i; for(i=10000;i<=99999;i++) if(Judge(i))count++;printf(“%dn”,count);} 2.编写一个通用函数,该函数可以实现对数值型数组的倒序。倒序的含义是把数组的元素值前后颠倒。例数组:20,19,18,15,13,10倒序的结果为:10,13,15,18,19,20。编写主程序,数组初始化方式不限,并输出,然后调用该函数实现倒序后再输出倒序的结果。#include void Transfer(double *b,int n){ double temp;double *i=b;double *j=b+n-1;while(j>i){ temp=*i; *i=*j; *j=temp; i++; j--;} } void main(){ double array[N]={20,19,18,15,13,10};int i;for(i=0;i printf(“%.0ft”,array[i]);Transfer(array,N);printf(“n”);for(i=0;i printf(“%.0ft”,array[i]); printf(“n”);} 3.编写一个通用函数,该函数可以实现求数值型二维数组的上三角各元素的平方根的和(即先对上三角各元素求平方根,然后再对平方根求和)。编写主程序调用该函数,计算数组A的上三角元素的平方根的和。上三角的含义:左上部分(包含对角线元素),如下二维数组的0元素区域即为上三角。0 0 0 0 0 0 0 0 0 7 0 0 0 3 8 0 0 5 9 3 0 2 4 6 7 数组A的数据如下: 15 45 56 73 11 34 74 85 54 70 56 98 56 89 67 98 54 83 12 59 77 87 74 48 33 #include double Cal(double *p,int n){ int i,j;double sum=0;for(i=0;i for(j=0;j sum+=sqrt(*(p+i*n+j)); return sum; } void main(){ double a[5][5]={15, 45,56 , 73 , 11,34 , 74 , 85 ,54 , 70,56, 98 , 56 , 89 , 67, 98, 54 , 83, 12 , 59,77 , 87, 74, 48, 33};double rootsum=Cal(a[0],5);//或 者 double rootsum=Cal(&a[0][0],5); printf(“%fn”,rootsum) ;} /*系统把二维数组看成数组元素为一维数组的一维数组,即对于二维数组a[2][3],系统会看成由两个一维数组a[0]和a[1]组成,而a[0]和a[1]中分别包含三个元素(a[0]和a[1]为一维数组名)。所以不能把二维数组名(类似于二级指针,不完全相同)赋给一个普通的指针变量,但能把a[0]赋给一个普通的指针变量(a[0]不是一个具体的元素,而是元素a[0][0]的地址)*/ 4.编写一个通用函数,该函数可以实现统计一维数组中小于数组元素平均值的元素个数。编写主程序调用该函数,统计数组A(数据为:3521,5647,6849,5962,4567,2361,1247,5241,1246)中小于平均值的元素个数。#include int num(double *p,int num){ int count=0;double sum=0,avg=0;for(int i=0;i sum+=*(p+i);avg=sum/num;for(i=0;i if(*(p+i) count++; return count;{ } } void main()double a[9]={3521,5647,6849,5962,4567,2361,1247,5241,1246}; } 5.编写一个通用函数,该函数可以实现把一个十进制的正整数转换成七进制。例如把88转换成154。编写主程序调用该函数,把整数123455转换成七进制并输出。 注:把一个十进制的整数转换成七进制的方法是:把十进制数当作被除数,用7除,直到商为0为至,然后把余数倒序即可。例88除7的余数依次是4、5、1,则其七进制为:154。#include } void main(){ int num;printf(“Please input an scanf(”%d“,&num);Transfer(num);int a[100];int count=0;while(num!=0){ } for(int printf(”%d“,a[i]);a[count++]=num%7;num=num/7;int count =num(a,9);printf(”%dn“,count);i=count-1;i>=0;i--)integer:n”);第二篇:二级C语言100道经典选择题及答案
第三篇:人生是道选择题
第四篇:c语言选择题
第五篇:C语言选择题