一、選擇題
1.在C語言中,如果下面的變量都是int類型,則輸出的結(jié)果是()
sum=pad=5;
pad=sum++,pad++,++pad;printf(“%d/n”,pad);
a.7 b.6 c.5 d.4
2.以下程序的輸出結(jié)果是()
main()
{int i=010,j=10;
printf(“%d,%d/n”,++i,j——);}
a.11,10 b.9,10 c.010,9 d.10,9
3.已知在ASCII代碼中,字母A的序號(hào)為65,以下程序的輸出結(jié)果是()
main()
{ char c1=‘A’,c2=‘Y’;
printf(“%d,%d/n”,c1,c2);}
a.輸出錯(cuò)誤信息 b.65,90 c.A,Y d……65,89
4.執(zhí)行以下語句,則c的二進(jìn)制值是()
char a=3,b=6,,c;
c=a^b<<2;
a.00011011 b.00010100 c.00011100 d.00011000
5.已知:int a=5;執(zhí)行下列語句后輸出結(jié)果是()
if (a=0) printf(“%d”,a)
else printf(“%d”,2*a);
a.10 b.5c.0 d.語法錯(cuò)誤
6.語句while(!E) 中的條件!E等價(jià)于()
a.E==0 b.E!=1 c.E!=0 d.~E
7.執(zhí)行語句for(X=0,Y=0;(Y!=123)&&(X<4);X++);()
a.無限循環(huán) b.循環(huán)次數(shù)不變 c.執(zhí)行4次 d.執(zhí)行3次
8.sizeof(double)是()
a.一種函數(shù)調(diào)用 b一個(gè)雙精度型表達(dá)式 c.一個(gè)整形表達(dá)式 d.一個(gè)不合法的表達(dá)式
9.以下程序的輸出結(jié)果是()
main()
{ char str[12]={‘s’,‘t’,‘r’,‘i’,‘n’,‘g’,‘/0’}
printf(“%d/n”,strlen(str));
}
a.12 b.11 c.7 d.6
10. 以下程序的輸出結(jié)果是()
main()
{ int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d,%d/n”,a,b);
}
a.6,1 b.2,1 c.6,0 d.2,0
11.C語言的運(yùn)算符以運(yùn)算對(duì)象的數(shù)目可以分為()
a.單目算符 b.單目算符和雙目算符
c.單目,雙目和三目算符 d. 單目,雙目,三目和四目運(yùn)算符
12.使用以下對(duì)二維數(shù)組的定義語句中,不正確的定義是()
a. int m[2][3]={{1},{2,3}}; b.int m[2][3]={1,2,3};
c. int m[2][3]={{1},{2},{3}}; d. int m[2][3]={1,{2,3}};
13.若定義a,b為整型變量,用scanf{“%d%d”,&a,&b};語句輸入a,b的值時(shí),不可以()作為輸入的分割符。
a.,b.空格 c. 回車鍵 d.TAB鍵
14.若定義char *s=“car”; 則以下表達(dá)式的值不等于‘a(chǎn)’的是()
a.*++s; b.*(s+1) c.*s+1 d.s[1]
15.C語言程序中,若對(duì)函數(shù)的類型沒有說明,則函數(shù)的默認(rèn)類型是()
a.void b.int c.char d.single
16設(shè)有以下語句,則()不是對(duì)a數(shù)組元素的正確引用,其中0<=i<10
int *p,a[10]={0,1,2,3,4,5,6,7,8,9};
*p=a;
a.a[p-a] b.*(&a) c.p d.*(*(a+i))
17. 以下程序的輸出結(jié)果是()
union pw
{ int ji;
char ch[2];
}a;
main()
{ a.ch[0]=13;
a.ch[1]=0;
printf(“%d/n”,a.i);
}
a.13 b.14 c.208 d.209
18.以下程序執(zhí)行時(shí),從第一列開始輸入2374,代表一個(gè)回車符。程序的輸出結(jié)果是()
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;
}
printf(“/n”);
}
a.668977 b.668966 c.66778777 d.6688766
19.以下程序的輸出結(jié)果是()
#define FUDGE(y) 2.84+y
#define PR(a) printf(“%d”,(int)(a))
#define PRINT1(a) PR(a); putchar(‘/n’)
main()
{ int x=2;
PRINT1(FUDGE(5)*x)
}
a.11 b.12 c.13 d.15
20.根據(jù)以下語句 ,則()不是對(duì)庫(kù)函數(shù)strcpy的正確調(diào)用
char str1[]=“string,str2[8],*str3,*str4=”string“;
a.strcpy(str1,“HELLO”); b. strcpy(str2,“HELLO”);
c. strcpy(str3,“HELLO”) d. strcpy(str4,“HELLO”)
二、閱讀程序段,填寫運(yùn)行結(jié)果
1.下面程序段的運(yùn)行結(jié)果是()
main()
{ int a=10,b=5,c=5,d=5;
int m=0,n=0,p=0;
for(;a while(a>++c) n++;
do p++;while(a>d++);
printf(“m=%d n=%d p=%d”,m,n,p);
}
2.下面程序段的運(yùn)行結(jié)果是()
main()
{ int k=4,m=1,p;
p=func(k,m);
printf(“%d,”,p);
p=func(k,m);
printf(“%d,”,p);
}
func(a,b)
int a,b;
{ static int m=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
3.以下程序的輸出結(jié)果是()
main()
{ int i;
for(i=1;i<=5;i++){
if(i%2) printf(“*”);
else continue;
printf(“#”);
}
printf(“$/n”);
}
4.下面程序的運(yùn)行結(jié)果是()
main()
{ int x,a=1,b=2,c=0;
x=——a||b&&++c;
printf(“%d/n”,x);
}
5.下面程序的運(yùn)行結(jié)果是()
#include
struct s
{ int a;
int b:
}d[4]={1,20,3,40,5,60,7,80};
main()
{ struct s *p=d;
printf(“%d/n”,++p->a);
printf(“%d/n”,++p->b);
}
三、程序選擇填空
以下程序名為cat.c,其功能是將命令行中所列的文件依次在屏幕上顯示,每顯示完一個(gè)文件內(nèi)容后,用戶按任意鍵,則顯示下一個(gè)文件,如果命令行中所列的文件不能打開或沒有給出文件名,則顯示相應(yīng)的信息,命令的格式為:cat filename1 filename2…
1) a.char b.int c.file d.FILE
2) a.fgetc(fptr) b.getchar(fptr) c.fgetc(fp) d.getchar(fp)
3) argc=1 b.argc==1 c.argc<1 d.argc==1
4) a.&pf b.*fp c.argv d.fp
5) a.fclose(argv) b.rewind(argv) c.fclose(fp) d.rewind(fp)
#include “stdio.h”
void cat (「1」 *fptr)
{ int c;
while((c=「2」)!=EOF)
putchar?;
}
main(argc,argv)
int argc;
char *argv[];
{FILE *fp;
int i;
if(「3」)
{ printf(“缺少參數(shù)/n”); exit(0);}
for(i=1;i
{ if((fp=fopen(argv,“r”))==NULL)
printf(“%s 無法打開 /n”,argv);
else{
printf(“/*文件:%s*//n”,argv);
cat(「4」);}
「5」;
printf(“按任意鍵顯示下一個(gè)文件/n”);
getchar();
}
}
四、程序填空
1.函數(shù)fun(char *s,int a)的功能是采用遞歸的方法將16進(jìn)制的字符串s轉(zhuǎn)換成10進(jìn)制整數(shù)作為函數(shù)的返回值,若字符串s不是16進(jìn)制的字符串,則函數(shù)的返回值是-1,a的初值是0.
fun(char *s,int a)
{ int i;
if(「1」)
i=*s-‘0’;
else
if(*s>=‘A’&&*s<=‘F’)
「2」;
else
if(*s>=‘a(chǎn)’&&*s<=‘f’)
「3」;
else
「4」;
a=a*16+I;
if(*(s+1)!=‘/0’)
fun(「5」);
else
return(a);
}
2.以下程序找出二維數(shù)組a中每行的值,并按一一對(duì)應(yīng)的順序放入一維數(shù)組s中。即:第零行中值,放入s[0]中,第一行中值,放入s[1]中……。然后輸出每行行號(hào)和值,請(qǐng)?zhí)羁铡?BR> #define 「6」 10
main()
{
int a[M][M],s[M],i,j,k;
for(i=0;i for(j=0;j scanf(“%d”,*(a+i)+j);
for(i=0;i { *(s+i)= 「7」;
for(j=1;j if(*(s+i) 「8」*(*(a+i)+j))
*(s+i)= 「9」;
}
for(i=0;i { printf(“Row=%2d Max=%5d”, 「10」);
printf(“/n”);
}
}
3. 函數(shù)htmtotxt的功能是將html文件中的htm標(biāo)記過濾掉,即過濾掉在<…。> 之間的內(nèi)容,將其他內(nèi)容形成一個(gè)純文本文件。函數(shù)的參數(shù)f1為現(xiàn)有的html文件名,參數(shù)f2為形成的純文本文件名。注意,在html文件中出現(xiàn)
,
標(biāo)記時(shí),應(yīng)向文本文件中添加一個(gè)回車符。
void htmtotxt(char *f1,char *f2)
{
FILE *fin,*fout;
char sc,*s1,*p1;
int flag;
s1=(char *)malloc(MAX);
p1=s1;
/*打開輸入輸出文件*/
if((fin=fopen(f1,“r”))==NULL)
{
printf(“File %s open error!/n”,f1);
return;
}
if((fout=fopen(f2, 「11」)==NULL)
{
printf(“File %s open error!/n”,f2);
return;
}
/*從htm文件中讀取內(nèi)容,過濾htm標(biāo)記中的內(nèi)容,然后將其他內(nèi)容寫入文本文件中*/
flag=0;
while(!feof(fin))
{
sc=「12」;
if(sc==‘<’)
{
s1=p1;
*s1++=sc;
while((sc=fgetc(fin))!=‘>’&&!feof(fin))
{ *s1=「13」; s1++;}
flag=1;
}
if(flag==1)
{
*s1++=sc;
*s1=‘/0’;
if(「14」)
{
fputc(‘/n’,fout);
flag=0;
continue;
}
}
flag=0;
fputc(sc,fout);}
「15」;
fclose(fout);
}
五、編寫程序
1.請(qǐng)編寫函數(shù)huiwen(char *s),它的功能是檢查字符串s是否是回文,所謂回文即正向,反向的拼寫都一樣。如a,eye,ABBA等,當(dāng)字符串s是回文時(shí),函數(shù)的返回值是1,否則返回值是0.
void huiwen(char *s)
{ /*答案開始*/
…
/*答案結(jié)束*/
}
2.請(qǐng)編寫函數(shù)void fun(int *a,int y,int n),它的功能是:把y值插入到a數(shù)組中,a數(shù)組中的數(shù)由主函數(shù)按由小到大的次序從鍵盤讀入,y是要插入的數(shù),其值也從鍵盤讀入。n是a中數(shù)字的個(gè)數(shù)(n #define S 50
main()
{
int a[S],b,c;
……
fun(a,b,c)
……
}
void fun(int *a,int y,int n)
{ /*答案開始*/
……
……
/*答案結(jié)束*/
}
1.在C語言中,如果下面的變量都是int類型,則輸出的結(jié)果是()
sum=pad=5;
pad=sum++,pad++,++pad;printf(“%d/n”,pad);
a.7 b.6 c.5 d.4
2.以下程序的輸出結(jié)果是()
main()
{int i=010,j=10;
printf(“%d,%d/n”,++i,j——);}
a.11,10 b.9,10 c.010,9 d.10,9
3.已知在ASCII代碼中,字母A的序號(hào)為65,以下程序的輸出結(jié)果是()
main()
{ char c1=‘A’,c2=‘Y’;
printf(“%d,%d/n”,c1,c2);}
a.輸出錯(cuò)誤信息 b.65,90 c.A,Y d……65,89
4.執(zhí)行以下語句,則c的二進(jìn)制值是()
char a=3,b=6,,c;
c=a^b<<2;
a.00011011 b.00010100 c.00011100 d.00011000
5.已知:int a=5;執(zhí)行下列語句后輸出結(jié)果是()
if (a=0) printf(“%d”,a)
else printf(“%d”,2*a);
a.10 b.5c.0 d.語法錯(cuò)誤
6.語句while(!E) 中的條件!E等價(jià)于()
a.E==0 b.E!=1 c.E!=0 d.~E
7.執(zhí)行語句for(X=0,Y=0;(Y!=123)&&(X<4);X++);()
a.無限循環(huán) b.循環(huán)次數(shù)不變 c.執(zhí)行4次 d.執(zhí)行3次
8.sizeof(double)是()
a.一種函數(shù)調(diào)用 b一個(gè)雙精度型表達(dá)式 c.一個(gè)整形表達(dá)式 d.一個(gè)不合法的表達(dá)式
9.以下程序的輸出結(jié)果是()
main()
{ char str[12]={‘s’,‘t’,‘r’,‘i’,‘n’,‘g’,‘/0’}
printf(“%d/n”,strlen(str));
}
a.12 b.11 c.7 d.6
10. 以下程序的輸出結(jié)果是()
main()
{ int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d,%d/n”,a,b);
}
a.6,1 b.2,1 c.6,0 d.2,0
11.C語言的運(yùn)算符以運(yùn)算對(duì)象的數(shù)目可以分為()
a.單目算符 b.單目算符和雙目算符
c.單目,雙目和三目算符 d. 單目,雙目,三目和四目運(yùn)算符
12.使用以下對(duì)二維數(shù)組的定義語句中,不正確的定義是()
a. int m[2][3]={{1},{2,3}}; b.int m[2][3]={1,2,3};
c. int m[2][3]={{1},{2},{3}}; d. int m[2][3]={1,{2,3}};
13.若定義a,b為整型變量,用scanf{“%d%d”,&a,&b};語句輸入a,b的值時(shí),不可以()作為輸入的分割符。
a.,b.空格 c. 回車鍵 d.TAB鍵
14.若定義char *s=“car”; 則以下表達(dá)式的值不等于‘a(chǎn)’的是()
a.*++s; b.*(s+1) c.*s+1 d.s[1]
15.C語言程序中,若對(duì)函數(shù)的類型沒有說明,則函數(shù)的默認(rèn)類型是()
a.void b.int c.char d.single
16設(shè)有以下語句,則()不是對(duì)a數(shù)組元素的正確引用,其中0<=i<10
int *p,a[10]={0,1,2,3,4,5,6,7,8,9};
*p=a;
a.a[p-a] b.*(&a) c.p d.*(*(a+i))
17. 以下程序的輸出結(jié)果是()
union pw
{ int ji;
char ch[2];
}a;
main()
{ a.ch[0]=13;
a.ch[1]=0;
printf(“%d/n”,a.i);
}
a.13 b.14 c.208 d.209
18.以下程序執(zhí)行時(shí),從第一列開始輸入2374
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;
}
printf(“/n”);
}
a.668977 b.668966 c.66778777 d.6688766
19.以下程序的輸出結(jié)果是()
#define FUDGE(y) 2.84+y
#define PR(a) printf(“%d”,(int)(a))
#define PRINT1(a) PR(a); putchar(‘/n’)
main()
{ int x=2;
PRINT1(FUDGE(5)*x)
}
a.11 b.12 c.13 d.15
20.根據(jù)以下語句 ,則()不是對(duì)庫(kù)函數(shù)strcpy的正確調(diào)用
char str1[]=“string,str2[8],*str3,*str4=”string“;
a.strcpy(str1,“HELLO”); b. strcpy(str2,“HELLO”);
c. strcpy(str3,“HELLO”) d. strcpy(str4,“HELLO”)
二、閱讀程序段,填寫運(yùn)行結(jié)果
1.下面程序段的運(yùn)行結(jié)果是()
main()
{ int a=10,b=5,c=5,d=5;
int m=0,n=0,p=0;
for(;a while(a>++c) n++;
do p++;while(a>d++);
printf(“m=%d n=%d p=%d”,m,n,p);
}
2.下面程序段的運(yùn)行結(jié)果是()
main()
{ int k=4,m=1,p;
p=func(k,m);
printf(“%d,”,p);
p=func(k,m);
printf(“%d,”,p);
}
func(a,b)
int a,b;
{ static int m=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
3.以下程序的輸出結(jié)果是()
main()
{ int i;
for(i=1;i<=5;i++){
if(i%2) printf(“*”);
else continue;
printf(“#”);
}
printf(“$/n”);
}
4.下面程序的運(yùn)行結(jié)果是()
main()
{ int x,a=1,b=2,c=0;
x=——a||b&&++c;
printf(“%d/n”,x);
}
5.下面程序的運(yùn)行結(jié)果是()
#include
struct s
{ int a;
int b:
}d[4]={1,20,3,40,5,60,7,80};
main()
{ struct s *p=d;
printf(“%d/n”,++p->a);
printf(“%d/n”,++p->b);
}
三、程序選擇填空
以下程序名為cat.c,其功能是將命令行中所列的文件依次在屏幕上顯示,每顯示完一個(gè)文件內(nèi)容后,用戶按任意鍵,則顯示下一個(gè)文件,如果命令行中所列的文件不能打開或沒有給出文件名,則顯示相應(yīng)的信息,命令的格式為:cat filename1 filename2…
1) a.char b.int c.file d.FILE
2) a.fgetc(fptr) b.getchar(fptr) c.fgetc(fp) d.getchar(fp)
3) argc=1 b.argc==1 c.argc<1 d.argc==1
4) a.&pf b.*fp c.argv d.fp
5) a.fclose(argv) b.rewind(argv) c.fclose(fp) d.rewind(fp)
#include “stdio.h”
void cat (「1」 *fptr)
{ int c;
while((c=「2」)!=EOF)
putchar?;
}
main(argc,argv)
int argc;
char *argv[];
{FILE *fp;
int i;
if(「3」)
{ printf(“缺少參數(shù)/n”); exit(0);}
for(i=1;i
{ if((fp=fopen(argv,“r”))==NULL)
printf(“%s 無法打開 /n”,argv);
else{
printf(“/*文件:%s*//n”,argv);
cat(「4」);}
「5」;
printf(“按任意鍵顯示下一個(gè)文件/n”);
getchar();
}
}
四、程序填空
1.函數(shù)fun(char *s,int a)的功能是采用遞歸的方法將16進(jìn)制的字符串s轉(zhuǎn)換成10進(jìn)制整數(shù)作為函數(shù)的返回值,若字符串s不是16進(jìn)制的字符串,則函數(shù)的返回值是-1,a的初值是0.
fun(char *s,int a)
{ int i;
if(「1」)
i=*s-‘0’;
else
if(*s>=‘A’&&*s<=‘F’)
「2」;
else
if(*s>=‘a(chǎn)’&&*s<=‘f’)
「3」;
else
「4」;
a=a*16+I;
if(*(s+1)!=‘/0’)
fun(「5」);
else
return(a);
}
2.以下程序找出二維數(shù)組a中每行的值,并按一一對(duì)應(yīng)的順序放入一維數(shù)組s中。即:第零行中值,放入s[0]中,第一行中值,放入s[1]中……。然后輸出每行行號(hào)和值,請(qǐng)?zhí)羁铡?BR> #define 「6」 10
main()
{
int a[M][M],s[M],i,j,k;
for(i=0;i
for(i=0;i
for(j=1;j
*(s+i)= 「9」;
}
for(i=0;i
printf(“/n”);
}
}
3. 函數(shù)htmtotxt的功能是將html文件中的htm標(biāo)記過濾掉,即過濾掉在<…。> 之間的內(nèi)容,將其他內(nèi)容形成一個(gè)純文本文件。函數(shù)的參數(shù)f1為現(xiàn)有的html文件名,參數(shù)f2為形成的純文本文件名。注意,在html文件中出現(xiàn)
,
標(biāo)記時(shí),應(yīng)向文本文件中添加一個(gè)回車符。
void htmtotxt(char *f1,char *f2)
{
FILE *fin,*fout;
char sc,*s1,*p1;
int flag;
s1=(char *)malloc(MAX);
p1=s1;
/*打開輸入輸出文件*/
if((fin=fopen(f1,“r”))==NULL)
{
printf(“File %s open error!/n”,f1);
return;
}
if((fout=fopen(f2, 「11」)==NULL)
{
printf(“File %s open error!/n”,f2);
return;
}
/*從htm文件中讀取內(nèi)容,過濾htm標(biāo)記中的內(nèi)容,然后將其他內(nèi)容寫入文本文件中*/
flag=0;
while(!feof(fin))
{
sc=「12」;
if(sc==‘<’)
{
s1=p1;
*s1++=sc;
while((sc=fgetc(fin))!=‘>’&&!feof(fin))
{ *s1=「13」; s1++;}
flag=1;
}
if(flag==1)
{
*s1++=sc;
*s1=‘/0’;
if(「14」)
{
fputc(‘/n’,fout);
flag=0;
continue;
}
}
flag=0;
fputc(sc,fout);}
「15」;
fclose(fout);
}
五、編寫程序
1.請(qǐng)編寫函數(shù)huiwen(char *s),它的功能是檢查字符串s是否是回文,所謂回文即正向,反向的拼寫都一樣。如a,eye,ABBA等,當(dāng)字符串s是回文時(shí),函數(shù)的返回值是1,否則返回值是0.
void huiwen(char *s)
{ /*答案開始*/
…
/*答案結(jié)束*/
}
2.請(qǐng)編寫函數(shù)void fun(int *a,int y,int n),它的功能是:把y值插入到a數(shù)組中,a數(shù)組中的數(shù)由主函數(shù)按由小到大的次序從鍵盤讀入,y是要插入的數(shù),其值也從鍵盤讀入。n是a中數(shù)字的個(gè)數(shù)(n
main()
{
int a[S],b,c;
……
fun(a,b,c)
……
}
void fun(int *a,int y,int n)
{ /*答案開始*/
……
……
/*答案結(jié)束*/
}

