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

xが 0 から 99 までの整数である場合、以下はその数字のいずれかが であるかどうかをチェックし3ます。

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

残りは読者の演習として残しておきます。

于 2013-07-01T06:21:24.723 に答える
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 に答える
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 に答える