宸宸城堡 发表于 2021-8-24 22:03:06

C语言如何把没结果单分成一种情况

本帖最后由 宸宸城堡 于 2021-8-24 22:16 编辑

下面的这个for循环

如何设置成有结果就输出结果,没结果输出No Result

现在是只能输出有结果的情况,没法输出No Result的情况

求各位大神解答


附题目:输入两个数字 m 和 n,构成一个闭区间 。其中m,n满足:0<= m <= n <=10000000;

要求按顺序(从小到大)输出该区间 内所有的奇数的平方数,若不存在这样的平方数,则输出:No Result.


例如1
输入:100200
输出:
121
169

例如2
输入:1020
输出:No Result.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
        int m,n,i,a;
        scanf("%d %d",&m,&n);
        for(i=1;i<=10000000;i=i+2)
        {
                a=pow(i,2);
                if(a>=m && a<=n)
                {
                        printf("%d\n",a);
                }
        }
        return 0;
}

wp231957 发表于 2021-8-24 22:18:45

增加一个标志变量,如果有则另该变量等于一个值,否则等于另外一个值
那么循环结束之后根据该值就能确定是否有

宸宸城堡 发表于 2021-8-24 22:26:48

wp231957 发表于 2021-8-24 22:18
增加一个标志变量,如果有则另该变量等于一个值,否则等于另外一个值
那么循环结束之后根据该值就能确定是 ...

能稍微详细说说嘛

我是新手刚学C语言{:5_110:},不太会用标志变量

感谢大佬

wp231957 发表于 2021-8-25 09:01:15

宸宸城堡 发表于 2021-8-24 22:26
能稍微详细说说嘛

我是新手刚学C语言,不太会用标志变量


我改了一下,原来你用的pow,不知道为什么会产生一些莫名其妙的结果
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
      int m,n,i,a;
      scanf("%d%d",&m,&n);
      int flag=1;
      for(i=1;i<=10000000;i=i+2)
      {
                a=i*i;
                if(a>=m && a<=n)
                {
                        printf("%d\n",a);
                        flag=0;
                }
      }
      if (flag)
                printf("没有找到结果\n");
      return 0;
}
页: [1]
查看完整版本: C语言如何把没结果单分成一种情况