fbczr 发表于 2019-9-27 18:57:11

刚学c有点问题

#include<stdio.h>
int main()
{
                int num;

                printf("please enter an integer:");
                scanf("%d",&num);
               
                if (num = 1)
                printf("one");
               
                else if (num = 2)               
                printf("two");
               
                else if (num = 3)
                printf("three");
               
                else if (num = 4)
                printf("four");
               
                else if (num = 5)
                printf("five");
               
                else if (num = 6)
                printf("six");
               
                else if (num = 7)
                printf("seven");
               
                else if (num = 8)
                printf("eight");
               
                else if (num = 9)
                printf("night");

                else if (num = 0)
                printf("zero");
        return 0;
}
为什么我这个输入什么都是one啊要怎么改,还有原题在图中求教,我觉得我写的是错的但是我只想出了这么写

superbe 发表于 2019-9-27 19:04:31

把 if 条件里所有 = 都换成 ==

fbczr 发表于 2019-9-27 19:08:16

但是我这样到11之后就不会显示了

jackz007 发表于 2019-9-27 19:11:15

      赋值才用 =,判断相等应该用 ==

      例如:如果 num 等于 1 应该这么写:
      if(num == 1) printf("one\n") ;

superbe 发表于 2019-9-27 19:11:49

要求是11以后的数都显示成one吗

fbczr 发表于 2019-9-27 19:16:34

不是,但是11算one,12算one two吧

自然 发表于 2019-9-27 19:20:09

fbczr 发表于 2019-9-27 19:08
但是我这样到11之后就不会显示了

你程序里没有写11以后的,如果是11之后都输出“**”,那就在最后再加一个
else:
print(“**”)
(**是你想输出的,你随便换)

fbczr 发表于 2019-9-27 19:23:16

但是11之后我的我要怎么写他才能识别是11,12,13是oneone onetwo one three呢

superbe 发表于 2019-9-27 19:30:38

本帖最后由 superbe 于 2019-9-27 20:04 编辑

#include<stdio.h>

void written(int);

int main()
{
        int num;
       
        while(1){
                printf("please enter an integer: ");
                if(scanf("%d",&num)!=1) break;
                written(num);
        }

        return 0;
}

void written(int n)
{
        if(n>9) n %= 10;
        if (n == 1)
                printf("one");
        else if (n == 2)               
                printf("two");
        else if (n == 3)
                printf("three");
        else if (n == 4)
                printf("four");
        else if (n == 5)
                printf("five");
        else if (n == 6)
                printf("six");
        else if (n == 7)
                printf("seven");
        else if (n == 8)
                printf("eight");
        else if (n == 9)
                printf("night");
        else if (n == 0)
                printf("zero");

        printf("\n");

}

superbe 发表于 2019-9-27 19:32:00

看题目中说了,可以使用%进行取模运算,所以11之后应该是显示余数。而且要使用一个written函数。

fbczr 发表于 2019-9-27 19:44:04

还是有点小问题,你这个输进去11他回的是1而不是one要怎么解决?

superbe 发表于 2019-9-27 19:50:34

已修改过了,试试可以吗

jackz007 发表于 2019-9-27 19:52:09

         按照题目要求,对代码进行了全面的修改,楼主再测试一下这个代码:

#include<stdio.h>
void written(int n)
{
      n %= 10                           ; // 根据题意,n 对 10 取余,确保 n 的范围在 0 ~ 9 变化
      if(n == 0) printf("zero\n")       ;
      else if(n == 1) printf("one\n")   ;
      else if(n == 2) printf("two\n")   ;
      else if(n == 3) printf("three\n") ;
      else if(n == 4) printf("four\n");
      else if(n == 5) printf("five\n");
      else if(n == 6) printf("six\n")   ;
      else if(n == 7) printf("seven\n") ;
      else if(n == 8) printf("eight\n") ;
      else printf("nine\n")             ;
}

int main(void)
{
      int num                              ;
      printf("please enter an integer : ") ;
      scanf("%d", & num)                   ;
      written(num)                         ;
}

fbczr 发表于 2019-9-27 19:55:01

好了,谢谢各位大神帮忙哈

superbe 发表于 2019-9-27 20:00:16

jackz007 发表于 2019-9-27 19:52
按照题目要求,对代码进行了全面的修改,楼主再测试一下这个代码:

嗯,这个代码更好
页: [1]
查看完整版本: 刚学c有点问题