2

このプログラムは、任意の数の整数を入力として取り、その整数とその数の星を出力します。

例えば

In: 1 2 3
Out: 
1 | *
2 | **
3 | ***

もう一つの例:

In: 2 5 6 8
Out:
2 | **
5 | *****
6 | ******
8 | ********

どうすればいいのですか??

ところで、アマチュア C プログラマー

また、スタック オーバーフローの質問形式の行間に単一行スペース「\n」を追加するにはどうすればよいですか

4

3 に答える 3

4

行から数値を読み取るには、次のことができます。

#include <stdio.h>

int main(){
    char buffer[1000];
    if (fgets(buffer, sizeof(buffer), stdin) != 0){
        int i,j,a;
        for(i=0; sscanf(buffer+i,"%d%n",&a,&j)!=EOF; i+=j){
            while(a-->0){
                printf("*");
            }
            printf("\n");
        }
    }
    return 0;
}
于 2012-08-07T05:34:24.720 に答える
0

この方法では、ループを作成することをお勧めします。
ユーザーが「\n」を入力していない間、プログラムはそれらを整数と見なすことができるはずです。もちろん、他のチェックを追加することもできます。

このようなもの:

int number = 0;
char c = '';
while(c != '\n'){
    getch(c);
    scanf("%d", &number);
    /*Do your star thing or add this number to an array for the later consideration*/
}


これは完全にはテストされていないため、変更が必要になる場合があります。

于 2012-08-07T05:35:05.277 に答える
0
#include <stdio.h>

#define SIZE 8

int input_numbers(int numbers[]){
    int i=0,read_count;
    char ch;

    printf("In: ");
    while(EOF!=(read_count=scanf("%d%c", &numbers[i], &ch))){
        if(read_count==2)
            ++i;
        if(i==SIZE){
            fprintf(stderr, "Numeric number has reached the Max load.\n");
            return i;
        }
        if(ch == '\n')
            break;
    }
    return i;
}

void output_numbers(int numbers[], int size){
    int i,j;
    printf("Out:\n");
    for(i=0;i<size;++i){
        printf("%d | ", numbers[i]);
        for(j=0;j<numbers[i];++j){
            printf("*");
        }
        printf("\n");
    }
}

int main(void){
    int numbers[SIZE];
    int n;

    n=input_numbers(numbers);
    output_numbers(numbers, n);
    return 0;
}
于 2012-08-09T12:41:31.263 に答える