0

我有一个问题:我应该构建一个程序,当我输入一个小于 100 的整数时,所有小于该整数并包含数字“3”的数字都会出现在屏幕上(等等,如果我输入 14,数字“3, 13” 应该出现)。

但是,我的代码有问题,请帮助!谢谢!

编码:

#include <stdio.h>

int main(int argc, const char * argv [])
{
    int wholenumber;
    printf("百以内の整数を入力してください\n");
    scanf_s("%d", &wholenumber);

    while(0 <wholenumber)
        {
            wholenumber--;

        while(0 < wholenumber){
        wholenumber = 3 %10;
        wholenumber = 3 /10;

         if (wholenumber == 3);
         {printf("%3d",wholenumber);}
    }
    }
    return 0;
}
4

6 回答 6

1

我不知道您对这段代码的意图是什么:

 wholenumber = 3 % 10;
 wholenumber = 3 / 10;

第一行将变量设置为 3,第二行设置为 0.. 强制程序退出循环。

于 2013-07-01T05:49:35.047 回答
1

如果x是 0 到 99 之间的整数,以下将检查其任一数字是否为 a 3

if (x / 10 == 3 || x % 10 == 3) {
   ...
}

我把剩下的留给读者练习。

于 2013-07-01T06:21:24.723 回答
0

代码:

#include<stdio.h>

int main()
{
    int i,num;
    int t1,t2;             // Variable to store data temporary
    printf("\nEnter the number : \n");
    scanf("%d",&num);

    for(i=0;i<num;i++)
    {
     t1= i/10;
     t2= i%10;

     if((t1==3) || (t2 ==3))   //check if number has 3 in it
       printf(" %d", i);

    }
return 0;
}

这是必需的代码。感谢@amulous 指出错误。注:根据提问用户的要求,假设输入的数字小于 100。

于 2013-07-01T06:28:48.990 回答
0

您可以更有效地编写此代码,这适用于任何上限:

#include <stdio.h>

int main(int argc, const char * argv [])
{
    int wholenumber;
    printf("百以内の整数を入力してください\n");
    scanf("%d", &wholenumber);
    for (int tens = 1; tens < wholenumber; tens *= 10) {
        for (int i = 3 * tens; i < wholenumber; i+= 10*tens) {
            printf("%3d\n", i);
        }
    }
    return 0;
}
于 2013-07-01T06:31:02.920 回答
0

OP 解决方案在概念上很接近,但需要更改。

  1. while()循环测试wholenumber破坏. '3' 收容测试应使用wholenumber

  2. 的语法wholenumber = 3 /10;应该是 Wholenumber_test /= 10;

  3. 其他语法错误。


void whole(int wholenumber, int digit) {
  while (0 < wholenumber) {
    int test = wholenumber;  // form test value
    while (0 < test) {
      if ((test%10) == digit) {
        printf("%3d\n", wholenumber);
        break;  // no need to test other digits
      }
      test /= 10;  // move onto next digit
    }
    wholenumber--;
  }
}
于 2013-07-01T18:40:31.843 回答
0
#include <stdio.h>

int contain3(int n){
    if(n == 0) return 0;
    return (n % 10 == 3) ? 1 : contain3(n/10);
}

int main(void){
    int i, wholenumber;
    printf("百以内の整数を入力してください\n");
    scanf_s("%d", &wholenumber);

    for(i=3;i<wholenumber;++i)
        if(contain3(i))
            printf("%3d", i);

    return 0;
}

#include <stdio.h>
#include <limits.h>

int main(void){
    int i, wholenumber;
    int data[]={3,13,23,30,31,32,33,34,35,36,37,38,39,43,53,63,73,83,93,INT_MAX};
    printf("百以内の整数を入力してください\n");
    scanf_s("%d", &wholenumber);

    for(i=0;data[i]<wholenumber;++i)
        printf("%3d", data[i]);

    return 0;
}
于 2013-07-01T13:24:34.333 回答