C博客作业02--循环结构

| 这个作业属于哪个班级 | C语言--网络2011/2012 |
| ---- | ---- | ---- |
| 这个作业的地址 | C博客作业02--循环结构 |
| 这个作业的目标 | 学习循环结构内容,包括for循环、while循环、循环嵌套|

0.展示PTA总分(0----2)


1.本章学习总结(2分)

1.1 for循环语法

在C语言中,for语句被称为循环语句,它可以实现C语句的重复执行。
for语句的一般形式为:

for(表达式1;表达式2;表达式3)
      循环体语句

(1)for语句中,用两个分号分隔三个表达式,但for的后面没有分号,因为for与其后的循环体语句合起来作为一条完整的语句。
(2)for语句的三个表达式以及循环体语句的执行顺序和书写顺序有所不同,计算表达式3在执行循环语句之后。
(3)for语句中的表达式1只执行一次。
(4)如果循环体语句由多条语句组成,必须用大括号把它们扩起来,变成一条复合语句。
不要在for语句中随意加分号。

1.2 while、do while循环语法

while语句
while语句也用于实现循环,而且它的适用面更广,其一般形式为:

while(表达式)
循环体语句;

通过与for语句的比较,while语句的使用放法为:
(1)while语句中的表达式可以是任意合法的表达式,循环体语句只能是一条语句。
(2)while语句的构成简单,只有一个表达式和一条循环语句组成,分别对应循环的两个核心要素:循环条件和循环体,可以直接把循环问题分析设计转换为语句实现。
(3)从while语句和for语句的执行流程可以看出,它们的执行机制实质上是一样的,都是在循环前先判断条件,只有条件为“真”时才进入循环。
可以把for语句改写为while语句:

表达式1;
while(表达式2)
{
for的循环语句;
表达式3;
}

do-while语句
for语句和while语句都是在循环前先判断条件,只有条件满足才会进入循环,如果一开始条件就不满足,则循环一次都不执行。do-while语句与上述两种循环语句略有不同,它先执行循环体,后判断循环条件。所以无论循环条件的值如何,至少会执行一次循环体。其一般形式为:

do
{
循环体语句;
}while(表达式);

do-while语句的使用方法和while语句类似,语句中的表达式可以时任意合法的表达式,循环体语句只能是一条语句:使用时要另加初始化部分,循环体语句必须包含能最终改变条件真假性的操作。

1.3 跳出循环相关语句break\continue

break语句
break语句强制循环结束,for语句中,一旦执行了break语句,循环体提前结束,不再执行循环体中位于其后的其他语句。break语句应该和if语句配合使用,即条件满足时,才执行break语句跳出循环;否则若break语句无条件执行,意味着永远不会执行循环体中break后面的其他语句。
continue语句
continue语句的作用是跳过循环体中continue后面的语句,继续下一次循环,continue一般也需要与if语句配合使用。
区别
continue语句与break语句的区别在于,break结束循环,而continue只是跳过后面的语句继续循环。break除了可以终止循环外,还用于switch语句,而continue只能用于循环。

1.4 循环嵌套

例:计算1!+2!+···+100!

#include <stdio.h>

double fact(int n);/*函数声明*/

int main(void)
{
	int i;

	double sum;

	sum = 0;

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

		sum = sum + fact(i);/*调用fact(i)求i!,共重复100次*/

	printf("1! + 2! + ... + 100! = %e\n", sum);
									/*用指数形式输出结果*/
	return 0;

}
/*定义n!的函数*/
double fact(int n)
{
	int i;

	double result;/*变量result中存放阶乘的值*/

	result = 1;/*置阶乘result的初值为1*/

	for (i = 1; i <= n; i++)/*循环n次,计算n!*/

		result = result * i;

	return result;/*把结果送回主函数*/
}

由于i!=12···*i,是一个连乘的重复过程,每次循环完成一次乘法,循环i次求出i!的值。所以可将其进一步改写为:

#include<stdio.h>

int main(void)
{
	int i;
	int j;
	double item;/*变量item中存放阶乘的值*/
	double sum;
	sum = 0;

	for (i = 1; i <= 100; i++)/*外层循环执行100次,求累加和*/
	{
		item = 1;/*置item的初值为1,以保证每次求阶乘都从1开始*/

		for (j = 1; j <= i; j++)/*内层循环重复i次,算出item= i!*/
		
			item = item * j;

			sum = sum + item;/*把i!累加到sum中*/

		

	}
	printf("1!+2!+...+100! = %e\n", sum);
								/*用指数形式输出结果*/
	return 0;
}

上述形式的循环称之为嵌套循环(或多重循环),大循环中嵌套了小循环。其中大循环(外层循环)重复100次,每次累加1项item(即i!),而每次的累加对象i!由小循环(内层循环)计算得到,内层循环重复i次,每次连乘一项。

学习体会

2 编程技巧总结(2分)

(1)字符转为数字:

a = a - '0';

(2)大小写字母的转化:
大写转为小写:

ch = ch -'A' + 'a';

小写转为大写:

ch = ch -'a' + 'A';

(3)图像打印问题:

#include<stdio.h>
#include<math.h>
int main()
{
    int i, j;
    for (i = 0; i < 7; i++)
    {
        if (i <= 3)
        {
            for (j = 0; j < 5 - i; j++)
                printf(" ");
            for (j = 0; j < 1 + 2 * i; j++)
                printf("*");
        }
        if (i > 3)
        {
            for (j = 0; j < 5 - (6 - i); j++)
                printf(" ");
            for (j = 0; j < 1 + 2 * (6 - i); j++)
                printf("*");
        }
        printf("\n");
    }
    return 0;
}

使用循环嵌套让代码量少一点,更便于阅读。

3.PTA实验作业(6分)

3.1 数列求和问题

3.1.1 流程图或伪代码介绍思路


3.1.2 代码截图

3.1.3 PTA提交列表及说明

因为在做这题时事先查阅过资料,所以才没有做错。

3.2 图形打印问题

3.2.1 数据处理

char ch/*定义起始字母*/
int n /*定义菱形高度*/
scanf("... "&...);
for()
{
      for()
      {
      }
}
return 0;

3.2.2 代码截图


3.2.3 PTA提交列表及说明

3.3 自选一题,介绍printf调试如何检查错误

3.3.1 单步调试截图

3.3.2 代码截图

错误代码

正确代码

3.3.3 PTA提交列表及说明

因为这个例题不是PTA里面的题目,所以就没有提交说明。

posted @ 2020-11-22 22:22  网络2012王历  阅读(170)  评论(0编辑  收藏  举报