c语言编程中连续按回车输入数据问题

来源:百度知道 编辑:UC知道 时间:2024/09/20 14:54:44
题目为:
输入一个华氏温度F,要求输出摄氏温度C. 公式为: C = 5/9*(F-32)

第一行输入一个N,下面有N行,每行是一个一个华氏温度

输出共N行,每行输出C,取两位小数.
Sample Input
3
1
2
3

Sample Output
-17.22
-16.67
-16.11

ps:我其它都会,就是每次只能输入一个数据,然后电脑给出一个数据,不能连续输入,怎么解决?
我的代码:
#include<stdio.h>
int main()
{
float a,b;
while(scanf("%f",&a)!=EOF)
{
b= 5/9.0*(a-32);
printf("%.2f\n",b);
}
return 0;
}

int N,dat;
scanf("%d", &N);
while (N--) {
scanf("%d", &dat);
......
}
用循环来实现多组输入,就可以了。

楼主的程序中的while循环语句完成的功能是从标准输入中逐一读入内容,再输出,因此,“每次只能输入一个数据,然后电脑给出一个数据,不能连续输入”。
如果需要达到连续输入,连续输出的功能,那么程序中必须增加代码用于保存连续的输入数据,然后再依次换算这些数据,连续输出。比如:将主函数体换成如下代码
int main()
{
int N;
int i;
float *a;
float b;
scanf("%d", &N);
a = (float *)malloc(N, sizeof(float));
for(i = 0; i < N; i++) // 读入
{
scanf("%f", &a[i]);
}
for(i = 0; i < N; i++) // 换算和输出
{
b= 5/9.0*(a[i]-32); // 换算
printf("%.2f\n", b);
}
free(a);
return 0;
}

问题出现在scanf,因为它读到回车就停止,却把回车留在缓冲区,下一次再来时,回车还在,它就继续把回车留着,所以什么数据都没读到就又停了,这是它的设计造成的,可以在循环中用getch()函数把每一次的回车去掉,就可以解决了,比如在printf("%.2f\n",b); 一行后加getch();就可以了

把输入写入到while循环中

比如while((c=getcha