考虑一个简单的程序.它必须从stdin中获取5个数字的序列并打印它们的总和.未说明将采用多少行输入,但如果换行符被取两次(或按两次Enter键),程序必须终止.
例如,
输入:
1 1 1 1 1 2 2 2 2 2 3 3 3 3 3/n /n
输出:
5 10 15 #include <stdio.h> int main() { int n1,n2,n3,n4,n5; int sum; while (/*condition*/) { scanf ("%d %d %d %d %d\n",&n1,&n2,&n3,&n4,&n5); sum = n1 + n2 + n3 + n4 + n5; printf ("%d\n",sum); } return 0; }
唯一的问题是我不知道while循环中必须有什么条件.一点点的帮助将不胜感激.
提前致谢.
解决方法
使用getc(stdin)(
man page)从stdin读取单个字符,如果它不是换行符,你可以用ungetc(ch,stdin)(
man page)将其放回去,并使用scanf读取你的号码.
int main() { int sum = 0; int newlines = 0; int n = 0; while(1) { int ch = getc(stdin); if(ch == EOF) break; if(ch == '\n') { newlines++; if(newlines >= 2) break; continue; } newlines = 0; ungetc(ch,stdin); int x; if(scanf("%d",&x) == EOF) break; sum += x; n++; if(n == 5) { printf("Sum is %d\n",sum); n = 0; sum = 0; } } }
原文地址:https://www.jb51.cc/c/110506.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。