C言語学習ノート(七)--循環プログラム設計
1ループ文
1.1ループ文は主に3種類を含む:while、do-while、for.
2 while文処理サイクル
2.1 while文の基本形式:
While(式)
{循環体文}
2.2実行フロー:まずwhile式の値を計算し、ゼロ以外の場合は循環内の文を実行し、実行後はwhile式の値を判断し続け、ゼロ以外の場合は循環体を実行し続け、式の値がゼロになるまで循環体を実行し、循環を飛び出し、後続の文を実行する.
例コード:
注意:sumとiを使用する場合は、必ず初期値を割り当てます.
2.3 while文使用上の注意:
循環体複数の文が一致する文形式を使用しなければならない場合.ループボディ式には、ループが終了する傾向を制御する文が必要です.そうしないと、ループは無限に行われます.循環体は空であってもよい.
2.4 while例:a+aa+aaa+....
コード:
思考問題:階乗を求める.
3 do while文処理サイクル
3.1 do while文の基本形式:
do{ループ文}
while(式);
3.2実行フロー:まずdoの後の循環体を実行して、それからwhileの中の式の値を計算して、値がゼロでない時にdoの循環体を引き続き実行して、値がゼロの時、循環を飛び出します.
例コード:
3.3 whileとdo whileの違い:whileはまずwhileの式が成立するかどうかを判断してから循環体を実行し、do whileはwhileの式が成立するかどうかにかかわらず、先にdoを実行する循環体である.
4 for文処理サイクル
4.1基本文法形式:
for(式1;式2;式3)
循環体
注意:forはc言語のキーワードで、括弧の中の3つの式は任意の式で、体内に複数の文がある場合は、複合文を使用することに注意してください.
4.2まず式1を計算し、式1は一度だけ実行し、一般的に変数を初期化するために付与文である.次に式2を解き、値がゼロであればループを終了し、ゼロでなければループを実行する.次に式3を実行し、式2が成立しないまで式2を判断し続け、ループ体を実行する.
例コード:
4.3 for文の特徴:式1、2、3は省略できるが、「;」セミコロンは省略できません.式は任意の形式の式であってもよい.循環体は空であってもよい.forのカッコには、複数の制御ループの変数が使用できます.
判定素数例コード:
4.4思考問題:
1.階乗を求める.
2.フィボナッチ数列を出力します.
3.水仙の数を出力します.
4.次の図を出力します.
*****
****
***
**
*
5プロセス制御文
ループを実行する過程で、ループを途中で中断したり、今回のループをスキップしたりする必要がある場合があります.この場合、プロセス制御文を使用する必要があります.
5.1 break:switch文ではbreakを使用してswitchブランチをスキップすることがよくありますが、breakもループ文でループをスキップするために使用できます.ループでbreakを使用すると、ループ文に複数の出口があり、プログラムをより柔軟にすることができます.
break文は、ループを終了条件に達していないときにループから繰り上げることができます.
例コード:
for(i=0;i<10;i++){
printf("%d",i);
if(i==0) break;
}
思考問題:break文を用いて判断素数問題を修正する.
5.2 continue:ループ中にcontinueを使用すると、条件に基づいて今回のループを実行するかどうかを判断できます.continueを使用すると、後のコードは実行されず、次のループを直接実行します.しかしbreakがブランチでもループでも使用できるように、continueはループ構造でしか使用できません.
例コード:
for(i=0;i<10;i++){
if(i==0) continue;/*i=0の場合はループを実行しません*/
printf("%d",i);
}
思考練習:continueを使って1000内に3、5、7で割り切れる数を求める.
5.3 goto:無条件転向文とも呼ばれる.
その一般的なフォーマットはgoto記号です.
例コード:
構造化プログラム設計ではgoto文の使用は提唱されていないが、gotoを使用すると便利である場合がある.例えば、多層の循環体では、最外層の循環に飛び出すには複数のbreakを使用するが、gotoを使用すると直接実現できる.
1.1ループ文は主に3種類を含む:while、do-while、for.
2 while文処理サイクル
2.1 while文の基本形式:
While(式)
{循環体文}
2.2実行フロー:まずwhile式の値を計算し、ゼロ以外の場合は循環内の文を実行し、実行後はwhile式の値を判断し続け、ゼロ以外の場合は循環体を実行し続け、式の値がゼロになるまで循環体を実行し、循環を飛び出し、後続の文を実行する.
例コード:
#include "stdio.h"
main (){
int i,sum;
i=1;
sum=0;
while ( i<=100 ) /* i n , */
{ sum=sum+i;
i++;
}
printf ("sum=%d
",sum);
}
注意:sumとiを使用する場合は、必ず初期値を割り当てます.
2.3 while文使用上の注意:
循環体複数の文が一致する文形式を使用しなければならない場合.ループボディ式には、ループが終了する傾向を制御する文が必要です.そうしないと、ループは無限に行われます.循環体は空であってもよい.
2.4 while例:a+aa+aaa+....
コード:
#include "stdio.h"
main( )
{
int a,x;
long sum=0,n=1,tn ;
scanf("%d%d",&a,&x);
tn=a;
while(n<=x) /*n x */
{sum+=tn;
tn=tn*10+x;
n++;
}
printf("result is %ld",sum);
}
思考問題:階乗を求める.
3 do while文処理サイクル
3.1 do while文の基本形式:
do{ループ文}
while(式);
3.2実行フロー:まずdoの後の循環体を実行して、それからwhileの中の式の値を計算して、値がゼロでない時にdoの循環体を引き続き実行して、値がゼロの時、循環を飛び出します.
例コード:
#include "stdio.h"
main (){
int i,sum;
i=2;
sum=0;
do /* */
{
sum+=i;
i+=2;
}while(i<=100); /* */
printf ("sum=%d
", sum );
}
3.3 whileとdo whileの違い:whileはまずwhileの式が成立するかどうかを判断してから循環体を実行し、do whileはwhileの式が成立するかどうかにかかわらず、先にdoを実行する循環体である.
4 for文処理サイクル
4.1基本文法形式:
for(式1;式2;式3)
循環体
注意:forはc言語のキーワードで、括弧の中の3つの式は任意の式で、体内に複数の文がある場合は、複合文を使用することに注意してください.
4.2まず式1を計算し、式1は一度だけ実行し、一般的に変数を初期化するために付与文である.次に式2を解き、値がゼロであればループを終了し、ゼロでなければループを実行する.次に式3を実行し、式2が成立しないまで式2を判断し続け、ループ体を実行する.
例コード:
#include "stdio.h"
main( )
{
int i,sum;
sum=0;
for( i=1; i<=100; i++)
sum+=i;
printf("sum=%d",sum);
}
4.3 for文の特徴:式1、2、3は省略できるが、「;」セミコロンは省略できません.式は任意の形式の式であってもよい.循環体は空であってもよい.forのカッコには、複数の制御ループの変数が使用できます.
判定素数例コード:
#include "stdio.h"
#include "math.h"
main()
{ int n,m,flag;
flag=1; /*flag , 1 n , 。 1*/
printf("
enter n:"); /* n*/
scanf("%d",&n);
for(m=2;m<n&&flag;m++) /* n 2~n-1 */
if(n%m==0)
flag=0; /*n */
if(flag==1) /* flag , */
printf("
%d is a prime number.",n);
else
printf("
%d is not a prime number.",n);
}
4.4思考問題:
1.階乗を求める.
2.フィボナッチ数列を出力します.
3.水仙の数を出力します.
4.次の図を出力します.
*****
****
***
**
*
5プロセス制御文
ループを実行する過程で、ループを途中で中断したり、今回のループをスキップしたりする必要がある場合があります.この場合、プロセス制御文を使用する必要があります.
5.1 break:switch文ではbreakを使用してswitchブランチをスキップすることがよくありますが、breakもループ文でループをスキップするために使用できます.ループでbreakを使用すると、ループ文に複数の出口があり、プログラムをより柔軟にすることができます.
break文は、ループを終了条件に達していないときにループから繰り上げることができます.
例コード:
for(i=0;i<10;i++){
printf("%d",i);
if(i==0) break;
}
思考問題:break文を用いて判断素数問題を修正する.
5.2 continue:ループ中にcontinueを使用すると、条件に基づいて今回のループを実行するかどうかを判断できます.continueを使用すると、後のコードは実行されず、次のループを直接実行します.しかしbreakがブランチでもループでも使用できるように、continueはループ構造でしか使用できません.
例コード:
for(i=0;i<10;i++){
if(i==0) continue;/*i=0の場合はループを実行しません*/
printf("%d",i);
}
思考練習:continueを使って1000内に3、5、7で割り切れる数を求める.
5.3 goto:無条件転向文とも呼ばれる.
その一般的なフォーマットはgoto記号です.
例コード:
#include <stdio.h>
main() {
int i,s=0;
i=1;
loop:if(i<=100){ /* , goto */
s+=i;
i++;
goto loop;
}
printf("1+2+3+…100=%d
",s);
}
構造化プログラム設計ではgoto文の使用は提唱されていないが、gotoを使用すると便利である場合がある.例えば、多層の循環体では、最外層の循環に飛び出すには複数のbreakを使用するが、gotoを使用すると直接実現できる.