j)語句共執行的次數是()。main(){inti=0,j=14,k=2,s=0;for(;;){i+=k;if(i>j){printf(“%d”,s);break;}s+=i;}}A、6B、9C、7D、12(2)若要用fopen函數打開一個二進制文件,該文件要既能讀也能寫 " />

一、單選題(共計60題)
(1)在下述程序中,if(i>j)語句共執行的次數是()。
main()
{inti=0,j=14,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf(“%d”,s);
break;
}
s+=i;
}
}
A、6
B、9
C、7
D、12
(2)若要用fopen函數打開一個二進制文件,該文件要既能讀也能寫,當文件不存在時新建
文件,則文件打開方式應是()。
A、"ab+"
B、"rb+"
C、"wb+"
D、"ab"
(3)下列程序的輸出結果是()。
structstudent
{inta,b,c;};
main()
{structstudentstu[2]={{2,3,4},{5,6,7}};intt;
t=stu[0].a+stu[1].b%stu[0].c;
printf("%dn",t);}
A、0
B、1
C、4
D、5
(4)對于浮點型變量f,能實現對f中的值在小數點后第四位進行四舍五入的表達式是()。
A、f=(f*1000+0.5)/1000.0
B、f=(f*1000+0.5)/1000
C、f=(int)(f*1000+0.5)/1000.0
D、f=(f/1000+0.5)*1000
(5)現已定義整型變量inti=1;執行循環語句“while(i++<5);”后,i的值為()。
A、1
B、5
C、6
D、以上三個答案均不正確
(6)下列程序的輸出結果是()。
structLH
{intn;structLH*m;}p[4];
main()
{inti;
for(i=0;i<2;i++)
{p[i].n=i;p[i].m=&p[i+1];}
p[i].m=p;
printf(“%d,%dn”,(p[1].m)->n,p[2].m->n);
}
A、0,1
B、0,2
C、0,0
D、程序出錯
(7)下列程序的運行結果是()。
#include"stdio.h"
intf(inta)
{switch(a)
{ca0:return0;
ca1:ca2:return1;
}
return(f(a-2)+f(a-3));
}
main()
{intb;
b=f(9);
printf(“%dn”,b);
}
A、10
B、7
C、8
D、9
(8)以下程序的輸出結果是()。
intf(intb[],intm,intn)
{inti,s=1;
for(i=m;i
{b[i]=b[i-1]+b[i+1];
s+=b[i];}
returns;}
main()
{intx,a[]={1,2,3,4,5,6,7,8,9,10};
x=f(a,3,5);
printf("%dn",x);}
A、23
B、26
C、42
D、35
(9)以下程序運行后,輸出結果是()。
main()
{charch[3][4]={"123","456","78"},*p[3];inti;
for(i=0;i<3;i++)p[i]=ch[i];
for(i=0;i<3;i++)printf("%s",p[i]);
}
A、123456780
B、123456780
C、12345678
D、147
(10)桌上有白球和黑球共5個,a、b、c、d、e分別表示這5個球的顏色,取值為0、1分
別代表白球、黑球。則以下能表示a是黑球,其余至少有兩個白球的表達式是()。
A、!a&&(b+c+d+e)==2
B、a&&(b+c+d+e)>2
C、a&&(b+c+d+e)<=2
D、!a&&(b+c+d+e)==3
(11)下列程序的輸出結果是()。
#include"stdio.h"
intf(intn)
{staticintk,s;
n--;
for(k=n;k>0;k--)
s+=k;
returns;
}
voidmain()
{intk;
k=f(2);
printf("(%d,%d)",k,f(k));
}
A、(3,3)
B、(1,1)
C、(3,6)
D、(6,12)
(12)若有定義:inta,b;charx,y;并有以下輸入數據:1213AaBb(回車)
則能給a賦整數12,給b賦整數13,給x賦字符a,給y賦字符b的正確程序段是()。
A、scanf(“%d”,&a);
scanf(“%d”,&b);
x=getchar();y=getchar();
B、scanf(“%d%d%c%c”,&a,&b,&x,&y);
C、scanf(“%d%d%c%c”,&a,&b,&x,&x,&y,&y);
D、scanf(“%d%d%c%c%c%c”,&a,&b,&x,&x,&y,&y);
(13)以下對結構體成員的運算結果是()。
#include
main(){
structst
{intx;
inty;
}cnum[2]={1,3,2,7};
printf("%dn",cnum[0].y/cnum[0].x*cnum[1].x);
}
A、0
B、1
C、3
D、6
(14)函數f定義如下,執行語句“m=f(5);”后,m的值應為()。
intf(intk)
{if(k==0||k==1)return1;
elreturnf(k-1)+f(k-2);
}
A、3
B、8
C、5
D、13
(15)若有以下定義:chars[10]={’a’,’b’,’c’,’0’,’2’,’x32’,’0’,’123’};
執行語句printf(“%d”,strlen(s));的結果是()。
A、3
B、6
C、8
D、9
(16)若i為整型變量,則以下循環執行的次數是()。
for(i=0;i<=5;i++)
printf("%d",i++);
A、5次
B、2次
C、3次
D、6次
(17)執行以下程序段后的輸出結果是()。
intx=3;
intm,n;
n=(++x)+(++x);
m=(x--)+(x--);
printf("%d%dn",m,n);
A、106
B、99
C、1010
D、108
(18)設有定義:inta[2][2]={1,2,3,4},(*p)[2];,則在語句p=a;p++;后,**p的值為()。
A、2
B、3
C、4
D、以上都不對
(19)以下關于循環的程序的輸出結果是()。
#include"stdio.h"
voidmain()
{
intk=4,n=0;
for(;n
{
n++;
if(n%3!=0)continue;
k--;
}
printf("%d%d",k,n);
}
A、11
B、22
C、33
D、44
(20)下列關于字符串操作的輸出結果是()。
#include"stdio.h"
#include"string.h"
voidmain()
{
charp1[20]="abcd",p2[20]="ABCD";
charstr[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%sn",str);
}
A、xyabcAB
B、abcABz
C、Ababcz
D、xycdBCD
(21)下列選項中屬于正確的switch語句的是()。
A、swicth(’a’)
{ca‘a’:printf(“An”);
ca‘b’:printf(“Bn”);}
B、switch(1.0)
{ca1.0:printf(“An”);
ca2.0:printf(“Bn”);}
C、switch((int)(x+2.5))
{ca1:printf(“An”);
ca1+2:printf(“Bn”);}
D、switch(“a”);
{ca“a”:printf(“An”);
ca“b”:printf(“Bn”);}
(22)以下程序的運行結果為()。
#include"stdio.h"
voidmain(){
inty=2,a=1;
while(y--!=-1){
do{
a*=y;a++;
}while(y--);}
printf("%d,%dn",a,y);}
A、1,-2
B、2,1
C、1,0
D、2,-1
(23)C語言的輸入與輸出操作是由()完成的。
A、輸入語句
B、輸出語句
C、輸入與輸出函數
D、輸入與輸出語句
(24)若有以下程序段
……
inta[]={4,0,2,3,1},i,j,t;
for(i=1;i<5;i++)
{t=a[i];j=i-1;
while(j>=0&&t>a[j])
{a[j+1]=a[j];j--;}
a[j+1]=t;}
……
則該程序段的功能是()。
A、對數組a進行插入排序(升序)
B、對數組a進行插入排序(降序)
C、對數組a進行選擇排序(升序)
D、對數組a進行選擇排序(降序)
(25)執行下列程序中的輸出語句后,x的值是()。
main()
{intx;
printf(“%dn”,(x=4*5,x*2,x+20));}
A、20
B、40
C、60
D、80
(26)下列程序段的輸出結果是()。
intc[]={1,7,12};
int*k=c+1;
printf("%d",*k++);
A、2
B、7
C、8
D、12
(27)下列程序的運行結果是()。
main()
{inta=4,y;
y=fn(a,++a);
printf(“%d”,y);}
intfn(x,c)
{intb;
if(x
elif(x==c)b=0;
elb=-1;
return(b);
}
A、4
B、-1
C、1
D、0
(28)有如下程序:intx=-20;printf("%dn",~x);,其輸出結果將是()。
A、19
B、20
C、21
D、-1
(29)對于類型相同的指針變量,不能進行的運算是()。
A、+
B、-
C、=
D、==
(30)已知:
unionu_type
{inti;
charch;
floata;
}temp;
現在windows環境下,執行"temp.i=266;printf("%d",)"的結果是()。
A、266
B、256
C、10
D、1
(31)以下程序的運行結果是()。
#include"stdio.h"
main()
{
inta[]={1,2,3,4,5,6,7,8,9,10,11,12};
int*p=a+5,*q=NULL;
q=p+5;
printf("%d%dn",*p,*q);
}
A、運行后報錯
B、611
C、612
D、55
(32)以下程序的輸出結果是()。
main()
{inta=0,b=1,c=0,d=20;
if(a)d=d-10;
elif(!b)
if(!c)d=15;
eld=25;
printf("d=%dn",d);
}
A、d=10
B、d=15
C、d=20
D、d=25
(33)下面四組字符串中,都可以用作C語言程序標識符的是()。
A、print
_maf
mx_2d
aMb6
B、Iam
scanf
mx_
MB
C、sign
3mf
a.f
A&B
D、if
ty_pe
x1
#5XY
(34)下列程序的輸出結果是()。
intf()
{staticinti=0;
ints=1;
s+=i;i++;
returns;}
main()
{inti,a=0;
for(i=0;i<6;i++)a+=f();
printf(“%dn”,a);}
A、21
B、24
C、25
D、15
(35)設有定義:#defineSTR"12345";,則以下敘述正確的是()。
A、宏名STR代替的是數值常量12345
B、宏定義以分號結束,編譯時會產生錯誤信息
C、宏名STR代替的是字符串"12345"
D、宏名STR代替的是字符串常量"12345"
(36)以下程序運行后,如果從鍵盤上輸入ABCDE<回車>,則輸出結果為()。
#include"stdio.h"
#include"string.h"
func(charstr[])
{intnum=0;
while(*(str+num)!=’0’)num++;
return(num);
}
main()
{charstr[10],*p=str;
gets(p);printf("%dn",func(p));
}
A、8
B、7
C、6
D、5
(37)下列程序的輸出結果是()。
structst
{intx;int*y;}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{p=aa;
printf(“%d”,++(*p->y));
printf(“%d”,(++p)->x);
printf(“%d”,++p->x);}
A、202010
B、216050
C、116061
D、317060
(38)以下函數的功能是()。
char*fun(char*str1,char*str2)
{
while((*str1)&&(*str2++=*str1++));
returnstr2;
}
A、求字符串的長度
B、比較兩個字符串的大小
C、將字符串str1復制到字符串str2中
D、將字符串str1接續到字符串str2中
(39)以下程序的輸出結果是()。
#include
voidfunc(char**m)
{
++*m;
printf("%sn",*m);
}
voidmain()
{
staticchar*a[]={"first","cond","three"};
char**n;
n=a;
func(n);
}
A、first
B、irst
C、cond
D、其他
(40)以下語句的輸出結果為()。
for(k=0;k<5;++k)
{if(k==3)continue;
printf("%d",k);
}
A、012
B、0124
C、01234
D、沒有輸出結果
(41)下面的程序對輸入的每一個數字出現的次數進行計數,下劃線處應填入的正確語句為
()。
#include"stdio.h"
main()
{inti,ch,n[10];
for(i=0;i<10;++i)n[i]=0;
while((ch=getchar())!=‘n’)
if(ch>=‘0’&&ch<=‘9’)
________;
for(i=0;i<10;++i)
printf("數字%d出現的次數是:%dn",i,n[i]);
}
A、n[ch-‘0’]++
B、n[ch]++
C、i++
D、n[i]++
(42)以下程序的輸出結果是()。
#include"stdio.h"
int*fun()
{
inta[4],k;
for(k=0;k<4;k++)a[k]=k;
return(a);
}
voidmain()
{
int*p,j;
p=NULL;
p=fun();
for(j=0;j<4;j++){printf("%dn",*p);p++;}
}
A、0000
B、0123
C、1111
D、輸出不確定值
(43)若有如下結構體定義,下列scanf用法不正確的是()。
structpupil
{
charname[20];
intage;
intx;
}pup[5],*p;
p=pup;
A、scanf("%s",pup[0].name);
B、scanf("%d",&pup[0].age);
C、scanf("%d",&(p->x));
D、scanf("%d",p->age);
(44)與y=(x>0?1:x<0?-1:0);的功能相同的if語句是()。
A、if(x>0)y=1;
elif(x<0)y=-1;
ely=0;
B、if(x)
if(x>0)y=1;
elif(x<0)y=-1;
C、y=-1
if(x)
if(x>0)y=1;
elif(x==0)y=0;
ely=-1;
D、y=0;
if(x>=0)
if(x>0)y=1;
ely=-1;
(45)下列描述中不正確的是()。
A、字符型數組中可能存放字符串
B、可以對字符型數組進行整體輸入、輸出
C、可以對整型數組進行整體輸入、輸出
D、不能在賦值語句中通過賦值運算符“=”對字符型數組進行整體賦值
(46)下面程序運行后,關于a、b、c的值應輸出為()。
#include"stdio.h"
main()
{
inta=1,b=2,c=2,t;
while(a
printf("%d,%d,%d",a,b,c);
}
A、1,2,0
B、2,1,0
C、1,2,1
D、2,1,1
(47)在16位PC機環境下,下列程序的輸出結果是()。
structtt
{intn1;charn2;floatn3;
unionuu{intu1[3];charu2[3];}su;
};
main()
{printf(“%dn”,sizeof(structtt));}
A、11
B、12
C、13
D、9
(48)若有如下程序:
voids(char*m,intn)
{
*m=*m+3;n=n+3;
printf("%c,%c,",*m,n);
}
voidmain()
{
charp=’b’,q=’B’;
s(&q,p);
printf("%c,%cn",p,q);
}
則程序運行后的輸出結果是()。
A、E,e,b,E
B、e,E,b,F
C、E,e,e,E
D、e,E,b,E
(49)以下程序的輸出結果是()。
#include
intmain()
{
charstr[100]="ABCDEFG",*p=str;
inti;
for(i=0;*p!=’0’;p++,i++);
printf("%dn",i);
return0;
}
A、7
B、8
C、99
D、100
(50)某C編譯系統規定,int型數組占2個字節,則定義以下語句后,sizeof(aa)=()。
struct{longnum;
charname[20];
union{floatx;
shorty;
}xy;
}aa;
A、32B、26
C、30D、28
(51)語句:printf(“%d”,!0);的輸出結果是()。
A、1
B、0
C、有語法錯誤,不能執行
D、!0
(52)函數f定義如下,執行語句“sum=f(4)+f(2);”后,sum的值應為()。
intf(intm)
{staticinti=0;ints=0;
for(;i<=m;i++)s+=i;returns;
}
A、13B、16
C、10D、8
(53)fwrite函數的一般調用格式是()。
A、fwrite(buffer,count,size,fp);
B、fwrite(fp,count,size,buffer);
C、fwrite(fp,size,count,buffer);
D、fwrite(buffer,size,count,fp);
(54)有以下程序段
main()
{inti=1,sum=0,n;
scanf("%d",&n);
do
{i+=2;
sum+=i;
}while(i!=n);
printf("%d",sum);
}
若使程序的輸出值為15,則應該從鍵盤輸入的n的值是()。
A、1B、3
C、5D、7
(55)下列選項可作為C語言賦值語句的是()。
A、a=1;b=2;
B、a=b=6
C、i--
D、y=int(x);
(56)已知有以下的說明,
inta[]={8,1,2,5,0,4,7,6,3,9};那么a[*(a+a[3])]的值為()。
A、5B、0
C、4D、7
(57)已知enumname{zhao=1,qian,sun,li}man;執行下述程序段后的輸出結果是()。
man=0;
switch(man)
{ca0:printf("Peoplen");break;
ca1:printf("Mann");break;
ca2:printf("Womann");break;
default:printf("Errorn");break;
}
A、PeopleB、Man
C、WomanD、Error
(58)以下能正確計算1×2×3×……×10的程序段是()。
A、do{i=1;s=1;
s=s*i;
i++;
}while(i<=10);
B、do{i=1;s=0;
s=s*i;
i++;
}while(i<=10);
C、i=1;s=1;
do{s=s*i;
i++;
}while(i<=10);
D、i=1;s=0;
do{s=s*i;
i++;
}while(i<=10);
(59)以下程序的運行結果是()。
voidmain()
{
inta=4;charch=’a’;
printf("%dn",(a&2)&&(ch>’A’));
}
A、0B、1
C、2D、3
(60)若指針p已正確定義,要使p指向兩個連續的整型動態存儲單元,下列語句正確的是()。
A、p=2*(int*)malloc(sizeof(int));
B、p=(int*)malloc(2*sizeof(int));
C、p=(int*)malloc(2*2);
D、p=(int*)malloc(2,sizeof(int));
二、
(1)以下敘述中正確的有()
A、在程序的一行上可以出現多個有效的預處理命令行
B、宏定義不是C語句,不必在行末加分號
C、宏替換不占用運行時間,只占用編譯時間
D、在以下定義中CR是稱為“宏名”的標識符
#defineCR045
(2)要求函數的功能是在一維數組a中查找x值。若找到,則返回所在的下標值;否則,返
回0。設數據放在數組元素的a[1]到a[n]中。在以下給出的函數中,不能正確執行此功
能的有()。
A、funa(int*a,intn,intx)
{
*a=x;
while(a[n]!=x)n--;
returnn;
}
B、funb(int*a,intn,intx)
{
intk;
for(k=1;k<=n;k++)
if(a[k]==x)returnk;
return0;
}
C、func(inta[],intn,intx)
{
int*k;
a[0]=x;k=a+n;
while(*k!=x)k--;
returnk-n;
}
D、fund(inta[],intn,intx)
{
intk=0;
do
{k++;
}while((k
if((k
elreturn0;
}
(3)下面說法正確的有()。
A、共用體變量的地址和它各成員的地址都是同一地址
B、共用體內的成員可以是結構變量,反之亦然
C、在任一時刻,共用體變量的各成員只有一個有效
D、函數不可以返回一個共用體變量
(4)如有兩個字符數組a、b,則以下輸入語句正確的有()。
A、gets(a,b);
B、scanf("%s%s",a,b);
C、for(i=0;(a[i]=getchar())!=’n’;i++);
for(i=0;(b[i]=getchar())!=’n’;i++);
D、gets(a);gets(b);
(5)當把下列四個表達式用作if語句的控制表達式時,含義相同的選項有()。(假設k>0)
A、k%2
B、k%2==0
C、(k%2)!=0
D、k%2==1
(6)設有以下語句
structst{
intn;
structst*next;
};
staticstructsta[3]={5,&a[1],6,&a[2],7,},*p=&a[0];
若要使printf("%dn",____)輸出值為6,則下劃線處表達式可以為()。
A、p->n++
B、++p->n
C、(++p)->n
D、p->next->n
(7)下列說法不正確的有()。
A、帶參數的宏定義中的參數是沒有類型的
B、宏展開將占用程序的運行時間
C、宏定義命令是C語言中的一種特殊語句
D、使用#include命令包含的頭文件必須以".h"為后綴
(8)下列有關函數調用的說法正確的有()。
A、若用值傳遞方式,則形式參數不予分配內存
B、實際參數和形式參數不可以同名
C、主調函數和被調用函數可以不在同一個文件中
D、函數間傳送數據可以使用外部全局變量
(9)若變量已正確定義,以下能正確計算1*2*3*4*5的程序段有()。
A、i=1;s=1;
do
{s=s*i;i++;}
while(i<5);
B、i=0;s=0;
do
{i++;s=s*i;}
while(i<5);
C、i=1;s=1;
do
{s=s*i;i++;}
while(i<6);
D、i=0;s=1;
do
{i++;s=s*i;}
while(i<5);
(10)設有定義語句:intx[6]={2,4,6,8,5,7},*p=x,i;
要求依次輸出x數組中6個元素中的值,下列選項中能完成此操作的語句有()。
A、for(i=0;i<6;i++)printf(“%2d”,*(p++));
B、for(i=0;i<6;i++)printf(“%2d”,*(p+i));
C、for(i=0;i<6;i++)printf(“%2d”,*p++);
D、for(i=0;i<6;i++)printf(“%2d”,(*p)++);
(11)整型變量x=1,y=3,經下列()計算后,x的值等于6。
A、x=(x=1+2,x*2)
B、x=y>2?6:5
C、x=9-(y--)-(y--)
D、x=y*4.8/2-1
(12)下列關于指針定義的描述正確的有()。
A、指針變量是一種變量,該變量是用來存放某個變量的地址值的
B、指針變量的類型與它所指向的變量類型一致
C、指針變量的命名規則與標識符相同
D、在定義指針時,”*”號表示指針變量的指向
(13)以下對結構體變量stu1中成員age的引用正確的有()。
structstudent
{intage;
intnum;
}stu1,*p;
p=&stu1;
A、
B、
C、p->age
D、(*p).age
(14)設有結構體類型:
typedefstructstr{
intno;
charname[20];
}STR;
另有變量定義:STRa[20],x;
如希望實現向與文件指針變量fp關聯的文件輸出一個結構信息,則以下語句正確的有()。
A、fwrite(a,sizeof(STR),1,fp);
B、fwrite(&a[2],sizeof(STR),1,fp);
C、fwrite(&x,sizeof(STR),1,fp);
D、fwrite(x,sizeof(STR),1,fp);
(15)t為int類型,進入下面循環之前,t的值為0:
for(;t=1;)
{……….}
則下列敘述不正確的有()。
A、循環控制表達式的值為0
B、循環控制表達式的值為1
C、循環控制表達式不合法
D、循環有可能是個無限循環
(16)下列敘述不正確的有()。
A、函數可以嵌套定義,但不能嵌套調用
B、函數可以嵌套調用,也可以嵌套定義
C、函數不可以嵌套定義,但可以遞歸調用
D、函數可以嵌套調用,但不能嵌套定義
(17)關于數組與字符串,下列選項中屬于不合法的定義有()。
A、chars="string";
B、inta[5]={0,1,2,3,4,5};
C、chars[5]="string";
D、chara[]={0,1,2,3,4,5};
(18)若有定義:char*str[]={"one","two","three"},**p=str;
則下列選項中可以表示出字符’t’的表達有()。
A、*str[2]
B、*str+2
C、*(p+1)
D、**++p
(19)若有以下調用語句,則正確的fun函數的首部包括()
main()
{…
inta[50],n;
…
fun(n,&a[9]);
…
}
A、voidfun(intm,intx[])
B、voidfun(ints,inth[41])
C、voidfun(intp,int*s)
D、voidfun(intn,inta)
(20)已知有定義:
struct{
intno;
charname[20];
}a,b,*c;
則以下語句合法的有()。
A、a=b;
B、a=&b;
C、c=&b;D、*c=b
試題答案
1C41A
2C42D
3C43D
4C44A
5C45D
6C46A
7B47C
8A48A
9C49A
10C50D
11B51A
12D52C
13D53D
14B54D
15B55A
16C56B
17C57A
18B58C
19C59A
20D60B
21C1BC
22A2ABD
23C3ABCD
24B4BCD
25A5ACD
26B6BCD
27D7BCD
28A8BCD
29A9CD
30C10ABC
31B11ABD
32C12ABCD
33A13ACD
34A14ABC
35C15AC
36D16AB
37C17ABC
38C18AD
39B19ABC
40B20CD
一、單項選擇題【共60題,每小題1分,共60分。下列每題給出的多個選項中,
只有一項是最符合試題要求的。請選擇相應的正確答案。】
1.語句printf(“%dn”,strlen(“xyztxab3”));的輸出結果是()。
A)9
B)11
C)7
D)8
2.程序中對fun函數有如下說明:
int*fun();
下面說法正確的是()。
A)fun函數是整型函數
B)fun函數的返回值是整型數據
C)fun函數的返回值是指向整型數據的指針類型
D)指針fun指向一個函數,該函數返回整型數據
3.在下列語句選項中,只有一個在功能上與其他三個語句不等價(其中s1和s2表
示某個C語句),這個不等價的語句是()。
A)if(a)s1;els2;
B)if(!a)s2;els1;
C)if(a!=0)s1;els2;
D)if(a==0)s1;els2;
4.以下程序的運行結果是()。
voidfun(int*n)
{
staticintm=2;
*n*=m-1;m+=2;
}
voidmain()
{
staticintm=1;
inti;
for(i=1;i<4;i++)
fun(&m);
printf("%dn",m);
}
A)8
B)10
C)11
D)15
5.若有定義:constinti=10,j=20;int*constpi=(int*)&i;,則下列操作正確
的為()。
A)*pi=0;
B)pi=&j;
C)i=10;pi=&j;
D)j=*pi;
6.字符串"ax44nbcd102a"的長度是()。
A)12
B)17
C)9
D)11
7.以下程序的輸出結果為()。
inta=2;
intf(int*a)
{
return(*a)++;
}
voidmain()
{
ints=0;
{inta=5;
s+=f(&a);
}
s+=f(&a);
printf("%d%dn",a,s);
}
A)27
B)210
C)37
D)311
8.在C語言中,函數的隱含存儲類別是()。
A)auto
B)static
C)extern
D)無存儲類別
9.以下關于枚舉的程序,其運行結果是()。
#include"stdio.h"
main()
{
enumweekday
{sun,mon,tue=5,wed,thu,fri,sat}a,b,c,d;
a=sun;
b=mon;
c=tue;
d=wed;
printf("%d%d%d%dn",a,b,c,d);
}
A)0050
B)1254
C)0156
D)0153
10.以下程序關于sizeof()的運行結果是()。
voidmain()
{
chara[]="movie",b[10]="movie";
printf("%d%dn",sizeof(a),sizeof(b));
}
A)55
B)66
C)610
D)其他輸出
11.若x是int型變量,且有下面的程序片段:
for(x=5;x<8;x++)
printf((x/2)?(“**%d”):(“##%d”),x);
該程序片段的輸出結果是()。
A)**5**6**7
B)##5**6##7**8
C)**5##6**7
D)**5##6**7##8
12.以下是求兩個正整數的最大公約數的函數fun(),下劃線處應填入的正確語
句為()。
intfun(m,n)
intm,n;
{intr;
if(m
if(n==0)return(m);
do{r=m%n;
if(r!=0){m=n;n=r;}
}while(______);
return(n);
}
A)r!=0
B)r==0
C)n!=0
D)n==0
13.以下程序功能為輸入1個正整數n,計算并輸出s的前n項的和:
s=1/2-2/3+3/4-4/5+……(-1)n/(n+1),下劃線處應填入的正確語句為()。
#include"stdio.h"
voidmain()
{intk,flag=1,n;
floats=0;
scanf("%d",&n);
for(k=1;k<=n;k++){
s=s+______;
flag=-flag;
}
printf("sum=%fn",s);
}
A)1.0*k/(k+1)*flag
B)flag*n/(n+1)
C)-k/(k+1)
D)1.0*k/(k+1)
14.在下列字符序列中,屬于C語言合法標識符的是()。
A)P12.a
B)stud_100
C)$water.1
D)88sum
15.以下程序的輸出結果是()。
main()
{inta=0,j;
for(j=0;j<4;j++)
{switch(j)
{ca0:
ca3:a+=2;
ca1:
ca2:a+=3;
default:a+=5;
}
}
printf("%dn",a);
}
A)20
B)13
C)10
D)36
16.有如下程序:
#definef(x)x*x
main()
{inti;
i=f(2+2)/(1+1);
printf(“%dn”,i);}
該程序執行后的輸出結果是()。
A)21
B)7
C)8
D)4
17.有以下程序段:
inta=0,b;
do{scanf(“%d”,&a);b++;}while(a!=10||b<3);
此處do-while循環的結束條件是()。
A)a的值等于10并且b的值大于3
B)a的值等于10并且b的值大于等于3
C)a的值不等于10或者b的值小于3
D)a的值不等于10并且b的值大于等于3
18.若a是整型變量,表達式~(a^~a)等價于()。
A)~a
B)1
C)0
D)2
19.以下程序的輸出結果是()。
main()
{intn;
(n=6*4,n+6),n*2;
printf("n=%dn",n);
}
A)30
B)24
C)60
D)48
20.以下程序運行后的輸出結果是()。
#include
structNODE
{intnum;structNODE*next;};
main()
{
structNODE*p,*q,*r;
p=(structNODE*)malloc(sizeof(structNODE));
q=(structNODE*)malloc(sizeof(structNODE));
r=(structNODE*)malloc(sizeof(structNODE));
p->num=10;q->num=20;r->num=30;
p->next=q;q->next=r;
printf("%dn",p->num+q->next->num);
}
A)10
B)20
C)30
D)40
21.有以下函數:char*fun(char*p){returnp;},該函數的返回值為()。
A)不確定值
B)參數p中存放的地址值
C)一個臨時存儲單元的地址值
D)形參p自身的地址值
22.當a=2,b=3,c=4,d=5時,執行下面一段程序后x的值為()。
if(a
if(c>d)x=1;
el
if(a>c)
if(b
elx=3;
elx=4;
elx=5;
A)2
B)3
C)4
D)5
23.設有程序段chark;while(k>0)k++;printf("%dn",k);則程序輸出結果
為()。
A)-127
B)256
C)-128
D)128
24.以下程序輸出的字符序列是()。
#include"stdio.h"
main(){
chara[]="language",*p;
p=a;
while(*p!=’u’){printf("%c",*p-’u’+’U’);p++;}
}
A)LANGUAGE
B)language
C)LANG
D)LANGuage
25.在下述程序中,if(i>j)語句共執行的次數是()。
main()
{inti=0,j=14,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf(“%d”,s);
break;
}
s+=i;
}
}
A)6
B)9
C)7
D)12
26.以下選項中,能定義s為合法的結構體變量的是()。
A)typedefstructabc
{doublea;
charb[10];
}s;
B)structabc
{doublea;
charb[10];
}s;
C)structABC
{doublea;
charb[10];
}
ABCs;
D)typedefABC
{doublea;
charb[10];
}
ABCs;
27.以下程序的輸出結果是()。
main()
{inta=1,b=0;
switch(a)
{ca1:switch(b)
{ca0:printf("**0**");break;
ca1:printf("**1**");break;
}
ca2:printf("**2**");break;
}
}
A)**0**
B)**0****2**
C)**0****1****2**
D)有語法錯誤
28.下列敘述不正確的是()。
A)用typedef可以定義各種類型名,但不能用來定義變量
B)typedef和#define都是在預編譯時處理的
C)用typedef只是將已存在的類型用一個新的標識符來代表
D)使用typedef有利于程序的通用和移植
29.設有定義:#defineSTR"12345";,則以下敘述正確的是()。
A)宏名STR代替的是數值常量12345
B)宏定義以分號結束,編譯時會產生錯誤信息
C)宏名STR代替的是字符串"12345"
D)宏名STR代替的是字符串常量"12345"
30.若要用fopen函數打開一個二進制文件,該文件要既能讀也能寫,當文件不存在
時新建文件,則文件打開方式應是()。
A)"ab+"
B)"rb+"
C)"wb+"
D)"ab"
31.若二維數組定義為a[m][n],則在a[i][j]之前的元素個數為()。
A)j*m+i
B)i*m+j
C)i*m+j-1
D)j*m+i-1
32.假設所有變量均為整型,則執行運算x=(a=2,b=5,b++,a+b)后,x的值是()。
A)7
B)8
C)6
D)2
33.下列選項中屬于不正確的賦值語句的是()。
A)t--;
B)k=i==j;
C)t1=t2=t3=3;
D)t1=1,t2=2;
34.C語言中運算對象必須是整型的運算符是()。
A)/
B)++
C)%
D)!=
35.下列程序的運行結果是()。
main()
{chararr[2][4];
strcpy(arr,“abc”);strcpy(arr[1],“ABC”);
printf(“%sn”,arr);}
A)abcABC
B)abc
C)ABC
D)arr
36.以下程序的輸出結果是()。
#include
intmain()
{
charstr[100]="ABCDEFG",*p=str;
inti;
for(i=0;*p!=’0’;p++,i++);
printf("%dn",i);
return0;
}
A)7
B)8
C)99
D)100
37.下列函數調用語句中含有()個參數。
func((f1,f2),(f2,f3),(f5,f6,f7))
A)3
B)5
C)6
D)7
38.下列程序片段的輸出結果是()。
printf("%dn",strlen("ATSn0l22"));
A)l1
B)10
C)9
D)8
39.有以下程序:
main()
{charstr[][8]={“Hello”,“Beijing”},*p=str;
printf(“%sn”,p+8);}
該程序運行后的輸出結果是()。
A)Hello
B)Beijing
C)jing
D)ijing
40.在C程序中有如下語句:char*func(intx,inty);它是()。
A)對函數func的定義
B)對函數func的調用
C)對函數func的原型說明
D)不合法的
41.設有數組定義:chararray[]=“123456789”;則數組array所占的空間為()。
A)7個字節
B)8個字節
C)9個字節
D)10個字節
42.以下程序的運行結果是()。
#include"stdio.h"
main()
{
inta[]={1,2,3,4,5,6,7,8,9,10,11,12};
int*p=a+5,*q=NULL;
q=p+5;
printf("%d%dn",*p,*q);
}
A)運行后報錯
B)611
C)612
D)55
43.以下程序的輸出結果是()。
main()
{intw=4,x=3,y=2,z=1;
if(x>y&&!(z==w))printf("%dn",(w
elprintf("%dn",(w>x?w:z>y?z:x));
}
A)1
B)2
C)3
D)4
44.下列程序的輸出結果是()。
main()
{
intk=4,m=5,n=7;
int*pk=&k,*pm=&m,*p;
*(p=&n)=*pk*(*pm);
printf(“%dn”,n);
}
A)5
B)7
C)20
D)21
45.下列程序中函數sort的功能是對a數組中的數據進行由大到小的排序:
voidsort(inta[],intn)
{inti,j,t;
for(i=0;i
for(j=i+1;j
}
main()
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[2],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,7,6,5,4,3,8,9,10,
D)1,2,10,9,8,7,6,5,4,3,
46.有如下定義:
structs1
{
chara[3];
intnum;
}t={’a’,’b’,’x’,4},*p;
p=&t;
則下列語句輸出結果為x的是()。
A)printf("%cn",p->t.a[2]);
B)printf("%cn",(*p).a[2]);
C)printf("%cn",p->a[3]);
D)pritf("%cn",(*p).t.a[2]);
47.有如下程序,該程序的輸出結果是()。
longf(intn)
{if(n>2)return(f(n-2)+f(n-3));
el
if(n==2)return(2);
elreturn(1);}
main()
{printf("%dn",f(5));}
A)2
B)3
C)4
D)5
48.若以下程序所生成的可執行文件名為,當輸入命令行:FILE1CHINA
BEIJINGSHANGHAI,執行該程序時,程序的輸出結果是()。
main(intargc,char*argv[])
{while(argc-->1)
{++argv;printf("%s",*argv);}
}
A)CHINABEIJINGSHANGHAI
B)FILE1CHINABEIJING
C)CBS
D)FCB
49.設charch,str[4],*strp;,則下列賦值語句正確的是()。
A)ch="CBA";
B)str="CBA";
C)strp="CBA";
D)*strp="CBA";
50.在PC16位機環境下,以下程序的運行結果是()。
main()
{unsignedinta;
intb=-2;
a=b;
printf(“%u”,a);}
A)-2
B)65534
C)32768
D)-32768
51.下列程序的輸出結果是()。
structstudent
{inta,b,c;};
main()
{structstudentstu[2]={{2,3,4},{5,6,7}};intt;
t=stu[0].a+stu[1].b%stu[0].c;
printf("%dn",t);}
A)0
B)1
C)4
D)5
52.若有定義:inta,b;charx,y;并有以下輸入數據:1213AaBb(回車)
則能給a賦整數12,給b賦整數13,給x賦字符a,給y賦字符b的正確程序段是
()。
A)scanf(“%d”,&a);
scanf(“%d”,&b);
x=getchar();y=getchar();
B)scanf(“%d%d%c%c”,&a,&b,&x,&y);
C)scanf(“%d%d%c%c”,&a,&b,&x,&x,&y,&y);
D)scanf(“%d%d%c%c%c%c”,&a,&b,&x,&x,&y,&y);
53.若變量定義時未初始化,則其值不確定的是()。
A)靜態全局變量
B)靜態局部變量
C)局部變量
D)全局變量
54.以下程序的輸出結果是()。
main()
{charch[2][5]={"6937","8254"},*p[2];
inti,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>’0’;j+=2)
s=10*s+p[i][j]-’0’;
printf("%dn",s);
}
A)69825
B)63825
C)6385
D)693825
55.以下程序的輸出結果是()。
main()
{inti,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<3;j++)
{if(j%2)continue;
x++;}
x++;}
printf("x=%dn",x);}
A)x=4
B)x=8
C)x=6
D)x=12
56.下列程序的輸出結果是()。
structst
{intx;int*y;}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{p=aa;
printf(“%d”,++(*p->y));
printf(“%d”,(++p)->x);
printf(“%d”,++p->x);
A)202010
B)216050
C)116061
D)317060
57.語句:printf(“%d”,!0);的輸出結果是()。
A)1
B)0
C)有語法錯誤,不能執行
D)!0
58.下列程序運行后的輸出結果是()。
fun(inta,intb)
{if(a>b)return(a);
elreturn(b);
}
main()
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%dn",r);
}
A)3
B)6
C)8
D)12
59.函數調用語句:fek(fp,-20L,2);的含義是()。
A)將文件位置指針移到距離文件頭20個字節處
B)將文件位置指針從當前位置向后移動20個字節
C)將文件位置指針從文件末尾處后退20個字節
D)將文件位置指針移到距離當前位置20個字節處
60.以下程序將輸出的字符是()。
#include"stdio.h"
main()
{
charc;
char(*p)[3];
chars[2][3]={’a’,’b’,’c’,’d’,’e’,’f’};
p=&s[0];
c=*(p[1]+1);
printf("%c",c);
}
A)b
B)d
C)e
D)f
二、多項選擇題【共20題,每小題2分,共40分。下列每題給出的多個選項中,
有一項或多項是符合試題要求的。請選擇相應的正確答案。多選、少選或錯選均不
得分。】
語句的正確用法包括()。
A)無論在任何情況下,都中斷程序的執行,終止整個循環
B)在多重循環中,只能退出最靠近的那一層循環語句
C)對于go語句和if語句構成的循環,不能使用break退出
D)可用于循環語句、switch語句和其他語句
2.設有如下定義:
char*s[2]={“abcd”,“ABCD”};
char**p=s;
則下列說法正確的有()。
A)s數組元素的值分別是“abcd”和“ABCD”兩個字符串的首地址
B)s數組的兩個元素分別存放的是含有四個字符的一維字符數組中的元素
C)p是指向指針數據的指針變量
D)p中存放的是數組s的首地址
3.若已定義的函數有返回值,則以下關于該函數調用的敘述正確的有()。
A)函數調用可以作為獨立的語句存在
B)函數調用可以作為一個函數的實參
C)函數調用可以出現在表達式中
D)函數可以直接調用函數本身
4.下列判斷不正確的有()。
A)char*a=“china”;等價于char*a;*a=“china”;
B)charstr[6]={“china”};等價于charstr[]={“china”};
C)chars=“china”;等價于chars;s=“china”;
D)charc[4]=“abc”,d[4]=“abc”;等價于charc[4]=d[4]=“abc”;
5.以下說法正確的有()。
A)C語言程序總是從main函數開始執行
B)在C語言程序中,要調用函數必須在main()函數中定義
C)C語言程序由函數組成,且必須包含main函數
D)C語言程序中的main()函數必須放在程序的開始部分
6.函數欲實現交換x和y的值,且通過正確調用返回交換結果,下列選項中不能實
現這一功能的有()。
A)funa(int*x,int*y)
{
int*p;
*p=*x;*x=*y;*y=*p;
}
B)funb(intx,inty)
{
intt;
t=x;x=y;y=t;
}
C)func(int*x,int*y)
{
intp;
p=*x;*x=*y;*y=p;
}
D)fund(int*x,int*y)
{
int*p;
*x=*x+*y;*y=*x-*y;*x=*x-*y;
}
7.已知:inta=1,*p=&a;,則以下表達式值為1的有()。
A)*p
B)p[0]
C)*&a
D)*&p
8.已知有如下程序:
voidmain()
{
inta[5]={1,2,3,4,5},*b;
b=(int*)malloc(sizeof(int));
____;
printf("%dn",*b);
}
要使程序輸出為a[2]的值,則下列有關函數fun的定義和下劃線處對應的fun調用
語句正確的有()。
A)voidfun(int*s,int*d)
{*d=*(s+2);}
調用:fun(a,&b)
B)voidfun(int*s,int&d)
{d=*(s+2);}
調用:fun(a,b)
C)voidfun(int*s,int&d)
{d=*(s+2);}
調用:fun(a,*b)
D)voidfun(int*s,int**d)
{**d=*(s+2);}
調用:fun(a,&b)
9.下面程序把數組元素中的最大值放入a[0]中,則在if語句中條件表達式可以是
()。
main()
{inta[10]={5,2,9,6,7,1,12,8,23,0},*p=a,i;
for(i=0;i<10;i++,p++)
if()*a=*p;
printf(“%d”,*a);
}
A)p>a
B)*p>a[0]
C)*p>*a[0]
D)*p:>*a
10.若x,y均定義為int型,z定義為double型,以下scanf函數調用語句合法的有
()。
A)scanf("%d%lx,%le",&x,&y,&z);
B)scanf("%2d*%d%lf",&x,&y,&z);
C)scanf("%x%*d%o",&x,&y);
D)scanf("%x%o%6.2f",&x,&y,&z);
11.關于下列程序的輸入與輸出,下列說法正確的有()。
#include
voidmain()
{
intm,n;
printf("Enterm,n∶");
scanf("%d%d",&m,&n);
while(m!=n)
{while(m>n)m-=n;
while(n>m)n-=m;
}
printf("m=%dn",m);
}
A)輸入m>n時,程序將輸出1
B)輸入m
C)輸入m,n滿足m%n等于0,且m>n時,程序輸出n的值
D)輸入m或n為0時,程序將陷入死循環
12.已知intb=2,下列表達式值為1的有()。
A)~b&b
B)~b||b
C)b>>1
D)(b|1)&1
13.有以下程序段:
#include"stdio.h"
#include"string.h"
main()
{charss[10]="1,2,3,4,5";
gets(ss);
___________
printf("%sn",ss);}
執行程序時如果輸入ABC則輸出結果為ABC6789,則下劃線處的語句可以是()。
A)strcat(ss,"6789");
B)strcpy(ss[3],"6789");
C)strcpy(ss,"ABC6789");
D)strcpy(&ss[3],"6789");
14.若已建立如圖所示的單向鏈表:
則下列選項中能將s所指的結點插入到鏈表尾部,構成新的單項鏈表的語句組有
()。
A)a=a->link;s->link=a->link;a->link=s->link;
B)a=(*a).link;(*s).link=(*a).link;(*a).link=s;
C)s->link=NULL;a=(*a).link;(*a).link=s;
D)s->link=a->link->link;a->link->link=s;
15.設有說明intk=7,x=12;,則以下語句執行后,x值為0的有()。
A)x%=(k%5);
B)x%=(k-k%5);
C)x%=k-k/5;
D)x=(x%=k)-(k%=5);
16.下列符號串中,不屬于C語言合法標識符的有()。
A)_1_2_3
B)1-2-3
C)float
D)12ab
17.關于以下運算,說法正確的有()。
A)設有宏定義"#defineF(N)2*N",則表達式F(2+3)的值是10
B)設intx=4;,則執行語句x+=x*=x+1;后,x的值為40
C)設inta,b=8;,執行a=b<<2+1;后,a的值是33
D)設inta[3][4],*p=a[1];該指針變量p指向的元素是a[1][0]
18.以下敘述正確的有()。
A)在C程序中,逗號運算符的優先級最低
B)在C程序中,A和a是兩個不同的變量
C)若a和b類型相同,在執行了賦值a=b后,b中的值不變
D)當鍵盤輸入數據時,對于整型變量也可以能輸入整型數值、實型數值和字符型數
據等
19.以下有關字符串賦值、賦初值的語句正確的有()。
A)charsz[2][40];sz[1]=“string1”;
B)char*sz[2];sz[1]=“string2”;
C)charsz[][40]=“string3”;
D)char*sz[2]={“string1”,“string2”};
20.已知有定義staticintb[5],a[2][3]={1,2,3,4,5,6};,則以下說法正確的有
()。
A)b中元素值為0
B)b中元素沒有定義,值不確定
C)a[1][1]=4
D)a[1][1]=5
一、單選題(共60小題,每題1分,共60分)
1.執行下列程序中的輸出語句后,x的值是______。(知識點3.10)
main()
{intx;
printf(“%dn”,(x=5*6,x*2,x+20));}
A)30B)60C)50D)80
2.下列程序的輸出結果是_______。(知識點3.8)
main()
{intx=1,y=0,z;
z=(x<=0)&&(y-->=0);
printf(“%d%d%d%n”,z,x,y);}
A)0-1-1B)0-10C)010D)01-1
3.在C語言中,下列選項屬于合法的長整型常數的是_______。(知識點3.3)
A)0LB)1234567C)0.0234567D)3.14159e3
4.下列選項中屬于不正確的賦值語句的是_____。(知識點3.6)
A)t++;B)n1=(n2=(n3=0));C)k=i==j;D)a=b,c=1;
5.若有定義:inta,b;charx,y;并有以下輸入數據:1422XxYy(回車)
則能給a賦整數14,給b賦整數22,給x賦字符x,給y賦字符y的正確程序段是________。
(知識點4.2)
A)scanf(“%d%d”,&a,&b);
x=getchar();y=getchar();
B)scanf(“%d%d%c%c”,&a,&b,&x,&x,&y,&y);
C)scanf(“%d%d%c%c%c%c”,&a,&b,&x,&x,&y,&y);
D)scanf(“%d%d%c%c”,&a,&b,&x,&y);
6.下列轉義字符不正確的是_______。(知識點3.5)
A)’’B)’’C)’053’D)’0’
7.下列選項可作為C語言賦值語句的是_______。(知識點4.2)
A)x=3,y=5B)a=b=6C)i--;D)y=int(x);
8.當c的值不為0時,下列選項中能正確將c的值賦給變量a、b的是_______。(知識點
5.2)
A)c=b=a;B)(a=c)‖(b=c);C)(a=c)&&(b=c);D)a=c=b;
9.有以下程序:
main()
{unsignedinta;
intb=-1;
a=b;
printf(“%u”,a);}
該程序運行后的輸出結果是_______。(知識點4.5)
A)-1B)65535C)32767D)-32768
10.若x、b、m、n均為int型變量,執行下面語句后b的值為_______。(知識點3.10)
m=20;n=6;
x=(--m==n++)?--m:++n;
b=m++;
A)11B)6C)19D)18
11.有以下程序:
main()
{inta=111,b=222;
printf(“%dn”,a,b);
}
該程序運行后的輸出結果是_______。(知識點4.5)
A)錯誤信息B)111C)222D)111,222
12.以下程序的輸出結果是_______。(知識點4.5)
main()
{inta=2,c=5;
printf(“a=%%%d,b=%%%dn”,a,c);}
A)a=%2,b=%5B)a=2,b=5C)a=%%%d,b=%%%dD)a=%%d,b=%%d
13.對于浮點型變量f,能實現對f中的值在小數點后第三位進行四舍五入的表達式是
_______。(知識點3.8)
A)f=(f*100+0.5)/100.0B)f=(f*100+0.5)/100
C)f=(int)(f*100+0.5)/100.0D)f=(f/100+0.5)*100
14.設a=5,b=6,c=7,d=8,m=2,n=2,執行(m=a>b)&&(n=c>d)后m,n的值為______。(知識點
5.2)
A)2,2B)2,0C)0,2D)0,0
15.語句printf(“%dn”,strlen(“asdnx121”));的輸出結果是______。(知識點7.3)
A)9B)11C)7D)8
16.有以下程序:
main()
{
inty=1234;
printf(“y=%6d”,y);
printf(“y=%+06dn”,y);
}
該程序的運行結果是______。(知識點4.5)
A)y=1234y=001234B)y=1234y=+01234
C)y=1234y=+01234D)y=1234y=1234
17.語句:printf(“%d”,!9);的輸出結果是______。(知識點5.2)
A)0B)1C)有語法錯誤,不能執行D)-9
18.已有定義語句:intx=6,y=4,z=5;執行以下語句后,能正確表示x、y、z值的選項是
______。(知識點5.3)
if(x
A)x=4,y=5,z=6B)x=4,y=6,z=6
C)x=4,y=5,z=5D)x=5,y=6,z=4
19.下列選項中屬于正確的switch語句的是______。(知識點5.4)
A)switch(1.0)B)swicth(1)
{ca1.0:printf(“An”);{ca1:printf(“An”);
ca2.0:printf(“Bn”);}ca2:printf(“Bn”);}
C)switch((int)(1.0+2.5))D)switch(“a”);
{ca1:printf(“An”);{ca“a”:printf(“An”);
ca1+2:printf(“Bn”);}ca“b”:printf(“Bn”);}
20.若k為int型變量,以下語句段執行后的輸出結果是______。(知識點5.3)
k=-3;
if(k<=0)printf(“
”)
elprintf(“****”);
A)
B)****C)
****D)有語法錯誤,不能執行
21.當a=2,b=3,c=4,d=5時,執行下面一段程序后x的值為_____。(知識點5.3)
if(a>b)
if(c
el
if(a
if(b>d)x=2;
elx=3;
elx=4;
elx=5;
A)2B)3C)4D)5
22.下列程序的運行結果是________。(知識點6.3)
main()
{inty=10;
do{y--;}while(--y);
printf(“%dn”,y--);}
A)-1B)1C)8D)0
23.下列程序的運行結果是________。(知識點6.5)
#include
main()
{
inti;
for(i=1;i<=5;i++)
{if(i%2)printf(“*”);
elcontinue;
printf(“#”);
}
printf(“$n”);
}
A)*#*#$B)#*#*#*$C)*#*#*#$D)***#$
24.若x是int型變量,且有下面的程序片段:(知識點6.5)
for(x=5;x<8;x++)
printf((x%2)?(“**%d”):(“##%dn”),x);
該程序片段的輸出結果是_______。
A)**5##6B)##5C)##5**6##7D)**5##6**7
**7**6##7
25.有以下程序:
main()
{inta=1,b=0;
switch(a)
{ca1:switch(b)
{ca0:printf(“****”);break;
ca1:printf(“
”);break;}
ca2:printf(“$$$$”);break;}
該程序的輸出結果是________。(知識點5.4)
A)****B)****$$$$C)****
$$$$D)
$$$$
26.下列程序段的輸出結果是_______。(知識點6.4)
intx=3;
do{printf(“%3d”,x-=2);}
while(!(--x));
A)1B)30C)1-2D)死循環
27.有以下程序,其中x、y為整型變量;
for(x=0,y=0;(x<=1)&&(y=1);x++,y--);
printf(“x=%d,y=%d”,x,y);
該程序的輸出結果是_____。(知識點6.5)
A)x=2,y=0B)x=1,y=0C)x=1,y=1D)x=0,y=0
28.有以下程序段:
intn=0,p;
do{scanf(“%d”,&p);n++;}while(p!=12345&&n<3);
此處do-while循環的結束條件是_____。(知識點6.4)
A)p的值不等于12345并且n的值大于3
B)p的值等于12345并且n的值大于等于3
C)p的值不等于12345或者n的值小于3
D)p的值等于12345或n的值大于等于3
29.在下述程序中,if(i>j)語句共執行的次數是_____。(知識點6.5)
main()
{inti=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf(“%d”,s);
break;
}
s+=i;
}
}
A)4B)7C)5D)6
30.以下程序的功能是:按順序讀入10名學生和4門課程的成績,計算出每位學生的平均
分進行輸出,但運行結果不正確。
main()
{intn,k;floatscore,ave;
ave=0.0;
for(n=1;n<=10;n++)
{for(k=1;k<=4;k++)
{scanf(“%f”,&score);
ave+=score/4;}
printf(“NO%d:%fn”,n,ave);}
}
造成程序計算結果錯誤的語句行是_____。(知識點6.6)
A)ave=0.0;B)for(n=1;n<=10;n++)
C)ave+=score/4;D)printf(“NO%d:%fn”,n,ave);
31.若有以下定義:chars[10]={‘a’,’b’,’c’,’0’,’0’,’2’,’x32’,’0’};執行語句printf(“%d”,strlen(s));
的結果是_____。(知識點7.3)
A)3B)4C)8D)10
32.設有數組定義:chararray[]=“abcdef”;則數組array所占的空間為_____。(知識點7.3)
A)4個字節B)5個字節C)6個字節D)7個字節
33.有以下程序:
main()
{charstr[][10]={“China”,“Beijing”},*p=str;
printf(“%sn”,p+10);}
該程序運行后的輸出結果是_____。(知識點10.4)
A)ChinaB)BeijingC)ngD)ing
34.閱讀下面程序,該程序段的功能是_____。(知識點7.1)
#include
main()
{intc[]={23,1,56,234,7,0,34},i,j,t;
for(i=1;i<7;i++)
{t=c[i];j=i-1;
while(j>=0&&t>c[j]){c[j+1]=c[j];j--;}
c[j+1]=t;}
for(i=0;i<7;i++)printf(“%d”,c[i]);
putchar(’n’);
}
A)對數組元素的升序排列B)對數組元素的降序排列
C)對數組元素的倒序排列D)對數組元素的隨機排列
35.下列程序的輸出結果是_____。(知識點7.2)
main()
{intn[3][3],i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)n[i][j]=i+j;
for(i=0;i<2;i++)
for(j=0;j<2;j++)n[i+1][j+1]+=n[i][j];
printf(“%dn”,n[i][j]);
}
A)14B)0C)6D)值不確定
36.下列函數調用語句中含有______個參數。(知識點8.3)
func((f1,f2),(f2,f3,f4),f5)
A)3B)4C)5D)6
37.下列程序的運行結果是_______。(知識點7.3)
#include
main()
{char*p1,*p2,ch[20]=“ABCDEFabcdef”;
p1=“1234”;p2=“abcd”;
strcpy(ch+1,p2+1);strcpy(ch+3,p1+3);
pintf(“%sn”,ch);}
A)Abc4EFabcdeB)Abc4EFC)AbcdEFD)Abc4
38.下列程序的運行結果是_______。(知識點8.6)
#include
intf(inta)
{switch(a)
{ca0:return0;
ca1:ca2:return1;
}
return(f(a-2)+f(a-3));
}
main()
{intb;
b=f(10);
printf(“b=%dn”,b);
}
A)12B)10C)9D)8
39.有以下程序:
fun(intn)
{if(n==1||n==2)return2;
returns=n-fun(n-2);}
main()
{printf(“%dn”,fun(7));}
該程序運行后的輸出結果是_____。(知識點8.6)
A)1B)2C)3D)4
40.下列程序中函數sort的功能是對a數組中的數據進行由大到小的排序:
voidsort(inta[],intn)
{inti,j,t;
for(i=0;i
for(j=i+1;j
}
main()
{intaa[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”);
}
該程序運行后的輸出結果是_____。(知識點8.4)
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,
41.下列程序的運行結果是_____。(知識點8.3)
main()
{inta=3,y;
y=fn(a,a++);
printf(“%d”,y);}
intfn(x,c)
{intb;
if(x
elif(x==c)b=0;
elb=-1;
return(b);
}
A)3B)-1C)1D)0
42.下列程序的運行結果是_____。(知識點7.3)
main()
{chararr[2][4];
strcpy(arr,“you”);strcpy(arr[1],“me”);
printf(“%sn”,arr);}
A)youmeB)youC)meD)arr
43.下列程序的輸出結果是_____。(知識點8.8)
intf()
{staticinti=0;
ints=1;
s+=i;i++;
returns;}
main()
{inti,a=0;
for(i=0;i<5;i++)a+=f();
printf(“%dn”,a);}
A)20B)24C)25D)15
44.程序中對fun函數有如下說明:
void*fun();
此說明的含義是_____。(知識點10.6)
A)fun函數無返回值
B)fun函數的返回值可以是任意的數據類型
C)fun函數的返回值是無值型的指針類型
D)指針fun指向一個函數,該函數無返回值
45.設有下列定義:staticintx,*p=&x,*q;
scanf(“%d,%d”,p,q);
若輸入3,4,則x的值為_____。(知識點8.8)
A)3B)4C)0D)無法確定
46.設有以下程序:
intfun(char*s)
{intn=0;
while(*s){n++;s++;}
returnn;}
main()
{chary[]=“this_is_an_example。”;
printf(“%dn”,fun(&y[6]));
}
該程序的輸出結果是_____。(知識點:10.4)
A)12B)13C)14D)16
47.下列程序的功能是_____。(知識點:10.4)
intfun(char*a)
{char*b=a;
while(*b)b++;
{returnb-a;}
}
A)比較兩個字符串的大小B)字符串的復制
C)計算字符串的長度D)字符串的連接
48.下列程序的輸出結果是_______。(知識點10.2)
main()
{
intk=3,m=5,n=7;
int*pk=&k,*pm=&m,*p;
*(p=&n)=*pk*(*pm);
printf("%dn",n);
}
A)5B)7C)15D)21
49.下列程序的執行結果是_______。(知識點10.3)
main()
{chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
printf(“%d”,*--p);}
A)非法B)a[4]的地址C)5D)4
50.以下函數返回a所指的數組中最小值所在的下標值:
fun(int*a,intn)
{inti,j=0,p;
p=j;
for(i=j;i
return(p);}
在下劃線處應填入_______。(知識點10.2)
A)i=pB)a[p]=a[i]C)p=jD)p=i
51.下列程序的運行結果是_______。(知識點10.2)
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf(“%d%d”,a,b);
}
A)63B)36C)編譯出錯D)00
52.有如下程序:
#definef(x)x*x
main()
{inti;
i=f(4+4)/(2+2);
printf(“%dn”,i);}
該程序執行后的輸出結果是_______。(知識點9.1)
A)28B)21C)16D)4
53.下列程序的輸出結果是_______。(知識點11.4)
structtt;
{intn1;charn2;floatn3;
unionuu{intu1[2];charu2[2];}su;
};
main()
{printf(“%dn”,sizeof(structtt));}
A)11B)12C)7D)9
54.下列程序的輸出結果是_______。(知識點11.6)
structLH
{intn;structLH*m;}p[4];
main()
{inti;
for(i=0;i<3;i++)
{p[i].n=i;p[i].m=&p[i+1];}
p[i].m=p;
printf(“%d,%dn”,(p[1].m)->n,p[3].m->n);
}
A)1,2B)1,3C)2,0D)程序出錯
55.下列程序的輸出結果是_______。(知識點11.6)
structst
{intx;int*y;}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{p=aa;
printf(“%d”,++p->x);
printf(“%d”,(++p)->x);
printf(“%d”,++(*p->y));}
A)102020B)506021C)516021D)607031
56.字符0的ASCII碼的十進制數為48,且數組的第0個元素在低位,則以下程序的執行結
果是_______。(知識點11.8)
#include
main()
{union
{inti[4];
longk;
charc[6];
}a,*s=&a;
s->i[0]=0x39;
s->i[1]=0x38;
printf(“%cn”,s->c[0]);
}
A)5B)3C)6D)9
57.下列程序的運行結果是_______。(知識點12.2)
main()
{unsignedc1=0xff,c2=0x00;
c1=c2|c1>>2;c2=c1^0236;
printf(“%x,%xn”,c1,c2);
}
A)0x3f,0XA1B)3f,A1C)ffff,61D)3f,a1
58.若有運算符<<,sizeof,^,&=,則它們按優先級由高至低的排列次序正確的是_______。
(知識點3.8)
A)sizeof,&=,<<,^B)sizeof,<<,^,&=
C)^,<<,sizeof,&=D)<<,^,&=,sizeof
59.有以下程序:
#include
voidfun(char*fname,char*st)
{FILE*myf;inti;
myf=fopen(fname,“w”);
for(i=0;i
fclo(myf);
}
main()
{fun(“test.t”,“newworld”);fun(“test.t”,“hello,”);}
執行該程序后,文件test.t中的內容是_______。(知識點13.4)
A)hello,B)newworldhello,C)newworldD)hello,rld
60.有以下程序:
#include
main()
{FILE*fp;inti=20,j=30,k,n;
fp=fopen(“”,“w”);
fprintf(fp,“%dn”,i);fprintf(fp,“%dn”,j);
fclo(fp);
fp=fopen(“”,“r”);
fscanf(fp,“%d%d”,&k,&n);printf(“%d%dn”,k,n);
fclo(fp);}
該程序運行后的輸出結果是_______。(知識點13.4)
A)2030B)2050C)3050D)3020
二、多選題(共20小題,每題2分,共40分)
1.下列符號串中,不屬于C語言合法標識符的有_____。(知識點3.2)
A)_1_2_3B)a-b-cC)intD)9cd
2.當把下列四個表達式用作if語句的控制表達式時,含義相同的選項有_______。(假設k>0)
(知識點5.3)
A)k%2B)k%2==1C)(k%2)!=0D)!k%2==0
3.已有定義inta=-2;和輸出語句printf(“%8lx”,a);下列敘述不正確的有_______。(知
今識點4.5)
A)整型變量的輸出形式只有%d一種
B)%x是格式符的一種,它可以適用于任何一種類型的數據
C)%x是格式符的一種,其變量的值按十六進制輸出,但%8lx是錯誤的
D)%8lx不是錯誤的格式符,其中數字81規定了輸出字段的寬度
4.下列選項中,沒有構成死循環的程序段有_____。(知識點6.7)
A)inti=100;B)for(;;)
while(1)
{i=i%100+1;
if(i>=100)break;}
C)intk=0;D)ints=36;
do{++k;}while(k>=0);while(s);--s;
5.t為int類型,進入下面的循環之前,t的值為0:
while(t=1)
{……….}
則下列敘述不正確的有________。(知識點6.3)
A)循環控制表達式的值為0B)循環控制表達式的值為1
C)循環控制表達式不合法D)循環有可能是個無限循環
6.下列判斷正確的是_______。(知識點10.3)
A)char*a=“china”;等價于char*a;*a=“china”;
B)charstr[6]={“china”};等價于charstr[]={“china”};
C)char*s=“china”;等價于char*s;s=“china”;
D)charc[4]=“abc”,d[4]=“abc”;等價于charc[4]=d[4]=“abc”;
7.若變量已正確定義,以下能正確計算1+2+3+4+5的程序段有_____。(知識點:6.7)
A)i=1;s=1;B)i=0;s=0;
dodo
{s=s+i;i++;{i++;s=s+i;
while(i<5);while(i<5);
C)i=1;s=0;D)i=0;s=0;
dodo
{s=s+i;i++;{s=s+i;i++;
while(i<6);while(i<=5);
8.下面程序把數組元素中的最小值放入a[0]中,則在if語句中條件表達式可以是______。
(知識點10.2)
main()
{inta[10]={5,2,9,6,7,1,12,8,23,0},*p=a,i;
for(i=0;i<10;i++,p++)
if(______)*a=*p;
printf(“%d”,*a);
}
9.設有如下定義:
char*s[2]={“abcd”,“ABCD”};
則下列說法正確的有_____。(知識點:10.3)
A)s數組元素的值分別是“abcd”和“ABCD”兩個字符串的首地址
B)s是指針數組名,它含有兩個元素分別指向字符型一維數組
C)s數組的兩個元素分別存放的是含有四個字符的一維字符數組中的元素
D)s數組的兩個元素中分別存放了字符’a’和’A’的地址
10.以下有關字符串賦值、賦初值的語句錯誤的有_______。(知識點10.4)
A)charsz[2][40];sz[1]=“string1”;
B)char*sz[2];sz[1]=“string2”;
C)charsz[][40]=“string3”;
D)char*sz[]=“string4”;
11.若有以下說明:inta[5][9];則下列選項中對數組元素a[i][j]的引用錯誤的有_______。
(0<=i<4,0<=j<9)(知識點10.3)
A)*(&a[0][0]+9*i+j)B)*(a+i)(j)C)*(*(a+i)+j)D)*(a[i]+j)
12.若有定義:char*st=“howareyou!”;下面程序段正確的有_____。(知識點:7.3)
A)chara[11],*p;strcpy(p=a+1,&st[4]);
B)chara[11];strcpy(++a,st);
C)chara[11];strcpy(a,st);
D)chara[],*p;strcpy(p=&a[1],st+2);
13.設有以下說明語句:
Structstu
{inta;
floatb;
}stutype;
則下列敘述正確的有_______。(知識點11.2)
A)struct是結構體類型的關鍵字
B)structstu是用戶定義的結構體類型
C)stutype是用戶定義的結構體類型名
D)a和b都是結構體成員名
14.若已建立如圖所示的單向鏈表:
mn
Z
x0
a
s
infolinkinfolinkinfolink
則下列選項中能將s所指的結點插入到鏈表尾部,構成新的單項鏈表的語句組有_______。
(知識點11.7)
A)s->link=a->link->link;a->link->link=s;
B)a=a->link;a->link=s;s->link=NULL;
C)s->link=NULL;a=(*a).link;(*a).link=s;
D)a=a->link;s->link=a->link;a->link=s->link;
15.設有定義語句:intx[6]={2,4,6,8,5,7},*p=x,i;
要求依次輸出x數組6個元素中的值,下列選項中能完成次操作的語句有_______。(知識點
10.3)
A)for(i=0;i<6;i++)printf(“%2d”,*(p++));
B)for(i=0;i<6;i++)printf(“%2d”,*(p+i));
C)for(i=0;i<6;i++)printf(“%2d”,*p++);
D)for(i=0;i<6;i++)printf(“%2d”,(*p)++);
16.下列敘述正確的有_____。(知識點8.5)
A)函數可以嵌套定義,但不能嵌套調用
B)函數可以嵌套調用,也可以嵌套定義
C)函數不可以嵌套定義,但可以遞歸調用
D)函數可以嵌套調用,但不能嵌套定義
17.下列敘述不正確的有_____。(知識點8.8)
A)全局變量可以為本文件中其他函數所調用,編譯時分配在靜態存儲區
B)局部變量只在本函數范圍內有效,形式參數屬于局部變量
C)局部變量如沒有被說明為靜態的存儲類別,則會被分配動態存儲空間,存儲在動態存儲
區中
D)局部靜態變量在函數調用結束后依然存在,但其他函數不能引用它
18.若變量已正確定義,要求程序段完成求5!的計算,下列選項中不能完成此操作的程序
段有____(知識點6.7)
A)for(i=1,p=1;i<=5;i++)p*=i;
B)for(i=1;i<=5;i++){p=1;p*=i;}
C)i=1;p=1;while(i<=5)p*=i;i++;
D)i=1;p=1;do{p*=i;i++;}while(i<=5);
19.若有以下說明,則對strcpy庫函數的調用不正確的有_______。(知識點10.4)
char*str1=“copy”,str2[10],*str3=“abcde”,*str4,*str5=“hijk”
A)strcpy(str2,str1);B)strcpy(str3,str1);
C)strcpy(str4,str1);D)strcpy(str5,str1);
20.下列選項中可以將變量n清零的表達式有_______。(知識點12..2)
A)n=n&~nB)n=n&0C)n=n^nD)n=n|n
C語言程序設計預賽題答案
一、單選題
ACADCBCCBC
617181920
BACCCBACCD
227282930
DDCABCADDA
337383940
BDBBCADCCC
447484950
BBDCABCCCD
557585960
BBACCDDBAA
二、多選題
BCDABCABCACACBCBCDBDABDACD
617181920
BAABDABCABCCDABCDBCBCABC
本文發布于:2023-03-03 02:11:44,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/1677780704119871.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:c語言筆試題.doc
本文 PDF 下載地址:c語言筆試題.pdf
| 留言與評論(共有 0 條評論) |