输入不为0的整数,输出最大值(以三批数为例)。第一批输入总数据量n1,第二批输入n2个整数,以0作为结束标志,第三笔自由输入n3个整数。第1,2行为第一批,第3行和第4行的前半段为第二批,其余为第3批

在在线测试系统中,经常会遇到多输入输出问题。

第一类问题是以某个特殊值作为结束标志。例如:输入一组正整数,输出其最大值,输入以0表示结束。

样例输入:1 2 4 3 5 1 2 0 输出:5

这类问题可以通过一个带有break的while循环来解决。在scanf内如果遇到特殊结束标志则跳出循环。

第二类是事先告知有多少个数,然后依次输入数据。例如输入n个正整数,输出其最大值。

样例输入: 8 1 3 2 4 8 7 5 6 输出:8

这类问题可以通过scanf得到数目后带一个简单的for循环来解决。

第三类问题是直接输入多个数据,然后以数据输入完毕作为结束标志。例如输入一个数输出其相反数

样例输入:1 2 -4 0.5 输出:-1 -2 4 -0.5

这类问题z在VC中的解决方案和在OJ的解决方案不同。

VC中可以通过如下的do循环框架来解决:

do{
scanf("%f%c",&x,&ch);
printf("%f\n",-x);
}while(ch!=’\n’);

而在OJ中,由于后台采用了文件处理方式,具有更大的灵活性。

while(scanf("%f",&x)!=EOF)
{ printf("%f\n",-x);}
例题如下:
输入一些不为0的整数,输出其中最大值。
输入分为三批。
第一批输入总数据量n1,然后输入n1个整数;
第二批输入n2个整数,以0作为结束标志;
第三批自由输入n3个整数。
在样例输入中第1,2行为第一批输入数据
第3行和第4行的前半段为第二批输入数据
其余为第3批数据。
输出输出这3批整数中最大值。
样例输入:
5 2 3 1
4 6
1 3 8 9
6 2 4 0 3 5
2 2 5 6
7
8
样例输出:
9
提示:
输出这3批整数中最大值。

#include <stdio.h>
int main()
{
 int x,max;
 scanf("%d",&x);
 for(;x!=0;)
 {
  scanf("%d",&x);
  if(max<x)
   max=x;
 }
 printf("max=%d\n",max);
 return 0;
}
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值