• ベストアンサー
  • 暇なときにでも

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

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

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数1770
  • ありがとう数7

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

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

これで、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; }

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • 入力された文字列の中の数字を全てを削除するプログラム(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」などもはじかれてしまうようでして、アルファベットや記号が含まれるものも同時にはじきたいのですが、何か良い方法がわかる方いましいたら、ぜひ解説をお願いします。 なお課題では、理解していれば習っていない関数も使っていいと書かれていました。こんな関数を使ってみては?というものがあれば教えていただけるとうれしいです。

  • 入力した任意の数の平方根を求める

    C言語を少しずつですが勉強していて、最小値から最小値までの和を求めるのと、入力した数の2乗を求めるプログラムはわりと楽に完成したのですが、平方根を求めるというのができずに困っています。 プログラムの流れを説明すると、 1.どの処理を行うのか、数字+Enterで選択(平方根は、case 3です) 2.その処理を行う 3.結果の出力 です。 平方根の処理は、 scanfで実数を変数に代入→計算を行う関数を実行→結果を出力です。 症状としては、例えば4と入力して処理を実行すると、桁数のすごく大きい数が入力した数として処理され、また平方根も正しく求められていないようです。 (コンパイル時にエラーは出ていません)

その他の回答 (3)

  • 回答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; }

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

  • 回答No.2
  • asuncion
  • ベストアンサー率32% (1748/5401)

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

  • 回答No.1

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • C言語でのプログラムの作り方

    はじめまして。C言語初心者の中学一年生です。 C言語でプログラムを作ろうと思ったのですが、やり方がわかりません。 ”hello”と表示するプログラムの作り方を教えてください。 使用しているコンパイラは"Visual C++ 2010"です。パソコンはWindows xpです。 中学生でも分かるように教えてください。 エディエタ、やソースプログラムなどの用語についても教えてくださると嬉しいです。

  • 数字を入力して配列に格納するプログラムを書きたいです。

    各行任意個の数字をスペースで区切って入力し、格納する数字は10個までとします。また、/の入力以降は数字を格納せず、プログラムを終了するようにしたいです。 PrintNumは配列に格納された数字を順番に印字する関数として、次のプログラムを書くと、数字を入力するとき、2行目を入力しようとするとエラーになってしまいます。 char line[50]; char *ptr; int count=0; int numbers[50]; while(*ptr!='/'){ fgets(line,50,stdin); ptr = strtok(line," "); if(ptr!=NULL && *ptr!='/') numbers[count++]=atoi(ptr); if(count>=10){ PrintNum(numbers,count); return 0; } while(ptr!=NULL && *ptr!='/'){ ptr=strtok(NULL," "); if(ptr!=NULL && *ptr!='/') numbers[count++]=atoi(ptr); if(count>=10){ PrintNum(numbers,count); return 0; } } } PrintNum(numbers,count); return 0; 最初のwhile文でたとえば while(1) とすると2行目以降も入力できることがわかったのですが、上のプログラムは何がまずいのかわかりません。教えていただけると幸いです。

  • C言語のプログラミングについてです><

    今C言語のプログラミングの勉強をしているのですが、わからないプログラムがでてきたので教えてくださる方がいらっしゃれば、ご教授願いたいです。 数当てゲームの作成 1&#65374;9(0は除く)のなかから4つの異なる数字をランダムで選択し、4桁の数をつくる。ユーザは4つの数字の並びを入力して、作られた数を当てる。 ユーザの入力した数と作られた数を比較して、同じ数字が同じ桁にある場合は"Hit"というヒントを与える。また、同じ数字が異なる桁にある場合は"Blow"というヒントを与える。すなわち、作られた数が5849で、ユーザが4829という数値を入力した場合、"2 Hit 1 Blow"というヒントが表示されるようにする。 ユーザは10回まで、入力するチャンスが与えられる。 といった感じのプログラミングなんですが、C言語初心者である自分にはまったくわかりません; ; どなたかわかる方がいらっしゃれば、助けていただけないでしょうか?よろしくお願いします!

  • 入力値が1以下、かつ数字以外の文字の場合・・・

    皆様の知恵を貸してください!! 素数判定問題で、 「入力値が1以下、かつ数字以外の文字の場合、その旨 エラーメッセージとして表示&再入力させる」 という要求事項があるのですが… /* キーボードからの入力を受け付ける */ scanf("%d", &number); /**== 入力値をチェック ==**/ /* 入力値が1以下の場合、再入力を促す */ while(number <= 1) { printf("2以上の数を入力してください。\n"); } /* 入力値が数字以外の文字の場合、再入力を促す */ while(★) { printf("数字を入力してください。\n"); } 上記ソースの★のところになんと入れて良いかわかりません!! 課題の提出が明日なので…。 大至急、教えてください。よろしくお願いします!

  • C言語・標準入力でquitを入力で終わるプログラム

    C言語標準入力でquitを入力で終わるプログラムを作っているのですが うまくいきません #include <stdio.h> int main(void) { int i, n; double data[100]; printf("数字を入力してください。\n"); printf("入力を終えるときにはCtrl-dを押してください。\n"); n = 0; while (scanf("%lf", &data[n]) != EOF) { n++; } for (i=0; i<n; i++) { printf("data[%d] = %f\n", i, data[i]); } return (0); } と今はとりあえづ作ってみたのですが 今のままではCtrl-dでループから抜ける形になっています strcmp関数を使うとは思うのですが strcmp関数はchar型なのでエラーが出てしまいます; このやり方じゃないchar型にしてやり直さないといけないでしょうか; Linux CentOS gcc でやっています 標準入力で数字を入力しそれを格納 quitを入力するまで繰り返す quitを入力で終了、これまで格納していた文字列の表示 簡単なプログラムの流れとしては上記の感じです よろしくお願いします。

  • ランダムで数を表示するには

    C言語を覚えたてなんですが 計算や変数を代入などは本にやり方が書いてあってわかったのですが たとえばサイコロやルーレットのプログラムを作るとして 1~6の数字がランダムででるようなプログラムをつくるには どうすればいいのでしょうか? また1が50%で、2が25%、3が10%で4~6が5%づつとか 出る確率を設定することとかも出来るのでしょうか?

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

    http://oshiete1.goo.ne.jp/qa4515709.html 上記の質問の続きとなります。 C言語で4桁の数字を入力させ、4桁の数字以外が入力されたらエラーを表示し、 4桁の数字が入力されたら、各位の数についていくつかの計算を行いたいです。 回答者の方のアドバイスから、文字列として入力し、字数をstrlenで、各桁の数をisdigitで判別するという方法を教えていただき、 4桁の数字以外が入力されたらエラーを表示することはできましたが、そうすると今度は計算がうまくいかなくなってしまいました。 例えば文字列としてscanf("%s",a);のようにして「1234」という文字列を入力し、これを「1234」という数値として扱うことはできませんか? または、strlen,isdigitを使わずに数値が4桁の整数であるかどうかを判別することはできませんか? もし良い方法をご存知の方いましたら、解説をお願いします。

  • このプログラムの作り方を教えてください。

    データを入力し、平均を求めて、更に平均以上と平均未満の個数を求める。ただし0未満の数が入力されると、読み込みは停止し、答えを出力するというプログラムです。 基本的な流れは (1)0未満の数により停止、データの格納 (2)平均値を求める (3)平均以上、未満の個数の計算 (4)結果出力 と思っているのですが、、、

  • javaで入力した数字の順番を記憶させたい

    javaで、バブルソートにより、入力した数字を小さい順に並べるプログラムを作りたいです。次のようなものです。 数をいくつ入力しますか? 5 1番目の数:4 2番目の数:3 3番目の数:2 4番目の数:1 5番目の数:5 1番目の数: 1 (元4番目の数) 2番目の数: 2 (元3番目の数) 3番目の数: 3 (元2番目の数) 4番目の数: 4 (元1番目の数) 5番目の数: 5 (元5番目の数) その際に、もともとそれが何番目に入力された数だったかということも表示させたいのですが、その方法が分かりません。 元の数字の順番を記憶させればいいのだと思うのですが、どのようにプログラムを組めばいいのでしょうか?教えてくださると嬉しいです。 ちなみに数字を小さい順に並べるプログラムは次のようになりました。 import java.util.Scanner; public class Test { public static void main(String args[]){ int item[]=new int [100]; int a, b, t; int count; Scanner sc = new Scanner(System.in); System.out.print("数をいくつ入力しますか?"); count=sc.nextInt(); for(a=0;a<count;a++){ System.out.print(a+1+"番目の数:"); item[a]=sc.nextInt(); } System.out.println(); for(a=1;a<count;++a) for(b=count-1;b>=a;--b){ if(item[b-1]>item[b]){ t=item[b-1]; item[b-1]=item[b]; item[b]=t; } } for(t=0;t<count;t++) System.out.println(t+1+"番目の数:"+item[t]); } }

    • ベストアンサー
    • Java
  • abcが、入力された文字列内にあるかどうかを表示するプログラム

    文字列strの中にabcが含まれていれば、1を返し、含まれていなければ0を返すプログラムが分かりません。 C言語の問題で下記のものが分かりません。どなたか知恵を貸してください。 ユーザが文字を入力し、CTRL+Zが押されるまで、半角英数字の入力(最大でも1000文字)を受け付ける。文字列「abc」が、入力された文字列内にあるかどうかを表示するプログラムを作成する。ユーザが入力した文字列が3文字未満はabcがありませんと表示させる。 そのプログラム内で以下の関数を完成させる。 int str_srch_abc(char str []) 文字列strの中にabcが含まれていれば、1を返し、含まれていなければ0を返す関数とする。 (例えばabcは連続でabcの時だけ1を返し、asbscなどはoを返します。) ちなみに自分なりにやってみたのですが、ここまでしかできませんでした。 #include<stdio.h> int main() { int str_srch_abc(char str []); char str[1000]; int ch=0, j=0; printf("半角英数字を入力してください"); scanf("%s",str); while((ch=getchar())!=EOF){ str[j]=ch; j++; } str[j]='\0'; printf("%s",str); return(0); }