永发信息网

求C++人才解答疑惑

答案:3  悬赏:10  手机版
解决时间 2021-05-01 17:01
  • 提问者网友:容嬷嬷拿针来
  • 2021-05-01 01:58

下面两个程序有一点区别,倒数第五行,但第一个怎么运行就不对呢。出现的是望高手解答。

#include<stdio.h>
void main()
{
float a[5]={0,0,0,0,0};
int i;
char c;
printf("请输入平时、实习、测验、和期末成绩\n");
do
{
for(i=0;i<=3;i++)
{
scanf("%d",&a[i]);
}
printf("\n");
a[4]=a[0]*0.1+a[1]*0.2+a[2]*0.2+a[3]*0.5;
printf("平时 实习 测验 期末 总评\n");
for(i=0;i<=4;i++)
printf("%3.1f",a[i]);
printf("\n");
getchar();
}while((c=getchar())==' ');
}


#include<stdio.h>
void main()
{
float a[5]={0,0,0,0,0};
int i;
char c;
printf("请输入平时、实习、测验、和期末成绩\n");
do
{
for(i=0;i<=3;i++)
{
scanf("%d",&a[i]);
}
printf("\n");
a[4]=a[0]*0.1+a[1]*0.2+a[2]*0.2+a[3]*0.5;
printf("平时 实习 测验 期末 总评\n");
for(i=0;i<=4;i++)
printf("%3d",a[i]);
printf("\n");
getchar();
}while((c=getchar())==' ');
}

最佳答案
  • 五星知识达人网友:鱼芗
  • 2021-05-01 03:34

你定义的数组a的类型是flaot浮点型的。。。所以用的时候如格式化输入输出的时候也应该对应起来。。


建议都改成%f;


#include<stdio.h>
void main()
{
float a[5]={0,0,0,0,0};
int i;
char c;
printf("请输入平时、实习、测验、和期末成绩\n");
do
{
for(i=0;i<=3;i++)
{
scanf("%f",&a[i]);
}
printf("\n");
a[4]=a[0]*0.1+a[1]*0.2+a[2]*0.2+a[3]*0.5;
printf("平时 实习 测验 期末 总评\n");
for(i=0;i<=4;i++)
printf("%3.1f",a[i]);
printf("\n");
getchar();
}while((c=getchar())==' ');
}


全部回答
  • 1楼网友:煞尾
  • 2021-05-01 05:56

printf("%3d",a[i]);

printf("%3.1f",a[i]);

你直接指出是这两行不就得了,看的别人挺累的。

printf函数会因为格式串的不同而输出效果不同,这是正常现象"%3d"表示按3位十进制整数来输出,"%3.1f"是按3位整数和一位小数的浮点数来输出,你不会连这个函数都不知道咋回事吧?

  • 2楼网友:从此江山别
  • 2021-05-01 04:23
数组a的元素是浮点数。输出时候的格式控制必须是用%f的。而%d是输出整型数据的格式控制。用%d显然不行。嘿嘿。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯