700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > c语言 10 9-8 7-6… 1循环语句 C语言学习与总结---第五章:循环结构程序设计

c语言 10 9-8 7-6… 1循环语句 C语言学习与总结---第五章:循环结构程序设计

时间:2023-08-02 05:34:16

相关推荐

c语言 10 9-8 7-6… 1循环语句 C语言学习与总结---第五章:循环结构程序设计

循环结构程序设计

5.1 while语句

5.2 do-while语句

5.3 for语句

5.4 循环的嵌套

5.5 while与do-while的比较

5.7 改变循环执行的状态

5.7.1 continue语句

5.7.2 break语句

5.7.3 continue与break的区别

5.8 程序应用

5.1 while语句

一般形式:

while (表达式)

{

语句

}

特点:先判断表达式,后执行语句。

例,求1到100的和

#include

int main()

{

int i = 1, sum = 0;

while (i <= 100)

{

sum += i;

i++;

}

printf("sum = %d\n", sum);

return 0;

}

注意:

(1)循环体如果包含一个以上的语句,应该用大括弧括起来,以复合语句的形式出现。

(2)在循环体中应有使循环趋向于结束的语句。

5.2 do-while语句

一般形式:

do

{

循环体语句

} while (表达式);

特点: 先执行循环体,然后判断循环条件是否成立。

例,求1到100的和

#include

int main()

{

int i = 1, sum = 0;

do

{

sum += i;

i++;

} while (i <= 100);

printf("sum = %d\n", sum);

return 0;

}

5.3 for语句

一般形式:

for(表达式1;表达式2;表达式3)

{

语句

}

最简单的形式:

for(循环变量赋初值;循环条件;循环变量增值)

{

语句

}

注:

(1) 与for语句等价的while语句的形式:

表达式1;

while(表达式2)

{

语句

表达式3;

}

(2) for语句中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。

例如:

for ( ; i <= 100; i++) sum = sum + i;

注意: 表达式1后面的分号不能省略

(3) 如果表达式2省略,即不判断循环条件,循环无终止地进行下去。即认为表达式2始终为真。例如:

for (i = 1; ; i++) sum = sum + i;

(4) 表达式3也可以省略,但应该另外设法保证循环能正常结束。

例如:

for (i = 1; i <= 100; )

{

sum = sum + i;

i++;

}

(5) 可以省略表达式1和表达式3,只有表达式2, 即只给循环条件。

例如:

for (; i<=100; )

{

sum = sum + i;

i++;

}

相当于

while (i<=100)

{

sum = sum + i;

i++;

}

(6) 表达式1和表达式3可以是一个简单的表达式,也可以包含多个简单表达式,中间用逗号间隔。例如

for (sum=0, i=1; i<=100; i++) sum = sum + i;

for (i=1; i<=100; i++, i++) sum = sum + i;

相当于

for (i=1; i<=100; i=i+2) sum = sum + i;

例:

for ( ; (c=getchar()) != ‘\n’; )

printf(″%c″,c);

语句中只有表达式2,而无表达式1和表达式3。作用:每读入一个字符后立即输出该字符,直到遇到“换行”为止。

例,求1到100的和

#include

int main()

{

int i, sum = 0;

for (i = 1; i <= 100; i++)

sum += i;

printf("sum = %d\n", sum);

return 0;

}

5.4 循环的嵌套

一个循环体内又包含另一个完整的循环结构称为循环的嵌套。

三种循环(while循环、do-while循环和for循环)可以互相嵌套

例,输出一个矩阵

[ 2 3 4 5 3 4 5 6 4 5 6 7 ] \left[\begin{matrix} 2 & 3 & 4 & 5\\ 3&4&5&6\\ 4&5&6&7\\ \end{matrix} \right]⎣⎡​234​345​456​567​⎦⎤​

#include

int main()

{

int i, j;

for (i = 1; i <= 3; i++)

{

for (j = 1; j <= 4; j++)

printf("%d ", i + j);

printf("\n");

}

return 0;

}

5.5 while与do-while的比较

在一般情况下,用while语句和用do-while语句处理同一问题时,它们的结果一样。但是如果while后面的表达式一开始就为假时,两种循环的结果是不同的。

例如下面两个程序

#include

int main()

{

int i, sum = 0;

printf("please enter i: ");

scanf_s("%d", &i);

while (i <= 10)

{

sum += i;

i++;

}

printf("sum = %d\n", sum);

return 0;

}

运行结果

#include

int main()

{

int i, sum = 0;

printf("please enter i: ");

scanf_s("%d", &i);

do

{

sum += i;

i++;

} while (i <= 10);

printf("sum = %d\n", sum);

return 0;

}

运行结果

5.7 改变循环执行的状态

5.7.1 continue语句

结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。

一般形式:

continue;

例,输出100~200之间的不能被3整除

#include

int main()

{

for (int n = 100; n <= 200; n++)

{

if (n % 3 == 0) continue;

printf("%d ", n);

}

printf("\n");

return 0;

}

5.7.2 break语句

可以用来从循环体内跳出循环体,即提前 结束循环,接着执行循环下面的语句。

一般形式:

break;

注意: break语句只能用于循环语句和switch语句。

例,在全系1000名学生中进行募捐,当总数达到10万元时结束,统计此时捐款的人数,以及平均每人捐款的数目

#include

#define SUM 100000

int main()

{

float amount, aver, total;

int i;

for (i = 1, total = 0; i <= 1000; i++)

{

scanf_s("%f", &amount);

total = total + amount;

if (total >= SUM) break;

}

aver = total / i;

printf("num=%d\naver=%10.2f\n", i, aver);

return 0;

}

5.7.3 continue与break的区别

break语句则是结束整个循环过程,不再判断执行循环的条件是否成立

while(表达式1)

{

if(表达式2) break;

}

continue语句只结束本次循环,而不是终止整个循环的执行

while(表达式1)

{

if(表达式2) continue;

}

例,依次输出下列矩阵

[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ] \left[\begin{matrix} 1&2&3&4&5\\ 6&7&8&9&10\\ 11&12&13&14&15\\ 16&17&18&19&20\\ \end{matrix}\right]⎣⎢⎢⎡​161116​271217​381318​491419​5101520​⎦⎥⎥⎤​

[ 1 2 3 4 5 2 4 6 8 10 4 8 12 16 20 ] \left[\begin{matrix} 1&2&3&4&5\\ 2&4&6&8&10\\ &&&&\\ 4&8&12&16&20\\ \end{matrix}\right]⎣⎢⎢⎡​124​248​3612​4816​51020​⎦⎥⎥⎤​

[ 1 2 3 4 5 2 4 6 8 10 6 9 12 15 4 8 12 16 20 ] \left[\begin{matrix} 1&2&3&4&5\\ 2&4&6&8&10\\ 6&9&12&15&\\ 4&8&12&16&20\\ \end{matrix}\right]⎣⎢⎢⎡​1264​2498​361212​481516​51020​⎦⎥⎥⎤​

#include

int main()

{

int i, j;

for (i = 1; i <= 20; i++) //第一个矩阵

{

printf("%d\t", i);

if (i % 5 == 0) printf("\n");

}

printf("\n\n");

for (i = 1; i <= 4; i++) //第二个矩阵

{

for (j = 1; j <= 5; j++)

{

if (i == 3)continue;

printf("%d\t", i * j);

}

printf("\n");

}

printf("\n\n");

for (i = 1; i <= 4; i++) //第三个矩阵

{

for (j = 1; j <= 5; j++)

{

if (i == 3 && i * j == 3)continue;

printf("%d\t", i * j);

}

printf("\n");

}

printf("\n\n");

return 0;

}

运行结果

5.8 程序应用

(1)用 公式π 4 = 1 − 1 3 + 1 5 − 1 7 + . . . \frac{\pi}{4}=1-\frac{1}{3}+\frac{1}{5}-\frac{1}{7}+...4π​=1−31​+51​−71​+...

求π \piπ的近似值,直到某一项的绝对值小于1 0 − 6 10^{-6}10−6 为止.

#include

#include

int main()

{

int sign = 1;

double sum = 0.0, t = 1.0, i = 1.0;

while (fabs(t) >= 1e-6)

{

sum += t;

i += 2;

sign = -sign;

t = sign / i;

}

printf("%10.8f\n", 4 * sum);

return 0;

}

运行结果:3.14159065

(2)求Fibonacci数列前40个数。这个数列有如下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。即:

F(1)=1 (n=1);F(2)=1 (n=2);F(n)=F(n-1)+F(n-2) (n≥3)

#include

int main()

{

int f1 = 1, f2 = 1, i;

for (i = 1; i <= 20; i++)

{

printf("%12d%12d", f1, f2);

if (i % 2 == 0)printf("\n");

f1 = f1 + f2;

f2 = f2 + f1;

}

return 0;

}

运行结果

(3)输入一个整数n,判断n是否为素数。

#include

#include

int main()

{

int i, n, k;

scanf_s("%d", &n);

if (n == 1) printf("%d不是素数", n);

else

{

k = sqrt(n);

for (i = 2; i <= k; i++)

if (n % i == 0)break;

if (i <= k)printf("%d不是素数\n", n);

else printf("%d是素数\n", n);

}

return 0;

}

(4)输出100到200之间的素数

#include

#include

int main()

{

int n, i, k, m = 0;

for (n = 101; n < 200; n += 2)

{

k = sqrt(n);

for (i = 2; i <= k; i++)

{

if (n % i == 0) break;

}

if (i >= k + 1)

{

printf("%5d", n);

m++;

}

if (m % 10 == 0) printf("\n"); //每输出10个换行

}

printf("\n");

return 0;

}

运行结果

(5)加法密码

将明文的每个字母向后移动三个,即A变成E,a变成e,W变成A,X变成B,从而实现明文的加密,输出密文。

1.#include

2.int main()

3.{

4. char ch;

5. while ((ch = getchar()) != '\n')

6. {

7. if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))

8. {

9. ch += 4;

10. if ((ch > 'Z' && ch <= 'Z' + 4) || ch > 'z') ch -= 26;

11. }

12. printf("%c", ch);

13. }

14. printf("\n");

15. return 0;

16.}

这是针对单个字符的加密,可以将整个程序封装成函数,加密字符串、文本。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。