高等教育选择+填空+编程课件_第1页
高等教育选择+填空+编程课件_第2页
高等教育选择+填空+编程课件_第3页
高等教育选择+填空+编程课件_第4页
高等教育选择+填空+编程课件_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.下列叙述中正确的是A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D)main可作为用户标识符,可以命名任意一个函数作为主函数参考答案:C)解答:A)错误,由于main()不一定写在第一个位置上,所以该句话不准确。B)错误,C语言中规定,程序必须从主函数开始执行,在主函数中结束。C)正确。D)错误,在main()函数中,main不可以作为标识符的名,但是在其它函数中,main可作为标识符的名称(不推荐这样做)。main()是程序的开始和结束的位置,不是任意函数都可以作为主函数。一、选择1.下列叙述中正确的是参考答案:C)一、选择12.以下选项中,能用作用户标示符的是A)voidB)8_8C)_0_D)unsigned参考答案:C)解答:A)不能,void为C语言的保留字。B)不能,阿拉伯数字不能出现在标识符的第一个位置上。C)能,符合C语言标识符命名法则。D)不能,unsigned为C语言的保留字。2.以下选项中,能用作用户标示符的是参考答案:C)23.以下叙述中正确的是A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句C)简单C语句必须以分号结束D)C语句必须在一行内完成参考答案:C)解答:A)不正确,C程序的基本组成单位应该是函数,函数的组成单位是语句。B)不正确,C程序中的每一行可写多条语句,如:x=1;y=2;z=3;。C)正确。D)不正确,C语句不一定在一行内完成。3.以下叙述中正确的是参考答案:C)34.以下程序运行后的输出结果是【】。#include<stdio.h>main(){inta=200,b=010;printf("%d%d\n",a,b);}参考答案:2008解答:a为十进制数200,b为八进制数,转换成十进制数为8。输出格式为十进制整数输出格式,输出的两个数之间没有空隙,所以输出的序列为“2008”。4.以下程序运行后的输出结果是【】。参考答案:200845.有以下程序#include<stdio.h>main(){ints,t,A=10;doubleB=6;s=sizeof(A);t=sizeof(B);printf("%d,%d\n",s,t);}在VC6平台上编译运行,程序运行后的输出结果是A)2,4B)1,4C)4,8D)10,6参考答案:C)解答:在本题中sizeof(A)和sizeof(B)是求变量A,B所占的字节数。在VC6编译系统中,规定整型数均占用4个字节,双精度数占用8个字节。所以答案C)是正确的。5.有以下程序参考答案:C)56.有以下定义:inta;longb;doublex,y;则以下选项中正确的表达式是A)a%(int)(x-y)B)a=x

!=y;C)(a*y)%bD)y=x+y=x参考答案:B)解答:A)错误,x-y的值可能出现“0”,0不能作除数。B)正确,a=x

!=y可看成a=(x

!=y),“x

!=y”的值可能为“0”也可能为“1”。所以该表达式是正确。C)错误,(a*y)的值是一个实型数,C语言中求余计算“%”,必须是实型数之间进行计算。D)错误,该赋值方式相当于给表达式赋值,所以是错误的。6.有以下定义:inta;longb;double67.若a是数值型,则逻辑表达式(a==1)||(a!=1)的值是A)1B)0C)2D)不知道a的值,不能断定参考答案:A)解答:a的值只有两种可能,等于“1”或者不等于“1”。该表达式(a==1)||(a!=1)的值永远为真,所以,该表达式的值为“1”。7.若a是数值型,则逻辑表达式(a==1)||(a!=1)的78.表达式3.6-5/2+1.2+5%2的值是

A)4.3B)4.8C)3.3

D)3.8参考答案:D)解答:该表达式的值3.6-5/2+1.2+5%2=3.6-2+1.2+1=3.88.表达式3.6-5/2+1.2+5%2的值是

A)4.389.表达式a+=a-=a=9的值是A)9B)9C)13D)0参考答案:D)解答:表达式a+=a-=a=9可化为a+=a-=9可化为a+=a=9-9可化为a+=a=0可化为a+=0。即a=0。9.表达式a+=a-=a=9的值是参考答案:D)910.有以下程序#include<stdio.h>main(){charc1,c2;c1='A'+'8'-'4';

c2='A'+'8'-'5';printf("%c,%d\n",c1,c2);}已知字母A的ASCII码为65,程序运行后的输出的结果是A)E,68B)D,69C)E,DD)输出无定值参考答案:A)解答:本题的关键在于下面的表达式c1='A'+'8'-'4'=65+56-52=69是“E”的ASCII值。c2='A'+'8'-'5'=65+56-53=68是“D”的ASCII值。在输出时printf("%c,%d\n",c1,c2);c1按字符输出,所以将字符“E”输出。c2按有符号的十进制整形数输出,所以将数值“68”输出。10.有以下程序参考答案:A)1011.若变量已正确定义,在if(W)printf("%f\n",k);中,以下不可替代W的是A)a<>b+cB)ch=getchar()C)a==b+cD)a++参考答案:A)解答:A)错误,在C语言中没有“<>”这样的运算符,判断不相等用!=。B)正确。if(W)中的“W”可以是任意表达式。C)正确。同上。D)正确。同上。11.若变量已正确定义,在if(W)printf("%f\1112.有以下程序#include<stdio.h>main(){inta=1,b=0;if(!a)b++;elseif(a==0)if(a)b+=2;elseb+=3;printf("%d\n",b);}程序运行的结果是A)0B)1C)2D)3参考答案:A)解答:参考本题的流程图。在本题中,第一个判断为“假”,第二个判断也为“假”。所以,b的值仍然为“0”。12.有以下程序参考答案:A)1213.设有定义:inta=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A)if(a>b)c=a,a=b,b=c;B)if(a>b){c=a,a=b,b=c;}C)if(a>b)c=a;a=b;b=c;D)if(a>b){c=a;a=b;b=c;}参考答案:C)解答:本题的含义是“a>b”为“真”A)执行c=a,a=b,b=c;逗号表达式语句。B)执行{c=a,a=b,b=c;}复合语句。C)只执行c=a;这条语句。D)执行{c=a;a=b;b=c;}复合语句。13.设有定义:inta=1,b=2,c=3;,以下语1314.以下是if语句的基本形式if(表达式)语句其中表达式A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式参考答案:D)解答:根据C语言的法则,可以是任意表达式。14.以下是if语句的基本形式参考答案:D)1415.若有定义语句inta,b;doublex;则下列选项中没有错误的是A)switch(x%2)B)switch((int)x/2.0){case0:a++;break;{case0:a++;break;case1:b++:break;case1:b++;break;default:a++;b++;default:a++;b++;}}C)switch((int)x%2)D)switch((int)(x)%2){case0:a++;break;{case0.0:a++;bresk;case1:b++;break;case1.0:b++;break;default:a++;b++default:a++;b++;}}参考答案:C)解答:A)错误,在C语言中求余运算必须在整型数之间运算。B)错误,在switch((int)x/2.0)中,不应出现2.0实型数。C)正确。D)错误。case0.0,表示错误。15.若有定义语句inta,b;doublex;1516.以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是A)switch(a)B)switch(a==1){case1:a=b;break;{case0:a=b;break;default:a++;case1:a++;}}C)switch(a)D)switch(a==1){defaule:a++;break;{case1:a=b;break;case1:a=b;case0:a++;}}参考答案:B)解答:在B)选项中表达的是a==1时做a++;,与题意相反。16.以下选项中与if(a==1)a=b;elsea++;1617.以下程序中,与语句:k=a>b?(b>c?1:0):0;功能相同的是A)if((a>b)&&(b>c))k=1;B)if((a>b)||(b>c))k=1;elsek=0elsek=0C)if(a<=b)k=0;D)if(a>b)k=1;elseif(b<=c)k=1;elseif(b>c)k=1elsek=0参考答案:A)解答:该题的流程图从该逻辑框图中,可判断出A)的描述与题意吻合,其它的都不能表达该题意。17.以下程序中,与语句:k=a>b?(b>c?1:0):01718.以下程序段的执行结果是intx=23;do{printf(“%d”,x--);}while(!x);A)输出321B)输出23C)不输出任何内容D)死循环参考答案:B)解答:先执行循环体,输出表达式x--的值为23,变量x的值为22,再判断循环条件!x,为假,则退出循环18.以下程序段的执行结果是参考答案:B)1819.从以下给出的表达式中选出与while(E)语句中的(E)不能等价的表达式。A)(!E==0)B)(E>0)||(E<0)C)(E!=0)D)(E==0)参考答案:D)解答:while(E)中的E只要不等于0即为“真”正确,表达式!E==0当E!=0时为真,E==0时为假正确正确错误,表达式E==0当E==0时为真,E!=0时为假19.从以下给出的表达式中选出与while(E)语句中的(E1920.有以下程序#include<stdio.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}

printf("%d,%d\n",a,b);}程序运行后的输出效果是A)9,18B)8,11C)7,11D)10,14参考答案:D)解答:当a=1时:执行循环体{b+=a;a+=2;}执行后,b=3,a=3,再执行a++,所以a=4;当a=4时:执行循环体{b+=a;a+=2;}执行后,b=7,a=6,再执行a++,所以a=7;当a=7时:执行循环体{b+=a;a+=2;}执行后,b=14,a=9,再执行a++,所以a=10;当a=10时:循环结束。输出序列“10,14”。程序运行结束。20.有以下程序参考答案:D)2021.有以下程序#include<stdio.h>main(){inty=10;for(;y>0;y--)if(y%3==0){printf(“%d”,--y); }}程序运行后的输出效果是A)741B)852C)963D)875421参考答案:B)解答:当y==0时退出循环,循环条件成立时y的范围是10—1,能被3整除的有9,6,3,因此输出的--y的值应为85221.有以下程序参考答案:B)2122.有以下程序#include<stdio.h>main(){inty=10;while(y--);printf("y=%d\n",y);}程序执行后的输出结果是A)y=0B)y=-1C)y=1D)while构成无限循环参考答案:B)解答:本题注意,while(y--);。该语句后面有一个“;”。实际上该循环执行的是一个空语句,但变量y每执行一次会被减“1”。所以y的值最终为“-1”。22.有以下程序参考答案:B)2223.设变量已正确定义,以下不能统计出一行中输入字符个数(不包括回车符)程序段是A)n=0;while(ch=getchar()!='\n')n++;B)n=0;while(getchar()!='\n')n++;C)for(n=0;getchar()!='\n';n++);D)n=0;for(ch=getchar();ch!='\n';n++);参考答案:D)解答:A)正确。B)正确。C)正确。D)错误,在for()循环体内,第一个表达式仅执行一次,所以读不到给出的其它字符。23.设变量已正确定义,以下不能统计出一行中输入字符个数(不2324.下列叙述中正确的是

A)break语句只能用于switch语句

B)在switch语句中必须使用default

C)break语句必须与switch语句中的case配对使用

D)在switch语句中,不一定使用break语句E)在循环体内使用break语句和continue语句的作用相同。参考答案:D)解答:A)错误,也可用于循环语句中。B)错误,可使用,也可不使用,根据实际情况而定。C)错误,case语句后不一定需要break语句。D)正确。E)错误,break语句作用是结束循环,continue语句的作用是,本次循环结束,开始下一次的循环。24.下列叙述中正确的是

A)break语句只能用于swit241、C语言的基本数据类型有

。2、C语言中变量的四要素为

。3、结构化程序设计的三种基本结构是

。4、在循环结构中,break语句的功能是

,continue语句的功能是

。5、格式化输入函数名

,格式化输出函数名

,字符输入函数名

,字符输出函数名

。*6、VC++开发环境中,以下常用操作的快捷键:编译

、运行

、定位到出错的行

。参考答案:1、整型,字符型,浮点型2、变量名、类型、变量值、存储单元3、顺序结构,选择结构,循环结构4、break:跳出循环;continue:跳出本次循环,进入下一次循环5、scanf,printf,getchar,putcharl6、Ctrl+F7,Ctrl+F5,F4二、填空1、C语言的基本数据类型有、25输入n,判断n是否为素数

比较break和continue的区别程序段:n=100;k=sqrt(n);for(i=2;i<=k;i++)if(n%i==0)break;if(i>k)printf(“yes\n”);elseprintf("no\n”);程序段:n=100;k=sqrt(n);for(i=2;i<=k;i++)

if(n%i==0)continue;if(i>k)printf(“yes\n”);elseprintf("no\n”);若n=100输出no若n=100输出yes输入n,判断n是否为素数

比较break和continue的26分析下面程序段的输出结果___________n=100;k=sqrt(n);for(i=2;i<=k;printf("i=%d\n",i)){if(n%i==0)continue;i++;}分析下面程序段的输出结果___________n=100;277、以下程序的运行结果是

。 main() { inti,j,m,n; i=8;j=10; m=++i; n=j++;

printf(“%d,%d,%d,%d”,i,j,m,n); }参考答案:i=8;j=10;++i表达式的值为9,变量i的值为9,m=++i的值为9j++表达式的值为10,变量j的值为11,n=j++的值为10故结果是:9,11,9,107、以下程序的运行结果是。参考答案:288、以下程序段的功能是

。 while((c=getchar())!='\n') count=count+1;9、以下程序段的功能是

for(n=0;n<26;n++) printf("%c",'A'+n);10、以下程序段的功能是

。 for(sum=0,i=1;i<=100;sum=sum+i,i+=2);参考答案:8、统计输入字符的个数9、输出26个大写字母10、计算100以内的奇数和8、以下程序段的功能是。参考答案:29题目一:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

三、编程题题目一:有1、2、3、4个数字,能组成多少个互不相同且无重复30voidmain()

{

inti,j,k,count=0;

for(i=1;i<5;i++)/*以下为三重循环*/

for(j=1;j<5;j++)

for(k=1;k<5;k++)

{/*确保i、j、k三位互不相同*/

if(i!=k&&i!=j&&j!=k) {printf(“%d”,i*100+j*10+k); count++; }

} printf(“共%d个满足条件的三位数\n”,count);

}voidmain()

{

inti,j,k,c31题目二:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....题目二:古典问题:有一对兔子,从出生后第3个月起每个月都生一32程序源代码(1):

voidmain()

{

longf1,f2,f3;

inti,n=20;

f1=f2=1;

printf(“第一个月:%12ld\n”,f1); printf(“第二个月:%12ld\n”,f2); for(i=3;i<=n;i++)

{

f3=f1+f2;/*前两个月加起来赋值给第三个月*/ printf(“第%d个月:%12ld”,i,f3); f1=f2; f2=f3; }

}程序源代码(1):

voidmain()

{

long33程序源代码(2):

voidmain()

{

longf1,f2;

inti;

f1=f2=1;

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

{printf(“%12ld%12ld”,f1,f2);

if(i%2==0)printf("\n");/*控制输出,每行四个*/

f1=f1+f2;/*前两个月加起来赋值给第三个月*/

f2=f1+f2;/*前两个月加起来赋值给第三个月*/

}

}程序源代码(2):

voidmain()

{

long34题目三:输入两个正整数m和n,求其最大公约数和最小公倍数。

程序分析:利用辗除法。题目三:输入两个正整数m和n,求其最大公约数和最小公倍数。35程序源代码:

voidmain()

{

inta,b,num1,num2,temp;

printf(“pleaseinputtwonumbers:\n”);

scanf(“%d,%d”,&num1,&num2);

if(num1<num2)

//使得num1大于num2

{temp=num1;

num1=num2;

num2=temp;

}

a=num1;b=num2;

while(b!=0)/*利用辗除法,直到b为0为止*/

{

temp=a%b;

a=b;

b=temp;

}

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

printf("gongbeishu:%d\n",num1*num2/a);

}

程序源代码:

voidmain()

{

inta,36题目四:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

程序分析:用循环找出a、b、c的所有可能的对手,用选择去掉不符合要求的

题目四:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人37voidmain(){ chari,j,k;/*i是a的对手,j是b的对手,k是c的对手*/

for(i=‘x’;i<=‘z’;i++)

for(j=‘x’;j<=‘z’;j++)

{if(i!=j)/*a的对手不能同时是b的对手*/ for(k=‘x’;k<=‘z’;k++)

{

if(i!=k&&j!=k)/*C的对手不能是a、b的对手*/ {if(i!=‘x’&&k!=‘x’&&k!=‘z’)

printf(“orderisa--%c\tb--%c\tc--%c\n”,i,j,k);

}

}

}

}voidmain()38题目五:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字

程序分析:学会分解出每一位数

题目五:给一个不多于5位的正整数,要求:一、求它是几位数,二39程序源代码(1):#include<stdio.h>intmain(){ inti=1,n,s; printf("请输入一个数:\n"); scanf("%d",&n); do { s=n%10; printf("倒数第%d位是%d\n",i,s); n=n/10; i++; }while(n!=0);}程序源代码(1):40程序源代码(2):

main()

{

inta,b,c,d,e,x;

scanf(“%ld”,&x);

a=x/10000;/*分解出万位*/

b=x%10000/1000;/*分解出千位*/

c=x%1000/100;/*分解出百位*/

d=x%100/10;/*分解出十位*/

e=x%10;/*分解出个位*/

if(a!=0)printf(“thereare5,%ld%ld%ld%ld%ld\n”,e,d,c,b,a);

elseif(b!=0)printf(“thereare4,%ld%ld%ld%ld\n”,e,d,c,b);

elseif(c!=0)printf(“thereare3,%ld%ld%ld\n”,e,d,c);

elseif(d!=0)printf(“thereare2,%ld%ld\n”,e,d);

elseif(e!=0)printf("thereare1,%ld\n",e);

}程序源代码(2):

main()

{

inta,b,c411.下列叙述中正确的是A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D)main可作为用户标识符,可以命名任意一个函数作为主函数参考答案:C)解答:A)错误,由于main()不一定写在第一个位置上,所以该句话不准确。B)错误,C语言中规定,程序必须从主函数开始执行,在主函数中结束。C)正确。D)错误,在main()函数中,main不可以作为标识符的名,但是在其它函数中,main可作为标识符的名称(不推荐这样做)。main()是程序的开始和结束的位置,不是任意函数都可以作为主函数。一、选择1.下列叙述中正确的是参考答案:C)一、选择422.以下选项中,能用作用户标示符的是A)voidB)8_8C)_0_D)unsigned参考答案:C)解答:A)不能,void为C语言的保留字。B)不能,阿拉伯数字不能出现在标识符的第一个位置上。C)能,符合C语言标识符命名法则。D)不能,unsigned为C语言的保留字。2.以下选项中,能用作用户标示符的是参考答案:C)433.以下叙述中正确的是A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句C)简单C语句必须以分号结束D)C语句必须在一行内完成参考答案:C)解答:A)不正确,C程序的基本组成单位应该是函数,函数的组成单位是语句。B)不正确,C程序中的每一行可写多条语句,如:x=1;y=2;z=3;。C)正确。D)不正确,C语句不一定在一行内完成。3.以下叙述中正确的是参考答案:C)444.以下程序运行后的输出结果是【】。#include<stdio.h>main(){inta=200,b=010;printf("%d%d\n",a,b);}参考答案:2008解答:a为十进制数200,b为八进制数,转换成十进制数为8。输出格式为十进制整数输出格式,输出的两个数之间没有空隙,所以输出的序列为“2008”。4.以下程序运行后的输出结果是【】。参考答案:2008455.有以下程序#include<stdio.h>main(){ints,t,A=10;doubleB=6;s=sizeof(A);t=sizeof(B);printf("%d,%d\n",s,t);}在VC6平台上编译运行,程序运行后的输出结果是A)2,4B)1,4C)4,8D)10,6参考答案:C)解答:在本题中sizeof(A)和sizeof(B)是求变量A,B所占的字节数。在VC6编译系统中,规定整型数均占用4个字节,双精度数占用8个字节。所以答案C)是正确的。5.有以下程序参考答案:C)466.有以下定义:inta;longb;doublex,y;则以下选项中正确的表达式是A)a%(int)(x-y)B)a=x

!=y;C)(a*y)%bD)y=x+y=x参考答案:B)解答:A)错误,x-y的值可能出现“0”,0不能作除数。B)正确,a=x

!=y可看成a=(x

!=y),“x

!=y”的值可能为“0”也可能为“1”。所以该表达式是正确。C)错误,(a*y)的值是一个实型数,C语言中求余计算“%”,必须是实型数之间进行计算。D)错误,该赋值方式相当于给表达式赋值,所以是错误的。6.有以下定义:inta;longb;double477.若a是数值型,则逻辑表达式(a==1)||(a!=1)的值是A)1B)0C)2D)不知道a的值,不能断定参考答案:A)解答:a的值只有两种可能,等于“1”或者不等于“1”。该表达式(a==1)||(a!=1)的值永远为真,所以,该表达式的值为“1”。7.若a是数值型,则逻辑表达式(a==1)||(a!=1)的488.表达式3.6-5/2+1.2+5%2的值是

A)4.3B)4.8C)3.3

D)3.8参考答案:D)解答:该表达式的值3.6-5/2+1.2+5%2=3.6-2+1.2+1=3.88.表达式3.6-5/2+1.2+5%2的值是

A)4.3499.表达式a+=a-=a=9的值是A)9B)9C)13D)0参考答案:D)解答:表达式a+=a-=a=9可化为a+=a-=9可化为a+=a=9-9可化为a+=a=0可化为a+=0。即a=0。9.表达式a+=a-=a=9的值是参考答案:D)5010.有以下程序#include<stdio.h>main(){charc1,c2;c1='A'+'8'-'4';

c2='A'+'8'-'5';printf("%c,%d\n",c1,c2);}已知字母A的ASCII码为65,程序运行后的输出的结果是A)E,68B)D,69C)E,DD)输出无定值参考答案:A)解答:本题的关键在于下面的表达式c1='A'+'8'-'4'=65+56-52=69是“E”的ASCII值。c2='A'+'8'-'5'=65+56-53=68是“D”的ASCII值。在输出时printf("%c,%d\n",c1,c2);c1按字符输出,所以将字符“E”输出。c2按有符号的十进制整形数输出,所以将数值“68”输出。10.有以下程序参考答案:A)5111.若变量已正确定义,在if(W)printf("%f\n",k);中,以下不可替代W的是A)a<>b+cB)ch=getchar()C)a==b+cD)a++参考答案:A)解答:A)错误,在C语言中没有“<>”这样的运算符,判断不相等用!=。B)正确。if(W)中的“W”可以是任意表达式。C)正确。同上。D)正确。同上。11.若变量已正确定义,在if(W)printf("%f\5212.有以下程序#include<stdio.h>main(){inta=1,b=0;if(!a)b++;elseif(a==0)if(a)b+=2;elseb+=3;printf("%d\n",b);}程序运行的结果是A)0B)1C)2D)3参考答案:A)解答:参考本题的流程图。在本题中,第一个判断为“假”,第二个判断也为“假”。所以,b的值仍然为“0”。12.有以下程序参考答案:A)5313.设有定义:inta=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A)if(a>b)c=a,a=b,b=c;B)if(a>b){c=a,a=b,b=c;}C)if(a>b)c=a;a=b;b=c;D)if(a>b){c=a;a=b;b=c;}参考答案:C)解答:本题的含义是“a>b”为“真”A)执行c=a,a=b,b=c;逗号表达式语句。B)执行{c=a,a=b,b=c;}复合语句。C)只执行c=a;这条语句。D)执行{c=a;a=b;b=c;}复合语句。13.设有定义:inta=1,b=2,c=3;,以下语5414.以下是if语句的基本形式if(表达式)语句其中表达式A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式参考答案:D)解答:根据C语言的法则,可以是任意表达式。14.以下是if语句的基本形式参考答案:D)5515.若有定义语句inta,b;doublex;则下列选项中没有错误的是A)switch(x%2)B)switch((int)x/2.0){case0:a++;break;{case0:a++;break;case1:b++:break;case1:b++;break;default:a++;b++;default:a++;b++;}}C)switch((int)x%2)D)switch((int)(x)%2){case0:a++;break;{case0.0:a++;bresk;case1:b++;break;case1.0:b++;break;default:a++;b++default:a++;b++;}}参考答案:C)解答:A)错误,在C语言中求余运算必须在整型数之间运算。B)错误,在switch((int)x/2.0)中,不应出现2.0实型数。C)正确。D)错误。case0.0,表示错误。15.若有定义语句inta,b;doublex;5616.以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是A)switch(a)B)switch(a==1){case1:a=b;break;{case0:a=b;break;default:a++;case1:a++;}}C)switch(a)D)switch(a==1){defaule:a++;break;{case1:a=b;break;case1:a=b;case0:a++;}}参考答案:B)解答:在B)选项中表达的是a==1时做a++;,与题意相反。16.以下选项中与if(a==1)a=b;elsea++;5717.以下程序中,与语句:k=a>b?(b>c?1:0):0;功能相同的是A)if((a>b)&&(b>c))k=1;B)if((a>b)||(b>c))k=1;elsek=0elsek=0C)if(a<=b)k=0;D)if(a>b)k=1;elseif(b<=c)k=1;elseif(b>c)k=1elsek=0参考答案:A)解答:该题的流程图从该逻辑框图中,可判断出A)的描述与题意吻合,其它的都不能表达该题意。17.以下程序中,与语句:k=a>b?(b>c?1:0):05818.以下程序段的执行结果是intx=23;do{printf(“%d”,x--);}while(!x);A)输出321B)输出23C)不输出任何内容D)死循环参考答案:B)解答:先执行循环体,输出表达式x--的值为23,变量x的值为22,再判断循环条件!x,为假,则退出循环18.以下程序段的执行结果是参考答案:B)5919.从以下给出的表达式中选出与while(E)语句中的(E)不能等价的表达式。A)(!E==0)B)(E>0)||(E<0)C)(E!=0)D)(E==0)参考答案:D)解答:while(E)中的E只要不等于0即为“真”正确,表达式!E==0当E!=0时为真,E==0时为假正确正确错误,表达式E==0当E==0时为真,E!=0时为假19.从以下给出的表达式中选出与while(E)语句中的(E6020.有以下程序#include<stdio.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}

printf("%d,%d\n",a,b);}程序运行后的输出效果是A)9,18B)8,11C)7,11D)10,14参考答案:D)解答:当a=1时:执行循环体{b+=a;a+=2;}执行后,b=3,a=3,再执行a++,所以a=4;当a=4时:执行循环体{b+=a;a+=2;}执行后,b=7,a=6,再执行a++,所以a=7;当a=7时:执行循环体{b+=a;a+=2;}执行后,b=14,a=9,再执行a++,所以a=10;当a=10时:循环结束。输出序列“10,14”。程序运行结束。20.有以下程序参考答案:D)6121.有以下程序#include<stdio.h>main(){inty=10;for(;y>0;y--)if(y%3==0){printf(“%d”,--y); }}程序运行后的输出效果是A)741B)852C)963D)875421参考答案:B)解答:当y==0时退出循环,循环条件成立时y的范围是10—1,能被3整除的有9,6,3,因此输出的--y的值应为85221.有以下程序参考答案:B)6222.有以下程序#include<stdio.h>main(){inty=10;while(y--);printf("y=%d\n",y);}程序执行后的输出结果是A)y=0B)y=-1C)y=1D)while构成无限循环参考答案:B)解答:本题注意,while(y--);。该语句后面有一个“;”。实际上该循环执行的是一个空语句,但变量y每执行一次会被减“1”。所以y的值最终为“-1”。22.有以下程序参考答案:B)6323.设变量已正确定义,以下不能统计出一行中输入字符个数(不包括回车符)程序段是A)n=0;while(ch=getchar()!='\n')n++;B)n=0;while(getchar()!='\n')n++;C)for(n=0;getchar()!='\n';n++);D)n=0;for(ch=getchar();ch!='\n';n++);参考答案:D)解答:A)正确。B)正确。C)正确。D)错误,在for()循环体内,第一个表达式仅执行一次,所以读不到给出的其它字符。23.设变量已正确定义,以下不能统计出一行中输入字符个数(不6424.下列叙述中正确的是

A)break语句只能用于switch语句

B)在switch语句中必须使用default

C)break语句必须与switch语句中的case配对使用

D)在switch语句中,不一定使用break语句E)在循环体内使用break语句和continue语句的作用相同。参考答案:D)解答:A)错误,也可用于循环语句中。B)错误,可使用,也可不使用,根据实际情况而定。C)错误,case语句后不一定需要break语句。D)正确。E)错误,break语句作用是结束循环,continue语句的作用是,本次循环结束,开始下一次的循环。24.下列叙述中正确的是

A)break语句只能用于swit651、C语言的基本数据类型有

。2、C语言中变量的四要素为

。3、结构化程序设计的三种基本结构是

。4、在循环结构中,break语句的功能是

,continue语句的功能是

。5、格式化输入函数名

,格式化输出函数名

,字符输入函数名

,字符输出函数名

。*6、VC++开发环境中,以下常用操作的快捷键:编译

、运行

、定位到出错的行

。参考答案:1、整型,字符型,浮点型2、变量名、类型、变量值、存储单元3、顺序结构,选择结构,循环结构4、break:跳出循环;continue:跳出本次循环,进入下一次循环5、scanf,printf,getchar,putcharl6、Ctrl+F7,Ctrl+F5,F4二、填空1、C语言的基本数据类型有、66输入n,判断n是否为素数

比较break和continue的区别程序段:n=100;k=sqrt(n);for(i=2;i<=k;i++)if(n%i==0)break;if(i>k)printf(“yes\n”);elseprintf("no\n”);程序段:n=100;k=sqrt(n);for(i=2;i<=k;i++)

if(n%i==0)continue;if(i>k)printf(“yes\n”);elseprintf("no\n”);若n=100输出no若n=100输出yes输入n,判断n是否为素数

比较break和continue的67分析下面程序段的输出结果___________n=100;k=sqrt(n);for(i=2;i<=k;printf("i=%d\n",i)){if(n%i==0)continue;i++;}分析下面程序段的输出结果___________n=100;687、以下程序的运行结果是

。 main() { inti,j,m,n; i=8;j=10; m=++i; n=j++;

printf(“%d,%d,%d,%d”,i,j,m,n); }参考答案:i=8;j=10;++i表达式的值为9,变量i的值为9,m=++i的值为9j++表达式的值为10,变量j的值为11,n=j++的值为10故结果是:9,11,9,107、以下程序的运行结果是。参考答案:698、以下程序段的功能是

。 while((c=getchar())!='\n') count=count+1;9、以下程序段的功能是

for(n=0;n<26;n++) printf("%c",'A'+n);10、以下程序段的功能是

。 for(sum=0,i=1;i<=100;sum=sum+i,i+=2);参考答案:8、统计输入字符的个数9、输出26个大写字母10、计算100以内的奇数和8、以下程序段的功能是。参考答案:70题目一:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

三、编程题题目一:有1、2、3、4个数字,能组成多少个互不相同且无重复71voidmain()

{

inti,j,k,count=0;

for(i=1;i<5;i++)/*以下为三重循环*/

for(j=1;j<5;j++)

for(k=1;k<5;k++)

{/*确保i、j、k三位互不相同*/

if(i!=k&&i!=j&&j!=k) {printf(“%d”,i*100+j*10+k); count++; }

} printf(“共%d个满足条件的三位数\n”,count);

}voidmain()

{

inti,j,k,c72题目二:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....题目二:古典问题:有一对兔子,从出生后第3个月起每个月都生一73程序源代码(1):

voidmain()

{

longf1,f2,f3;

inti,n=20;

f1=f2=1;

printf(“第一个月:%12ld\n”,f1); printf(“第

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论