C语言程序设计基础第章课后习题答案.docx

上传人:b****3 文档编号:27106376 上传时间:2023-06-27 格式:DOCX 页数:10 大小:19.79KB
下载 相关 举报
C语言程序设计基础第章课后习题答案.docx_第1页
第1页 / 共10页
C语言程序设计基础第章课后习题答案.docx_第2页
第2页 / 共10页
C语言程序设计基础第章课后习题答案.docx_第3页
第3页 / 共10页
C语言程序设计基础第章课后习题答案.docx_第4页
第4页 / 共10页
C语言程序设计基础第章课后习题答案.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

C语言程序设计基础第章课后习题答案.docx

《C语言程序设计基础第章课后习题答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计基础第章课后习题答案.docx(10页珍藏版)》请在冰豆网上搜索。

C语言程序设计基础第章课后习题答案.docx

C语言程序设计基础第章课后习题答案

第4章选择结构程序设计

一、选择题

1.已有定义:

charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是(B)。

A.isupper(c)B.'A'<=c<='Z'C.'A'<=c&&c<='Z'D.c<=('z'-32)&&('a'-32)<=c

2.设有定义:

intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是(A)。

A.k++B.k+=1C.++kD.k+1

3.当变量c的值不为2、4、6时,值也为“真”的表达式是()。

A.(c==2)||(c==4)||(c==6)B.(c>=2&&c<=6)||(c!

=3)||(c!

=5)C.(c>=2&&c<=6)&&!

(c%2)D.(c>=2&&c<=6)&&(c%2!

=1)

4.以下选项中,当x为大于1的奇数时,值为0的表达式(D)。

A.x%2==1B.x/2C.x%2!

=0D.x%2==0

5.若变量已正确定义,在if(W)printf("%d\n",k);中,以下不可替代W的是(A)。

A.a<>b+cB.ch=getchar()C.a==b+cD.a++

6.设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是(C)。

A.if(x++);B.if(x>y&&y!

=0);C.if(x>y)x--D.if(y<0){;}elsey++;elsex++;

7.在嵌套使用if语句时,C语言规定else总是(A)。

A.和之前与其具有相同缩进位置的if配对B.和之前与其最近的if配对C.和之前与其最近的且不带else的if配对D.和之前的第一个if配对

8.有以下程序段inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%db=%dc=%d\n",a,b,c);程序的输出结果是(A)。

A.a=10b=50c=10B.a=10b=50c=30C.a=10b=30c=10D.a=50b=30c=50

9.有下列程序:

main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf("%d,%d,%d,%d\n",a,b,c,d);}程序输出(D)。

A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错

10.若有说明语句:

intw=1,x=2,y=3,z=4;则表达试w>x?

w:

z>y?

z:

x的值是(A)。

A.4B.3C.2D.1

11.若有定义:

floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是(C)。

A.switch(x)B.switch((int)x);{case1.0:

printf("*\n");{case1:

printf("*\n");case2.0:

printf("**\n");}case2:

printf("**\n");}C.switch(a+b)D.switch(a+b){case1:

printf("*\n");{case1:

printf("*\n");case2+1:

printf("**\n");}casec:

printf("**\n");}

12.以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是(B)。

A.switch(a) B.switch(a==1) {case:

a=b;break;{case0:

a=b;break; default:

a++;}case1:

a++;}C.switch(a)D.switch(a==1) {default:

a++;break;{case1:

a=b;break; case1:

a=b;}case0:

a++;}

13.有以下程序#includevoidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:

switch(y){case0:

a++;break;case1:

b++;break;}case2:

a++;b++;break;case3:

a++;b++;}printf("a=%d,b=%d\n",a,b);}程序的运行结果是(D)。

A.a=1,b=0B.a=2,b=2C.z=1,b=1D.a=2,b=1

二、填空题

1.下列程序运行后的输出结果是1。

main(){intx,a=1,b=2,c=3,d=4;x=(a

a:

b;x=(x

x:

c;x=(d>x)?

x:

d;printf("%d\n",x);}

2.以下程序的运行结果是#&。

voidmain(){inta=2,b=7,c=5;switch(a>0){case1:

switch(b<0){case1:

printf("@");break;case2:

printf("!

");break;}case0:

switch(c==5){case0:

printf("*");break;case1:

printf("#");break;case2:

printf("$");break;}default:

printf("&");}printf("\n");}

三、编程题

1.编程判断一个整数是奇数还是偶数。

#includevoidmain(){intnumber;printf("Inputaninteger:

");scanf("%d",&number);if(number%2==0)printf("%disanevennumber\n",number);elseprintf("%disanoddnumber\n",number);}

2.编程判断两个数据之间的逻辑关系,即判断两数据是大于、小于还是等于关系。

#includevoidmain(){intfirst,second;printf("Inputtwointegers:

");scanf("%d%d",&first,&second);if(first==second)printf("%disequalto%d\n",first,second);elseif(first>second)printf("%disgreaterthan%d\n",first,second);elseprintf("%dislessthan%d\n",first,second);}

3.输入年份,判断它是否是闰年(如果年号能被400整除,或能被4整除,而不能被100整除,则是闰年,否则不是)。

voidmain(){intyear;scanf("%d",&year);if(year%400==0||(year%4==0&&year%100==0))printf("%d是闰年\n",year);elseprintf("%d不是闰年\n",year);}

4.设计一个简单的计算器程序,能输入整型运算数和基本运算符(+,-,*,/),输出计算结果。

例如:

输入2+6,输出2+6=8。

#includemain(){floata,b,result;charop;scanf("%f%c%f",&a,&op,&b);switch(op){case'+':

result=a+b;printf("=%f",result);break;case'-':

result=a-b;printf("=%f",result);break;case'*':

result=a*b;printf("%f",result);break;case'/':

if(b==0.0)printf("error!

\n");result=a/b;printf("=%f",result);default:

printf("errorduetotheillegalinput!

\n");}}

5.输入某年某月某日,判断这一天是这一年的第多少天?

#include

voidmain()

{

intyear,month,day,sum=0;

printf("Inputyear-month-day:

\n");

scanf("%d-%d-%d",&year,&month,&day);

switch(month)

{

case12:

sum+=30;

case11:

sum+=31;

case10:

sum+=30;

case9:

sum+=31;

case8:

sum+=31;

case7:

sum+=30;

case6:

sum+=31;

case5:

sum+=30;

case4:

sum+=31;

case3:

sum+=28;

case2:

sum+=31;

case1:

sum+=day;

}

if(((year%400==0)||((year%4==0)&&(year%100!

=0)))&&month>2)

sum+=1;

printf("Totaldaysare%d\n",sum);

}

第5章循环结构程序设计

一、选择题

1.要求通过while循环不断读入字符,当读入字母N时结束循环。

若变量已正确定义,下列正确的程序段是(A)。

A.while((ch=getchar())!

='N')printf("%c",ch);B.while(ch=getchar()!

='N')printf("%c",ch);C.while(ch=getchar()=='N')printf("%c",ch);D.while((ch=getchar())=='N')printf("%c",ch);

2.若变量已正确定义,有以下程序段i=0;doprintf("%d,",i);while(i++);printf("%d\n",i);其输出结果是(B)。

A.0,0B.0,1C.1,1D.程序进入无限循环

3.当执行以下程序段时(A)。

x=-1;do{x=x*x;}while(!

x);A.循环体执行一次B.循环体将执行两次C.循环体将执行无限次D.系统将提示有语法错误

4.有以下程序#includemain(){inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的运行结果是(C)。

A.741B.963C.852D.875421

5.执行语句:

for(i=1;i++<4;);后,变量i的值是(C)A3B4C5D不定

6.以下不构成无限循环的语句或语句组是(A)。

A.n=0;B.n=0;do{++n;}while(n<=0);while

(1){n++;}C.n=10;D.for(n=0,i=1;;i++)n+=i;while(n);{n--;}

7.以下程序段中的变量已正确定义for(i=0;i<4;i++,i++) for(k=1;k<3;k++);printf("*");程序段的输出结果是(D)。

A.********B.****C.**D.*

8.有以下程序#includemain(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf("%d\n",m);}程序的运行结果是(B)。

A.0B.1C.2D.3

9.有以下程序main(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}程序运行后的输出结果是(B)。

A.1*1=11*2=21*3=3B.1*1=11*2=21*3=32*1=22*2=42*2=42*3=63*1=33*3=9C.1*1=1D.1*1=11*2=22*2=42*1=22*2=41*3=32*3=63*3=93*1=33*2=63*3=9

10.以下程序中,while循环的循环次数是(D)main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}A1B10C6D死循环,不能确定次数

11.有以下程序#includevoidmain(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--);continue;}printf("%d,",--x);}}程序的运行结果是(D)。

A.7,4,2B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,

二、填空题

1.当执行以下程序时,输入1234567890<回车>,则其中while循环体将执行0次。

#includemain(){charch;while((ch=getchar())==’0’)printf("#");}

2.以下程序的输出结果是54321。

#includemain(){intn=12345,d;while(n!

=0){d=n%10;printf("%d",d);n/=10;}}

3.以下程序运行后的输出结果是5。

#includemain(){inta=1,b=7;do{b=b/2;a+=b;}while(b>1);printf("%d\n",a);}

4.若有定义:

intk;,以下程序段的输出结果是##2##4。

for(k=2;k<6;k++,k++)printf("##%d",k);

5.以下程序的输出结果是_ACE_____。

#includemain(){inti;for(i='a';i<'f';i++,i++)printf("%c",i-'a'+'A');printf("\n");}

6.以下程序的输出结果是1。

#includemain(){inti,j,sum;for(i=3;i>=1;i--){sum=0;for(j=1;j<=i;j++)sum+=i*j;}printf("%d\n",sum);}

三、编程题

1.编写程序,显示100~200之间能被7除余2的所有整数。

#include"stdio.h"

main()

{inti;

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

{if(i%7==2)

printf("\t%d\t",i);

}

}

2.输入n个整数,求这n个整数中的最大数、最小数和偶数平均数。

#include

voidmain()

{

inti,n,data,max=0,min=0,even=0,evennumber=0;

printf("Pleaseinputthenumberofdata:

");

scanf("%d",&n);

printf("Pleaseinputthedata:

\n");

scanf("%d",&data);

max=data;

min=data;

if(data%2==0)

{

even=even+data;

evennumber++;

}

for(i=1;i

{

scanf("%d",&data);

if(data>max)

max=data;

else

if(data

min=data;

if(data%2==0)

{

even=even+data;

evennumber++;

}

}

printf("Themaxis%d\nTheminis%d\nTheaverageofevenis%5.2f\n",max,min,(float)(even)/evennumber);

}

3.输入一串字符,以回车作为结束标志。

统计并输出这串字符中大写字母、小写字母和数字字符的个数。

#include

voidmain()

{

intupper=0,lower=0,number=0;

charletter;

while((letter=getchar())!

='\n')

{

if(letter>='a'&&letter<='z')lower++;

elseif(letter>='A'&&letter<='Z')upper++;

elseif(letter>='0'&&letter<='9')number++;

}

printf("thenumberofuppercaseis:

%d\n",upper);

printf("thenumberoflowercaseis:

%d\n",lower);

printf("thenumberofnumberis:

%d\n",number);

}

4.编程求Fibonacci数列的前40个数。

该数列的生成方法是:

F1=1,F2=1,Fn=Fn-1+Fn-2(n>=3)(即从第三个数起,每个数等于前2个数之和)。

#include"stdio.h"

voidmain()

{

intf[40],n;

f[0]=1;

f[1]=1;

printf("Fibonacci数列的前40个数是:

%d\t%d\t",f[0],f[1]);

for(n=2;n<40;n++)

{

f[n]=f[n-1]+f[n-2];

printf("%d\t",f[n]);

}

}

5.编写程序,输出如下结果。

1*8+1=912*8+2=98123*8+3=9871234*8+4=987612345*8+5=98765123456*8+6=9876541234567*8+7=987654312345678*8+8=98765432123456789*8+9=987654321#includevoidmain(){inti,num;num=0;for(i=1;i<10;i++){num=num*10+i;printf("%9d*8+%d=%d\n",num,i,num*8+i);}}

6.一个穷人找到一个百万富翁,给他商讨一个换钱计划如下:

我每天给你十万元,而你第一天只需给我一元钱,第二天给我二元钱,第三天给我四元钱,……,即我每天都给你十万元,你每天给我的钱都是前一天的两倍,直到满一个月(30天)。

百万富翁很高兴地接受了这个换钱计划。

请编写程序计算满一个月时,穷人给了富翁多少钱,而富翁又给了穷人多少钱。

#include

voidmain()

{

longpoor=100000,rich=1,i;

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

{

poor=poor+100000;

rich=rich*2;

}

printf("Moneyofpoorgivingrichis%ld\nMoneyofrichgivingpooris%ld\n",poor,rich);

}

7.猴子吃桃问题。

猴子第一天摘下若干桃子,立即吃了一半,不过瘾又多吃了一个。

第二天早上又将剩下的桃子吃了一半,又多吃了一个。

以后的每天早上都是吃了前一天剩下的一半加一个。

到第10天早上时只剩下一个桃子了。

编写程序,求猴子第一天共摘了多少桃子。

#include"stdio.h"

main()

{

inti,j,k;/*j是最后的桃子数,k是中间变量,也是桃子总数*/

j=1;

for(i=9;i>0;i--)

{

k=(j+1)*2;

j=k;

}

printf("%total=%d\n",k);

}

8.把50元钱分成一元、二元和五元的纸币且纸币数共为20张的分法有多少种?

(注:

在兑换中一元、二元和五元的纸币数可以为0)。

#includevoidmain(){intfive,two,one;printf("fiveyuan|twoyuan|oneyuan\n");for(five=0;five<=10;five++)for(two=0;two<=20;two++){one=20-five-two;if((five*5+two*2+one==50)&&one>=0)printf("%6d|%6d|%6d\n",five,two,one);}}

9.编程打印指定行数的数字金字塔。

1121123211234321123454321#includevoidmain(){introws,i,j,number;printf("Inputtherows:

");scanf("%d",&rows);for(i=1;i<=rows;i++){for(j=rows-i+1;j>=1;j--)printf("");//打印两个空格,因为后面的数字是%2dfor(number=1;number=1;number--)printf("%2d",number);printf("\n");}}

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

当前位置:首页 > 高中教育 > 初中教育

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

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