今回は以下のプログラムの書き方を解説していきます。
キーボードから1以上の整数 n を入力し,Σ i^2 を計算して結果を画面表示するプログラムをwhile 構文を用いて作成せよ.ただし,1 未満の整数が入力された場合には再入力ができるように,1 以上の整数が入力されるまで入力処理を繰り返すこと.
条件を満たすまで入力処理を繰り返す方法は他の記事でも扱っていますがもう一度詳しく解説していきます。
サンプルコードと実行結果
キーボードから1以上の整数 n を入力し,Σ i^2 を計算して結果を画面表示するプログラムをwhile 構文を用いて作成せよ.ただし,1 未満の整数が入力された場合には再入力ができるように,1 以上の整数が入力されるまで入力処理を繰り返すこと.
サンプルコード
コードは以下の通り (/**/で囲まれた部分は説明文のためコードではないです)
#include<stdio.h>
int main(){
/*整数型変数n,i,sumを定義*/
int n,i,sum;
/*nの数値をキーボードから代入*/
/*while(1)またはfor(;;)で無限ループ*/
/*breakで無限ループ終了*/
while(1){
printf("入力:n=");
scanf("%d",&n);
if(n<0){
printf("0以上の数値を入力してください.\n");
}else{
break;
}
}
i=1;
sum=0;
while(i<=n){
sum+=i*i;
i++;
}
/*結果を表示*/
printf("出力:%d\n",sum);
return 0;
}
実行結果
実行結果は以下の通り
入力:n=5
出力:55
補足説明を以下でしていきます。
条件を満たすまで入力処理を繰り返す方法
条件を満たすまで入力処理を繰り返すにはfor文、あるいはwhile文を利用します。
for/while文の解説は以下の記事から。
![](https://gmeblo.com/wp-content/uploads/2022/08/4b56633bf8566cec9e575429b6eb67c3-160x90.jpg)
for文を使った書き方(無限ループ)
無限ループを利用します。文字を入力した後、if文で数値の正負判定をします。負だった場合のみ「0以上の数値を入力してください.」とアナウンスし再びループに入ります。一方正だった場合break文で無限ループを抜けます。
for(;;){
printf("入力:n=");
scanf("%d",&n);
if(n<0){
printf("0以上の数値を入力してください.\n");
}else{
break;
}
}
入力:n=-5
0以上の数値を入力してください.
入力:n=-2
0以上の数値を入力してください.
入力:n=-5
0以上の数値を入力してください.
入力:n=4
while文を使った書き方(無限ループ)
for文の時とほとんど変わりません。
while(1){
printf("入力:n=");
scanf("%d",&n);
if(n<0){
printf("0以上の数値を入力してください.\n");
}else{
break;
}
}
入力:n=-5
0以上の数値を入力してください.
入力:n=-2
0以上の数値を入力してください.
入力:n=-5
0以上の数値を入力してください.
入力:n=4
do-while文を使った書き方
上記の2つに比べ簡潔に見えます。しかし数値が負だった場合のみ「0以上の数値を入力してください.」といったアナウンスを入れる、という工程を入れるのが少し難しくなります。
do{
printf("入力:n=");
scanf("%d",&n);
}while(n<0);
入力:a=-4
入力:a=-3
入力:a=-5
入力:a=5
おすすめ参考書紹介
「苦しんで覚えるC言語」はひとつひとつの要素をスローモーションでゆっくり確実に解説していることが特徴です。真面目にC言語を覚えたい初心者向けで、コツコツと確実に力をつけていくことができます。
「スッキリわかるC言語入門 第2版 (スッキリわかる入門シリーズ)」は「苦しんで覚えるC言語」に比べより親しみやすいイラストや構成で苦手意識を持ちにくい工夫が施されています。
コメント