C语言如何实现将一个小数以百分比的情势输出

莱莱  金牌会员 | 2024-7-16 12:35:51 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 837|帖子 837|积分 2511

在C语言中我们用连着的两个百分比符号表现一个百分比符号,即“%%”就表现一个百分比符号,例如我们想输出40%这个数到屏幕上我们可以实行以下语句:
  1. printf("%d%%\n",40);
复制代码
如许就可以将40%输出在屏幕上了
若我们想要将0.857这个浮点数以百分制的情势输出在屏幕上呢?我们知道将0.857这个数转换成为百分制的数是85.7%,以是我们应该先将0.857扩大100倍再配合百分符号输出,即实行语句:
  1. printf("%.1f%%\n",0.857*100);
复制代码
若要将小数0.77594,以百分制的情势输出,且在百分符号前的部分四舍五入保留整数部分呢?那我们可以实行以下语句
  1. printf("%.0f%%\n",0.77594*100);
复制代码
以上三条语句的实行结果:

会有这条博客的缘故起因是因为我在刚开始学C语言的时间,实现第三种环境,是先将百分符号前面的小数部分乘以100后转换成为四舍五入的整数情势,即先将小数乘以100减去它的整数部分然后和0.5比力若大于即是0.5则整数部分加1反之则整数部分不变,然后以printf("%d%%",Int);情势输出,如我下面这个程序采用的就是我上面所说的这种方法:
题目描述

这是蓝桥杯官网上题库中的一道题目,我给出的解决代码是

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(int argc, char *argv[])
  4. {
  5.   // 请在此输入您的代码
  6.   int n,array[10000],pass=0,good=0;
  7.   float temp;
  8.   scanf("%d",&n);
  9.   for(int i=0;i<n;i++)
  10.   {
  11.     scanf("%d",&array[i]);
  12.     if(array[i]>=60)
  13.     {
  14.       pass++;
  15.     }
  16.     if(array[i]>=85)
  17.     {
  18.       good++;
  19.     }
  20.   }
  21.   temp=((double)pass/n)*100;
  22.   if(temp-(pass*100/n)>=0.5)
  23.   {
  24.     pass=pass*100/n+1;
  25.   }
  26.   else
  27.   {
  28.     pass=pass*100/n;
  29.   }
  30.   temp=((double)good/n)*100;
  31.   if(temp-(good*100/n)>=0.5)
  32.   {
  33.     good=good*100/n+1;
  34.   }
  35.   else
  36.   {
  37.     good=good*100/n;
  38.   }
  39.   printf("%d%%\n",pass);
  40.   printf("%d%%\n",good);
  41.   
  42.   return 0;
  43. }
复制代码
 就很简朴的一道题我写出了这么长的代码,实在背面有很大一段代码都可以只用一条输出语句来解决即代码段
  1. temp=((double)pass/n)*100;
  2.   if(temp-(pass*100/n)>=0.5)
  3.   {
  4.     pass=pass*100/n+1;
  5.   }
  6.   else
  7.   {
  8.     pass=pass*100/n;
  9.   }
  10.   temp=((double)good/n)*100;
  11.   if(temp-(good*100/n)>=0.5)
  12.   {
  13.     good=good*100/n+1;
  14.   }
  15.   else
  16.   {
  17.     good=good*100/n;
  18.   }
  19.   printf("%d%%\n",pass);
  20.   printf("%d%%\n",good);
复制代码
描述的功能用下面两条输出语句即可解决
  1. printf("%.0f%%\n",(double)pass*100/n);
  2. printf("%.0f%%\n",(double)good*100/n);
复制代码
那么我的程序就可以大大精简,不用再那么冗长

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表