目的:「いくつかの間違いを修正し、適切な実行結果を出す。」
以下のプログラムのどこを変えればよいのか、修正部分について教えてください。
#include <stdio.h>
int main(void){
double data[]={1.6,5.3,-1.5,8.2,1.7,-4.0,1.8,1.6};
double *p;
p=data;
while(*p>0){
printf("%0.1f\n",*p);
(*p)++;
}
return 0;
}
以下の3つを修正してみましたが、実行結果で数字が∞に出てきてしまいます。
5行目:修正前「&p」→修正後「*p」
10行目:前「%0.1d」→後「%0.1f」
11行目:前「p++」→後「(*p)++」
C言語[ポインタ変数を使用したプログラムの修正]
Re: C言語[ポインタ変数を使用したプログラムの修正]
これが最悪の改修です。11行目:前「p++」→後「(*p)++」
これは、配列の先頭要素である1.6を出力した後、
「その値に1を加え」た値を である間ずっと出力し続けますので、
1.6
2.6
3.6
4.6
...
と無限に出力されます。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。