( 子の本棚にC言語入門の本が落ちてたので、勉強してみよっと )
【 実行プログラム 】
【 ソースプログラム 】
#include <stdio.h>
int main(void)
{
int no;
printf("整数を入力して:");
scanf("%d", &no);
while (no >= 0) {
printf("%d ", no);
no--;
}
putchar('\n');
return (0);
}
【 まなび 】
■ while文
必ず1回ループ本体を実行するdo ~ while文とは違い、最初に制御式を評価した値が真(0でない)でなければループ本体を実行しない。
制御式が真である限り、文を繰り返し実行する。
■ no--
後置減分演算子。1ずつ減らす。デクリメント。no++(インクリメント)の逆バージョン。
そもそも
でもよい。no--は後置減分演算子ということで、式を評価した「値を得た」後にデクリメントしているから。
■ putchar('\n')
全てを表示した後に(1回だけ)改行文字として読み込んでいる。
【 演習4-5 】
1から読み込んだ整数値までカウントアップする。なお、入力された値が0以下の場合には、改行を行わないものとする。
#include <stdio.h>
int main(void)
{
int i, no;
printf("正の整数を入力してください:");
scanf("%d", &no);
i = 1;
while (i <= no)
printf("%d ", i++);
if ( no > 0 )
putchar('\n');
return (0);
}
【 演習4-6 】
読み込まれた整数値以下の正の偶数を順に表示するプログラムを作成せよ。
#include <stdio.h>
int main(void)
{
int i, no;
printf("正の整数を入力してください:");
scanf("%d", &no);
i = 2;
while (i <= no){
printf("%d ", i);
i += 2;
}
if ( no > 0 )
putchar('\n');
return (0);
}
【 演習4-7 】
読み込まれた整数値以下である正の2のべき乗の数を順に表示するプログラムを作成せよ。
#include <stdio.h>
int main(void)
{
int i, no;
printf("正の整数を入力してください:");
scanf("%d", &no);
i = 2;
while (i <= no){
printf("%d ", i);
i *= 2;
}
if ( no > 0 )
putchar('\n');
return (0);
}
【 演習4-9 】
読み込んだ値の個数だけ+と-を交互に表示するプログラムを作成せよ。なお、0以下の整数が入力された場合は何もしないこと。
#include <stdio.h>
int main(void)
{
int no;
printf("正の整数を入力せよ:");
scanf("%d", &no);
while (no-- > 0){
putchar('+');
while (no-- > 0){
putchar('-');
break;
}
}
if ( no > 0 )
putchar('\n');
return (0);
}
【 演習4-10 】
読み込んだ整数値の個数だけ*を縦に連続して表示するプログラムを作成せよ。なお、0以下の整数が入力された場合は何もしないこと。
#include <stdio.h>
int main(void)
{
int no;
printf("正の整数を入力せよ:");
scanf("%d", &no);
while (no-- > 0){
putchar('*');
putchar('\n');
}
if ( no > 0 )
putchar('\n');
return (0);
}
【 演習4-11 】
読み込んだ正の整数と、その逆順を表示するプログラムを作成せよ。
#include <stdio.h>
int main(void)
{
int no;
printf("正の整数を入力せよ:");
scanf("%d", &no);
printf("%dを逆から並び替えると", no);
while (no > 0){
printf("%d", no % 10);
no /= 10;
}
puts("になります");
return (0);
}
【 演習4-12 】
正の整数値を読み込んで、その桁数を表示するプログラムを作成せよ。
#include <stdio.h>
int main(void)
{
int no;
printf("正の整数を入力せよ:");
scanf("%d", &no);
printf("%dは", no);
int cnt;
while (no > 0){
cnt++ ;
no /= 10;
}
printf("%d桁の整数です", cnt);
return (0);
}