C程序设计谭浩强第五版答案第四章习题答案
C程序设计谭浩强第五版课后答案第四章习题答案
scanf出问题请看:
4. 有3个整数a, b, c,由键盘输⼊,输出其中最⼤的数。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a, b, c;
scanf("%d %d %d",&a,&b,&c);
if(a == b && a == c){
printf("Three numbers are equal\n");
}else if(a == b && a > c){
printf("a and b are the largest number\n", a);
}else if(a == c && a > b){
printf("a and c are the largest number\n", a);
}else if(b == c && b > a){
printf("c and b are the largest number\n", a);
}else if(a > b && a > c){
printf("a=%d is the largest number\n", a);
}else if(b > a && b > c){
printf("b=%d is the largest number\n", b);
}else{
printf("c=%d is the largest number\n", c);
}
return0;
}
5.从键盘输⼊⼀个⼩于1000的正数,要求输出它的平⽅根(如平⽅根不是整数,则输出其整数部分)。要求在输⼊数据后先对其进⾏检查是否为⼩于1000 的正数。若不是,则要求重新输⼊。
#include<stdio.h>
#include<math.h>
int main()
{
float a, b;
scanf_s("%f",&a);
if(a >=1000|| a <0){
printf("请输⼊⼩于1000的正数\n");
scanf_s("%f",&a);
b =sqrt(a);
}
else{
b =sqrt(a);
}
printf("a=%4.0f, b=%4.0f\n", a, b);
system("pause");//这⼀句是为了让控制台不退出
return0;
}
6. 有⼀个函数,编写程序,输⼊x的值,输出y相应的值。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int x, y;
scanf("%d",&x);
if(x <1)
{
y = x;
}
else if(x >=1&& x <10)
{
y =2* x -1;
}
else
{
y =3* x -11;
}
printf("y = %d\n", y);
//system("pause");//控制台没设置好的,加上这个或者设置控制台
return0;
}
7. 有⼀个函数
有⼈编写了以下两个程序,请分析它们是否能实现题⽬要求。不要急于上机运⾏程序,先分析两个程序的逻辑,画出它们的流程图,分析它们的运⾏情况。然后,上机运⾏程序,观察和分析结果。
#include<stdio.h>
int main()
{
int x, y;
printf("enter x:");
scanf("%d",&x);
y=0;
if(x >=0)
if(x >0) y=1;
else y=-1;
printf("x=%d,y=%d\n", x, y);
return0;
}
8. 给出⼀百分制成绩,要求输出成绩等级’A’、‘B’、‘C’、‘D’、‘E’。 90分以上为’A’,8089分为’B’,7079分为’C’ ,60~69分为’D’ ,60分以下为’E’。
#include<stdio.h>
int main()
{
int score;
printf("enter score:");
scanf_s("%d",&score);
if(score >=90){
printf("A\n");c程序设计谭浩强pdf百度网盘
}else if(score >=80&& score <90){
printf("B\n");
}else if(score >=70&& score <80){
printf("C\n");
}else if(score >=60&& score <70){
printf("D\n");
}else{
printf("E\n");
}
system("pause");
return0;
}
9. 给⼀个不多于5位的正整数,要求:①求出它是⼏位数;②分别输出每⼀位数字;③按逆序输出各位数字,例如原数为321,应输出123。
解(1)
#include<stdio.h>
int main()
{
int num;
printf("enter num:");
scanf_s("%d",&num);
if(num >99999|| num <0){
printf("请输⼊0~99999之间的正数\n");
return-1;
}
if(num >=10000){
printf("5\n");
}else if(num >=1000){
printf("4\n");
}else if(num >=100){
printf("3\n");
}else if(num >=10){
printf("2\n");
}else{
printf("1\n");
}
system("pause");
return0;
}
解(2)
#include<stdio.h>
int main()
{
int num;
printf("enter num:");
scanf_s("%d",&num);
if(num >99999|| num <0){
printf("请输⼊0~99999之间的数字\n");
return-1;
}
if(num /10000>0){//取出万位数字
printf("%d ", num /10000);
}
if(num%10000>=1000){//取余10000则可以取出低四位的数据,除以1000则得到千位的数字printf("%d ",(num %10000)/1000);
}
if(num%1000>=100){//取余1000则可以取出低三位的数据,除以100则得到百位的数字printf("%d ",(num %1000)/100);
}
if(num%100>=10){//取余100则可以取出低两位的数据,除以10则得到⼗位的数字
printf("%d ",(num %100)/10);
}
if(num%10>=0){//取余10则取出个位数字
printf("%d ", num %10);
}
printf("\n");
system("pause");
return0;
}
解(3)
#include<stdio.h>
int main()
{
int num;
printf("enter num:");
scanf_s("%d",&num);
if(num >99999|| num <0){
printf("请输⼊0~99999之间的数字\n");
return-1;
}
if(num %10>=0){
printf("%d ", num %10);
}
if(num %100>=10){
printf("%d ",(num %100)/10);
}
if(num %1000>=100){
printf("%d ",(num %1000)/100);
}
if(num %10000>=1000){
printf("%d ",(num %10000)/1000);
}
if(num /10000>0){
printf("%d ", num /10000);
}
printf("\n");
system("pause");
return0;
}
10.企业发放的奖⾦根据利润提成。利润I低于或等于100000元的,奖⾦可提成10%;利润⾼于100000元,低于200000元(100000<I≤200000)时,低于100000元的部分按10%提成,⾼于100000元的部分,可提成7. 5%;200000<I≤400000时,低于200000元的部分仍按上述办法提成(下同)。⾼于200000元的部分按5%提成;400000<<I≤600000元时,⾼于400000元的部分按3%提成;600000<1≤1000000时,⾼于600000元的部分按1.5%提成;I>1000000时,超过1000000元的部分按1%提成。从键盘输⼊当⽉利润I,求应发奖⾦总数。要求:(1) 使⽤if语句编写程序。(2) 使⽤switch语句编写程序。
解(1)
#include<stdio.h>
int main()
{
double I, salary =0;
printf("enter performance:");
scanf_s("%lf",&I);
if(I <0){
printf("请输⼊⼀个正数\n");
system("pause");
return-1;
}
double salary1 =100000*0.1;//10万的奖⾦
double salary2 =(200000-100000)*0.075+ salary1;//20万的奖⾦
double salary3 =(400000-200000)*0.05+ salary2;//40万的奖⾦
double salary4 =(600000-400000)*0.03+ salary3;//60万的奖⾦
double salary5 =(1000000-600000)*0.015+ salary4;//100万的奖⾦
if(I <=100000){
salary = I *0.1;//⼩于100000按10%提成
}else if(I >100000&& I <=200000){
salary = salary1 +(I -100000)*0.075;//多出10万的按⽐例计算,加上10w的奖⾦
}else if(I >200000&& I <=400000){
salary = salary2 +(I -200000)*0.05;//多出20万的按⽐例计算,加上20w的奖⾦
}else if(I >400000&& I <=600000){
salary = salary3 +(I -400000)*0.03;//多出40万的按⽐例计算,加上40w的奖⾦
}else if(I >600000&& I <=1000000){
salary = salary4 +(I -600000)*0.015;//多出60万的按⽐例计算,加上60w的奖⾦
}else if(I >1000000){
salary = salary5 +(I -1000000)*0.01;//多出100万的按⽐例计算,加上100w的奖⾦
}
printf("salary:%f\n", salary);
system("pause");
return0;
}
解(2)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。