• 締切済み

プログラミング(C言語)詳しい方、お願いします。

与えられた数字(変数 int num)が3の倍数のときは「three」を、4の倍数のときは「four」を、3の倍数かつ4の倍数のときは「threefour」を、それ以外のときは入力の数字そのものを出力するプログラムを作成し、コンパイル、実行し正しく動作することを確認した上でソースコードを回答せよ。 例えば  num = 9 の場合は「three」が出力される。  num = 8 の場合は「four」が出力される。 num = 12 の場合は「threefour」が出力される。 num = 5 の場合は「5」が出力される。 ソースコードの先頭部分は以下の通りとする。 #include <stdio.h> int main(void){ int num; num = 8; // 任意の正の整数値が与えられる (//以下から作成) なのですが解答をなくしてしまい わからずじまいです。 とても初歩的なところだと思われますが よろしくお願いいたします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

「解答をなくし」たことで, 何が「わからずじまい」なんですか? C のホスト環境では, main は ・int main(void) ・int main(int, char **) ・その他処理系定義の形 のいずれかである必要があります>#3. ということで「処理系に無関係に『正しいプログラム』を書く」という観点では間違っていません.

回答No.3

「three」(文字列)が出力されるのと、「5」(int)が出力される、のは両立できません。 したがって、このプログラムは作れないのでは? それとも、出力は、関数の戻りではなく、標準出力(デスプレイ)でしょうか? (それだとint main(void)の意味が不明ですが。。)

回答No.2

余り算演算子%とif文を使えば簡単にできますよ

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

回答なんか見ないで、自分で作ってみてはどうでしょう? その上で、わからない点に絞って質問しましょう。 プログラム自体は、極簡単なものです 文章をそのままプログラムにすれば、 もし numが3の倍数 かつ numが4の倍数ではない なら  three と出力 そうではなく、もし numが3の倍数でなく かつ numが4の倍数 なら  four と出力 そうではなく、もし numが3の倍数 かつ numが4の倍数 なら  threefour と出力 いずれでもなければ  num を出力 こんな感じです。 もっと効率よいものを作ることもできます。

関連するQ&A

  • C言語

    0から29までの整数を順に出力する。ただし,出力する数が7の倍数の場合には,その数から7引いた値を出力せよ。 という問題で7の倍数の場合7引くという条件の付け方がわかりません ちなみに29までの整数の出力するというところまではできました #include <stdio.h> int main(void) { int A, B = 29; for (A = 0; A <= B; A++) printf("%3d",A); putchar('\n'); return (0); } ここまでで7倍数の場合7引くという条件をどのようにつけたらいいのかわかりません。どなたか教えてくださいお願いします。

  • C言語のプログラミング (基礎)配列の問題ですが。

    次のような問題があって、プログラミングしてみたのですが、 コンパイルすると永久ループになってしまいます。 また、入力されるはずの整数が表示されません。 どうすればよいか教えていただけると助かります。 よろしくお願いします。 整数を順番に入力し、負の数が入力されたら、それまでに入力された非負の整数を、 入力された順番とは逆に全角空白で区切って出力するプログラムを作成しなさい。 自動評価の都合上、上記以外は表示しないこと。なお、入力は最大10回とする。 【0 1 2 3 4 -1 が入力された場合の表示例】 4 3 2 1 0       ************************************** #include <stdio.h> int main(void) { int num[10]; int n; for(n=1;n<11;n++){ printf("整数入力:¥n"); scanf ("%d", &num[n]); if(num[n]<0){ for(n=10;n>0;n--){ printf("%d ",num[n]); } } } }

  • C言語の質問です

    下記のプログラムは数字の0から9を意味する英単語の文字列テーブルを作成し、それからユーザーに(文字として)数字を入力させ、このテーブルを使って該当する単語を表示するものです #include <stdio.h> #include <conio.h> int main(void) { char digits[10][10] = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; char num; printf("数字を入力してください: "); num = getche(); printf("\n"); num = num - '0'; if(num>=0 && num<10) printf("%s", digits[num]); return 0; } num = num - '0' とするのが分かりません。 使っている本には、ヒントとして 『入力された文字から'0'を引けば、テーブルのインデックスが得られます』とありますが、これもよく分かりません。

  • Cプログラミング 

    素数を判定するプログラミングの作成で以下のプログラミングを作成したのですが、すべて 素数でないとでてしまいます。どなたか間違いをおしえていただけませんでしょうか。 #include<stdio.h> int main(void) { int num,i; printf("Please input a number:"); scanf("%d",&num); for (i=2; i < num ; i++){num % i; if (num % i == 0) break; } if (num % i == 0) printf("%d is not prime. \n" ,num); else printf("%d is prime. \n" ,num); return 0; }

  • C言語プログラミングについて

    「要素数10の配列を準備する。 配列の各要素に0.0~1.0の乱数を入れる。 各配列に入力された乱数を出力する。 配列をオリジナル関数hanteiに渡す。 数hantei内において,各要素の値が0.5以上であれば1 , 0.5未満であれば0を出力する。」 C言語でこのような問題があるのですがどのように作ればよろしいのでしょうか? ちなみに以下のように作ってみて、「argcは一度も使用されていない」「argvは一度も使用されていない」とエラー(警告)が出てしまいました。修正、もしくは正しいプログラムを教えてくれませんか? #include <stdio.h> #include <time.h> #include <stdlib.h> #define SIZE 10 int hantei(double num) { return num>=0.5; } int main(int argc,char *argv[]) { double number[SIZE]; int i; srand((unsigned)time(NULL)); for(i=0;i<SIZE;i++) number[i]=(double)rand() / RAND_MAX; //手抜き乱数 for(i=0;i<SIZE;i++) { printf("%f %d\n",number[i], hantei(number[i])); } return 0; }

  • C言語(プログラミング)

    次の働きをするプログラムを作ろうと考えてますが、出来ない状態です。 入力:1から4999の間のアラビア数字を受け取る。入力の終わりは改行。 出力:入力されたアラビア数字に対応するローマ数字を出力する。 変換したい次のアラビア数字があるかどうかを(y又はnで)尋ねてyならば上の入力からを繰り返す,nならば終了。 自分が考えたのは、4999以下のアラビア数字がきた場合と5000以上のアラビア数字がきた場合を考え、 int c;while((c=getchar()) != '\n')、Switch(c)文を使い、CASEでCase C<=4999:Case C>=5000としたのですがコンパイルできませんでした。ご指摘やアドバイス、このプログラム自体教えていただければありがたいです。お願いします

  • C言語のプログラミング配列・forを使った検索

    C言語のプログラミングで、配列とforを使った検索の表し方がわかりません。 numにはキーボードから任意の数字を入力し、 1ならば25、2ならば30、、、といったように 対応する数字を表示させ、1行目にない数字が入力された時は 「NoData」と表示させたいのですが、上手くいきません; 本当はもっと配列が多いのですが4つでやってみると #include <stdio.h> main() { int data[2][4]{{1,2,3,4},{25,30,45,50}} , num , i ; printf("num?"); scanf(&num); for(i=0; i>4;i++) if(num== data[0][i]){ printf("number is \n",data[1][i]);} else {printf("NoData\n"); } return0 ; } こうかと思ったのですが上手くいきません、、、 どなたかお願いします!

  • Cプログラミングに関して質問します。

    この問題で中央値を出力するプログラムは作成できたのですが、配列の初期配置とソート結果も出力するプログラムはどうなりますか。 問題文 : 以下の配列をソートして中央値を求めるプログラムを作成せよ。 int a[21] = {25, 19, 46, 9, 20, 18, 39, 63, 4, 29, 3, 19, 23, 62, 57, 13, 23, 58, 24, 2, 29}; その他制限など : 宣言時に初期化してよい(scanfしなくてよい) 以下のような内容を画面に出力する 1. 初期配置 2. ソート結果 3. 中央値 以下、中央値を求めるプログラム #include <stdio.h> #include <string.h> #define DATA_NUM 21 // データ数 #define MAX_DATA 63 // データの最大値 int main() { // 変数定義 int data[DATA_NUM] = {25, 19, 46, 9, 20, 18, 39, 63, 4, 29, 3, 19, 23, 62, 57, 13, 23, 58, 24, 2, 29}; int i, j, tmp; double med; // 中央値 // 変数の初期化 i = 0; j = 0; tmp = 0; med = 0; //データを大きさの順に並べ替え for(i = 1; i < DATA_NUM; i++) { for(j = 0; j < DATA_NUM - i; j++) { if(data[j] > data[j + 1]) { tmp = data[j]; data[j] = data[j + 1]; data[j + 1] = tmp; } } } // メジアンを求める if(DATA_NUM % 2 == 1) // データ数が奇数個の場合 { med = data[(DATA_NUM - 1) / 2]; // 中央値 } else // データ数が偶数の場合 { med = (data[(DATA_NUM / 2) - 1] + data[DATA_NUM / 2]) / 2.0; // 中央値 } printf("中央値は %0.2f\n", med); return 0; }

  • Cプログラミング 初歩

    #include <stdio.h> int main (void){ double num; printf("実数を入力して下さい:"); scanf("%lf",&num); printf("あなたは%fと入力しましたね\n",num); return(0); } のプログラミングがコンパイル出来ません↓ printf("あなたは%fと入力しましたね\n",num); をprintf("%f\n",num);のようにすると上手くいくのですが、 どうしたらコンパイルできるか分かる人はいますか?

  • 困ってます…nCrを求めるC言語プログラミング

    nCr、つまりn個のうちr個を取り出すときの場合の数を求めるプログラミングを作りたいのですが、どうもうまくいきません。 関数combinationを作って求めるという指定もあり、自分で出来るとこまで作ってみたのですが訳がわからなくなってしまい、かなり困っています…; コンパイルは出来るのですが実行してもセグメントエラーが出るばかりで… すみませんがご指摘していただけないでしょうか…? #include<stdio.h> //階乗を計算する関数 int fact(int num){ int i; if(num < 0){ return -1; } else if(num == 0){ return 1; } else if(num == 1){ return 1; } else { i = num * fact(num - 1); return i; } } //コンビネーションを計算 int combination(int n, int r) { int fact(int num); int i; i=fact(n)/fact(r)/fact(n-r); return combination(n-1, r-1)-combination(n,r-1); } int main(void) { int n, r; while ( printf("n r を入力して下さい。"), scanf("%d%d", &n, &r) == 2 ) { printf("nCr(%d,%d)=%d\n", n, r, combination(n, r)); } return 0; }