• 締切済み

至急で、c言語の問題の解答解説をお願いします。

1 元金(g)と年利率(r %)、年数(n)を読み込みn年後の元利合計(total)を単利と複利で計算し、2つの金額を表示するプログラムをc言語で答えてください。ただし、for文は用いないこと。 2 for文を用いて下記のようになるような九九の表を表示するプログラムをc言語で答えてください。   1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 9 12 15 18 21 24 27 .4・・・・・・・・・・・・・・・・・・・・・・ 5・・・・・・・・・・・・・・・・・・・・・・ 6・・・・・・・・・・・・・・・・・・・・・・ 7・・・・・・・・・・・・・・・・・・・・・・ 8・・・・・・・・・・・・・・・・・・・・・・ 9 9 18 27・・・・・・・・・・・72 81 3 整数kを入力しiを0から1ずつ増やしてkになるまで繰り返し以下のパターンを出力するプログラムをc言語で答えてください。ただし、iが奇数なら# i%4=3ならば&  i%7=4ならば*を  他%を出力すること 例 %#%&*#%&%#%*%・・・・・・・

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

それで、質問はなんでしょうか? 1. 単利は 元金 + 元金 * 利率 * 期間 複利は 元金 * (1+利率)の「期間」乗 で計算できます。 ここで、利率は1.0を基準にしています。 べき乗算は、math.hにあるpower関数で計算できます。 整数と実数の型の違いに注意しましょう 2. #include <stdio.h> int main(){ int i; for(i=0;i<1;i++){ printf( " 1 2 3 4 5 6 7 8 9\n" "1 1 2 3 4 5 6 7 8 9\n" "2 2 4 6 8 10 12 14 16 18\n" "3 3 6 9 12 15 18 21 24 27\n" "4 4 8 12 16 20 24 28 32 36\n" "5 5 10 15 20 25 30 35 40 45\n" "6 6 12 18 24 30 36 42 48 54\n" "7 7 14 21 28 35 42 49 56 63\n" "8 8 16 24 32 40 48 56 64 72\n" "9 9 18 27 36 45 54 63 72 81\n"); } return 0; } /* 「for文を用いて」とはあるが、どう使うか指定が無いので、これでも間違いでは無いはず */ 少しプログラミングっぽくすると iの段は、最初にi, それ以降にi*1,I*2,... を出力すればいい。 printf("%d %d %d %d %d %d %d %d %d %d\n",i, i*1,I*2,I*3,I*4,I*5,I*6,I*7,I*8,i*9); さらに分解して、 i*jを順番に出力すればいい。改行を忘れずに。 3. > iが奇数なら# i%4=3ならば&  i%7=4ならば*を  他%を出力すること と、if~else if ~ else ~ をそのまま日本語に翻訳したような条件が書いてあります。 プログラムにするときは、逆にif~else if~ else に逆に翻訳してやればいいだけです。 =と==の違いに注意。 奇数はどう判定すればいいかは、数学を思い出してください。 ただ、問題には、複数の条件が重なった場合についての仕様が明記されていません。 例えば、 i=3 のとき、 「iは奇数」「i $4==3」の2つの条件が成立しています。この場合、どちらを、あるいは、両方を出力するのか、が不明です。 例示されたパターンから考えろ、ということなのでしょうか。そうだとすると、ルールに従って1つを選ぶ、ということになりそうですが。

vodafone7512
質問者

お礼

おお!ありがとうございます。

関連するQ&A

  • 至急で、C言語の問題で解答解説お願いします。

    1実数を3つ(a,b,c)を読み込み3辺とする三角形ができるか判定(d(d-a)(d-b)(d-c)>0のとき三角形となる)しできなければ、三角形ではありません!というメッセージを表示し、できる場合は以下のヘロンの公式を用いて三角形の面積を求めるプログラムをC言語で答えてください。d=(a+b+c)/2 s=√{d(d-a)(d-b)(d-c) 2maxの整数値(≧1)をキーボードから入力し、その値に対応した図形を出力するプログラムをC言語で答えてください。 例 max1 max2 max3 * ** *** * ** *** * ** *** ** *** *** 3整数nをキーボード入力しnの値に応じて以下の図形を表示するプログラムをc言語で答えてください。 n=3 n=4 n=5 3 4 5 45 56 67 678 789 890 0123 1234 56789 4整数n(≧0)を入力し歯科の計算を実行するC言語プログラムを答えてください。2つの自然数nとmを読み込みn個の中からm個を取り出すときの組み合わせの数を計算せよ。ただし、n!を計算する関数long fact (int n)を定義し必ずそれを用いること。 5 1つのscanfで2つの10進数を入力し8進数と16進数で表示するプログラムをC言語で答えてください。 6 実数aを入力し少数第1位で四捨五入する関数g(a)をマクロ定義で入力した値の少数第1位を四捨五入して出力するプログラムをC言語で答えてください。 7 4つの実数w,x,y,zを読み込みその最大値を出力するプログラムをC言語で答えてください。ただし、2つの実数の大きいほうを求める関数 double my may (double x,double y)を定義し、その関数を用い、if文を用いないでc言語で答えてください。

  • 分からない問題

    分からない問題 元金 10000円 を,単利の年利 21% で預けるとき,1年後の元利合計は 12100円 である. 1年後の元利合計がこれと同じになるような半年複利の年利は,%表示したあと小数第1位を四捨五入すると何%であるか.   (Hint: 121=11^2 ) また,以上の考察から,次の2つのコースがあるとき,1年後の元利合計が高いコースはどちらか。    コース 1 : 単利の年利 21%  コース 2 : 半年複利の年利 19% どちらが答えかわかりますか? 時間がないです、宜しくお願いします!!

  • C言語プログラミングに関して

    非常に困っています。助けて下さい。 元本と単利、複利、年数をそれぞれ入力でき、入力した年数が経過すると単利、複利がそれぞれいくらになるかが表示され、もし複利の方が単利より低い場合、何年後に単利を追い越すかを表示するソースプログラムを作ってください。

  • C言語プログラミング

    C言語プログラミングに関して質問です。 元本、年数、単利、複利を順にa,b,c,dと置き、年数経過後の単利、複利の場合のそれぞれの額をe,fとしたとき、 e = a+(a*c)*b となるのはわかるのですが、複利の場合の金額を求める時の計算式はどう書けばよいのですか。 また、複利が単利より小さい時、何年後に複利のときの金額が単利のときの金額を越すかを表示したいのですが、次の書き方で合ってますか。 if(d < c){ b = 2; while(1){ if(f > e) break; else b++; } printf("%d年後、単利のときの金額を複利のときの金額が追い越します\n",b); }

  • C言語 繰り返しの問題

    C言語の初心者です。 キーボードから値を入力して、1から入力された値までの奇数の和を求めて出力するプログラムを作成します。以下のように組んでみましたが、全然うまくいきません。誰か教えていただけませんか? #include<stdio.h> int main(void) { int i,n,sum; sum=0; printf("入力値:",n); scanf("%d",&n); if(n<=0) { printf("\n合計値:0\n"); } else { printf("入力値:\n",n); for(i= 1; i<= n; i=i+2) { if(n%2=1) { sum=sum+i; } } } printf("\n合計値\n",sum); }

  • c言語

    c言語で自然数nを入力、2以上n以下の偶数の累積sumを求めるプログラムをfor文を使って作りたいです。 教えていただきたいです。

  • C言語で分からないところがあるのですが……

    C言語で分からないところがあるのですが…… すみません。C言語の課題で分からないところがあり、質問しに来ました。 ユーザから数を受けて、そこまでのフィボナッチ数列を表示させるというプログラムです。 下のソースコード(でいいんですよね?)は正しいやつです。 for文を使って、繰り返しの作業を行うことに成功しましたが、doとwhileに書き換える作業がうまくできません。 どなたか助けてください。 #include<stdio.h> fib(int n) { if(n == 1)return(1); else{ if(n == 2) return (1); else return fib(n-1) + fib(n-2); } } main() { int n, i ; printf("INPUT the number. : "); scanf("%d",&n); for(i=1; i<=n; i++){ printf("F%d = %d\n",i, fib(i)); } }

  • C言語

    C言語で下記のように文字列を出力させるプログラムをfor文を使って書きたいのですがなんと書けば良いですか? こんにちは こんにちは こんにちは (←ここの位置にカーソルが来る)

  • C言語の問題についてご教授お願いします【至急】

    プログラミング、C言語の問題についてご教授お願いします【至急】 一行目1~10、二行目11~20、三行目・・・最終的に十行目91~100(各数字の間と行の間は一文字分空けること)とコンパイル時に表示されるようなプログラミングを組み立てたいのですがどうにもうまくいきません。 printf("1 2 3 4 5 6 7 8 9 10¥n");のように1~10を出力し、¥nで改行しそれを繰り返すような単純な方法では担当の先生に納得してもらえませんでした(笑) ですのでこの他の組み立て方を教えていただけないでしょうか? ちなみに先生曰く、if文やfor文、elseといったC言語を習う序盤の技法で解けとのこと・・・どうぞよろしくお願いします(`・ω・´)

  • C言語の問題

    以下はC言語の問題です。お教えください。 1000以下の素数を求めるプログラム prog.c を作成せよ。各素数を整数4桁で出力し、15個の素数を出力した時点で改行処理 を行うこと。作成したプログラムを提出せよ。 です。 僕の考えでは、 #include <stdio.h> #include <math.h> main(){ int i; int j; int ix; int k; printf("正の整数を入力して下さい: "); scanf("%d",&i); ix=(int)(sqrt((double)i)); k=0; for(j=2;j<=ix;j++) { if(i%j==0) { k=1; } } if(k==0) { printf("%d は素数です\n",i); } else { printf("%d は素数ではありません\n",i); } となると思うのですが。どうやら違うようです。全然わからないので、正しい答えを教えてください。