c语言程序设计 第四章 代码练习

4.有3个整数a,b,c,由键盘输入,输出其中最大的数。

代码:

  1 #include<stdio.h>
  2 int main()
  3 {
  4         int a,b,c,max;
  5         printf("请输入任意三个整数,用空格隔开:\n");
  6         scanf("%d %d %d",&a,&b,&c);
  7         if(a<b)
  8         {
  9                 max=b;
 10                 if(b<c)                                                                                                                                                    
 11                         max=c;
 12         }
 13         else
 14         {
 15                 if(a>c)
 16                         max=a;
 17                 else
 18                         max=c;
 19         }
 20         printf("最大的数字是%d\n",max);
 21         return 0;
 22 }
~         

结果:

5.从键盘输人一个小于 1000 的正数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。要求在输入数据后先对其进行检查是否为小于 1000 的正数。若不是,则要求重新输入。

C语言sqrt函数:求平方根 (biancheng.net)

代码:

  1 #include<stdio.h>
  2 #include<math.h>
  3 int main()
  4 {
  5         printf("请输入一个数字,要求小于1000:\n");
  6         int a;
  7         scanf("%d",&a);
  8         if(a<1000)
  9         {
 10                 float b=sqrt(a);
 11                 printf("平方根为:%.2f\n",b);                                             
 12         }
 13         else
 14         {
 15                 printf("这个数字不符合要求,请重新输入。");
 16         }
 17         return 0;
 18 }

结果:

6.有一个函数 

代码:

  1 #include<stdio.h>
  2 int main()
  3 {
  4         printf("请输入一个x的值:");
  5                 float x,y;
  6         scanf("%f",&x);
  7         if(x<1)
  8         {
  9                 y=x;                                                                      
 10         }
 11         else if(x>=1&&x<10)
 12         {
 13                 y=2*x-1;
 14         }
 15         else
 16         {
 17                 y=3*x-11;
 18         }
 19         printf("y=%.2f\n",y);
 20         return 0;
                       

结果:

 8.给出一百分制成绩,要求输出等级

代码:

  1 #include<stdio.h>
  2 int main()
  3 {
  4         printf("请输入成绩:\n");
  5         float x;
  6         scanf("%f",&x);
  7         if(x>=90)
  8         {
  9                 printf("A\n");
 10         }
 11         else if(x>=80&&x<90)
 12         {
 13                 printf("B\n");
 14         }
 15         else if(x>=70&&x<80)
 16         {                                                                                                                                                                        
 17                 printf("C\n");
 18         }
 19         else if(x>=60&&x<70)
 20         {
 21                 printf("D\n");
 22         }
 23         else if(x<60)
 24         {
 25                 printf("E\n");
 26         }
 27         return 0;
 28 }

 结果:

 9.给一个不多于5位的正整数,要求
求出它是几位数;
分别输出每一位数字;
按逆序输出各位数字,例如原数为321,应输出123

代码:

  1 #include<stdio.h>
  2 int main()
  3 {
  4         printf("请输入一个不多于5位数的正整数:\n");
  5         int x,a,b,c,d,e;
  6         scanf("%d",&x);
  7         if(x>=10000)
  8         {
  9                 printf("这是5位数\n");
 10         }
 11         else if(x<10000&&x>=1000)
 12         {
 13                 printf("这是4位数\n");
 14         }
 15         else if(x<1000&&x>=100)
 16         {
 17                 printf("这是3位数\n");
 18         }
 19         else if(x<100&&x>=10)
 20         {
 21                 printf("这是2位数\n");
 22         }
 23         else if(x<10&&x>0)
 24         {
 25                 printf("这是1位数\n");
 26         }
 27         else
 28         {
 29                 printf("您输入的数字不符合要求。\n");
 30         }
 31         a=x/10000;
 32         b=x%10000/1000;
 33         c=x%1000/100;
 34         d=x%100/10;
 35         e=x%10;
 36         if(a>0)
 37         {
 38                 printf("它的万位数字是%d\n",a);
 39         }
 40         if(b>0)
 41         {
 42                 printf("它的千位数字是%d\n",b);
 43         }
 44         if(c>0)
 45         {
 46                 printf("它的百位数字是%d\n",c);
 47         }
 48         if(d>0)
 49         {
 50                 printf("它的十位数字是%d\n",d);
 51         }
 52         if(e>0)
 53         {
 54                 printf("它的个位数字是%d\n",e);
 55         }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
 56         printf("这个数字倒过来是:");
 57         if(e>0)
 58           {
 59                   printf("%d",e);
 60         }
 61        if(d>0)
 62           {
 63                   printf("%d",d);
 64           }
 65 if(c>0)
 66           {
 67                   printf("%d",c);
 68           }
 69 if(b>0)
 70           {
 71                   printf("%d",b);
 72           }
 73 if(a>0)
 74           {
 75                   printf("%d",a);
 76           }
 77 printf("\n");
 78         return 0;
 79 }
 80 
 81 

 结果:

 一些心得:这个题目非常困难,主要算法想不到,自己一开始是用除整十整百来做的,运行结果不对,会像这样。

然后瞄了一眼答案,知道可以先取余再除以整十整百

然后没有什么问题了,但是倒过来显示数字出现了问题,像这样

 百位没有的会出现一个零,因为我是这样输出的

printf(“倒过来输出是%d,%d,%d,%d,%d”,e.d,c,b,a);

 又修改了一下,跟第二小问是相反的步骤,然后做出来了,真的特别不容易。

第一次写这么长的代码。

10.企业发放的奖金根据利润提成。利润I低于或等于 100000 元的,奖金可提10%;利润高于100000元,低于200000元(100000I<200000)时,低于100000 元的部分按10%提成,高于100000元的部分,可提成7.5%;200000<I<400000时,低于200000元的部分仍按上述办法提成(下同)。高于200000元的部分按5%提成;400000I<600000元时高于400000元的部分按 3%提成;600000<I<1000000时,高于 600000元的部分按 15%提成;I>1000000时,超过 1000000元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数。
要求:
(1)用if语句编程序;
(2)用switch语句编程序

代码:

  1 #include<stdio.h>                                                                                                                                                                  
  2 int main()
  3 {
  4         int i,j;
  5         printf("请输入当月利润:");
  6                 scanf("%d",&i);
  7         if(i<=100000)
  8                 j=0.1*i;
  9         else if(i>100000&&i<=200000)
 10                 j=0.1*100000+0.075*(i-100000);
 11         else if(i>200000&&i<=400000)
 12                 j=0.1*200000+0.05*(i-200000);
 13         else if(i>400000&&i<=600000)
 14                 j=0.1*400000+0.03*(i-400000);
 15         else if(i>600000&&i<=1000000)
 16                 j=0.1*600000+0.015*(i-600000);
 17         else if(i>1000000)
 18         j=0.1*1000000+0.01*(i-1000000);
 19         printf("应发奖金总数为:%d",j);
 20         printf("\n");
 21         return 0;
 22 
 23 }

结果:

各个阶段都测试了,都又对应的结果,一开始超过一百万的显示为0,后来发现我把算式的j写成了i,让i变成了一个定值。

还有题目一开始没有理解到位,多设置了一个变量m。其实只有两个变量。

 这个题目有点绕,它说的利润计算方式同上没有说明白,在网上也看到了两个版本的答案,第二个版本就是我一开始自己写的那种,特别特别绕,导致我最后一段j都写成i了。

11.输人4个整数要求按由小到大的顺序输出。

  1 #include<stdio.h>
  2 int main()
  3 {
  4         printf("请输入四个数字,用空格隔开:");
  5         int a,b,c,d,t;
  6         scanf("%d %d %d %d",&a,&b,&c,&d);
  7         if( a>b)                                                                                                                                                                                                                          
  8         {       t=a;
  9         a=b;
 10         b=t;}
 11         if (a>c)
 12         {       t=a;
 13         a=c;
 14         c=t;}
 15         if (a>d)
 16         {       t=a;
 17         a=d;
 18         d=t;}
 19         if (b>c)
 20         {       t=b;
 21         b=c;
 22         c=t;}
 23         if (b>d)
 24         {      t=b;
 25                 b=d;
 26                 d=t;
 27         }
 28         if (c>d)
 29         {
 30                 t=c;
 31                 c=d;
 32                 d=t;
 33         }
 34         printf("从小到达输出为:%d %d %d %d\n",a,b,c,d);
 35         return 0;
 36 }

结果:

 一些问题:一开始按自己理解写的,问题是这样

 原因是把赋值过程中每段的最后一行,单纯的对换两个比较的值,而不是用t赋值,改过来就好了。

ps:后面复习的时候,发现if后面如果全不加大括号,结果就都是错的,注意规范。

11.5月21号,看懂题目意思了,过来更新

有四个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1.这四个塔的高度为10米。塔以外无建筑物。今输入一个点的坐标,求该点的建筑高度(塔外的高度为0m)_一只睡不醒的猪的博客-CSDN博客

  1 #include<stdio.h>
  2 int main()
  3 {
  4         printf("请输入任意一个坐标x,y\n");
  5         int x,y,h;
  6         scanf("%d",&x);
  7         scanf("%d",&y);
  8         int a,b,c,d;
  9         a=(x-2)*(x-2)*2;
 10         b=(x+2)*(x+2)+(x-2)*(x-2);
 11         c=(x+2)*(x+2)*2;
 12         d=b;
 13         if(a<=1||b<=1||c<=1)
 14                 h=10;
 15         else
 16                 h=0;
 17         printf("高度为%d米",h);
 18         return 0;
 19 }        

结果: 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值