永发信息网

C语言 无法实现数据以EOF结束

答案:4  悬赏:70  手机版
解决时间 2021-01-14 11:23
  • 提问者网友:夢醒日落
  • 2021-01-13 13:50
C语言 无法实现数据以EOF结束
最佳答案
  • 五星知识达人网友:未来江山和你
  • 2021-01-13 14:41
首先,题目说数据以EOF结束,表示输入完数据按回车后,再按Ctrl+z再回车。
以下是程序,作了点修改
#include
#include

int lcm(int m, int n)
{
int i,t;
if(m t=m;m=n;n=t;
}
for(i=m;i>=1;i++)
if(i%m==0&&i%n==0)
break;
return i;
}

int main()
{
int a,b,c,d,e;
char A,B,C;
int max,final,temp,i;
char flag='1';
scanf("%d%c%d%c%d%c%d",&a,&A,&b,&B,&c,&C,&d);
do{

max=lcm(b,d);
switch(B){
case'+':final=a*(max/b)+c*(max/d);
for(i=final;i>=1;i--){ //应该到1
if(final%i==0 && max%i==0)
temp=i;break;
}

if(max%final==0){
final=final/temp;
max=max/temp;
}
printf("%d/%d\n",final,max);break;
case'-':final=a*(max/b)-c*(max/d);
if(final==0) //相减=0就不能做除数
{
printf("0\n");
break;
}
if(final<0) //小心出现负数
e=-final;
else
e=final;
for(i=e;i>=1;i--){
if(e%i==0&&max%i==0)
temp=i; break;
}

if(max%e==0){
e=e/temp;
max=max/temp;
}
final=-e;
printf("%d/%d\n",final,max);break;
}
}while(scanf("%d%c%d%c%d%c%d",&a,&A,&b,&B,&c,&C,&d)!=EOF);
system("pause");
return 0;
}
全部回答
  • 1楼网友:西岸风
  • 2021-01-13 17:23
ctrl+z
  • 2楼网友:神也偏爱
  • 2021-01-13 16:59
关键一句。
while (scanf(...)!=EOF)
{
对输入的数据 操作。
}追问知道形式是这样的,但是具体怎么实现,scanf()获得的数据会不会影响正常数据的输入?EOF的形式应该是什么?可以的话给改下代码,具体的。
  • 3楼网友:渡鹤影
  • 2021-01-13 15:50
scanf("%d%c%d%c%d%c%d",&a,&A,&b,&B,&c,&C,&d);表示输入的数有几个
就需要几个Ctrl+z
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯