26)下面程序的輸出結果是__________。
#define p1(x)printf(x)
main()
{
char d[]。"p";
pl(d);
p1("d");
}
a)pd b)d"d"
c)"p"d d)"p""d"
答案:a
評析:帶參數(shù)的宏定義的一般形式為:#define宏名(參數(shù)表)字符串
程序中的pl(d);經(jīng)宏置換后為printf(d);,所以輸出字符串p;程序中的pl("d");經(jīng)宏置換后printf("d")。
(27)以下選項中,能定義s為合法的結構體變量的是__________。
a) typedef struct abc
{ double a;
charb[10];
}s;
b) struct
{ double a;
char b[10];
}s;
c) struct abc
{ double a;
char b[10];
}
abc s:
d) typedef abc
{ double a;
char b[10];
}
abc s:
答案:b
評析:定義一個結構體類型的變量,可采用三種方法:
①先定義結構體類型,再定義變量名;②在定義類型的同時定義變量:③直接定義結構類型變量,即不出現(xiàn)結構體名:選項b符合第三種定義方法。
(28)請讀程序:
#include
#include
main()
{
char*s1="abcdef", *s2="ab";
s1++; s2++;
printf("%d、n",strcmp(sl,s2));
}
上面程序的輸出結果是________。
a)正數(shù) b)負數(shù)
c)零 d)不確定的值
答案:a
評析:strcmp(x1,x2)是串比較函數(shù),本題中"s1"、"s2"分別表示這兩個串中第一個字符的地址,s1++和s2++是將指針指向串的第二個字符,則*sl為"bcdef’’,*s2為"b"。在字符串比較中,大小的確定是各個字符串相應位置字符的ascii碼值的大小決定的, sl>s2,返回值為正數(shù)。
(29)請讀程序:
#include
main()
{
int a=5,b=7,c=9;
printf("%d,%d,",a,b,c);
printf("%d,%d,%d,"a,b);
}
上面程序的輸出結果是________。
a)5,7,9,5,7 b)5,7,5,7
c)5,7,不定,7,9 d)5,7,5,7,不定
答案:d
評析:printf函數(shù)按格式控制符的個數(shù)輸出表列中對應的數(shù)據(jù),若輸出表列的個數(shù)大于格式控制符個數(shù),則輸出與格式控制符對應的輸出表列的數(shù)據(jù),輸出表列中多的則省略;若格式控制符個數(shù)大于輸出表列的個數(shù),則輸出與格式控制符對應的輸出表列的數(shù)據(jù),格式控制符多的部分輸出的數(shù)據(jù)是隨機的。
(30)請讀程序:
#inciude
func(int a,int b){
int c;
c=a+b:
return c:
}
main(){
int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf("%d\n",r);
}
上面程序的輸出結果是________。
a)ll b)20
c)2l d)31
答案:c
評析:函數(shù)func()的作用是返回兩個形參的和,第一個形參是x、y分別自減和自增后的和,其中(x--,y++,x+y)是一個逗號表達式,它的值應該等于x+y,所以整個表達式(x--,y++,x+y)的值為13,而第二個形參的值為8(根據(jù)語法規(guī)則,應當先使用,后自增),所以func()的返回值為13+8=21。
(31)請讀程序:
#include
main()
{
int a,b;
for(a=l,b=1;a<=100;a十+){
if(b>=20)break;
if(b%3==1){b+=3;continue;}
b-=5:
}
printf("%d\n",a);
}
上面程序的輸出結果是_________。
a)7 b)8
c)9 d)10
答案:b
評析:break語句的作用是用于跳出循環(huán)體; continue語句的作用是用于跳出本次循環(huán)。執(zhí)行第一次循環(huán)時,(b%3==1)為真,b=4,繼續(xù)下一次循環(huán),如此反復,當b=22時結束循環(huán),共循環(huán)8次,即a=8。
(32)設變量x為float型且已經(jīng)賦值,則以下語句中能夠將x中的數(shù)值保留到小數(shù)點后面兩位,并將第三位四舍五入的是__________。
a)x=x*100+0.5/100.0
b)x=(x*100+0.5)/100
c)x=(int)(x*100+0.5)/100.0
d)x=(x/100+0.5)*100.0
答案:c
評析:本題通過算術表達式的運算實現(xiàn)小數(shù)位數(shù)保留兩位并四舍五入的操作,其中(int)(x*100+0.5)是指將(x*100+0.5)的值強制轉換成整型。
(33)請讀程序片段(字符串內沒有空格字符):
printf("%d\n",strlen("ats\n012\1\\"));
上面程序片段的輸出結果是____________。
a)ll b)10
c)9 d)8
答案:c
評析:這個語句的目的是輸出"ats\n012\1\\"這個串的長度,在串中"\\"代表一個"\",而"\1"代表數(shù)字1,也占一個字符,"\n"是回車換行符,也占一個字符,加上a、t、s、0、l、2,共9個字符。
(34)運行以下程序后,如果從鍵盤上輸入china撐<回車>,則輸出結果為_________。
#include
main()
{
int v1=0,v2=0;char ch:
while((ch=getchar())!=’#’)
switch(ch)
{
case’a’:
case ’h’:
default:v1++;
case’0’:v2++:
}
printf("%d,%d\n",v1,v2);
}
a)2,0 b)5,0
c)5,5 d)2,5
答案:c
評析:執(zhí)行完一個case后面的語句后,流程控制轉移到下一個case繼續(xù)執(zhí)行。"case常量表達式"只是起語句標號作用,并不是在該處進行條件判斷。在執(zhí)行switch語句時,根據(jù)switch后面表達式的值找到匹配的入口標號,就從此標號開始執(zhí)行下去,不再進行判斷。(35)請選出可用作c語言用戶標識符的一組標識符__________。
a)void b)a3.b3 c)for d)2a
define -123 -abc do
word if case sizeof
答案:b
評析:c語言規(guī)定標識符只能由字母、數(shù)字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。選項a中的void是c語言的關鍵字,不合法;選項c中的case和c語言的關鍵字重名,不合法;選項d中的2a是數(shù)字打頭而且sizeof和c語言的關鍵字重名,不合法。
(36)下面能正確定義數(shù)組,并正確賦值的語句是_________。
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},{34}}
答案:d
評析:可以用下面的方法對二維數(shù)組初始化:
l、分行給二維數(shù)組賦初值。如int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
2、可以將所有數(shù)據(jù)寫在一個花括弧內,按數(shù)組排列的順序對各元素賦初值。如:
int a[3][4]={1,2,3,4,5,6,7,8;9,10,1 l,12);
3、可以對部分元素賦初值:int a[3][4]={{1},{5},{9}};
它的作用是只對各行第一列的元素賦初值,其余元素值自動為0。
4、如果對全部元素都賦初值(即提供全部初始數(shù)據(jù)),則定義數(shù)組時對第一維的長度可以不指定,但第二維的長度不能省。如:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
與下面的定義等價:int a[][4]={1,2,3,4,5,6,7,8,9,10,1l,12};
(37)請選出以下程序的輸出結果___________。
#include
sub(int*s,int y)
{ static int t=3;
y=s[t];t--;
}
main()
{ int a[]={1,2,3,4},i,x=0;
for(i=0;i<4;i++){
sub(a,x);printf("%d",x);)
printf("\n");
}
a)1234 b)432l
c)0000 d)4444
答案:c
評析:x作為函數(shù)sub()的實參時,函數(shù)對x值的改變沒有返回主函數(shù),并不能使得x的值變化,所以在打印時,x的值是始終不變的,即為0。
(38)假定下面程序可執(zhí)行文件名prg.exe,則該程序所在的子目錄下輸入命令行:prg hello
good<回車>后,程序的輸出結果是_________。
main(int argc,char*argv[])
{
int i;
for=1;i }
a)heuo good b)hg
c)hel d)hellogood
答案:b
評析:帶參數(shù)的main()函數(shù)常用形式為:main(int argc,char.*argv[]),其中,整型變量argc用來記錄命令行中的參數(shù)個數(shù)。參數(shù)的個數(shù)由c程序運行時自動計算出來。字符型指針數(shù)組argv的第一個元素存放命令名,其后各個元素依次存放命令行中各個參數(shù)的首地址,數(shù)組的大小由argc確定。for循環(huán)語句實現(xiàn)輸出各參數(shù)的第一個字母。
(39)若有以下說明和語句,請選出哪個是對c數(shù)組元素的正確引用_________。
int c[4][5],(*cp)[5];
cp=c;
a)cp+l b)*(cp+3)
c)*(cp+1)+3 d)*(*cp+2)
答案:d
評析:cp=c這個語句是將數(shù)組第0行的地址賦給了cp。cp+1使指針指向二維數(shù)組c的第一行;+(cp+3)是數(shù)組c的第三行的第0列的地址值;+(cp+1)+3是數(shù)組c的第一行第三列的地址值。 (40)下列選項中不能正確定義結構體的是_________。
a)typede fstruct b)struct color c1
{ int red; { int red;
int green; int green;
int blue; int blue;
}color; };
color cl;
c)struct color d)struct
{ int red; { int red;
int green; int green;
int blue; int blue;
}cl; }cl;
答案:b
評析:將一個變量定義為標準類型與定義為結構體類型不同之處在于:后者不僅要求指定變量為結構體類型,而且要求指定為某一特定的結構體類型(例如,struct color),不能只指定結構體名。其中可以不出現(xiàn)結構體名,答案d就是缺省結構體名的情況。而變量名列表必須放在成員列表后面,所以b答案不能正確將c1定義為結構體變量。
(41)設有以下語句
char a=3,b=6,c;
c=a^b<<2:
則c的二進制值是_________。
a)00011011 b)00010100
c)00011100 d)00011000
答案:a
評析:"<<"是c語言中規(guī)定的左移運算符,n是異或運算符,所以,c的二進制值應為0001 1011。
(42)設有如下定義
struct ss
{ char name[10];
int age;
char sex;
}std[3],*p=std;
下列各輸入語句中錯誤的是__________.
a)scanf("%d",&(*p).a(chǎn)ge);
b)scanf("%s",&std.name);
c)scanf("%c",&std[o].sex);
d)scanf("%c",&(p->sex));
答案:b
評析:在c語言中,結構體變量的引用有三種等價方式:
1、結構體變量.成員名;2、(*p).成員名;3、p->成員名。
因為std.name是字符數(shù)組名,-本身代表地址,其前面不應該使用"&"符號,所以選項b錯誤。
(43)設有
static char str[]="beijing";
則執(zhí)行
printf(%d\n",strlen(strcpy(str,"china")));
后的輸出結果為__________。
a)5 b)7
c)12 d)14
答案:a
評析:在執(zhí)行printf()函數(shù)前,數(shù)組str的長度是7,但是當使用strcpy()函數(shù)將新的值賦給str后,strlenr)函數(shù)返回的應當是現(xiàn)在的str字符串的字符個數(shù),即是5。
(44)下列程序段中,不是死循環(huán)的是__________。
a)int i=100; b)unsigned k=0;
while(1) do
{ {
i=i%100+l: ++k;
if(i>=100)break; }
} while(k>=0);
c)for(;;); d)int s=3379;
while(s++%2+s%2)s++;
答案:a
評析:當表達式為非0值時,執(zhí)行while語句中的內嵌語句,可用break語句跳出循環(huán),用continue語句結束本次循環(huán)。選項a不是死循環(huán),當i=100時跳出循環(huán)。選項c為空循環(huán)語句。
(45)以下程序的輸出結果是________。
#include
main()
{ int i;
for(i=l;i<5;i++){
if(i%2)print引剃’);
else continue;
printf("≠f");
}
printf("$\n");
}
a)*#*#*#$ b)#*#*#*$
c)*#*#$ d)#*#*$
答案:c
評析:當i不可以整除2時打印"*",然后打印"拌",不能整除2則執(zhí)行continue,跳過printf("#"):語句,結束本次循環(huán),返回到循環(huán)的起始點。當循環(huán)結束后,打印"$"。 (46)庫函數(shù)strcpy用以復制字符串,若有以下定義和語句:
char strl[]="china",str2[10],*str3,*str4="china";
則對庫函數(shù)strcpy的正確的調用是_________。
a)strcpy(strl,"people");b)strcpy(str2,"people");
c)strcpy(str3,"people");d)strcpy(str4,"people");
答案:b
評析:strcpy(字符數(shù)組1,字符串2)其作用是將字符串2復制到字符數(shù)組l中去。
注:(1)字符數(shù)組l必須定義得足夠大;(2)"字符數(shù)組1"必須寫成數(shù)組名的形式; (3)復制時連同字符串后面的’\0’一起復制到字符數(shù)組1中。
(47)有以下程序
#include
main()
{int c;
while((c=getchar())!=’\n’){
switch(c-’2’){
case 0:case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c+2);break;}
}
}
從第一列開始輸入以下數(shù)據(jù),↙代表一個回車符。
2473↙
程序的輸出結果是_________。
a)668977 b)668966
c)66778777 d)6688766
答案:a
評析:getchar()函數(shù)是從鍵盤接受一個字符輸入;當用戶鍵入的字符不是回車符時,會進入一個多分支選擇語句,根據(jù)c-’2’的值進行分支選擇;putchar()是在屏幕上打印一個字符,最后的結果應當為668977。
(48)下面程序的輸出結果是_________。
union un
{ int a[4];
long b:
char c[6];}
main()
{
union un u:
printf("%d%d",sizeof(u),sizeof(u.a(chǎn)));
}
a)82 b)88
c)188 d)182
答案:b
評析:sizeof函數(shù)計算已知類型所占的字節(jié)數(shù)。共用體變量所占的內存長度等于最長的成員的長度。
(49)以下程序的輸出結果是________。
main()
{ int w=5;fun(w);printf("\n");}
fun(int k)
{ if(k>0) fun(k-1);
printf("%d.t,k);
}
a)5 4 3 2 l b)0 1 2 3 4 5
c)l 2 3 4 5 d)5 4 3 2 l 0
答案:b
評析:函數(shù)的遞歸調用就是在調用一個函數(shù)的過程中又出現(xiàn)直接或間接地調用該函數(shù)本身。fun函數(shù)共被調用6次,即fun(5)、fun(4)、fun(3)、fun(2)、向n(1)、fun(0)。其中fun(5)是main函數(shù)調用的。
(50)若巾是指向某文件的指針,且已讀到此文件的末尾,則函數(shù)feof(f1))的返回值是
a)eof b)o
c)非零值 d)null
答案:c
評析:函數(shù)feof是用來判斷文件是否已讀到末尾,如果已讀到末尾則返回非零值,否則返回o。
#define p1(x)printf(x)
main()
{
char d[]。"p";
pl(d);
p1("d");
}
a)pd b)d"d"
c)"p"d d)"p""d"
答案:a
評析:帶參數(shù)的宏定義的一般形式為:#define宏名(參數(shù)表)字符串
程序中的pl(d);經(jīng)宏置換后為printf(d);,所以輸出字符串p;程序中的pl("d");經(jīng)宏置換后printf("d")。
(27)以下選項中,能定義s為合法的結構體變量的是__________。
a) typedef struct abc
{ double a;
charb[10];
}s;
b) struct
{ double a;
char b[10];
}s;
c) struct abc
{ double a;
char b[10];
}
abc s:
d) typedef abc
{ double a;
char b[10];
}
abc s:
答案:b
評析:定義一個結構體類型的變量,可采用三種方法:
①先定義結構體類型,再定義變量名;②在定義類型的同時定義變量:③直接定義結構類型變量,即不出現(xiàn)結構體名:選項b符合第三種定義方法。
(28)請讀程序:
#include
#include
main()
{
char*s1="abcdef", *s2="ab";
s1++; s2++;
printf("%d、n",strcmp(sl,s2));
}
上面程序的輸出結果是________。
a)正數(shù) b)負數(shù)
c)零 d)不確定的值
答案:a
評析:strcmp(x1,x2)是串比較函數(shù),本題中"s1"、"s2"分別表示這兩個串中第一個字符的地址,s1++和s2++是將指針指向串的第二個字符,則*sl為"bcdef’’,*s2為"b"。在字符串比較中,大小的確定是各個字符串相應位置字符的ascii碼值的大小決定的, sl>s2,返回值為正數(shù)。
(29)請讀程序:
#include
main()
{
int a=5,b=7,c=9;
printf("%d,%d,",a,b,c);
printf("%d,%d,%d,"a,b);
}
上面程序的輸出結果是________。
a)5,7,9,5,7 b)5,7,5,7
c)5,7,不定,7,9 d)5,7,5,7,不定
答案:d
評析:printf函數(shù)按格式控制符的個數(shù)輸出表列中對應的數(shù)據(jù),若輸出表列的個數(shù)大于格式控制符個數(shù),則輸出與格式控制符對應的輸出表列的數(shù)據(jù),輸出表列中多的則省略;若格式控制符個數(shù)大于輸出表列的個數(shù),則輸出與格式控制符對應的輸出表列的數(shù)據(jù),格式控制符多的部分輸出的數(shù)據(jù)是隨機的。
(30)請讀程序:
#inciude
func(int a,int b){
int c;
c=a+b:
return c:
}
main(){
int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf("%d\n",r);
}
上面程序的輸出結果是________。
a)ll b)20
c)2l d)31
答案:c
評析:函數(shù)func()的作用是返回兩個形參的和,第一個形參是x、y分別自減和自增后的和,其中(x--,y++,x+y)是一個逗號表達式,它的值應該等于x+y,所以整個表達式(x--,y++,x+y)的值為13,而第二個形參的值為8(根據(jù)語法規(guī)則,應當先使用,后自增),所以func()的返回值為13+8=21。
(31)請讀程序:
#include
main()
{
int a,b;
for(a=l,b=1;a<=100;a十+){
if(b>=20)break;
if(b%3==1){b+=3;continue;}
b-=5:
}
printf("%d\n",a);
}
上面程序的輸出結果是_________。
a)7 b)8
c)9 d)10
答案:b
評析:break語句的作用是用于跳出循環(huán)體; continue語句的作用是用于跳出本次循環(huán)。執(zhí)行第一次循環(huán)時,(b%3==1)為真,b=4,繼續(xù)下一次循環(huán),如此反復,當b=22時結束循環(huán),共循環(huán)8次,即a=8。
(32)設變量x為float型且已經(jīng)賦值,則以下語句中能夠將x中的數(shù)值保留到小數(shù)點后面兩位,并將第三位四舍五入的是__________。
a)x=x*100+0.5/100.0
b)x=(x*100+0.5)/100
c)x=(int)(x*100+0.5)/100.0
d)x=(x/100+0.5)*100.0
答案:c
評析:本題通過算術表達式的運算實現(xiàn)小數(shù)位數(shù)保留兩位并四舍五入的操作,其中(int)(x*100+0.5)是指將(x*100+0.5)的值強制轉換成整型。
(33)請讀程序片段(字符串內沒有空格字符):
printf("%d\n",strlen("ats\n012\1\\"));
上面程序片段的輸出結果是____________。
a)ll b)10
c)9 d)8
答案:c
評析:這個語句的目的是輸出"ats\n012\1\\"這個串的長度,在串中"\\"代表一個"\",而"\1"代表數(shù)字1,也占一個字符,"\n"是回車換行符,也占一個字符,加上a、t、s、0、l、2,共9個字符。
(34)運行以下程序后,如果從鍵盤上輸入china撐<回車>,則輸出結果為_________。
#include
main()
{
int v1=0,v2=0;char ch:
while((ch=getchar())!=’#’)
switch(ch)
{
case’a’:
case ’h’:
default:v1++;
case’0’:v2++:
}
printf("%d,%d\n",v1,v2);
}
a)2,0 b)5,0
c)5,5 d)2,5
答案:c
評析:執(zhí)行完一個case后面的語句后,流程控制轉移到下一個case繼續(xù)執(zhí)行。"case常量表達式"只是起語句標號作用,并不是在該處進行條件判斷。在執(zhí)行switch語句時,根據(jù)switch后面表達式的值找到匹配的入口標號,就從此標號開始執(zhí)行下去,不再進行判斷。(35)請選出可用作c語言用戶標識符的一組標識符__________。
a)void b)a3.b3 c)for d)2a
define -123 -abc do
word if case sizeof
答案:b
評析:c語言規(guī)定標識符只能由字母、數(shù)字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。選項a中的void是c語言的關鍵字,不合法;選項c中的case和c語言的關鍵字重名,不合法;選項d中的2a是數(shù)字打頭而且sizeof和c語言的關鍵字重名,不合法。
(36)下面能正確定義數(shù)組,并正確賦值的語句是_________。
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},{34}}
答案:d
評析:可以用下面的方法對二維數(shù)組初始化:
l、分行給二維數(shù)組賦初值。如int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
2、可以將所有數(shù)據(jù)寫在一個花括弧內,按數(shù)組排列的順序對各元素賦初值。如:
int a[3][4]={1,2,3,4,5,6,7,8;9,10,1 l,12);
3、可以對部分元素賦初值:int a[3][4]={{1},{5},{9}};
它的作用是只對各行第一列的元素賦初值,其余元素值自動為0。
4、如果對全部元素都賦初值(即提供全部初始數(shù)據(jù)),則定義數(shù)組時對第一維的長度可以不指定,但第二維的長度不能省。如:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
與下面的定義等價:int a[][4]={1,2,3,4,5,6,7,8,9,10,1l,12};
(37)請選出以下程序的輸出結果___________。
#include
sub(int*s,int y)
{ static int t=3;
y=s[t];t--;
}
main()
{ int a[]={1,2,3,4},i,x=0;
for(i=0;i<4;i++){
sub(a,x);printf("%d",x);)
printf("\n");
}
a)1234 b)432l
c)0000 d)4444
答案:c
評析:x作為函數(shù)sub()的實參時,函數(shù)對x值的改變沒有返回主函數(shù),并不能使得x的值變化,所以在打印時,x的值是始終不變的,即為0。
(38)假定下面程序可執(zhí)行文件名prg.exe,則該程序所在的子目錄下輸入命令行:prg hello
good<回車>后,程序的輸出結果是_________。
main(int argc,char*argv[])
{
int i;
for=1;i }
a)heuo good b)hg
c)hel d)hellogood
答案:b
評析:帶參數(shù)的main()函數(shù)常用形式為:main(int argc,char.*argv[]),其中,整型變量argc用來記錄命令行中的參數(shù)個數(shù)。參數(shù)的個數(shù)由c程序運行時自動計算出來。字符型指針數(shù)組argv的第一個元素存放命令名,其后各個元素依次存放命令行中各個參數(shù)的首地址,數(shù)組的大小由argc確定。for循環(huán)語句實現(xiàn)輸出各參數(shù)的第一個字母。
(39)若有以下說明和語句,請選出哪個是對c數(shù)組元素的正確引用_________。
int c[4][5],(*cp)[5];
cp=c;
a)cp+l b)*(cp+3)
c)*(cp+1)+3 d)*(*cp+2)
答案:d
評析:cp=c這個語句是將數(shù)組第0行的地址賦給了cp。cp+1使指針指向二維數(shù)組c的第一行;+(cp+3)是數(shù)組c的第三行的第0列的地址值;+(cp+1)+3是數(shù)組c的第一行第三列的地址值。 (40)下列選項中不能正確定義結構體的是_________。
a)typede fstruct b)struct color c1
{ int red; { int red;
int green; int green;
int blue; int blue;
}color; };
color cl;
c)struct color d)struct
{ int red; { int red;
int green; int green;
int blue; int blue;
}cl; }cl;
答案:b
評析:將一個變量定義為標準類型與定義為結構體類型不同之處在于:后者不僅要求指定變量為結構體類型,而且要求指定為某一特定的結構體類型(例如,struct color),不能只指定結構體名。其中可以不出現(xiàn)結構體名,答案d就是缺省結構體名的情況。而變量名列表必須放在成員列表后面,所以b答案不能正確將c1定義為結構體變量。
(41)設有以下語句
char a=3,b=6,c;
c=a^b<<2:
則c的二進制值是_________。
a)00011011 b)00010100
c)00011100 d)00011000
答案:a
評析:"<<"是c語言中規(guī)定的左移運算符,n是異或運算符,所以,c的二進制值應為0001 1011。
(42)設有如下定義
struct ss
{ char name[10];
int age;
char sex;
}std[3],*p=std;
下列各輸入語句中錯誤的是__________.
a)scanf("%d",&(*p).a(chǎn)ge);
b)scanf("%s",&std.name);
c)scanf("%c",&std[o].sex);
d)scanf("%c",&(p->sex));
答案:b
評析:在c語言中,結構體變量的引用有三種等價方式:
1、結構體變量.成員名;2、(*p).成員名;3、p->成員名。
因為std.name是字符數(shù)組名,-本身代表地址,其前面不應該使用"&"符號,所以選項b錯誤。
(43)設有
static char str[]="beijing";
則執(zhí)行
printf(%d\n",strlen(strcpy(str,"china")));
后的輸出結果為__________。
a)5 b)7
c)12 d)14
答案:a
評析:在執(zhí)行printf()函數(shù)前,數(shù)組str的長度是7,但是當使用strcpy()函數(shù)將新的值賦給str后,strlenr)函數(shù)返回的應當是現(xiàn)在的str字符串的字符個數(shù),即是5。
(44)下列程序段中,不是死循環(huán)的是__________。
a)int i=100; b)unsigned k=0;
while(1) do
{ {
i=i%100+l: ++k;
if(i>=100)break; }
} while(k>=0);
c)for(;;); d)int s=3379;
while(s++%2+s%2)s++;
答案:a
評析:當表達式為非0值時,執(zhí)行while語句中的內嵌語句,可用break語句跳出循環(huán),用continue語句結束本次循環(huán)。選項a不是死循環(huán),當i=100時跳出循環(huán)。選項c為空循環(huán)語句。
(45)以下程序的輸出結果是________。
#include
main()
{ int i;
for(i=l;i<5;i++){
if(i%2)print引剃’);
else continue;
printf("≠f");
}
printf("$\n");
}
a)*#*#*#$ b)#*#*#*$
c)*#*#$ d)#*#*$
答案:c
評析:當i不可以整除2時打印"*",然后打印"拌",不能整除2則執(zhí)行continue,跳過printf("#"):語句,結束本次循環(huán),返回到循環(huán)的起始點。當循環(huán)結束后,打印"$"。 (46)庫函數(shù)strcpy用以復制字符串,若有以下定義和語句:
char strl[]="china",str2[10],*str3,*str4="china";
則對庫函數(shù)strcpy的正確的調用是_________。
a)strcpy(strl,"people");b)strcpy(str2,"people");
c)strcpy(str3,"people");d)strcpy(str4,"people");
答案:b
評析:strcpy(字符數(shù)組1,字符串2)其作用是將字符串2復制到字符數(shù)組l中去。
注:(1)字符數(shù)組l必須定義得足夠大;(2)"字符數(shù)組1"必須寫成數(shù)組名的形式; (3)復制時連同字符串后面的’\0’一起復制到字符數(shù)組1中。
(47)有以下程序
#include
main()
{int c;
while((c=getchar())!=’\n’){
switch(c-’2’){
case 0:case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c+2);break;}
}
}
從第一列開始輸入以下數(shù)據(jù),↙代表一個回車符。
2473↙
程序的輸出結果是_________。
a)668977 b)668966
c)66778777 d)6688766
答案:a
評析:getchar()函數(shù)是從鍵盤接受一個字符輸入;當用戶鍵入的字符不是回車符時,會進入一個多分支選擇語句,根據(jù)c-’2’的值進行分支選擇;putchar()是在屏幕上打印一個字符,最后的結果應當為668977。
(48)下面程序的輸出結果是_________。
union un
{ int a[4];
long b:
char c[6];}
main()
{
union un u:
printf("%d%d",sizeof(u),sizeof(u.a(chǎn)));
}
a)82 b)88
c)188 d)182
答案:b
評析:sizeof函數(shù)計算已知類型所占的字節(jié)數(shù)。共用體變量所占的內存長度等于最長的成員的長度。
(49)以下程序的輸出結果是________。
main()
{ int w=5;fun(w);printf("\n");}
fun(int k)
{ if(k>0) fun(k-1);
printf("%d.t,k);
}
a)5 4 3 2 l b)0 1 2 3 4 5
c)l 2 3 4 5 d)5 4 3 2 l 0
答案:b
評析:函數(shù)的遞歸調用就是在調用一個函數(shù)的過程中又出現(xiàn)直接或間接地調用該函數(shù)本身。fun函數(shù)共被調用6次,即fun(5)、fun(4)、fun(3)、fun(2)、向n(1)、fun(0)。其中fun(5)是main函數(shù)調用的。
(50)若巾是指向某文件的指針,且已讀到此文件的末尾,則函數(shù)feof(f1))的返回值是
a)eof b)o
c)非零值 d)null
答案:c
評析:函數(shù)feof是用來判斷文件是否已讀到末尾,如果已讀到末尾則返回非零值,否則返回o。