《明解C语言》第3章 分支结构程序练习题答案

合集下载

C语言程序设计课件源程序及习题答案第3章 选择结构流程与应用-PPT精选文档

C语言程序设计课件源程序及习题答案第3章 选择结构流程与应用-PPT精选文档


调试问题 3.8程序, 观察运行结 果
练一练


问题 1.根据图3-8给出的流程图编写程序,对比 问题3.7中的程序代码。 2.编一程序可查询驾驶证可以驾驶的车辆类 型的。要求从键盘输入驾照的类型可以输出 相应的准驾车型。比如输入驾照类型‘C’,输 出准驾车型:小轿车。其中,A牌驾照可驾驶 大客车、人货车和小轿车,B牌驾照可驾驶人 货车和小轿车,C牌驾照可驾驶小轿车,D 牌 驾照可驾驶摩托车。

问题3.9 编一程序可 查询驾驶证可以驾驶 的车辆类型。要求从 键盘输入驾照的类型。 比如输入驾照类型 ‘C’,输出“你可以驾 驶小轿车”。其中, A牌驾照可驾驶大客 车、人货车和小轿车, B牌驾照可驾驶人货 车和小轿车,C牌驾 照可驾驶小轿车,D 牌驾照可驾驶摩托车。 调试问题3.9程序,观察运行结果
第3章选择结构流程和应用学习目标1了解选择结构判定条件的构成2掌握单分支与双分支选择结构程序设计3掌握多分支选择结构程序设计1选择结构判定条件的构成关系运算符与关系表达式逻辑运算符与逻辑表达式关系运算符关系运算是对两个操作数之间进行比较的运算符其运算结果为逻辑值或称布尔值boolean真或假
第 3章 选择结构流程和应用
条 件
Y
N
语 句
试一试

问题3.4 从键盘输入 一个数,输出其绝对 值。
调试问题3.4程序, 观察运行结果
练一练
问题:小明去参加一个同学的生日聚会, 同学的家长规定18岁以上的才可以饮酒, 所以需要编一程序根据输入的年龄打印 一张饮酒卷,使的能饮酒的同学可以获 取饮酒卷。

if-else语句
学一学 if-else语句是标准的if语句。 用来实现双分支选择结构, 其一般形式为: if ( 条件 ) 语句1; else 语句2;

C语言三至四章课后题答案

C语言三至四章课后题答案
}
}
if(i==3)printf("\tThis is the 9*9 table.");//在3的那一行输出This is the 9*9 table.
printf("\n");//输出换行符
}
}
14. #include <stdio.h>
#include <string.h>
void main()
{
temp=a;
a=b;
b=temp;
}
if(a>c)
{
temp=a;
a=c;
c=temp;
}
if(b>c)
{
temp=b;
b=c;
c=temp;
}
printf("%f\n",b);
}
5. #include<stdio.h>
void main()
{
int a;
printf("please input your a=");
}
(2)编写一个程序,从键盘输入圆半径,输出圆周长和圆面积。
#include <stdio.h>
#define PI 3.14
void main()
{
float r,s,l;
printf("请输入圆的半径:",r);
scanf("%f",&r);
s=PI*r*r;l=Fra bibliotek*PI*r;printf("圆的面积=%f\n圆的周长=%f\n",s,l);
{
printf("**********欢饮使用本程序**********\n\n");

C语言教材第三章课后部分习题答案

C语言教材第三章课后部分习题答案

C语言教材第三章课后部分习题答案( 第三版谭浩强)3.6写出以下程序运行的结果。

main(){char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c %c”,c4,c5);}解:aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabcAㄩN3.7要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。

因此,"China"应译为"Glmre"。

请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

解:#include <stdio.h>main(){ char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); }运行结果:密码是Glmre3.9求下面算术表达式的值。

(1)x+a%3*(int)(x+y)%2/4设x=2.5,a=7,y=4.7(2)(float)(a+b)/2+(int)x%(int)y设a=2,b=3,x=3.5,y=2.5(1)2.5(2)3.53.10写出程序运行的结果。

main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf(“%d,%d,%d,%d”,i,j,m,n);}解:9,11,9,103.12写出下面表达式运算后a的值,设原来a=12。

c语言第四版答案第三章,《C语言程序设计》课后习题答案(第三章)

c语言第四版答案第三章,《C语言程序设计》课后习题答案(第三章)

c语⾔第四版答案第三章,《C语⾔程序设计》课后习题答案(第三章)3.3 请写出下⾯程序的输出结果.结果:575 767.856400,-789.12396267.856400,-789.12396267.86,-789.12,67.856400,-789.123962,67.856400,-789.1239626.785640e+001,-7.89e+002A,65,101,411234567,4553207,d68765535,17777,ffff,-1COMPUTER, COM3.4 ⽤下⾯的scanf函数输⼊数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a',问在键盘上如何输⼊?main(){inta,b;floatx,y;charc1,c2;scanf("a=%d b=%d,&a,&b);scanf("x=%f y=%e",&x,&y);scanf("c1=%c c2=%c",&c1,&c2);}解:可按如下⽅式在键盘上输⼊:a=3 b=7x=8.5 y=71.82c1=A c2=a(说明:在边疆使⽤⼀个或多个scnaf函数时,第⼀个输⼊⾏末尾输⼊的"回车"被第⼆个scanf函数吸收,因此在第⼆\三个scanf函数的双引号后设⼀个空格以抵消上⾏⼊的"回车".如果没有这个空格,按上⾯输⼊数据会出错,读者⽬前对此只留有⼀初步概念即可,以后再进⼀步深⼊理解.)3.5 ⽤下⾯的scanf函数输⼊数据使a=10,b=20,c1='A',c2='a',x=1.5,y=-3.75,z=57.8,请问在键盘上如何输⼊数据?scanf("%5d%5d%c%c%f%f%*f%f",&a,&b,&c1,&c2,&y,&z);解:main(){inta,b;floatx,y,z;charc1,c2;scanf("%5d%5d%c%c%f%f",&a,&b,&c1,&c2,&x,&y,&z);}运⾏时输⼊:10 20Aa1.5 -3.75+1.5,67.8(注解:按%5d格式的要求输⼊a与b时,要先键⼊三个空格,⽽后再打⼊10与20。

C语言课后全部答案

C语言课后全部答案

第一章C语言初步一、选择题1.C2.D3.D4.A5.D6.B7.B 8.B 9.C 10.A二、思考与应用题1.A.字符串常量B.字符串常量C.整型常量D.浮点型常量(double)2.A.long doubleB.long intC.floatD.字符型常量3.A.整型常量B.字符型常量C.字符串常量D.字符串常量4.FirstExample: 10,w is Yz is 5.125.int main(void){return 0;}6.#include<stdio.h>int main(void){print f("Hello World");return 0;}7.#include<stdio.h>int main(void){printf("We are to learn correct");printf("C language here");return 0;}/*main*/8.#include<stdio.h>int main(void){/*Local Definition*/int a;float b;char c;/*Statements*/printf("The end of the program."); return 0;}/*main*/9.#include<stdio.h>int main(void){/*Local Definition*/int a;float b;char c,d;/*Statements*/printf("The end of the program."); return 0;}/*main*/10.#include<stdio.h>int main(void){/*Local Definition*/int a;char b,c,d;float e,f;/*Statements*/printf("The end of the program."); return 0;}/*main*/11.A.char option;B.int sum=0;C.float produce=1;12.A.short code;B.float salesTax=.0825;C.double sum=0;13.#include<stdio.h>int main(void){float cost=172.53;printf("The sales total is: $ %6.2f\n",cost);printf("^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^");return 0;}14.#include<stdio.h>int main(void){printf("******\n");printf("******\n");printf("******\n");printf("******\n");return 0;}15.#include<stdio.h>int main(void){printf("*\n");printf("**\n");printf("***\n");printf("****\n");return 0;}16.#include<stdio.h>int main(void){int x1=1;int x2=10;int x3=100;int x4=1000;int x5=10000;printf("%d %d %d %d %d\n",x1,x2,x 3,x4,x5);printf("%f %f %f %f %f\n",x1,x2,x 3,x4,x5);return 0;}17.#include<stdio.h>int main(void){int x;printf("Please enter an integer:\n");scanf("%d",&x);printf("The number as a character:%c\n",x);printf("The number as a decimal:%d\n",x);printf("The number as a float:%f\n",x);return 0;}三、编程题1.#include<stdio.h>int main(void){int x1;int x2;int x3;printf("Please enter three numbers:");scanf("%d%d%d",&x1, &x2, &x3);printf("\nYour numbers forword:\n");printf("%8d\n%8d\n%8d\n",x1,x2,x3 );printf("Your numbers reversed:\n");printf("%8d\n%8d\n%8d\n",x3,x2,x1 );return 0;}2.#include<stdio.h>int main(void){int x1;int x2;int x3;int x4;int x5;int x6;int x7;int x8;int x9;int x10;printf("Please enter 10 numbers:\n");scanf("%d%d%d%d%d%d%d%d%d%d",&x1, &x2, &x3, &x4, &x5, &x6, &x7, &x8, &x9, &x10);printf("\nYour numbers are:\n");printf("%8d%8d\n",x1,x10);printf("%8d%8d\n",x2,x9);printf("%8d%8d\n",x3,x8);printf("%8d%8d\n",x4,x7);printf("%8d%8d\n",x5,x6);return 0;}3.#include<stdio.h>int main(void){int x1;int x2;int x3;int x4;int x5;int x6;int x7;int x8;int x9;printf("Input:\n");printf(" ");scanf("%d%d%d%d%d%d%d%d%d",&x1, &x2, &x3, &x4, &x5, &x6, &x7, &x8, &x9);printf("\nOutput\n");printf("%8d,%d,%d\n",x1,x2,x3);printf("%8d,%d,%d\n",x4,x5,x6);printf("%8d,%d,%d\n",x7,x8,x9);return 0;}第二章表达式与简单程序设计一、选择题1.A2.D3.C4.B5.B6.D7.B二、思考与应用题1.A.2 B.8 C.8 D.0 E.11 2.A.4,4B.4,4 C.4,4 D.2,3 E.4,53.A.12 B.-27 C.14 D.2 E.4 4.A.22.52 B.4.5 C.13.333333 D.0.882353 E.0.075.ABCEF6.A.5 B.2 C.4 D.1 E.7.A.5 B.2 C.4 D.-3 E.6 8.A.5 B.294 C.4 D.29 E.9 9. 50 50 100 2510.#include<stdio.h>int main(void){float x;float y;float p;float s;float total;printf("Please enter x and y:\n");scanf("%f%f",&x,&y);p=x*y;s=x+y;total=s*s+p*(s-x)*(p+y);printf("total=%f",total);return 0;}11.#include<stdio.h>int main(void){int x,y,z;printf("Please enter two integers:\n");scanf("%d%d",&x,&y);z=x*y;printf("%d*%d=%d",x,y,z);return 0;}12.#include<stdio.h>int main(void){float x;int y;printf("Please enter a floating point number:\n");scanf("%f",&x);y=(int)x%10;printf("%d",y);return 0;}13.#include<stdio.h>int main(void){float x;int y;printf("Please enter a floating point number:\n");scanf("%f",&x);y=(int)x/10%10;printf("%d",y);return 0;}14.#include<stdio.h>int main(void){float x;float y;float c;float s;p rintf("Please enter length and width:\n");s canf("%f%f",&x,&y);c=2*(x+y);s=x*y;p rintf("The circumference is %f\n",c);p rintf("The measure of area is %f",s);r eturn 0;}15.#include<stdio.h>int main(void){int a;f loat r;p rintf("Please enter an angle(integer):\n");s canf("%d",&a);r=a/57.295779;p rintf("%d°is %.5f radians",a,r);r eturn 0;}16.#include<stdio.h>int main(void){float c;float F;printf("Please enter centigrade:\n");scanf("%f",&c);F=32+(c*180.0/100.0);printf("Fahrenheit is %f ",F);return 0;}17.(1)double m,v,KinEn;KinEn=m*v*v/2;(2)double b,c,res;res=(b+c)/(2*b*c);18.(1)#include<stdio.h>int main(void){int x=25;x=x+5;printf("%d\n",x);x=x+5;printf("%d\n",x);return 0;}(2)#include<stdio.h>int main(void){int x=10;x=x+2;printf("%d\n",x);x=x+2;printf("%d\n",x);return 0;}(3)#include<stdio.h>int main(void){int x=32;x=x*2;printf("%d\n",x);x=x*2;printf("%d\n",x);return 0;}三、编程题1.A.#include<stdio.h>int main(void){float x;float y;printf("Please enter an number(inch):\n");scanf("%f",&x);y=x/12;printf("%f inches is %f feet ",x,y);return 0;}B.#include<stdio.h>int main(void){float x;float y;printf("Please enter an number(inch):\n");scanf("%f",&x);y=x/36;printf("%f inches is %f yards ",x,y);return 0;}C.#include<stdio.h>int main(void){float x;float y;printf("Please enter an number(inch):\n");scanf("%f",&x);y=x*2.54;printf("%f inches is %f centimeters ",x,y);return 0;D.#include<stdio.h>int main(void){float x;float y;printf("Please enter an number(inch):\n");scanf("%f",&x);y=x/39.37;printf("%f inches is %f meters ",x,y);return 0;}2.#include<stdio.h>int main(void){int fib1;int fib2;int fib3;fib1=13+21;fib2=21+fib1;fib3=fib1+fib2;printf("%d,%d,%d",fib1,fib2,fib3);return 0;}3.#include<stdio.h>int main(void){int x;int b1;int b2;int b3;int b4;int b5;printf("Please enter an integer(0-32767):\n");scanf("%d",&x);b1=x%10;b2=x/10%10;b3=x/100%10;b4=x/1000%10;b5=x/10000%10;printf("%4d%4d%4d%4d%4d\n",b5,b4,b3,b2,b1);printf("%4d%4d%4d%4d%\n",b4,b3,b2,b1);printf("%4d%4d%4d\n",b3,b2,b1);printf("%4d%4d\n",b2,b1);printf("%4d",b1);return 0;}第三章分支程序设计一、选择题1.C2.D3.A4.B5.B6.A7.C8.C 9.A二、思考与应用题1.A.0 B.1 C.1 D.0 E.0 2.A.x>=y B.x<y C.x!=y D.x==y E.x>y3.A.0 B.1 C.1 D.1 E.0 4.x=4,y=3,z=25.x=4,y=1,z=26.x=4,y=2,z=27.x=4,y=1,z=28.x=0,y=0,z=19.x=2,y=0,z=210.x=0,y=0,z=111.x=0,y=0,z=112.x=-1,y=0,z=013.x=0,y=1,z=014.x=1,y=3,z=115.x=1,y=3,z=116.x=4,y=3,z=017.if(aChar=='E'){c++;printf("Value is E\n");}18.switch(ch){case ‘E’:case ‘e’:countE++;break;case ‘A’:case ‘a’:countA++;break;case ‘I’:case ‘i’:countI++;break;default:printf("Error-Not A,E,or I\a\n"); }三、编程题1.#include<stdio.h>main( ){int x,x1,x2,x3;char grade;printf("please enter three text scores(0-100):\n");scanf("%d%d%d",&x1,&x2,&x3);x=(x1+x2+x3)/3;if(x>=90)grade='A';else if(x>=70&&x<90)if(x3>90)grade='A';elsegrade='B';else if(x>=50&&x<70)if((x2+x3)/2>70)grade='C';elsegrade='D';else if(x<50)grade='F';printf("%c\n",grade);}2.#include<stdio.h>main( ){int year;printf("please enter a year:\n");scanf("%d",&year);if(year%4==0&&year%100!=0||year%400==0)printf("%d is a leap year!\n",year);elseprintf("%d is a non-leap year!\n",year);}3.#include<stdio.h>main( ){i ntyearNow,monthNow,dayNow,year,month,day,x;printf("Please enter the date today(month day year):\n");scanf("%d%d%d",&monthNow,&dayNow,&yearNow);printf("Please enter your birthday(month day year):\n");s canf("%d%d%d",&month,&day,&year);if(monthNow<month)x=yearNow-year-1;else if(monthNow==month)if(dayNow<day)x=yearNow-year-1;elsex=yearNow-year;elsex=yearNow-year;printf("You are %d years old!\n",x);}4.#include<stdio.h>#include<stdlib.h>#include<time.h>main( ){int number,Ynumber;srand(time(NULL));number=rand()%20+1;printf("I am thinking of a number between 1 and 20.\n");printf("Can you guess what it is?");scanf("%d",&Ynumber);if(Ynumber==number)printf("Congratulations!You did it.");else{if(Ynumber>number)printf("Your guess is high.Try again:");elseprintf("Your guess is low.Try again:");scanf("%d",&Ynumber);if(Ynumber==number)printf("Congratulations!You did it.");else{if(Ynumber>number)printf("Your guess is high.Try again:");elseprintf("Your guess is low.Try again:");scanf("%d",&Ynumber);if(Ynumber==number)printf("Congratulations!You did it.");else{if(Ynumber>number)printf("Your guess is high.Try again:");elseprintf("Your guess is low.Try again:");scanf("%d",&Ynumber);if(Ynumber==number)printf("Congratulations!You did it.");else{if(Ynumber>number)printf("Your guess is high.Try again:");elseprintf("Your guess is low.Try again:");scanf("%d",&Ynumber);if(Ynumber==number)printf("Congratulations!You did it.");else{printf("sorry.The number was %d.\n",number);printf("You should have gotten it by now.\n");printf("Better luck next time.");}}}}}}5.#include<stdio.h>main( ){int year,month,day,x=0,y,z;printf("Please enter your birthday:(year month day)\n");scanf("%d%d%d",&year,&month,&day);y=((year-1)*365+((year-1)/4)-((year-1)/100) +((year-1)/400))%7;switch(month){case 12:x=x+30;case 11:x=x+31;case 10:x=x+30;case 9:x=x+31;case 8:x=x+31;case 7:x=x+30;case 6:x=x+31;case 5:x=x+30;case 4:x=x+31;case 3:x=x+28;case 2:x=x+31;case 1:x=x+0;}if(year%4==0&&year%100!=0||year%400==0)day++;z=(x+day+y)%7;switch(z){case 0:printf("The day of your birthday is Sunday!");break;case 1:printf("The day of your birthday is Monday!");break;case 2:printf("The day of your birthday is Tuseday!");break;case 3:printf("The day of your birthday is Wednesday!");break;case 4:printf("The day of your birthday is Thursday!");break;case 5:printf("The day of your birthday is Friday!");break;case 6:printf("The day of your birthday is Saturday!");break;}}6.#include<stdio.h>#include<math.h>main( ){int a,b,c,p;float x1,x2;printf("Please enter a,b,c:\n");scanf("%d%d%d",&a,&b,&c);p=b*b-4*a*c;if(a==0)if(b==0)printf("There is no solution!");else{x1=-(float)c/b;printf("The solution is x1=%f",x1);}elseif(p<0)printf("There is no real solution!");else{x1=-b+sqrt(p)/(2*a);x2=-b-sqrt(p)/(2*a);printf("The solutions are x1=%f,x2=%f",x1,x2);}}。

C语言第三章习题带答案-2012.10.9更新

C语言第三章习题带答案-2012.10.9更新

练习3-1答案一、选择题1.在C语言库函数中,可以输出double型变量x值的函数是( D )。

A.getchar B.scanf C.putchar D.printf 2.执行语句:printf("The program\'s name is c:\\tools\book.txt");后输出是( D )。

A.The program's name is c:tools book.txtB.The program's name is c:\tools book.txtC.The program's name is c:\\tools book.txtD.The program's name is c:\toolook.txt3.以下程序的输出结果是( D )。

(注:□表示空格)main(){printf("\n*s1=%15s*", "chinabeijing");printf("\n*s2=%-5s*", "chi");}A.*s1=chinabeijing□□□* B.*s1=chinabeijing□□□*s2=**chi* *s2=chi□□*C.*s1=*□□chinabeijing* D.*s1=□□□chinabeijing* *s2=□□chi* *s2=chi□□*4.选择程序的运行结果,①是( B )、②是( B )、③是( D )、④是( C )。

#include<stdio.h>main(){int a=-10, b=-3;printf("%d\n", a%b); /*输出①*/printf("%d\n", a/b*b); /*输出②*/printf("%d\n", -a%b); /*输出③*/printf("%d\n", a-=b+++1); /*输出④*/}①A.-2 B.-1 C.0 D.1②A.-10 B.-9 C.-8 D.0③A.-2 B.-1 C.0 D.1④A.-10 B.-9 C.-8 D.-75.以下C程序正确的运行结果是( D )。

C语言程序-分支结构题目及答案

C语言程序-分支结构题目及答案

21.htm01. 从键盘输入一个字符,如果是大写字母,就转换成小写;如果是小写字母,就转换成大写,如果是其他字符原样保持并将结果输出。

#include <stdio.h>void main(){ char c;scanf("%c",&c);if(c>='A'&&c<='Z') c=c+32;else if(c>='a'&&c<='z') c=c-32;printf("%c",c);}02. 从键盘输入一个数,判断其是否是5的倍数而不是7的倍数。

如果是,输出Yes,否则输出No。

#include <stdio.h>void main(){ int a;scanf("%d",&a);if(a%5==0&&a%7!=0) printf("yes");else printf("no");}03. 从键盘输入一个4位正整数,求其逆序数,并输出。

例如:若输入1234,则输出应该是4321。

#include <stdio.h>void main(){ int n,g,s,b,q,m;scanf("%d",&n);q=n/1000; b=n/100%10; s=n/10%10; g=n%10;m=g*1000+s*100+b*10+q;printf("%d\n",m);}22.htm01. 从键盘输入一个字符,如果是字母,就输出其对应的ASCII码;如果是数字字符,就转换成对应整数并输出。

#include <stdio.h>void main(){ char c;scanf("%c",&c);if(c>='a'&&c<='z'||c>='A'&&c<='Z')printf("ASCII:%d",c);else if(c>='0'&&c<='9') printf("数字:%d",c-'0');}02. 从键盘输入一个数,判断其是否能同时被3和5整除。

C语言顺序分支结构选择题及答案

C语言顺序分支结构选择题及答案

1. 设ch是char型变量,其值为A,且有下面的表达式:ch=(ch>='A'&&ch<='Z')?(ch+32):ch上面表达式的值是A) A B) aC) Z D) zB2. 设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是A) 'a'&&'b' B) a<=bC) a||b+c&&b-c D) !((a<b)&&!c||1)D3. 为表示关系x≥y≥z,应使用C语言表达式A) (x>=y)&&(y>=z) B) (x>=y)AND(y>=z)C) (x>=y>=z) D) (x>=y) || (y>=z)A4. 执行下面程序段int x=35;char z='A';int B;B=((x=15)&&(z<'a'))后,B的值为A) 0 B) 1C) 2 D) 3B5. 表达式: 10!=9的值是A) true B) 非零值C) 0 D) 1D6.能正确表示a≥10或a≤0的关系表达式是A) a>=10 or a<=0 B) a>=10 | a<=0C) a> =10 || a< =0 D) a>=10 || a<=0D7. 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为A) a<>0 B) !aC) a=0 D) aD8. 设a=5,b=6,c=5,d=8,m=2,n=2,执行(m=a>b)&&(n=c>d) 后n的值为A) 1 B) 2C) 3 D) 0B9. 设a为整型变量,不能正确表达数学关系:10<a<15 的C语言表达式是A) 10<a<15 B) a==11 || a==12 || a==13 || a=14C) a>10 && a<15 D) !(a<=10) && !(a>=15)A10. 若有以下定义: float x; int a,b; 则正确的switch 语句是A) switch(x) B) switch(x){ case 1.0:printf("*\n"); { case 1,2:printf("*\n");case 2.0:printf("**\n") case 3:printf("**\n");} }C) switch(a+b) D) switch(a-b);{ case 1:printf("*\n") { case 1:printf("*\n");case 1-2:printf("**n"); case 2:printf("**\n");} }A11. 设a=1,b=2,c=3,d=4,则表达式: a<b?a:c<d?a:d 的结果为A) 4 B) 3C) 2 D) 1D12. 设x 、y 、z 、t均为int型变量,则执行以下语句后,t的值为x=y=z=1;t=++x || ++y && ++z;A) 不定值B) 4C) 1 D) 0C13. 语句:printf("%d",(a=2) && (b= -2));的输出结果是A)无输出B)结果不确定C)-1 D)1D14. 能正确表示a和b同时为正或同时为负的逻辑表达式是A) (a>=0 || b>=0) && (a<0 || b<0)B) (a>=0 && b>=0) && (a<0 && b<0)C) (a+b>0 && a+b<=0)D) a*b>0D15. 有如下程序段int a=14,b=15,x;char c='A';x=(a&&b) && (c<'B');执行该程序段后,x的值为A) ture B) falseC) 0 D) 1D16. 为了避免嵌套的if-else语句的二义性,C语言规定else总是与( )组成配对关系。

C语言程序设计练习三(参考答案)

C语言程序设计练习三(参考答案)

《C语言程序设计》练习三(参考答案)三、阅读分析题1.请阅读分析下面程序,然后写出运行结果。

x=8,y=-5x=-5,y=82.请阅读分析下面程序,然后写出运行结果。

156303.请阅读分析下面程序,然后写出运行结果。

#**$@@4.阅读下面程序,写出运行结果(已知A的ASCII码为65,a的ASCII码为97)。

运行结果:d,100,D,1445.阅读下面程序,并回答问题:(1)若程序运行时,输入3、2和5,则输出结果是什么?(2)写出程序所实现的功能。

答:(1)5,3,2(2)输入三个整数,按从大到小的顺序输出。

6.阅读下面程序,并回答问题:(1)程序输出结果是多少?(2)外循环执行完一次时,m和n的值分别是多少?(3)将while(n>m)n-=m;语句删除后,程序运行情况如何?答:(1)m=1(2)m=9,n=5(3)程序进入无限循环17.阅读下面程序,写出运行结果。

运行结果:7,10,9,9878.阅读下面程序,并回答问题:(1)若程序运行时,输入6和9,输出结果是什么?输出结果是:1(2)说明程序的功能。

程序功能:输入2个数存入a和b变量中,计算a2+b2存入x变量中,如果x大于100则将x整除100的值存入y中并输出y的值,否则输出a+b的值。

9.阅读下面程序,并回答问题:(1)程序输出结果是什么?输出结果:a=8(2)该程序完成什么功能?程序功能:求两个数的最大公约数(3)若将while循环替换为do-while循环,请写出相应的程序段。

#include<stdio.h>void main(){int u,v,a,b,t,r;u=24;v=16;if(u>v){t=u;u=v;v=t;}a=u;b=v;do{r=b%a;b=a;a=r;}while(r!=0);printf(″b=%d\n″,b);}10.从键盘输入字符A时,写出下面程序的运行结果。

(注:字符A的ASCII码是65)运行结果:A,65,41,a2当程序执行时输入数据12345678↙,写出程序运行结果。

数据结构(C语言版)习题集答案第三章

数据结构(C语言版)习题集答案第三章

习题三3.1 3.10 3.133.5 3.6 3.15 3.17 3.19 3.243.29 3.313.5(1)给定操作序列P1P2P3…P i…P n(P k为S或X,k=1,2,…n )是合法的,当且仅当满足下列条件:a. 序列中包含的S的个数和X的个数相等;b. 对于任意的j(1≤j≤n);有P1P2P3…P j子序列中所包含的S的个数大于等于X的个数;(2)证明:设P1P2P3…P i…P n ,Q1Q2Q3…Q i…Q n是两个不同的合法序列;∵两者不同,∴ k=min{i| P i≠Q i , 1≤i≤n }且k>1, P k≠Q k(因P1,Q1肯定是S,否则不合法!)即,P1P2P3…P k-1 和Q1Q2Q3…Q k-1是相等的,但P k≠Q k由此可知:两个操作序列在前k-1步操作后输出序列和栈中所剩元素均相同,由于P k≠P k不妨设P k=X,而Q k=S;这样,在操作序列P1P2P3…P i…P n中的第k-1步后输出的第一个元素是目前栈中的元素,而对于操作序列Q1Q2Q3…Q i…Q n中的第k-1步后输出的第一个元素是目前还在栈外的元素。

所以输出序列不同。

即两个不同的合法操作序列,不可能得到相同的输出序列。

证毕!3.6 用反证法证明:假设存在这样的输出序列,P1…Pi…Pj…Pk…Pn,满足i<j<k,使Pj<Pk<Pi;因Pi 在这三个数中最大,且Pi最先出栈,按照题意所给进栈顺序,在Pi出栈时Pj 和Pk都还在栈中;又因,Pj <Pk,所以Pj比Pk先进栈,则出栈顺序应该是Pk先出栈而不是Pj先出栈,矛盾!证毕!3.10(1) 输出序列为:0,5,9,12,14,15(2)由于输入的数据个数不定,采用单链表存储输入的元素,又因是先输入的,后累加到累加器里,所以用链栈的形式存储。

(类型定义与书本上第二章相同)void test( ){LinkList L ,P;int x,sum;L=NULL; //建立空链表sum=0;printf(sum);scanf(x);//读入第一个数while(x){P=(LinkList)malloc(sizeof(LNode));//产生一个结点P->data=x;P->next=L; L=P;//插入在链头scanf(x);//读下一个数}while(L){sum+=sum+L->data;//取值累加printf(sum);//输出P=L->next; free(L); L=P;}}3.15 所用类型定义如下:#define Stack_Init_Size 100typedef struct stack{SElemType base0,base1,*top0,*top1;int StackSize ;} DuSqStack;void Inistack(DuSqStack &tws){tws.base0=( SElemType*)malloc(Stack_Init_Size*sizeof(SElemType));if(!tws.base0) exit(OVERFLOW);tws.top0= tws.base0;tws.base1=tws.top1=tws0.base0+ Stack_Init_Size-1;tws.StackSize= Stack_Init_Size;}// InistackStatus Push( DuSqStack &tws ,int i , SElemType x){//将元素x插在第i个栈中if (tws.top0>tws.top1) return (OVERFLOW);switch(i){case 0: *tws.top0=x; tws.top0++;break;case 1: *tws.top1=x; tws.top1--;break;}return OK;}// PushStatus Pop( DuSqStack &tws ,int i , SElemType &x){//将第i个栈的栈顶元素弹出,由x带回switch(i){case 0: if(tws.base0==tws.top0) return ERROR; x=*(--tws.top0);break; case 1: if(tws.base1==tws.top1) return ERROR; x=*(++tws.top0);break; }return OK;}// Pop3.17Status judge( ){//判断输入的字符序列是否为型如序列1&序列2,其中序列2是序列1的逆序列InitStack(S); 初始化栈Sc=getchar( );//读第一个字符while(c!= '&'&&c!= '@'){push(s,c); c=getchar( );}if(c!= '&') return FALSE;c=getchar( );//读下一个while(c!= '@'&& !EmptyStack(s)){pop(s,e);if(c!=e) return FALSE;c=getchar( );}if(c== '@'&& EmptyStack(s)) return TRUE;return FALSE;}// judge3.19Status judged(SqList L){//L为数据元素类型为字符的顺序存储的线性表,表示一个表达式,判断该表达//式的括号是否匹配InitStack(S);//初始化栈Sfor(j=0;j<L.length;j++){switch(L.elem[j]){case ‘(‘:case ‘[‘:case ‘{‘: push(S, L.elem[j]) ;break;case ‘)’:case ‘]’:case ‘}’: if(EmptyStack(S) return FALSE;else{ Pop(S,e);switch(L.elem[j]){case ‘)’:if(e!=’(‘ ) return FALSE;break;case ‘]’:if(e!=’[‘ ) return FALSE;break;case ‘}’:if(e!=’{‘ ) return FALSE;break;}}}}if(EmptyStack(S) return TRUE;else return FALSE;}// judged3.24int g(int m,int n){// 不考虑输入参数的非法性if(m==0 && n>=0) return 0;else if(m>0 && n>=0) return (g(m-1,2*n)+n);}// g3.29 类型定义#define MAX_Init_Size 100typedef struct {QElemType *base;int front,rear ,tag;} SqQueue;Status InitQueue(SqQueue &Q ){//初始化一个队列Q.base=( QelemType* )malloc(MAX_Init_Size*sizeof(QelemType));If(!Q.base) exit(OVERFLOW);G.front=Q.rear=Q.tag=0;//表示队列为空return OK;}// InitQueueStatus EnQueue(SqQueue &Q , QelemType x){//将元素x入队列, 若队列满则返回函数值ERROR,否则返回OKif((Q.front==Q.rear)&&(Q.tag==1)) return ERROR;Q.base[Q.rear]=x;Q.rear=(Q.rear+1)%MAX_Init_Size;if(Q.front==Q.rear) Q.tag=1;//尾指针追上头指针return OK;}// EnQueueStatus DelQueue(SqQueue &Q , QelemType &x){//删除队头元素,让x带回,若队列为空则返回函数值ERROR,否则返回OK if((Q.front==Q.rear)&&(Q.tag==0)) return ERROR;x=Q.base[Q.front];Q.front= (Q.front+1)% MAX_Init_Size;if(Q.front==Q.rear) Q.tag=0;//头指针追上尾指针return OK;}//DelQueue3.31Status Ispalindrome ( ){//判断输入的字符序列是否为回文,是返回TRUE ,否则返回FALSE InitStack(S);// 初始化栈SInitQueue(Q);//初始化一个队列Qc=getchar( );//读第一个字符while(c!= '@'){push(S,c); //入栈EnQueue(Q,c);//入队列c=getchar( );}while(!EmptyStack(S)){Pop(S,e);DelQueue(Q,c);if(c!=e) return FALSE;}return TRUE;}// Ispalindrome3.24Status g(int m,int n,int &s)//求递归函数g的值s{if(m==0&&n>=0) s=0;else if(m>0&&n>=0) s=n+g(m-1,2*n);else return ERROR;return OK;}//g3.29Status EnCyQueue(CyQueue &Q,int x)//带tag域的循环队列入队算法{if(Q.front==Q.rear&&Q.tag==1) //tag域的值为0表示"空",1表示"满"return OVERFLOW;Q.base[Q.rear]=x;Q.rear=(Q.rear+1)%MAXSIZE;if(Q.front==Q.rear) Q.tag=1; //队列满}//EnCyQueueStatus DeCyQueue(CyQueue &Q,int &x)//带tag域的循环队列出队算法{if(Q.front==Q.rear&&Q.tag==0) return INFEASIBLE;Q.front=(Q.front+1)%MAXSIZE;x=Q.base[Q.front];//if(Q.front==Q.rear) Q.tag=1; //队列空return OK;}//DeCyQueue分析:当循环队列容量较小而队列中每个元素占的空间较多时,此种表示方法可以节约较多的存储空间,较有价值.友情提示:部分文档来自网络整理,供您参考!文档可复制、编制,期待您的好评与关注!。

C语言基础题第三章 分支结构

C语言基础题第三章 分支结构

点)
3. 执行以下程序段后,x 的值为_______0____ ,y 的值为_______6____ 。
int a=1,b=2,c=3,d=4,x=5,y=6;
if((x=a>=b)&&(y=c<c=d)) y=a+d;
4. 执行以下程序后,y 的值是______0_____ 。
int x=-5,y;
一、单选题
1. 下面表达式中值为 0 的是 (C )
A、 3%5 B、 3/5.0
C、 3>5 D、 3<5
2. 能表示 a 不能被 2 整除且 a、b 不相等,但 a、b 的和等于 0 的 C 语言逻辑表达式是 。 (B )
A、 a==-b&&a%2==0
B、 a!=b&&a+b==0&&a%2
C、 !(a%2)&&a==-b
.(C )
A '0'<=ch<='9'
B (ch>'0')&&ch<'9')
C (ch>='0')&&ch<='9')
D (ch>='0')||ch<='9')
18. C 程序中,正确表示“10<a<20 或 a>30"的条件表达式为:
B
A、 (a>10&&a<20)&&(a>30)
B、 (a>10&&a<20 ) || a>30

C语言第3章课后习题答案PPT课件

C语言第3章课后习题答案PPT课件

}2020/10/13
4
谢谢您的指导
THANK YOU FOR YOUR GUIDANCE.
感谢阅读!为了方便学习和使用,本文档的内容可以在下载后随意修改,调整和打印。欢迎下载!
汇报人:XXXX 日期:20XX年XX月XX日
5
printf("x=%3d,y=2*x+1=%d\n",x,y);
}
else
/*若x≥10*/
{ y=3*x+2;
printf("x=%3d,y=3*x+2=%d\n",x,y);
}
}
2020/10/13
2
程序如下: #include <stdio.h>
【习题3-13】答案
void main( )
printf("total=%f",money);
} 2020/10/13
3
【习题3-14】方法1
#include<stdio.h>
void main()
{ char chr;
char password;
chr=getchar();
password=chr+6;
if(chr<=90)
{ if(password>90)
password=(password%91)+'A';
else
password=password%91;
}
else
{ if(password>=123)
password=(password%123)+'a';
else
password=password%123;

第三章习题答案

第三章习题答案

第三章C++控制语句3.1 程序的三种基本控制结构是什么?答案:顺序结构、分支结构、循环结构3.2 C++用于构成分支结构的语句有哪些?构成循环结构的语句有哪些?答案:if…else 和switch 语句用于分支结构。

for、while、do…while 语句用于循环结构。

3.3 以下程序执行的结果是什么?void main( ){ int x = 3;docout<<(x-=2)<<" ";while(!(--x));}答案:1 -23.4 以下程序执行的结果是什么?void main( ){ int a,b,c,x;a=b=c=0;x=35;if(!a) x--;else if(b)if( c ) x=3;else x=4;cout<<x<<endl;}答案:343.5 以下程序执行的结果是什么?void main( ){ int a =2 , b = - 1 , c = 2 ;if ( a < b )if ( b < 0 ) c = 0 ;else c++ ;cout<<c<<endl;}答案:23.6 写出下列程序的运行结果?(1) #include <iostream>using namespace std;void main(){int j=10;for( int i=0; i<j; i++){j=j-2;cout<<”i=”<<i<<”j=”<<j<<endl;}}答案:i=0,j=8i=1,j=6i=2,j=4i=3,j=2(2) #include “iostream”using namespace std;void main(){int i=1;while (i<=15)if (++i%3!=2)continue;elsecout<<”i=”<<i<<endl;}答案:i=2i=5i=8i=11i=14(3) #include <iostream>using namespace std;void main(){int x=1, y=0, a=0, b=0 ;switch(x){case 1 :if (y==0) a=a+1;else b=b+1;break;case 2 :a=a+1;b=b+1; break;case 3 :a=a+1; b=b+1;}cout<<”a=”<<a<<”,b=”<<b<<endl;}答案:a=1,b=03.7 编程实现输入一个整数,输出相应的五分制成绩。

c语言程序设计第三章答案

c语言程序设计第三章答案

第三章习题答案一、选择题(带**号的题选作)1) 以下叙述中正确的是()A) C语言的基本组成单位是语句B) C程序中的每一行只能写一条语句C) 简单C语句必须以分号结束D)C语句必须在一行内完成2)下列叙述中错误的是A)计算机不能直接执行用C语言编写的源程序B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C) 后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件 D)后缀为.obj和.exe的二进制文件都可以直接运行3) 计算机能直接执行的程序是()A)源程序 B)目标程序 C)汇编程序 D)可执行程序4)以下叙述中错误的是A)C语言是一种结构化程序设计语言B)结构化程序有顺序、分支、循环三种基本结构组成C)使用三种基本结构构成的程序只能解决简单问题D)结构化程序设计提倡模块化的设计方法5)对于一个正常运行的C程序,以下叙述中正确的是A)程序的执行总是从main函数开始,在main函数结束B)程序的执行总是从程序的第一个函数开始,在main函数结束C)程序的执行总是从main函数开始,在程序的最后一个函数中结束D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束6)以下叙述中正确的是A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D)main可作为用户标识符,用以命名任意一个函数作为主函数7) 以下关于C语言的叙述中正确的是A) C语言中的注释不可以夹在变量名或关键字的中间B) C语言中的变量可以再使用之前的任何位置进行定义C) 在C语言算术的书写中,运算符两侧的运算数类型必须一致D) C语言的数值常量中夹带空格不影响常量值的正确表示8)以下叙述中错误的是A)C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能运行D)C程序中整型变量只能存放整数,实型变量只能存放浮点数9)以下叙述中正确的是A) C程序中的注释只能出现在程序的开始位置和语句的后面B) C程序书写格式严格,要求一行内只能写一个语句C) C程序书写格式自由,一个语句可以写在多行上D) 用C语言编写的程序只能放在一个程序文件中10)C语言源程序名的后缀是A).exe B).C C).obj D).cp11)以下叙述中错误的是A)在程序中凡是以“#”开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#define MAX是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的12) 以下选项中不能作为C语言合法常量的是 ( )A) ‘cd’ B) 0.1e+6 C) “a” D)‘\011’13)一下选项中,能用作数据常量的是A)o115 B)0118 C)1.5e1.5 D)115L14) 以下选项中不属于字符常量的是A)'C' B)"C" C)'\xCC0' D)'\072' 15)以下合法的字符型常量是A)’\x13’B)’\018’C)”65” D)”\n”16) 以下不合法的字符常量是A)'\018' B)'\”' C) '\\' D) ‘\xcc' 17) 以下不合法的数值常量是A)011 B)1e1 C) 8.0E0.5 D) 0xabcd 18)以下选项中能表示合法常量的是A)整数:1,200 B)实数:1.5E2.0C)字符斜杠:‘\’ D)字符串:"\007"19) C源程序中不能表示的数制是()A) 二进制 B) 八进制 C) 十进制 D) 十六进制20) 以下选项中,合法的一组C语言数值常量是A)028 B)12. C).177 D)0x8A.5e-3 OXa23 4c1.5 10,000-0xf 4.5e0 Oabc 3.e521)以下不合法的用户标识符是A)j2_KEY B)Double C) 4d D) _8_22)一下选项中合法的标识符是A)1_1 B)1-1 C)_11 D)1_ _23) 以下选项中,能用作用户标识符的是A)void B)8_8 C)_0_ D)unsigned 24)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是A)大写字母 B)连接符 C)数字字符 D)下划线25)可在C程序中用做用户标识符的一组标识符是A)and B)Date C)Hi D)case _2007 y-m-d Dr.Tom Bigl26) 以下C语言用户标示符中,不合法的是A)_1 B)AaBc C)a_b D)a--b 27)以下选项中不合法的标识符是A)print B)FOR C)&a D)_00 28)下列定义变量的语句错误的是()。

C语言程序设计课件源程序及习题答案第3章 选择结构流程与应用-PPT精选文档

C语言程序设计课件源程序及习题答案第3章 选择结构流程与应用-PPT精选文档
3.5程序, 观察运行结 果
练一练
问题:编一程序,从键盘输入一个整数, 判断它的奇偶性。如果输入的是奇数, 输出“ODD”,如果输入的是偶数,则 输出“EVEN”。 提示:一个数若能被2整除,则该数是 偶数,若这个数不能被2整除,则该数 为奇数。判断一个数能否被另一个数整 除可用求余运算,比如5%3=1,说明5 不能整除3,6%3=0,说明6可以整除3。
第 3章 选择结构流程和应用
学习目标
1 了解选择结构判定条件的构成 2 掌握单分支与双分支选择结构程序设计 3 掌握多分支选择结构程序设计
1 选择结构判定条件的构成

关系运算符与关系表达式 逻辑运算符与逻辑表达式
关系运算符
关系运算是对两个操作数之间进行比较的运算符, 其运算结果为逻辑值(或称“布尔”值,boolean) “真”或“假”。 C语言中提供六种关系运算符, 如表3-1所示。
流程图如图3-3所示,若“条件”为 “真”,则执行“语句1”;否则执行 “语句2”。 此处的“语句1”和“语句2”可以是简单 语句,也可以是用一对大括号“{ }”括 起来的复合语句。
条件
Y
N
语句1
语句2
试一试
问题3.5 编一程序 控制电灯开关。从 键盘输入1表示开灯, 这时显示“the light is On”,输入0 或其它数表示关灯, 显示“the light is off” 。 调试问题
试一试
问题3.6 : 编一程序从键 盘输入两个 整数,输出 较大的一个。
调试问题3.6 程序,观察运 行结果
练一练
问题: 1.请用if-else语句实现问题3-6的双分支 选择结构。 2.用条件表达式实现问题3-5的双分支选 择结构。
小结

明解c语言入门篇答案第二章

明解c语言入门篇答案第二章

明解c语言入门篇答案第二章一、判断题(20题每题1分,选择“对”或“错”)1、高级语言只有C++语言 [判断题] *对错(正确答案)2、机器语言能被计算机直接识别,因为它是二进制指令 [判断题] *对(正确答案)错3、C++中每一句正常语句后面都要有中文分号“;” [判断题] *对错(正确答案)4、C++语言需要通过编译生成exe可执行文件,然后才能被计算机运行 [判断题] *对(正确答案)错5、#include <iostream>是头文件 [判断题] *对(正确答案)错6、常见的数据可以分为数值型数据和非数值型数据 [判断题] *对(正确答案)错7、常见的整数类型包括int和long long (int)等等 [判断题] *对(正确答案)错8、常见的实数类型包括double,float等等 [判断题] *对(正确答案)错9、char代表布尔型数据,bool代表字符型数据 [判断题] *对错(正确答案)10、C++中a和'a'是一样的含义,都是变量 [判断题] *对错(正确答案)11、ASCII码中,数字字符'0'后面不是大写字母'A' [判断题] *对(正确答案)错12、ASCII码中,大写字母'Z'后面是小写字母'a' [判断题] *对错(正确答案)13、在ASCII码运算中,'A'+3='D','p'+2='r','3'+6='9' [判断题] *对(正确答案)错14、在ASCII码运算中,'F'-'E'=1,'z'-'x'=2,'7'-'4'=3 [判断题] *对(正确答案)错15、在ASCII码运算中,'0'+10='10' [判断题] *对错(正确答案)16、在C++中,3/2的结果是1.5 [判断题] *对错(正确答案)17、在数学上, [判断题] *对(正确答案)错18、实数可以分为有理数和无理数 [判断题] *对(正确答案)错19、实数与数轴上的点一一对应 [判断题] *对(正确答案)错20、程序设计的三种基本结构主要为顺序结构、分支结构和循环结构 [判断题] *对(正确答案)错二、单选题(10题每题2分)1、若X、 Z为真,Y为假,下列逻辑表达式的值为真的是() [单选题] *A、(X||Y)&&(!Z)B、(X&&Y)&&(!Z)C、(X||Y)&&(Y||Z)(正确答案)D、(X&&Y)||(Y&&Z)2、对于char x,x-'a'+'A'的含义是() [单选题] *A、将小写字母转化为大写字母(正确答案)B、将大写字母转化为小写字母C、将数字字符转化为大写字母D、将小写字母转化为数字字符3、将数字字符x转化为对应的整型数字,下列代码中正确的是() [单选题] *A、x-'a'+'A'B、x-'0'(正确答案)C、x-'9'D、 x-'A'+'a'4、下列语句中,与x=x+5是一个意思(等价)的是() [单选题] *A、x+=5(正确答案)B、x=+5C、x++5D、5++x5、定义int x,y,t;,则t=x;x=y;y=t;是在做()操作 [单选题] *A、排序B、交换(正确答案)C、赋值D、比较6、若定义数组int a[10],则该数组下标的范围为()[单选题] *A、1~10B、0~10C、1~11D、0~9(正确答案)7、下列不属于<algorithm>库的函数是() [单选题] *A、sortB、abs(正确答案)C、max与minD、swap8、若发现累乘器的结果始终是0,问题最有可能出在() [单选题] *A、没有初始化为1(正确答案)B、中间计算过程C、没有定义D、没有初始化为09、数组a[101]中使用下标1~n存储了n个元素,则对于某一位置k,for(int i=k+1;i<=n;i++) a[i-1]=a[i];是在对数组a做()操作 [单选题] *A、排序B、插入C、删除(正确答案)D、查找10、“从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的什么呢?从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的什么呢?……”体现了()的程序设计思想 [单选题] *A、递归(正确答案)B、模拟C、排序D、分治三、阅读程序写结果(6题每题5分)注意事项:1、行前行末不要出现任何的空格,否则视为0分。

C语言分支结构上机真题答案与解析

C语言分支结构上机真题答案与解析

分支语句(9题)第1题:#include <math.h>double fun1(double x){/**/if else多层选择结构,注意写条件时,判断两个数相等用两个等号,一个等号是赋值操作if(x<3) return 1.2;else if(x==3) return 10;else return 2*x+1; /**/}void main(){clrscr();printf("fun1(0.76) = %8.3lf\n", fun1(0.76));printf("fun1(3.00) = %8.3lf\n", fun1(3.00));printf("fun1(3.76) = %8.3lf\n", fun1(3.76));}第二题:打开程序Cprog 041.c,其中的fun( )函数,使其计算: f (x)=⎪⎩⎪⎨⎧>++≤02)sin(2.300x x x x输入:12 32.25 0.113输出:f (12.000)=10.387f (32.250)=12.935f (0.113) =1.568#include <stdio.h>#include <math.h>double f(float x){/**/if(x<=0) return 0;else return (fabs(x)+3.2)/(sin(x)+2);/**/}void main(){float x;double y;printf("Please input a number: \n");scanf("%f",&x);y = f(x);printf("f(%.3f)=%.3f\n",x,y);getch();}第3题:#include <stdio.h>#include <math.h>double f(float x){/**/if(fabs(x)<700) return sqrt(5.8+fabs(x))/(cos(x)+2.1);else return -1;/**/}void main(){float x;double y;printf("Please input a number: \n");scanf("%f",&x);y = f(x);printf("f(%0.2f)=%0.2f\n",x,y);getch();}第4题:求已知函数f( )的值打开程序Cprog 061.c,完成其中的f( )函数,使其计算: f(x)=⎪⎩⎪⎨⎧≥-<+3001300)6.2lg(3x x x x如:输入:0.8,输出f(0.80)=0.96输入:4.5,输出f(4.50)=107.05输入:725,输出f(725.00)=-1.00#include <stdio.h>#include <math.h>double f(float x){/**/注意数学里的lg 对应的C 数学函数名为log10,ln 对应的是logif(fabs(x)<300) return pow(x,3)/log10(fabs(x)+2.6);else return -1;/**/}void main(){float x;double y;printf("Please input a number: \n");scanf("%f",&x);y = f(x);printf("f(%0.2f)=%0.2f\n",x,y);getch();}第5题:打开程序Cprog 062.c,完成其中的fun( )函数,使其实现四则运算的功能,如:输入:3.2 2.1输出:3.20+2.10=5.303.20-2.10=1.103.20*2.10=6.723.20/2.10=1.52#include <stdio.h>#include <math.h>float fun(float a,char flag,float b){/**/switch 语句课本5.4,注意case需与后跟的常量用空格格开不要连在一起switch(flag){case '+': return a+b;break;case '-': return a-b; break;case '*': return a*b; break;case '/': return a/b; break;}/**/}void main(){float a,b;printf("Please input two numbers:\n");scanf("%f%f",&a,&b); 注意scanf的格式printf("%.2f+%.2f=%.2f\n",a,b,fun(a,'+',b));printf("%.2f-%.2f=%.2f\n",a,b,fun(a,'-',b));printf("%.2f*%.2f=%.2f\n",a,b,fun(a,'*',b));printf("%.2f/%.2f=%.2f\n",a,b,fun(a,'/',b));getch();}第6题:f x函数,使其对输入的一个月工资数额,求应交税款,设应交税款打开程序cprog071.c,完成其中的()的计算公式如下:0 x≤1600(x-1600)*5%-25 1600<x≤2100f(x)=(x-1600)*10%-25 2100<x≤3100(x-1600)*15%-125 x>3100例如:输入:1825 输出:()182511.25f = 输入:2700 输出:()270085.00f =输入:5655 输出:()5655483.25f = #include <stdio.h>#include <math.h>double f(float x){/**/if else 多层选择结构,本题题目出错,第2个表达式应该没有-25,考试时注意下,不要-25 就跟答案一样了double y;if(x<=1600) y=0;else if(x<=2100) y=(x-1600)*0.05;else if(x<=3100) y=(x-1600)*0.1-25;else y=(x-1600)*0.15-125;return y;/**/}void main(){float x;double y;clrscr();printf("Please input a number:\n");scanf("%f",&x);y = f(x);printf("f(%.2f)=%.2f\n",x,y);getch();}第7题:打开程序cprog 081.c 完成其中f (x)函数,使其计算f (x)=⎪⎩⎪⎨⎧>+≤+0)2(0)2(ln 2x x x x x x e如输入-1.2则输出f (-1.200)=0.241输入6 则输出f (6.000)=19.879#include <stdio.h>#include <math.h>double f(float x){/**/if(x<=0) return (x+2)*exp(x);else return (x+2)*log(2*x);/**/}void main(){float x;double y;printf("Please input a number:\n");scanf("%f",&x);y = f(x);printf("f(%.3f)=%.3f\n",x,y);getch();}第8题:#include <stdio.h>#include <math.h>int fun(/**/ float a,float b,float c /**/)形式参数是用来接受被main函数调用时传递给它的值的,故其类型跟传给它的值类型一致,观察main函数,传给它的值都是float型,故此处定义为float型,另注意定义形参时,每个变量前都应该加类型说明,即不能写为float a,b,c{float temp;int bTrue = 0;bTrue做为返回值,从下面程序分析可知0代表不能构成直角三角形,1代表可构成,此处先假设不能构成if(a<b)若a<b则将a和b的值交换{ temp = a;a = b;b = temp;}if(a<c)若a<c则将a和c的值交换{ temp = a;a = c;c = temp;}以上两个if语句后使a存放的是三边中的最大边长if( fabs(/**/ a*a /**/ - (b*b + c*c)) < 1.0e-15)若两边平方和与另一边平方和的绝对值小于一个极小数,则构成直角三角形bTrue = 1;能构成直角三角形给bTrue赋值为1return bTrue;}main(){float a,b,c;printf("Please input three numbers:\n");scanf("%f%f%f",&a,&b,&c);if( fun(a,b,c) == 1) a,b,c的类型决定了fun函数内参数的类型printf("Yes\n");elseprintf("No\n");getch();}第9题:#include <stdio.h>void main(){double x;int n;double fun(double x,int n);printf("Please enter x,n:");scanf("%lf%d",&x,&n);printf("fun=%lf\n",fun(x,n));getch();}double fun(double x,int n){ /**/if(n==0) return 1;else if(n==1) return x;else return ((2*n-1)*x-fun(x,n-1)-(n-1)*fun(x,n-2))/n; 本题为递归表达式,书写时注意参数的传递,此处可观察fun函数有两个参数,故应传递两个相应的参数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【个人观点】练习3-1#include<stdio.h>int main(void){int vx,vy;printf("请输入两个数vx、vy:");scanf("%d%d",&vx,&vy);if(vx % vy)puts("vy不是vx的约数\n");elseputs("vy是vx的约数\n");return (0);}练习3-2#include<stdio.h>int main(void){int vx,vy;puts("请输入两个整数:");printf("整数:");scanf("%d",&vx);printf("整数:");scanf("%d",&vy);if(vx == vy)printf("它们相等");elseprintf("它们不相等");printf("\n");return (0);}#include<stdio.h>int main(void){int vx,vy;puts("请输入两个整数:");printf("整数:");scanf("%d",&vx);printf("整数:");scanf("%d",&vy);if(vx > vy)printf("前者大于后者");elseprintf("前者不大于后者");printf("\n");return (0);}练习3-3#include<stdio.h>#include<math.h>int main(void){int vx,vy;puts("请输入一个整数:\n");printf("整数:");scanf("%d",&vx);vy = fabs(vx);printf("它的绝对值是%d",vy);printf("\n");return (0);}【注】:用数学函数时,加上头文件#include<math.h> 练习3-4#include<stdio.h>#include<math.h>int main(void){int vx,vy;puts("请输入两个整数:\n");printf("整数A:");scanf("%d",&vx);printf("整数B:");scanf("%d",&vy);if(vx == vy)puts("A等于B\n");elseif(vx > vy)puts("A大于B\n");elseputs("A小于B\n");printf("\n");return (0);}【注】这个三分支结构要掌握练习3-5#include<stdio.h>#include<math.h>int main(void){int vx,vy,vz,min;puts("请输入三个整数:\n");printf("整数A:");scanf("%d",&vx);printf("整数B:");scanf("%d",&vy);printf("整数C:");scanf("%d",&vz);min = vx;if(vy < min)min = vy;if(vz < min)min = vz;printf("最小的数是%d:\n",min);printf("\n");return (0);}练习3-6#include<stdio.h>#include<math.h>int main(void){int vx,vy,vz,w,max;puts("请输入三个整数:\n");printf("整数A:");scanf("%d",&vx);printf("整数B:");scanf("%d",&vy);printf("整数C:");scanf("%d",&vz);printf("整数D:");scanf("%d",&w);max = vx;if(vy > max)max = vy;if(vz > max)max = vz;if(w > max)max = w;printf("最大的数是%d:\n",max);printf("\n");return (0);}练习3-7#include<stdio.h>int main(void){int vx,vy;puts("请输入两个整数:\n");printf("整数A:");scanf("%d",&vx);printf("整数B:");scanf("%d",&vy);if(vx > vy)printf("它们的差是%d:\n",vx - vy);elseif(vx < vy)printf("它们的差是%d:\n",vy - vx);elseprintf("它们的差是");printf("\n");return (0);}练习3-8#include<stdio.h>int main(void){int vx;puts("请输入一个整数:\n");scanf("%d",&vx);printf((vx != 0)?"该整数不是":"该整数是");printf("\n");return (0);}练习3-9#include<stdio.h>int main(void){int vx,vy,vz;puts("请输入三个整数:\n");printf("整数A:");scanf("%d",&vx);printf("整数B:");scanf("%d",&vy);printf("整数C:");scanf("%d",&vz);if(vx == vy == vz)printf("三个值都相等");elseif(vx == vy || vx == vz || vy == vz) printf("有两个值相等");elseprintf("三个值各不相同");printf("\n");return (0);}练习3-10#include<stdio.h>int main(void){int vx,vy,r1;puts("请输入两个整数:\n");printf("整数A:");scanf("%d",&vx);printf("整数B:");scanf("%d",&vy);r1 = ((vx > vy)?vx - vy:vy - vx);if(r1 <= 10)printf("它们的差值小于等于");elseprintf("它们的差值大于等于");printf("\n");return (0);}练习3-11#include<stdio.h>int main(void){int vx;puts("请输入一个整数:\n");scanf("%d",&vx);switch(vx % 2) {case 1:puts("该整数是奇数"); break;case 0:puts("该整数是偶数"); break;}printf("\n");return (0);}练习3-12#include<stdio.h>int main(void){int month;puts("请输入月份:\n");scanf("%d",&month);switch(month) {case 3:puts("是春天"); break;case 4:puts("是春天"); break;case 5:puts("是春天"); break;case 6:puts("是夏天"); break;case 7:puts("是夏天"); break;case 8:puts("是夏天"); break;case 9:puts("是秋天"); break;case 10:puts("是秋天"); break;case 11:puts("是秋天"); break;case 12:puts("是冬天"); break;case 1:puts("是冬天"); break;case 2:puts("是冬天"); break;default:puts("输入月份不存在!\a\a"); break;}printf("\n");return (0);}。

相关文档
最新文档