c语言初学者
编写一个程序 程序要求:输入数字 当按下ctrl+D的时候将数字反转
例子:
Enter numbers forwards:
10
50
20
40
(CTRL+D)
Reversed:
40
20
50
10
Enter numbers forwards:
5
4
-3
-2
-1
(CTRL+D)
Reversed:
-1
-2
-3
4
5
这是我已经写的输入数字的代码 想问下接下来该怎么做:
#include <stdio.h>
int i;
int number[999];
printf("Enter numbers forwards:");
while(1) {
for(i=0;i<999;i++) {
scanf("%d",number[i]);
前面几个人都写错了,scanf()
返回的是成功读入数据的个数,但是如果遇到输入流结尾或读取错误,返回的是EOF,一般EOF定义为-1,所以正确的写法应该是判断scanf()
的返回值是否为1
在Windows系统的终端下,按ctrl+z再回车表示输入流结束
在Linux/Unix系统的终端下,按ctrl+d表示输入流结束
#include <stdio.h>
#define N 100
int main()
{
int a[N], i = 0;
printf("Enter numbers forwards:\n");
while (i < N && scanf("%d", &a[i]) == 1) // 判断i<N防止数组越界,判断scanf()返回值确定读入数据成功,如果scanf()遇到输入流结尾或提取错误,返回的是EOF
i++;
printf("Reversed:\n");
while (i > 0) // 逆序输出,i是已输入数据的个数
printf("%d\n", a[--i]);
return 0;
}
1.scanf()函数有返回值且为int型。
2.scanf()函数返回的值为:正确按指定格式输入变量的个数,也即能正确接收到值的变量个数。
例如:
scanf("%d%d", &a, &b);
如果a和b都被成功读入,那么scanf()的返回值就是2;
如果只有a被成功读入,返回值为1;
如果a和b都未被成功读入,返回值为0;
如果遇到错误或遇到end of file,返回值为EOF。EOF是一个预定义的常量,等于-1。#define EOF -1
解答如下,有问题请回复
#include <stdio.h>
int main()
{
int i=0;
int number[999];
printf("Enter numbers forwards:\n");
while(scanf("%d",&number[i]))
{
i++;
}
printf("Reversed:\n");
while(i)
{
printf("%d\n",number[i-1]);
i--;
}
return 1;
}