c语言中有一个标准输入函数,即:scanf函数,它可以读取输入的任意格式类型的数据。scanf函数也有返回值,返回类型为int类型,它返回成功读入的项目的个数。如果它没有读取任何项目(当它期望一个数字而您却键入了一个非数字字符串时就会发生这种情况,scanf()会返回0。当它检测到“文件结尾”(end of file)时,它返回EOF(EOF是在文件stdio.h中定义的特殊值,一般#define指令把EOF的值定义为-1,我们可以理解为:#define EOF -1)。
c语言中,所有的输入函数都共用同一个输入缓冲区,我们从键盘键入数据时,其实是将输入写入缓冲区中,当我们按下回车键时,scanf()函数从缓冲区中读取输入,刷新缓冲区。
让我们来看看这样一道c编程题:
如果是您,您会怎么做呢,看上去是很简单的吧,当时博主想了不少时间呢。输入数据事先不确定,而且不能每输入一个数据就按一次回车键,我们就想到了利用scanf()函数的特点想读取文件内容一样读取数据,知道我们按下ctrl+Z来表示文件结尾从而结束scanf()函数的数据读取,一下c语言代码时博主写的,按照题目要求,希望读者们能指出代码中不好的地方:
#include<stdio.h>
int main()
{
int i = 0,t,j,k,a[10],N;
while(scanf("%d",&a[i]) != EOF)
{
i++;
if(i == 10)
{
break;
}
}
N = i;
for (i = 0;i < N - 1;i++)
{
for(j = 0;j < N - 1 - i;j++)
{
if(a[j] > a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
for(k = 0;k < N;k++)
{
if(k == N - 1)
{
printf("%d\n",a[k]);
}
else
{
printf("%d,",a[k]);
}
}
}
return 0;
}