• ベストアンサー

C言語について

leaz024の回答

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.5

printf関数とscanf関数の使い方、forループの使い方と基本的な動作、配列についての基礎知識はあるものとして回答します。 ■1  sum.c #include <stdio.h> void main(void) {   int n;   int sum = 0;    /* 計算用。最終的に答えが入る */   int i;   printf("n=");   scanf("%d", &n);  /* scanfでは&を忘れずに! */   for (i = 1; i <= n; i++)     sum = sum + i;  /* sumとiの和を、sumの新しい値とする */               /* このためsumの初期値は0にしておいた */   printf("%d\n", sum); } ■2  fac.c #include <stdio.h> void main(void) {   int n;   int fac = 1;    /* 計算用。最終的に答えが入る */   int i;   printf("n=");   scanf("%d", &n);   for (i = 1; i <= n; i++)     fac = fac + i;  /* facとiの積を、facの新しい値とする */               /* このためfacの初期値は1にしておいた */   printf("%d\n", fac); } ■3  ave.c #include <stdio.h> void main(void) {   double n;       /* 実数を扱う場合、double型とする */   double sum = 0.0;   /* 合計計算用 */   double ave;      /* 平均用 */   int i;   for (i = 1; i <= 10; i++) {     printf("%d番目=", i);     scanf("%lf", &n);  /* double型は、%lfで入力する */     sum += n;      /* sum = sum + n; の省略形 */   }   ave = sum / 10;   printf("%f\n", ave);  /* double型は、%fで表示する */ } ■4  cone.c #include <stdio.h> void main(void) {   double r, h;        /* 半径、高さ */   double v;          /* 体積 */   double pi = 3.141592;    /* π */   /* 時には1行に複数の文を並べた方が、(ソースが)見やすくなることもある */   printf("底面(円)の半径="); scanf("%lf", &r);   printf("円錐の高さ=");    scanf("%lf", &h);   v = pi * r * r * h / 3;   printf("円錐の体積は%fです\n", v); } ■5  strrev.c #include <stdio.h> #include <string.h> void main(void) {   char str[256];     /* 文字列保存用 */   char ch;        /* 文字列反転用 */   int n1, n2;       /* 文字列反転用 */   puts("文字列を入力してください");  /* putsだと、\nなしでも改行される */   gets(str);       /* scanfではスペースが入力できないので、getsを使う */   /* <基本アルゴリズム> */   /* 配列strの中を、先頭から後ろへ、終端から前へ、同時に1文字ずつ見て交換していく。 */   /* どこを見ているのかを覚えておくために、先頭から用にn1、終端から用にn2を用意する。 */   /* 先頭は常に0番だが終端は入力内容により変わるため、strlen関数(文字列の文字数を返す)で求める。 */   /* ただし文字数は 1,2,3 … と数えるのに対し、配列アクセスは 0,1,2 … であるため、1を引いて調整する。 */   n1 = 0;   n2 = strlen(str) - 1;   /* 見ていくポイントがすれ違って行き過ぎないように、whileの条件を作る */   while (n1 < n2) {     /* n1番目の値と、n2番目の値を、chを経由して交換する */     ch=str[n1]; str[n1]=str[n2]; str[n2]=ch;     /* 後ろにずらす時は++、前にずらす時は--する */     n1++; n2--;   }   puts(str); }

ikuchan
質問者

お礼

本当にありがとうございます。leaz024さんに感謝です。助かりました。

関連するQ&A

  • C++のプログラム

    C言語の問題を授業で出されたのですがさっぱり分かりません。教えて下さい。 1.キーボードから整数nを入力して、1+2+…+nを求めるプログラムを作れ。 2.キーボードから整数nを入力して、1*2*…*nを求めるプログラムを作れ。 3.キーボードから10個の実数を入力し、それらの平均を求めるプログラムを作   れ。 4.円錐の体積を求めるプログラムを作れ。 注:円錐体積V=π*r*r*h/3 5.キーボードから文字列を入力し、それを逆さまにするプログラムを作れ。例えば、”dog”を逆さまにすると”god”になる。 6.キーボードから一つの整数を入力し、それは奇数か偶数かを判断するプログラムを作れ。 ちなみに6番は /* iftst.c */ #include <stdio.h> void main(void) { int n; printf("n="); scanf("%d",&n); if(n%2 == 0){ printf("偶数です\n"); } else{ printf("奇数です\n"); } } で合っているのでしょうか?

  • c言語について

    C言語で、二つの整数値を読み込んで、前者の値が後者の何%であるかを実数で表示するプログラムを作成しようとして以下のコードを書きました。 #include <stdio.h> int main(void) { int n1, n2 ; puts("二つの整数を入力してください。") ; printf("整数A : \n") ; scanf("%d" , &n1) ; printf("整数B : \n") ; scanf("%d" , &n2) ; printf("Aの値はBの%f%%です。\n" , (double)(n1 / n2) * 100) ; return 0 ; } 上記コードを実行すると、0.000000%のような結果になります。 そこで、最後のキャスト演算子を使用した後の式で(n1 / n2) * 100がまずいのかなと考え、n1 / n2 * 100にしたら上手くいきました。 なぜ、上記コードだと上手くいかないんでしょうか?

  • 至急で、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言語で答えてください。

  • C言語の宿題ができません。

    演習問題4】 4-1. キーボードから整数値を入力して、奇数か偶数かを表示させる。 (if文で記述する) 4-2. キーボードから2つの整数値を入力して2つの値の大、等、小の関係を表示する。 (if文で記述する) 4-3. 月を入力し、入力した月の日数を表示する。ただし2月は28日とする。 (if文で記述する) 4-4. 月を入力し、入力した月の日数を表示する。ただし2月は28日とする。 (switch文で記述する) 【応用問題4】 r4-1. 問題4-1のプログラムで、さらに値が4の倍数であった場合に4の倍数であること も表示する。 ※ヒント:0は4の倍数ではない r4-2. キーボードから3つの整数値を入力して3つの値の大、中、小の関係を表示 する。 (if文で記述する) r4-3. 月を入力し、入力した月の日数を表示するプログラムで、入力した月が1~12の 範囲を越えていた場合エラーメッセージを表示させる。

  • C言語 10進数→2進数

    キーボードで入力された1以上の正の整数n(1~15)を2進数(4bit)で出力するプログラムを作りたいんですが、 出力例に書かれている内容、 -出力例- 正の整数:12 整数 12 を2進数表記すると下位bitより 0011 となります。 ---- 上記の下位bit、というのはどういう意味でしょうか? また、この下位bitというものをどうやってプログラム上で 表記すればいいのでしょうか? 教えてください。

  • Cプログラム

    c言語で「正整数Nを入力後、N個の実数を入力し、それらの平均値と最大値を表示するプログラム」を教えてください。

  • C言語について

    初項a,公比r,項数nの等比数列で、第n項までの和SnがSmaxを超えない範囲での最大の項数nを求める。 キーボードからa,r,Smaxを入力し等比数列の和SnがSn≦Smaxを満たす最大の項数nとその時のSnを表示するプログラムを作成せよ。 という問題でプログラムを作っているんですが、Snはなんとか求められるのですが項数nが思ったように出力されません。 どのようにすれば求められるのでしょうか? どうかよろしくお願いします。

  • C言語-繰り返し処理

    キーボードから入力される1以上の整数に対して、次のような処理 をするプログラムを作りたいのです。 入力される整数が5であった場合、 正の整数:5 1***** 2 **** 3 *** 4 ** 5 * (0、または負の数であればエラー、終了するようにする) for文等の繰り返しを使って色々書いてみたのですが、 12345***** などとなってしまいます。 どのように書けばいいのか教えてくださるとありがたいです。

  • c言語配列拡張

    c言語配列拡張 20個の要素からなる実数配列 x[ ] から、小さい添え字からn個の要素までの 最大値を取り出すプログラムを作成する。計算する要素の数nはキーボード から入力するか乱数で決定するかは乱数により得る。 a. 乱数が奇数の場合はキーボードから入力する。 b.乱数が偶数の場合この乱数の数を用いる。 誰が知ったら教えてください!

  • C言語で、次のプログラムを作ってみて頂けないでしょうか?

    「キーボードから2以上の整数を入力して、 素数であるかどうか判断をする」 というプログラムをCで作るにはどうしたらいいですか? できたら、見本のプログラムを示して頂けると 一番助かります。 よろしくお願いします。