C语言经典题目.docx

上传人:b****5 文档编号:7597758 上传时间:2023-01-25 格式:DOCX 页数:19 大小:35.69KB
下载 相关 举报
C语言经典题目.docx_第1页
第1页 / 共19页
C语言经典题目.docx_第2页
第2页 / 共19页
C语言经典题目.docx_第3页
第3页 / 共19页
C语言经典题目.docx_第4页
第4页 / 共19页
C语言经典题目.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C语言经典题目.docx

《C语言经典题目.docx》由会员分享,可在线阅读,更多相关《C语言经典题目.docx(19页珍藏版)》请在冰豆网上搜索。

C语言经典题目.docx

C语言经典题目

得分

一、单选题(每题2分)

1、以下叙述错误的是___。

A、一个C源程序可由一个或多个函数组成

B、一个C源程序必须包含一个main函数

C、C程序的基本组成单位是函数

D、在C程序中,注释说明只能位于一条语句的后面

*在下面四个运算符中,优先级别最低的是()。

A、!

B、&&C、==D、=

*若执行语句:

intb,a=12,n=5;表达式a%=(b=2,n%=b)+4结果是()。

A、16B、2C、1D、4

*有如下输入语句:

scanf(“x=%d,y=%d”,&x,&y);为使变量x的值为1,y的值为2,从键盘输入数据的正确形式是()。

A、12<回车>B、1,2<回车>

C、x=1,y=2<回车>D、x=1y=2<回车>

2、设x和y为浮点型变量,则以下________语句是正确的赋值语句。

A、x=y%2 ;B、x*x=y ;C、x=x+10*y ;D、*x=y+2 ;

3、为了避免嵌套的条件分支语句if—else的二义性,C语言规定:

C程序中的else总是与______组成配对关系。

A、缩排位置相同的ifB、在其之前未配对的if

C、在其之前未配对的最近的ifD、同一行上的if

4、有以下程序段,while循环执行的次数是________。

intk=0;

while(k=1)k++;

A、执行1次                B、有语法错,不能执行

C、执行0次                D、无限次

*以下不是无限循环的是()。

A.for(;;x++=i);

B.while(l){x++;}

C.for(i=10;;i--)sum+=i;

D.for(y=0,x=1;x>++y;x=i++)i=x;

*以下程序运行结果是()。

#include

#defineS(r)r*r

voidmain()

{

inti=2;

printf(“%d\t%d\n”,S(i),S(i+1));

}

A、45B、26C、24D、49

5、对于以下程序段,运行后i值为__。

inti=0,a=2;

switch(a)

{

case1:

i+=1;

case2:

i+=2;

default:

i+=3;

}

A、2B、5C、6D、上述程序有语法错误

6、若希望当A的值为奇数时,表达式的值为"真",A的值为偶数表达式的值为"假"。

则以下不能满足要求的表达式是________。

A、A%2==1B、!

(A%2==0)C、!

(A%2)D、A%2

*C语言中规定,函数返回值的类型是由()。

A、return语句中的表达式的类型决定B、调用该函数时系统临时决定

C、在定义该函数时所指定的函数类型决定D、调用该函数的函数类型决定

7、设变量定义为inta[5],*p=a;,则*p相当于______。

A、aB、a[5]C、a[0]D、a+1

8、有下面程序段则___。

char*a,b[]="China";a=b;printf("%s",a+2);

A、编译出错B、运行后将输出ina

C、运行后将输出ChD、运行后将输出China

*下面判断字符串str1是否大于str2,正确的表达式是()。

A、if(str1>str2)B、if(strcmp(str1,str2))

C、if(strcmp(str1,str2)>0)D、if(strcmp(str2,str1)>0)

9、若在主函数中有数组定义inta[10],并有函数调用f(a),则下列关于函数f的原型声明,错误的是______。

A、voidf(intx[10]);B、voidf(intx[]);

C、voidf(intx);D、voidf(int*x);

10、调用一个带参数的函数时,以下正确的说法是___。

A、实参变量和与其对应的形参变量各占用独立的存储单元

B、实参变量和与其对应的形参变量共占用一个存储单元

C、只有当实参变量和与其对应的形参变量同名时才共用存储单元

D、形参变量是虚拟的,不占用存储单元

*设有语句intarray[2][3];,下面几种引用下标为i和j的数组元素的表示方法,不正确的是()。

A、*(array[i]+j)B、*(*(array+i)+j)

C、*(array+i*3+j)D、array[i][j]

 

11、有变量定义如下:

inta[2][3],*p,(*q)[3];以下赋值语句中错误的是__。

A、p=a;B、q=a;C、p=*a+1;D、q=a+1;

*假设已定义chara[10];char*p;下面的赋值语句中,正确的是()。

A、p=a;B、a=”abcdef”;

C、*p=”abcdef”;D、p=*a;

*设有下列语句,intn=0,*p=&n,**q=&p;则下面()是正确的赋值语句。

A、p=1;B、*p=2;C、q=p;D、*q=5;

12、已知

structsk

{inta;floatb;

}data,*p;

若有p=&data,则对data中的成员a的正确引用是___。

A、(*p).dataB、(*p).aC、p->data.aD、p.data.a

*下面关于静态局部变量的描述,不正确的是()。

A、静态局部变量存储在静态存储区B、静态局部变量全局可见

C、静态局部变量还是局部可见D、静态局部变量只会被初始化一次

13、以下一维数组定义及初始化正确的是___。

A、inta[];B、inta[]={1,2,3};

C、inta[3]={1,2,3,4}D、inta[3]={,2,};

14、下面对数组array进行正确初始化的是______。

A、intarray[2][3]={{1,2},{1,2},{1,2}};

B、intarray[2][]={{1,2},{1,2}};

C、intarray[][3]={1,2,3,4,5,6};

D、intarray[2][3]={{1,2},{,2},{}};

 

*strlen(”\012ab\xab\\bcd\n”)的值为()。

A、9B、10C、11D、13

15、当已存在一个read.txt文件时,执行函数fopen("read.txt","r+")的功能是________。

A、打开read.txt文件,清除原有的内容

B、打开read.txt文件,只能写入新的内容

C、打开read.txt文件,只能读取原有内容

D、打开read.txt文件,可以读取和写入新的内容

*使用fopen函数打开一个新的二进制文件,要求可以进行读和写,那么打开方式是()。

A、”w+”B、”rb+”C、”wb+”D、”ab”

 

得分

二、填空题(每空1分)

1、C语言源程序中整型常量可以用十六进制数表示,此时必须以

(1)为前缀。

*C语言源程序文件的后缀是

(1),头文件的后缀是

(2)。

*printf()函数表示输出一个字符的格式转换说明符为(3),表示输出字符串的格式转换说明符为(4)。

*C语言中,表示函数返回的关键字是(5),表示程序中止、强制返回操作系统的库函数是(6)。

*C语言的宏定义指令是(7),取消宏定义的指令是(8)。

2、表达式sizeof("AB\bCDEF\rGH\n")的结果是

(2)。

3、若有定义:

inta=2,b=3,c=4;则接着执行完语句:

a*=16+(b++)-(++c);后,a的值是(3),b的值是(4),c的值是(5)。

4、(6)语句用于循环体中可以提前结束本次循环体的执行,进入下一次循环条件的判断。

5、在函数体内声明一个静态局部变量,需要使用的关键字是(7)。

*定义含3个整型指针元素的指针数组arr的语句是(9),返回整型指针值的无参函数fun的函数原型是(10)。

6、设有说明语句int*ptr[4],那么ptr是(8)。

7、单链表的结点类型定义为:

structNODE

{intdata;

structNODE*next;

}head,*p,*q;

在单链表中,如果指针p指向链表中间的某一个结点处,指针q指向其后继结点处,则删除q结点需要用两条语句实现,依次是:

(9)和free(q);

8、终端输入1个字符的函数getchar()的等效文件输入函数(即以stdin为形参)是_(10)_。

得分

三、程序阅读题(每题5分)

1、写出下面程序的输出结果______。

#include

intmain()

{inta;

for(a=0;a<7;a++)

{

if(a%2)

printf("$");

else

continue;

printf("#");

}

return0;

}

2、写出下面程序的输出结果______。

#include

inta=5;

voidp1()

{printf("%d",a=a*a);

}

voidp2()

{staticinta=3;

printf("%d",a=a*a*a);

}

intmain()

{

printf("%d",a);

p1();

a=a-5;

printf("%d",a);

p2();

printf("%d\n",a);

return0;

}

3、写出下面程序的输出结果______。

#include

intfun(intn)

{

intret;

if(n==1)

ret=2;

elseif(n==2)

ret=3;

else

ret=2+fun(n-2);

returnret;

}

intmain()

{

printf("%d\n",fun(5));

return0;

}

 

*以下程序的执行结果是___(3)___。

#include

voidmain()

{

intx=1,y=2,z=0;

switch(x)

{

case0:

printf(“@”);

case1:

switch(y)

{

case1:

printf(“@”);break;

case2:

printf(“!

”);break;

}

case3:

switch(z)

{

case0:

printf(“*”);break;

case1:

printf(“#”);break;

default:

printf(“$”);break;

}

break;

default:

printf(“&”);

}

}

4、写出下面程序的输出结果______。

#include

typedefstructst

{

intx,y;

}ST;

STdata[2]={{1,100},{2,200}};

intmain()

{

ST*p=data;

printf("%d",p->y);

printf("%d\n",(++p)->x);

return0;

}

5、写出下面程序的输出结果______。

#include

#include

intmain()

{

char*p;

charcolor1[10]="red",color2[10]="grey";

p=color1;

p++;

strcat(p,color2);

printf("%s\n",p);

return0;

}

得分

四、程序填空题(每空2分)

1、下面是以下三角形式输出九九乘法表的程序,在画线的位置填上适当的语句,使该程序完整。

#include

intmain()

{

inti,j;

for(i=1;_____①______;i++)

{

for(____②______;j<=i;j++)

printf("%d*%d=%d",i,j,____③______);

printf(____④______);

}

return0;

}

*产生1万个1~100之间的随机整数,将每个值产生的次数统计到数组create中,例如:

create[30]=98,则表示在1万个随机整数中有98次产生的是30。

最后打印数组create的元素从create[1]至create[100]。

#include

(1)

voidmain()

{

intcreate[101]={0};

inti,r;

srand(time(NULL));

for(i=1;i<=10000;i++)

{

r=

(2);

++(3);

}

for(i=1;i<=100;i++)

printf("%5d",create[i]);

printf("\n");

}

2、完成以下程序,该程序的功能是对N个初始的字符串用选择法进行由小到大的排序,函数sort完成排序功能,最后输出排序后的各字符串。

#include

#include

#defineN6

voidsort(char(*a)[10],intn)

{

inti,j,k;

chart[10];

for(i=0;i

{

k=i;

for(j=i+1;j

if(strcmp(a[j],a[k])<0)

____⑤______;

if(i!

=k)

{

strcpy(t,a[i]);

____⑥_____;

strcpy(a[k],t);

}

}

}

intmain()

{

inti;

charstr[N][10]={"red","black","pink","yellow","green","white"};

____⑦_____;//调用sort进行字符串排序

for(i=0;i

puts(str[i]);

return0;

}

*下列函数实现统计字符串string中字符letter出现的次数,并将次数返回。

intcharCount(constchar*string,charletter)

{

inti=0,count=0;

while(string[i]){

if((4)==letter)

(5);

(6);

}

returncount;

}

 

3、完成以下程序,该程序的功能是将一个名为old.txt的文本文件拷贝到一个名为new.txt的新文本文件中。

#include

intmain()

{

intc;

FILE*fp1,*fp2;

fp1=fopen("old.txt",___⑧_____);

fp2=fopen("new.txt","w");

c=fgetc(fp1);

while(___⑨_____)

{

___⑩_____;

c=fgetc(fp1);

}

fclose(fp1);

fclose(fp2);

return0;

}

得分

五、编程题(15分)

编写一个程序,要求:

①在main()函数中定义一维整型数组arr,调用input函数完成数组的n个元素的输入(n≤30),再调用OddNum函数得到数组中的奇数个数并输出此值,最后用Output函数将数组中所有的奇数输出。

②输入函数的原型为:

voidinput(intarray[],intn);完成数组array中n个元素的输入。

③求奇数元素个数的函数原型为:

intOddNum(intarray[],intn);完成求数组中的奇数元素个数并返回。

④输出函数的原型为:

voidOutput(intarray[],intn);完成输出数组array中所有的奇数元素。

参考

#include

voidinput(intarray[],intn);

intOddNum(intarray[],intn);

voidoutput(intarray[],intn);

intmain()

{

intarr[30],n;

do

{

printf("pleaseinputn:

\n");

scanf("%d",&n);

}while(n<1||n>30);

printf("pleaseinput%delements:

\n",n);

input(arr,n);

printf("oddnumberis:

%d\n",OddNum(arr,n));

printf("alloddelements:

\n");

output(arr,n);

return0;

}

voidinput(intarray[],intn)

{

inti;

for(i=0;i

scanf("%d",&array[i]);

}

intOddNum(intarray[],intn)

{

inti,s=0;

for(i=0;i

if(array[i]%2)

s+=1;

returns;

}

voidoutput(intarray[],intn)

{

inti;

for(i=0;i

if(array[i]%2)

printf("%d",array[i]);

printf("\n");

}

 

*编写一个计算给定数值范围内素数的程序。

要求:

①在main()函数中任意输入两个正整数a,b表示求解素数的实际范围[a,b],并用程序代码保证b的值大于a的值;调用prime函数求得该范围内所有的素数,并在主函数中输出素数的个数。

②定义函数prime,求得一定范围内所有的素数并在屏幕显示这些素数,函数原型为:

intprime(intstart,intend);其中的两个形式参数表示求解素数的范围是[start,end],函数的返回值为这一段范围内素数的个数。

#include

#include

intprimelnt(intm);

intprime(intstart,intend);

intmain()

{

inta=0,b=0;

while(b<=a)

{

printf("pleaseinputstartandend\n");

scanf("%d%d",&a,&b);

}

prime(a,b);

return0;

}

intprime(intstart,intend)

{

inti,count=0;

for(i=start;i<=end;i++)

if(primelnt(i))

{

printf("%5d",i);

count++;

if(count%5==0)printf("\n");

}

printf("\n");

}

intprimelnt(intm)

{

inti,k;

if(m==1)

return0;

k=(int)sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0)

return0;

return1;

}

 

*编写程序将一个名为old.txt的文本文件依次读出,数字字符在屏幕上显示,字母字符全部转换成大写字母存放到一个名为new.txt的新文本文件中。

例如:

old.txt中的内容是:

aB*cdeF12@3gH4567

屏幕输出:

1234567

new.txt中的内容是:

ABCDEFGH

#include

#include

#include

 

intmain()

{

 

charch;

FILE*infile="old.txt",*outfile="new.txt";

if((infile=fopen(infile,"r"))==NULL)

{

printf("cannotopenold.txt\n");

exit(0);

}

if((outfile=fopen(outfile,"w"))==NULL)

{

printf("cannotopennew.txt\n");

exit(0);

}

while((ch=fgetc(infile))!

=EOF)

{

if(ch>='0'&&ch<='9')

printf("%c",ch);

elseif(ch>='A'&&ch<='Z')

fputc(ch,outfile);

elseif(ch>='a'&&ch<='z')

{

ch-=32;

fputc(ch,outfile);

}

}

fclose(infile);

fclose(outfile);

return0;

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1