算法竞赛题目中,由于重定向,最后将会出现EOF,而EOF标志着输入的结束。
为了利用EOF,算法竞赛选手无需考虑到底是什么东西(事实上,很多算法选手到今天甚至不知道这是什么,因为语言和库上知识的匮乏不影响算法竞赛选手做题)。所以我们一般直接当做输入失败处理,利用scanf返回输入成功参数的性质
典型的方法是:
例如每组数据第一个要输入的参数是p,则程序框架会这么写:
while(scanf("%d", &p) == 1)
{
//这里是其他参数的输入和算法过程
}
当第一行是三个数你可能会这么做:
当然了,刚刚那种办法是可以的,但为了使程序更漂亮:
while(scanf("%d%d%d", &a, &b, &c) == 3)
如果会使用EOF:
scanf() != EOF
但是注意!虽然大多数编译器的eof是-1,但是保险起见不要写-1,因为EOF是impl-def的。
输入流对象由于重载了bool,更容易:
while(std::cin>>a>>b)即可。
先将数据结果存入数组,然后再输出
int a,b;
int i=0,j;
int arr[10]; //暂定最多只能输入10组数据
while(scanf("%d%d",&a,&b)!=EOF)
{
arr[i++]=a+b;
}
for(j=0;j<i;j++ )
printf("%d\n",arr[j] );
#include "stdioh"
#include "mathh"
int main() //main函数要声明成int型的
{
int m,n,i,j,t,k;
long fenshu[m][n],max;
while(scanf("%d %d",&m,&n)!=EOF)
{
max=0;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
scanf("%ld",&fenshu[i][j]);
//下面的循环跟这个循环合并起来就行
if(labs(fenshu[i][j])>labs(max))
{
max=fenshu[i][j];
t=i;
k=j;
}
}
printf("%d %d %ld\n",t+1,k+1,fenshu[t][k]);
}
return 0; //这里加return 0;
}
/
你是在OJ上提交不AC吧,你的问题在于没有把main函数定义为int型的,这个在oj上是强制要求的,最后要有return 0;
另外,ACM讲究效率,你不需要两次循环,边读边比较就行,一次循环即可。可以节省一半时间。真正比赛,给你的数据规模都很大,多浪费一倍的时间应该是会超时的。
/
#include <stdioh>
int main()
{
char s[110];
int sum=0;
while(~scanf("%s",s))
{
if(s[0]=='#'){sum=0;continue;}
if(s[0]=='='){printf("%d:%d\n",sum/60,sum%60);continue;}
int flag=1,bit=1,bit2=1;
for(int i=strlen(s)-1;i>=0;i--)
{
if(s[i]==':'){
flag=0;
continue;
}
if(flag&&bit)
{
sum+=s[i]-'0';
bit=0;
continue;
}
else if(flag&&bit==0)
{
sum+=(s[i]-'0')10;
continue;
}
if(flag==0&&bit2)
{
sum+=(s[i]-'0')60;
bit2=0;
continue;
}
else
sum+=(s[i]-'0')600;
}
}
return 0;
}
网页链接
参看欧拉函数
#include<stdioh>
#include<stdlibh>
int eular(int n)
{
int ret=1,i;
for(i=2;ii<=n;i++)
{
if(n%i==0)
{
n/=i,ret=i-1;
while(n%i==0) n/=i,ret=i;
}
}
if(n>1) ret=n-1;
return ret;
}
int main ()
{
int n,s;
scanf("%d",&n);
s=eular(n);
printf("%d",s);
return 0;
}
1 我想到的解决办法如下:
A 第一项输入输入数量,随后按数量输入;
B 设定一个结束符,输入了这个结束符以后,则输入结束;
C 这个比较变态,做另一个线程监听上次输入时间,如果过了指定时间还没输入,则输入结束。
2 你这样写至少有两个问题:
A output没有flush;
B 没有处理异常。
以上就是关于如何用c语言实现多组数据输入,每组数据一行每行数据个数任意全部的内容,包括:如何用c语言实现多组数据输入,每组数据一行每行数据个数任意、C 输入多组数据并且换行、acm c语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)