• ベストアンサー

*をユーザーが入力した数字の数だけ表示するプログラムの作り方を教えてください

はじめまして。 現在C言語の勉強している大学生です。 『*』をユーザーが入力した数字の数だけ表示するプログラムの作り方を教えてください。 例えばユーザーが5と入力したら*****とでるもの。 (本に載っている演習なのですが答えがのっていないのです。) whileかforを使うのだと思うんですが。。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • TKOZ
  • ベストアンサー率66% (2/3)
回答No.4

これで、OKです。 とても簡単なプログラムです。 #include<stdio.h> int main(void) { int i,num; printf("何個表示しますか?->");scanf("%d",&num); for(i=0;i<num;i++) { printf("*"); } printf("\n"); return 0; }

minicom
質問者

お礼

なるほど...確かに分かりやすいですね! 思いつきませんでした(;_;) 助かりました。 どうもありがとうございます(^-^)

その他の回答 (3)

  • chie65535
  • ベストアンサー率43% (8516/19358)
回答No.3

まず「*を1個表示するプログラム」を考えます。 次に「*を10個表示するプログラム」に書き直します。 次に「10個」の部分を変数にして、プログラムの最初で、その変数を10に初期化するように書き直します。 次に「変数を10に初期化する」を「ユーザーが変数の値を入力する」に書き直します。 「*を1個表示する」には、putcharに限らず、色々な方法があります。 「*を10個表示する」にも「1個表示するのを10回繰り返す」とか「事前に*が10個並んだ文字列を作ってから、1回で表示する」とか、色々な方法があります。 例えば、以下のプログラムは「*が30個並んだ文字列」を使って * ** *** **** (略) **************************** ***************************** ****************************** を表示します。 #include <stdio.h> int main(void) {  int i;  for (i=1;i<=30;i++) {   printf("%s\n",(char *)("******************************")+30-i);  }  return 0; }

minicom
質問者

お礼

丁寧なご回答、どうもありがとうございます。 forの章も勉強したつもりでしたが、まだまだですね(^^;) もっと応用出来る様に見直してみます。 ありがとうございました!

  • asuncion
  • ベストアンサー率33% (2126/6286)
回答No.2

>putcherを使うんですね! 今回の課題で、出力のために使えるのはputchar「だけ」ではありません。 出力用の関数について、他にどういうものが使えそうか、 調べてみるとよいでしょう。

minicom
質問者

お礼

あちがとうございます(^^) もうちょっと調べてみます!

回答No.1

それってほんの数行のプログラムではないですか? ものすごく簡単だと思うので、これが分からないなら、基礎をもう一度勉強しないと、次に進めないと思います。 一応考え方を示しておきますが scanf で数字の入力 for (入力した数字分のループ回数) { putchar で'*'の出力 } 必要なら putchar で改行文字の出力 これだけです。 少し気を利かせたものにしたければ、scanfの入力値が適正かどうかチェックするとか、コマンドラインパラメタで指定するようにするとか、いろいろあると思いますが、とりあえず一番簡単なパターンで。

minicom
質問者

お礼

こんなに早くお返事を頂き、どうもありがとうございます。 putcherを使うんですね! 周りに聞ける人がいなかったのでとても助かりました。 今も基礎の段階なのですが、もう一度注意して読み直してみます。 どうもありがとうございましたm(_ _)m

関連するQ&A

  • 素数プログラムの解読、

    C言語のプログラムで素数を求めるプログラムで、 //入力された数字が素数がどうかを求めるプログラムです。 #include<stdio.h> main() { int a,c; //aはそれが素数かどうか調べたい数字です。 printf("aに何か好きな整数をいれてください。\n"); printf("a="); scanf("%d",&a); c = 2; while ( a%c ){ c += c%2+1; printf("途中計算 %d\n",c); } if ( a > 1 && c == a ){ printf("素数です。\n"); }else{ printf("素数ちゃうよ。\n"); } } というのを作りました。このプログラムは 教えてgooの回答欄にあったものを自分で いじったものですが、 c = 2; while ( a%c ){ c += c%2+1; printf("途中計算 %d\n",c); } の部分が何をしているのかが、わかりません。 printf("途中計算 %d\n",c); は 何をしているかが解るかもしれないと思い 自分で付足しましたが、やっぱりわかりません。 だれか解る方お願いします。

  • 3のつく数字と3の倍数のみを表示するプログラム

    C言語で3のつく数字と3の倍数のみ(1~150)を表示するプログラムを作りたいのですがどうすればいいのでしょうか?

  • コマンドプロンプト上で動作するプログラムを別プログラムから操作する方法

    コマンドプロンプト上で動作するプログラムを別プログラムから操作する方法を考えています。 たとえば、C言語の入門書によく見られるような、以下のプログラムを作ったとします。プログラム名をtest.exeとします。 ・ユーザーに数字を入力させ、その数字の2倍を答えとして表示する。 ・答えを表示したらまた入力まちになる。 ・ユーザーが"q"を入力すると終了する。 test.exeを実行すると、コマンドプロンプトが起動し、数字の入力まちになります。 さて、ここからが質問です。 このプログラムをVBAなどの別のプログラムから実行する方法はないのでしょうか?このプログラムは、数個の数字を入力するくらいだったら手動でも問題ありません。しかし、数十個、数百個の数字を入力する必要があった場合、これを手動でやっていては埒が明きません。そのため、VBAやその他のプログラミング言語などから自動的に数字を入力していくプログラムは作れないかと考えています。 たとえばVBAなどでFor文で入力する数字を繰り返す。といった感じ。 このようなことを実現する場合、どのように考えていけばいいのでしょうか?正直、今現在、想像もできていません。 考え方や、方法を教えてください。また、できるとしたら、そのプログラミングレベルはかなりのものを要しますか?一応私はプログラミングやVBAは初心者の部類です。 よろしくお願いいたします。

  • 20バイト分を2進数で表示させるプログラム

    はじめまして、C言語初心者の大学生です。よろしくお願いします。 ファイルをダンプし、最初の20バイト分を2進数で表示するプログラムを作成したいのですが、どういうコマンドを使用したらいいのか分かりません。 難易度が高くなり私の手には負えなくなりました。 どなたか、良い答えをよろしくお願いします。

  • 素数を表示するプログラム(C言語・while文)

    タイトルの通り、1~1000までの素数を表示するプログラムをC言語のwhile文で作りたいと思います。ですがどうしてもプログラムの作成方法が分かりません。 プログラムの内容を教えてくださると幸いです。お願いします。

  • 二進数にするプログラム

    C言語の問題なんですが、なかなかできません。 途中までやったんですがこれからどうすればいいか分かりません。 1、まず、整数をどんどん入力し、最後に負の数を入力する。負の数が入力されると、これまで入力された数を逆順で表示するプログラムを作成する。 2、1でできたものを利用して、何か数字が入力されたら、それを二進数に直すプログラムを作成する。ただし、二進数の桁数は1000桁以内とする。 ここまでやったんですがこれからどうすればいいか分かりません。 どなたか知恵を貸してくれませんか? #include<stdio.h> int main() { int z[1000],Z,i; printf("正の整数を入力してください:\n"); for(i=0;1<1000;i++); { scanf("%d",&z[i]); if(z[i]<0) break; } Z=i; for(i=0;i<Z/2;i++) { int temp=z[i]; z[i]=z[Z-1-i]; z[Z-1-i]=temp; } printf("入力した要素を逆順に並べると:\n"); for(i=0;i<Z;i++) printf("%d\n",z[i]); return(0); }

  • 素因数プログラムで、間違えて因数4で割らない

    練習問題 5-15  2以上の数値を入力し、素因数分解した結果を表示しなさい。    疑問ですが、素因数分解なので割る数字は、2.3.5.7.・・・の自分の数字しか割りきれない数字で  割ります。それでは、以下のプログラムはどこでそれを判断しているのでしょか?  4で割ろうとしないのは、どこのプログラムが司っているのでしょうか  もし!見えない取り組みがあれば宜しくお願いします。  以下プログラムです。 1) int n, x; 2) scanf("%d", &n ); 3) for( x = 2 ; n > 1 ; x++ ){ 4) while( ( n % x ) == 0 ){ 5) printf( "%d ", x ); 6) n /= x; } }

  • 素因数分解プログラムで、5は5と表示するのは?

     練習問題 5-15  2以上の数値を入力し、素因数分解した結果を表示しなさい。 1) int n, x; 2) scanf("%d", &n ); 3) for( x = 2 ; n > 1 ; x++ ){ /*for解説コメントをお願いします。*/ 4) while( ( n % x ) == 0 ){ 5) printf( "%d ", x ); 6) n /= x; } }  以上のプログラムですが、100と入力すると→2 2 5 5と表示されます。  5と入力すると→5と表示されます。どこのプログラムで5は5しか割り切れないと  判断しているのでしょうか?  宜しくお願いします。

  • 入力された文字列の中の数字を全てを削除するプログラム(C言語)

    入力された文字列の中の数字を全てを削除するプログラム(C言語) 柴田望洋さんの「明解C言語入門編」という本の演習11-5に当たるこのプログラムの作り方がどうしてもわかりません。 なんとか書いてみましたが、実行してもうまくいきません。 どこが悪いのか自分でもわかりません。 誰か教えてくださいお願いします。 以下が僕が書いたコードです。 #include<stdio.h> void del_digit(char *str){ unsigned i=0; char *a; while(*(str+i)){ if(*(str+i)<0 || *(str+i)>9) *a++=*(str+i); i++; } printf("%s",a); } int main(){ char *str; scanf(" %s",str); del_digit(str); return 0; }

  • 4桁の数字以外を入力したらエラーを表示したいです

    if文とwhile(for)文の範囲の課題で4桁の数字を入力してどうこうというプログラムを作っています。 課題には書かれていませんが、4桁の数字以外を入力したときにエラーを表示させるにはどんな方法がありますか? 10000以下をはじけばいいんじゃないかと思ったのですが、これだと「0001」などもはじかれてしまうようでして、アルファベットや記号が含まれるものも同時にはじきたいのですが、何か良い方法がわかる方いましいたら、ぜひ解説をお願いします。 なお課題では、理解していれば習っていない関数も使っていいと書かれていました。こんな関数を使ってみては?というものがあれば教えていただけるとうれしいです。

専門家に質問してみよう