温度 t [℃] を 0 ℃ 〜 40 ℃ まで 2 ℃ 間隔で音速 C [m/s] を計算して画面に表示するプログラムを作成しなさい。
繰り返しのための制御文としては,for... 文を使用しなさい。
画面表示では,温度と音速の間に 1つ以上の空白を使うなどして見やすく表示してください。
音速の計算には, C = 331.45 + 0.607 * t を使いなさい。

解答例その1


#include <stdio.h>

int main(void)
{
    int t;
    double c;

    for(t=0; t<=40; t+=2){
        c = 331.45 + 0.607*t;
        printf("温度:%3d 度     音速:%7.2f m/s\n", t, c);
    }
    
    return 0;

}

解答例その2

画面表示の桁揃えにタブ文字を使用している例

/*
    2度毎の温度と音速を表示
*/

#include<stdio.h>

int main(void)
{
    int tem;
    double vel;

    puts("温度\t音速");/* \tは水平タブを表す拡張表記(エスケープシーケンス)です。(Cf. テキストp.250 Table 8-3) */

/*計算して表示*/

    for(tem=0;tem<=40;tem+=2){
        vel=0.607*tem+331.45;
        printf("%d\t%.3f[m/s]", tem,vel);/*間をあけて表示*//* ここでも\tを使用していますね。 */
        putchar('\n');
    }

    return(0);
}

解答例その3


#include <stdio.h>

int main(void)

{
    int t;
    double c;   /*音速c */

    puts("温度 音速");
    puts("[°C] [m/s]");

    for (t=0; t<=40; t++,t++){ /* これでもO.K.だが,t+=2 と書いた方がきれい */
        c=331.45+0.607*t;
        printf(" %2d %.3f \n",t,c);
    }

    return(0);

}

解答例(番外編)

while... 文を使用している例

#include<stdio.h>

int main(void)
{
     int t = 0;
double c;

printf("温度   音速\n");

while(t < 41) {
c = 331.45 + 0.607 * t;
printf("%d     %f\n" ,t,c);
t += 2;
}

return(0);
}


テキスト107ページの演習4-24

解答例その1


#include <stdio.h>

int main(void)
{
    int i, j, height;


    printf("ピラミッドを作ります。\n何段ですか:");
    scanf("%d", &height);


    for (i=1; i<=height; i++){ /* iが1〜height段目までループをまわす */

        for(j=1; j<=height - i; j++) /* height-i個のスペースを表示 */
            putchar(' ');

        for(j=1; j<=2*i - 1; j++) /* 2*i-1個の*を表示 */
            putchar('*');

        putchar('\n'); /* 1段ごとに改行 */
    }


    return(0);
}

解答例その2


#include<stdio.h>
int main()
{
int i,j,ln;
printf("何段ですか:");
scanf("%d",&ln);
for(i=1;i<=ln;i++){
for(j=1;j<=ln-i;j++)
putchar(' ');
for(j=1;j<=2*i-1;j++)
putchar('*');
for(j=1;j<=ln-i;j++)/* このループは不必要。不必要なものを残しておくと,思わぬバグの原因となります。注意! */
putchar(' ');
putchar('\n');
}
return(0);
}