
まずはこれを見てください()
#include<stdio.h>
void maxmin(int array[],int max,min);
int main (void)
{
int i=0,array[10],max,min;
do
{
printf("%d番目”i+1);
scanf("%d",&array[i]);
i++;
}while(array[i-1]!=-1);
maxmin(array,&max,&min);
printf("最大値%d,最小値%d\n,max,min);
return 0;
}
void maxmin (int array[],int max,int min);
{
int i=0;
*max=0;
*min=100;
while(array[i]!=-1)
{
if(array[i]>max)max=array[i];
if(array[i]<min)min=array[i];
i++;
}
}
このプログラムが書いてあり疑問に思った点が2つあります。
[1]while(array[i-1]!=-1のところのi-1とはdo~while文では条件式が後判定なため、プログラムが一回は行われるからi-1なのですか?
[2]maxmin関数の呼び出し部分、maxmin(array[],&max,&min)では&max,&minと渡しているのに、maxmin関数での宣言部分の引数が(int max,int min);と書いてあり、ポインターの(int*max,int *min)
でないのはどうしてですか?ポインター引数でないとアドレスが書き換えられないのでは?
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
本気でエラー処理をしだすと「入門」の範疇をはるかに逸脱しちゃうような気しかしませんしね>#4.
printf の返り値のチェック, したことないなぁ....
あとよく見たら maxmin の宣言もおかしい感じがする.
No.5
- 回答日時:
示されているプログラムは、どういう位置づけのものでしょうか?
どこかのHPに例示されたもの?
このプログラムが正しい前提で疑問を持たれているようですが、
疑問を持たれるとおり、変なところがあります。
動かした実績のないプログラムだと思います。
(テキストとして、書いただけという感じがします。)
No.4
- 回答日時:
疑問となっている部分は既に回答があるので、その他のツッコミを。
>printf("%d番目”i+1);
たぶんコピペミスでしょうが、「,」が足りない。
>do
>{
> printf("%d番目”i+1);
> scanf("%d",&array[i]);
> i++;
>}while(array[i-1]!=-1);
バッファオーバーランを実施できるお手本のようなコードです。
11回以上数字を入力しよう!!
# scanf()で数字以外を入力してみるのもいいかも。(まぁ、入門じゃそういうエラー処理省かれるんですけど)
No.3
- 回答日時:
[1] は条件判定の前に i++; が入っているから, だね. 各変数の値がどのように変化するかをじっと追っていけばわかるはず.
i++; をなくしてそのあとの判定を
} while (array[i++] != -1);
にした方がシンプルだけど, 「入門」だとどこで扱おうかねぇ.
[2] は, 「ポインター引数でないとアドレスが書き換えられないのでは?」という文はおかしい (「アドレス」は書き換えられない) けど宣言/定義の部分ではポインタにしないとまずい. まともなコンパイラでは「関数を呼び出す」部分ではエラーにならないと思うけど関数 maxmin の中でエラーが出る.
まあこのままだと main の中でもエラーになる.
No.2
- 回答日時:
> do~while文では条件式が後判定なため、プログラムが一回は行われるからi-1なのですか?
もっと言うと、そのdo~whileの中で、初期値が0だったiをi++してるから。
> ポインター引数でないとアドレスが書き換えられないのでは?
その通りで、まともなコンパイラならエラーにしてくれます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCP/IP: 非ソケットに対するソ...
-
getch / putch用のヘッダ
-
Expression: nptr != NULL
-
クレーンでのCFブレーキとな...
-
オシロスコープからパソコンに...
-
小5算数 変わり方の問題
-
パターン効果/裾引き(アイパタ...
-
火力発電 蒸気タービンのMSV、C...
-
音声波形を表示する
-
反転増幅回路の周波数特性の理論値
-
減衰係数の求め方がわかりません
-
複数のシリンダーの同調化にコ...
-
二つの波形の合致を調べる方法は?
-
スペクトルの Fitting について
-
SPI 非言語の問題です
-
モータの巻線係数って何でしょ...
-
古典制御のゲイン交差周波数と...
-
RCフィルタと三角波、方形波
-
Audacityのマイク音量
-
矩形パルス外力の応答が、最大...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語プログラミングで初項を1....
-
プログラミングが分かりません。
-
TCP/IP: 非ソケットに対するソ...
-
リターンキー又は、スペースキ...
-
c言語 select sort
-
0と1のファイルへの書き込み、出力
-
フィボナッチ数列
-
C言語のエラーについて
-
プログラムエラー
-
3×3のラテン方陣をつくるプログ...
-
getch / putch用のヘッダ
-
C言語 遺伝的アルゴリズムでの...
-
大至急です! 1,ターミナルから...
-
C言語 コンパイルエラー(文字...
-
加減剰余のオーバーフローについて
-
C言語初心者です。計算がうまく...
-
C言語 セグメンテーション違反
-
C言語で10個の数字を読み込んで...
-
プログラミング C言語のエラー...
-
'printf':識別子が見つかりませ...
おすすめ情報