温度 t [℃] を 0 ℃ 〜 40 ℃ まで 2 ℃ 間隔で音速 C [m/s] を計算して画面に表示するプログラムを作成しなさい。
繰り返しのための制御文としては,for... 文を使用しなさい。
画面表示では,温度と音速の間に 1つ以上の空白を使うなどして見やすく表示してください。
音速の計算には, C = 331.45 + 0.607 * t を使いなさい。
教員からの解答例
#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;
}
学生からの解答例その1
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);
}
学生からの解答例その2
画面表示の桁揃えにタブ文字を使用している例
/*
2度毎の温度と音速を表示
*/
#include<stdio.h>
int main(void)
{
int tem;
double vel;
puts("温度\t音速");/* \tは水平タブを表す拡張表記(エスケープシーケンス)です。(Cf. テキストp.235 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);
}
テキスト101ページの演習4-24
教員からの解答例
#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);
}
学生からの解答例その1
#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);
}