千寻0 发表于 2014-7-14 20:00:51

if问题

为什么下面的程序我输入小数它不执行第一个if里面的语句?
#include<stdio.h>
void main()
{
        int a,x;
        printf("in a numble\n");
        scanf("%d",&a);
        if(a%1!=0)
        {
                printf("Please input errors from the new input\n");
        }
        else
        {
                if(0<a,a<4)
                {
                        printf("this is a sushu\n");
                }
                else
                {
                        for(x=2;x<a;x++)
                        {
                                if(a%x==0)
                                {
                                        printf("this is nota sushu\n");
                                }
                                else
                                {
                                        printf("this is a sushu\n");
                                }
                                break;
                               
                        }
                }
               
        }
}

牡丹花下死做鬼 发表于 2014-7-14 20:00:52

{:7_176:}
scanf("%d",&a);
%d是整形 你输入小数也只会取整数部分
再说%也是针对整形的 不管什么数 ÷ 1 余数肯定是0啊
所以
if(a%1!=0)
      {
                printf("Please input errors from the new input\n");
      }
这肯定不会执行啊

reg163 发表于 2014-7-14 20:31:30

碉堡了,很少看见人家程序写你这样的。if else if 没学过吗

奋斗小小鸟 发表于 2014-7-14 20:54:21

因为A是整形,你说小数的时候,他默认会只取整数部分,int a;a=1.1;printf("%d",a);结果为1,可以改变A变量的类型,来解决这个问题

奋斗小小鸟 发表于 2014-7-14 20:56:28

奋斗小小鸟 发表于 2014-7-14 20:54
因为A是整形,你说小数的时候,他默认会只取整数部分,int a;a=1.1;printf("%d",a);结果为1,可以改变A变 ...

改变类型,结构也得改改

牡丹花下死做鬼 发表于 2014-7-15 10:30:28

#include <stdio.h>

int main ()
{
        int n;
        printf("Please Input a number:");
        scanf("%d",&n);
        printf("%d\n",n);

        return 0;
}
你自己输入小数试试看就知道了

牡丹花下死做鬼 发表于 2014-7-15 10:44:18

这是我自己写的一个
#include <stdio.h>
#include<math.h>

void close();

int main ()
{
        int n,i;
s:        printf("Please Input a number:");
        if(scanf("%d",&n))
        {
               
               if(n == 1)
                {
                        printf("1既不是素数也不是和数!\n");
                        close;
                        goto s;
                }
                else if(n == 2)
                {
                        printf("%d是素数!\n",n);
                        close;
                        goto s;
                }
                else if(n%2==0)
                {
                        printf("%d是和数!\n",n);
                        close;
                        goto s;
                }
                else
                {
                        for(i=3;i<=sqrt
                                (n);i=i+2)
                        {
                                if(n%i==0)
                                {
                                        break;
                                }
                        }
                        if(i<=sqrt(n))
                        {
                                printf("%d是和数!\n",n);
                                close;
                                goto s;
                        }
                        else
                        {
                                printf("%d是素数!\n",n);
                                close;
                                goto s;
                        }
                }
        }
       
        return 0;
}
void close()
{
        char ch;
        while((ch = getchar())!='\n');
}

sliwu 发表于 2014-7-15 11:47:20

!=出在这个判断语句

千寻0 发表于 2014-7-15 12:46:21

牡丹花下死做鬼 发表于 2014-7-15 10:30
你自己输入小数试试看就知道了

如果我想让用户输入带有小数的数字后就显示输入错误该怎么办呢?

牡丹花下死做鬼 发表于 2014-7-15 12:54:40

千寻0 发表于 2014-7-15 12:46
如果我想让用户输入带有小数的数字后就显示输入错误该怎么办呢?

最后价格else呗

千寻0 发表于 2014-7-15 13:24:33

reg163 发表于 2014-7-14 20:31
碉堡了,很少看见人家程序写你这样的。if else if 没学过吗

我写的有什么问题吗?

千寻0 发表于 2014-7-15 13:27:16

牡丹花下死做鬼 发表于 2014-7-15 12:54
最后价格else呗

初学不知道该怎么写判断

ydst365 发表于 2014-7-15 13:37:34

路过 顶一下

我爱鱼C论坛 发表于 2015-2-19 20:42:04

页: [1]
查看完整版本: if问题