如何用c语言实现多组数据输入,每组数据一行每行数据个数任意

如何用c语言实现多组数据输入,每组数据一行每行数据个数任意,第1张

算法竞赛题目中,由于重定向,最后将会出现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语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10194576.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存