C言語の参考書の問題について悩んでいます

このQ&Aのポイント
  • C言語の参考書でわからない問題があります。
  • 問題は正の二桁の整数を入力し、各値を増加させていき、総和とデータ数を表示するというものです。
  • switch-caseを使用したプログラムを作成する際、初期値の下一桁の部分がわかりません。
回答を見る
  • ベストアンサー

C言語(問題)

高校で使っているC言語の参考書の問題でどうしてもわからない部分があり悩んでます。 問題 正の二桁の整数をキーボードから入力し,その値を初期値として以下の増加値に従って増加を続け,それぞの値を表示する値が100以上になったら終了し,各値の総和およびデータ数を表示する。 増加値は入力した初期値の下一桁によって以下のように設定される。   ・初期値の下一桁が1または6のとき増加値は8   ・初期値の下一桁が2または7のとき増加値は3   ・初期値の下一桁が3または8のとき増加値は10   ・初期値の下一桁が4または9のとき増加値は5   ・それ以外のとき増加値は6 実行結果例 正の二桁の整数を入力してください 45 45 51 57 63 69 75 81 87 93 99 総和は 720 です データ数は 10 個です この問題をswitch-caseを使用して回答せよとのことなのですが初期値の下一桁の部分のプログラムがよくわかりません。。 回答お待ちしています。よろしくお願いします。。

  • exen
  • お礼率64% (9/14)

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

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.2

・ 初期値の下一桁は、10で割ったときのあまりとして求めます。 初期値の下一桁 = 初期値 % 10;

その他の回答 (1)

  • 6dou_rinne
  • ベストアンサー率25% (1361/5264)
回答No.1

余りを計算する演算子があるはずですが...

関連するQ&A

  • ★C言語の問題です★

    C言語のプログラムの問題なんですが、どなたか以下の問題の1問でも解ける方がいればご回答おねがいします! または、アドバイスだけでもいいのでよろしくお願いします。 【問題】 1 西暦1868年から2007年までの年号を入力して和暦に変更して出力するプログ  ラムを作成するプログラム。  例 入力 1868  出力 明治元年       2007     平成19年 2 整数配列が-32768から32767の範囲の数しか扱えないとしたとき、10桁の整数同士  の足し算を行うプログラム。 3 3桁の整数の値を入力していき、-9999が入力されたところで、それまでに入力  された数の個数と合計を整数で、平均を浮動小数点数で出力するプログラム。 4 3つの文字列”Happy”と“New”と“Year”をつないで1つの文字列として出力する  プログラム。 5 学籍番号、氏名、出席からなる10人分のデータがある。出席の悪いものから並び替  えて表示するプログラム。  例  CA180002 山田太郎 70  CA170001 山田次郎 60  データは、適当なものを使います。

  • 困っています。どなたかこの問題の解き方を教えてください。

    困っています。どなたかこの問題の解き方を教えてください。 ※かなり噛み砕いた回答をお願いします。 <正の整数の和> 2桁の正の整数のうち、3で割ると2余り、7で割ると5余る数の総和として正しいものは? 1、224 2、226 3、228 4、230 5、232 (1)7で割ると5余る正の整数の求め方(公式?) (2)3で割ると2余り、7で割ると5余る整数で最小の数 (3)(1)、(2)から答えをどう導き出すか 

  • C言語プログラミングの問題がわかりません・・・。

    ただいまC言語を勉強している者です。 【入力するデータ数と各データ(整数)を入力していき,0 以下の整数の数,正の整数の数,0 以下の整数の合計,正の整数の合計を求めるプログラムを作成せよ。】 という問題があり、とりあえず #include "stdio.h" void main() { int i,j,k,l=0,m=0,goukeisei=0,goukeifu=0; printf("入力するデータ数:"); scanf("%d",&i); for(j=1;j<=i;j++); { printf("データを入力してください(整数):"); scanf("%d",&k); if(k>0){ l++; goukeisei+=k; }else{ m++; goukeifu+=k; } } printf("正の整数の数%d\n",l); printf("0以下の整数の数%d\n",m); printf("正の整数の合計%d\n",goukeisei); printf("0以下の整数の合計%d\n",goukeifu); } と作ってみたのですが、入力するデータ数の繰り返しがされません(1回入力して終わりになってしまいます);; for文の使い方が間違っているのでしょうか・・・ 詳しい方教えてくださいm( _ _ )m 尚環境はXPでVC++2008を使っています。よろしくお願いします。

  • C言語についてなんですが

    プログラムの作成で分からないところがあります。 「二つの整数値を読み込み、小さいほうの数以上で大きい数以下の 整数を全て加えた値を表示するプログラムをdo文を使って 作成せよ。」 下の図のようにしたいです。 2つの整数を入力せよ。 整数A:37 整数B:28 28以上37以下の全整数の和は325です。 よろしくお願いします。

  • 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); } となると思うのですが。どうやら違うようです。全然わからないので、正しい答えを教えてください。

  • C言語の問題でわからないところがあります

    先ほども似たような内容で質問させて頂いたのですが、もう一度質問させてください。 最近C言語を勉強し始めたのですが、わからないところがあります。 二つの整数値を読み込んで、小さい方の数以上で大きい方の数以下の整数を全て加えた値を表示するプログラムを作成するものなのですが、うまくいかなく困っています。 他の書き方でやれば普通にいけると思うのですが、これだとできない理由がわからないと、もやもやしてしまうので・・・・ プログラムは以下の通りです #include <stdio.h> int main(void) { int n1,n2,n3,n4; puts("二つの整数を入力してください"); printf("整数1:"); scanf("%d",&n1); printf("整数2:"); scanf("%d",&n2); n3=(n1>n2) ? n2 : n1; n4=(n1>n2) ? n1 : n2; printf("%d以上%d以下の全整数の和は", n3,n4); int num=n3; /* numの最初の値は小さい方の値 */ int wa=0; /* n3が小さい方の数、n4は大きい方の数 */ do{ if (n1>n2) { wa=n4+num; /* 大きいほうの数(num)にsub(小さい方の数+0,2,3,4・・・)を足していく */ num=num+1;/* ここを通るたびにsubに+1 */ printf("%d",wa);} else { wa=n4+num; num=num+1; printf("%d",wa);} }while(num<n4); /* num<n4を満たさない=numが大きいほうの数よりも大きくなったらループを終了 */ printf ("です\n"); /* ですっす */ return 0; } これで大きい方に37、小さいほうに28と入力すると656667686970717273ととても大きな数値になってしまいます。 ループが間違っているのでしょうか? whileは whileの後の()の中身の条件を満たしているとにループする、と認識しているので、numが大きい方の数値より大きくなったとき、ループを終了するようにしているつもりです。 ここがどこか間違っているのでしょうか・・・? それから、初期化というのもいまいち理解していないのですが、intで宣言するときに、中に数値を格納しておく、という物だと思っています。 宣言の後にprintf("%d",num);などで確認すると、代入できているようなので、これは間違っていないと思うのですが・・・・、 間違っているところがざっとみて解りましたら、回答頂けるとありがたいです。 C言語を始めたばかりなので、できれば簡単に説明して頂けるとありがたいです。

  • C言語の問題が解けません

    C言語の問題ができなくて困っています。 これが問題文です。 与えられた表の縦・横の値の平均/合計をそれぞれの行・列ごとに求め出力するプログラムを作成しなさい。ただし、縦・横のデータ数は10個未満とし、それぞれの数字は整数とする。また、出力は右詰め6桁で出力することとし、平均における小数点以下は1桁まで表示する。平均行/列および合計行/列がぶつかる個所は、表全体の平均と合計を計算した結果を表示する。 補足として入力された行列数が10未満であることは、プログラム内でチェックすること。 例:20,3→再入力となる(行が9未満でない)  :2,-5→再入力となる(行が負の値) 実行結果例はこんな感じらしいです。 行数(最大9),列数(最大9)をカンマ区切りで入力(行,列):4,4 データをカンマ区切りで行ごとに入力[4行 4列] 52,96,15,20 86,22,35,45 45,78,54,36 16,86,74,55  52 96 15 20 45.8 183  86 22 35 45 47.0 188  45 78 54 36 53.3 213  16 86 74 55 57.8 231 49.8  70.5 44.5 39.0 50.9 - 199 282 178 156 - 815 自分はここまで自力でやったのですがここからが試行錯誤してもできません。このあとどのようにプログラムを書いていけばいいのですか? よろしくお願いします。 #include <stdio.h> int main(){ int gyou,retu,Loop1=0,Loop2=0; int kazu[8][8]; printf("行数(最大9行)、列数(最大9列)をカンマで区切って入力 (行,列):"); scanf("%d,%d",&gyou,&retu); if((gyou<=9)&&(retu<=9)){ printf("データをカンマ区切りで行ごとに入力 [%d行,%d列]\n",gyou,retu); for(Loop2=0;Loop2<gyou;Loop2++){ for(Loop1=0;Loop1<retu;Loop1++){ scanf("%d\n",&kazu[gyou--][retu--]);

  • C言語で分からないことがあり、投稿しました。

    C言語で分からないことがあり、投稿しました。 ユーザから2から100までのいずれかの整数を受け取り、1からその数までの総和を計算するプログラムをfor文を使って書け。利用者が範囲外の数値を入力した場合、「値が範囲内にありません」などのエラー表示を行え。ただし、ユーザ定義の関数を1つ使うこと。(ここではfunc1に統一) もしよろしければ、アドバイスいただけると幸いです。

  • 似た問題なのに、解き方がまるで違う問題

    こんばんは。似たような問題なのに、同じ解き方では解けずに困っています。 問A 500以下の3桁の整数、3で割っても7で割っても9で割っても2余る数の総和はいくらか。 6(128+443)/2=1713 と、順調に正解できました。 問B 250以下の自然数で、4で割っても6で割っても2余る数の総和はいくらか。 僕の解き方 20(14+242)/2=2560 …かと思いきや、2560は選択肢にありませんでした。 テキストの解説 21(2+242)/2=2562 …が正解だそうです。 疑問点1 なぜ21をかけるのか? テキストには12+2、24+2…の20個、更に2もあるのであわせて21だと記されています。しかし、それだと問Aの時に使った式で、6をかけるというのと食い違いますよね。 疑問点2 なぜ2+242なのか? 2は「4・6で割っても…」という条件とはなんら関係のない数字のように思えますが、なんで突然2がでてくるのですか?問Aでも2なんてでてきませんよね…。 かなり混乱しています。宜しくお願いします。

  • C言語の課題

    C言語の問題です。 正の整数nを入力し、1以上n以下の整数を順次表示例通りに表示すること。0以下の整数が入力されることを考慮する必要はない。 実行例 1*2*3*4*5* 教えて頂けないでしょうか?