今度C言語プログラム能力検定を受けるのですが、過去問の回答ではわからず質問させてもらってます(以下ソース)
------------------------------------------
#include<stdio.h>
int mod(int a, int b);
int d, f = 10;
main()
{
int a,b,c;
enum cl {g,h}
a=12; b=5;
c=mod(a,b);
a++; ++b;
c=mod(a,b);
printf("c=%d\n",c); ←(1)
}
int mod(int b, int a)
{
int c;
c=b/a;
c=b-c*a;
return(c);
}
--------------------------------------------------
問題は(1)はどのように出力されるでしょう?といったもので、
答え(出力結果)は「1」でした。回答の説明によると
「変数cはmain関数内で宣言され、mod関数の戻り値が格納される。
mod関数の戻り値は二つの引数の剰余であり、ここでは2回目のmod関数
の戻り値が表示される。2回目の仮引数は、aが6で、bが13で戻り値は1になる」
ということでしたが>mod関数の戻り値は二つの引数の剰余であり…
というのがよくわかりません…剰余算というのは「%」のことですよね?
であれば「c= a % b」といった記述がでてくれば13÷6=2…1で「1」となり、理解できるのですが、それらしき記述がないので(--;)
どなたか教えていただけないでしょうか?
よろしくおねがいします。
No.2ベストアンサー
- 回答日時:
整数の割り算・かけ算・引き算で
c = b - (b/a)*a
= 13 - (13/6)*6
= 13 - 2*6
= 13 - 12
= 1
がつまり、% ですね。
って書いちゃ試験勉強の手助けにはならないですかね...
ありがとうございます
計算過程が非常にわかりました。
13-(13/6)*6
^^^^
この部分であまりが切り捨てられることを
「丸め」と呼ぶんですね。ありがとうございます
加えて1つ気になるのですが。
最初にmodが定義されたときは
int mod(int a,int b);
となっているのに対し
下部の定義では逆に
int mod(int b, int a);
と定義されている意味は何かあるのでしょうか?
もし良ければ教えてください。
m(_ _)m
No.4
- 回答日時:
>最初にmodが定義されたときは
>int mod(int a,int b);
>となっているのに対し
これは定義ではありません。プロトタイプ宣言といいます。
>下部の定義では逆に
>int mod(int b, int a);
>と定義されている意味は何かあるのでしょうか?
意味は特にないと思います。
プロトタイプ宣言では変数名を書かなくてもOKですので。
つまり、プロトタイプ宣言では、
int mod(int, int);
int mod(int aaaa, int zzzzzzzzzzz);
int mod(int xxxxxxxxxxxxxx, int qqqqqqqqqqqqqqq);
など、当該関数の実体と、引数の数・型、戻り値の型が
一致していればOKです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
比較回数と交換回数表示について
-
nCmの関数
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語 配列と関数の練習問題
-
c言語
-
std::set<int> で、ある値が何...
-
卒業研究でよく分からないとこ...
-
C言語 エラーの原因がわからな...
-
DLLをGetProcAddress()で実行で...
-
【C++】関数ポインタの使い方
-
read関数をノンブロッキングで...
-
C言語における対称行列の作り方...
-
構造体の勉強中です 合計点の高...
-
C言語です。
-
C言語での引数の省略方法
-
困ってます…nCrを求めるC言語...
-
C++でvectorにテキストファイル...
-
プログラミング
-
素数 再帰関数
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
「指定されたキャストは有効で...
-
C言語 配列と関数の練習問題
-
複数桁10進数の*桁目だけを抽出...
-
(int *)の意味
-
if と配列の組み合わせ
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
c言語
-
足して100になるような乱数のア...
-
C言語初心者です、、、お助けく...
-
数字列を3桁ごとにカンマで区切...
-
C言語 エラーの原因がわからな...
-
実数の整数部,小数部の取得
-
課題でつまってます・・・
-
商と剰余を同時に求める(C言語)
-
C言語の配列をC++のvectorに高...
-
std::set<int> で、ある値が何...
おすすめ情報