2 sangnanpo sangnanpo 于 2016.01.27 17:18 提问

OJ的输入输出 C语言的输入输出多组测试数据

请问OJ测试代码时是如何输入输出的?C语言如何实现多组数据的输出?比如这道题

“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。
现在要求输出所有在m和n范围内的水仙花数。

Input
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。

Output
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。

Sample Input

100 120
300 380

Sample Output

no
370 371

3个回答

caozhy
caozhy   Ds   Rxr 2016.01.27 17:46

不同的oj平台是不同的,一般来说,oj平台会提供文档说明,或者一个例子测试题目,你可以先在那个上面测试你的输入输出。
一些oj平台有一定的格式容忍性,也就是说你分行或者不分行,用什么字符分行,它都可以接收。
贴出你的oj平台的地址,可以直接帮你测试。

qq_27183003
qq_27183003   Ds   Rxr 2016.01.27 20:15

参考这个:

 #include<stdio.h>
int IsNarcissus(int n)
{
 int i,j,k;
 i=n/100;
 j=n/10;
 k=n;
 if(n==i*i*i+j*j*j+k*k*k) return 1;
 return 0;
}
int main(int m,int n)
{
 while(~scanf("%d%d",&m,&n))
 {
  while(!IsNarcissus(m)&&m<=n) m++;
  if(m<=n) printf("%d",m);
  else{
   printf("no\n");
   continue;
  }
  while(m<n)
    if(IsNarcissus(++m))
   printf(" %d",m);
  printf("\n");
 }
 return 0;
}
91program
91program   Ds   Rxr 2016.01.27 17:29

C语言多组数据的输出是必须按格式来输入/输出的,一般都是通过 scanf()/printf() 函数来完成。
例如:scanf("%d%d",&a,&b) 就可以完成两个整型数的输入。
printf("a=%d,%5d,%o,%x\n",a,a,a,a); 按引号内的格式输出 a 的值。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!