c语言编程题,这个哪里错了? 5

这是题目:https://blog.csdn.net/horour/article/details/81773541#include<stdio.h>main(){int... 这是题目:https://blog.csdn.net/horour/article/details/81773541
#include<stdio.h>
main()
{
int n,i;
float a[100],b[100];
char s[100];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%c%d",&s[i],&a[i]);
}

for(i=0;i<n;i++)
{
if(s[i]=='M')
b[i]=a[i]/1.09;
else
b[i]=a[i]*1.09;
printf("%.2f\n",b[i]);
}

}
展开
 我来答
自然逻辑
2019-12-12 · TA获得超过116个赞
知道小有建树答主
回答量:147
采纳率:76%
帮助的人:14.1万
展开全部

cout()这个语句都可以去掉,这里写出是为了看的清楚。如果你要加上,需要带上头文件。

#include <iostream>

#include <conio.h>

#include <stdio.h>

void main()

{

   using namespace std;

   cout<<"程序从当前位置开始....."<<endl;


关键是要加上这条语句:

fflush(stdin); //清空键盘缓冲区

不加这条语句,读回来的数值全都是错的。

pardream941026
2019-12-12 · TA获得超过8217个赞
知道大有可为答主
回答量:4602
采纳率:89%
帮助的人:1350万
展开全部
scanf("%c%d",&s[i],&a[i]);
改为
scanf("%c%f",&s[i],&a[i]);
追问
哦,还是错的。我觉得是字符数组赋值错了,可不知道怎么改。
追答
见linjunlzy的回复,他是对的。
或者在
scanf("%c%f",&s[i],&a[i]);前面加一句:
setbuf(stdin, NULL);
在每次从stdin读取之前,清除缓冲区也可以。
jyhero20的回复使用了:fflush(stdin);
fflush(stdin);不是标准C/C++中的用法,是微软的C开发工具中特有的。如果不考虑平台移植,也是可以的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
linjunlzy
2019-12-12 · TA获得超过1319个赞
知道小有建树答主
回答量:668
采纳率:82%
帮助的人:336万
展开全部
第一个for循环部分改成:
scanf("%c%f",&s[i],&a[i]);
getchar();//吸收换行符。否则第二次开始%c读的是换行符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式