博客作业——循环结构

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

0.展示PTA总分


1.本章学习总结

1.1 for循环语法

for ([表达式1](循环变量赋初值);[表达式2](循环条件);[表达式3](循环变量增值))
{
  语句;
}
  • 表达式1、表达式2和表达式3之间是用分号;隔开的,千万不要写成逗号。
  1. 先执行“表达式1”;
  2. 再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环;
  3. 执行完循环体后再执行“表达式3”;
  4. 重复执行步骤2.和2.,直到“表达式2”的值为假,就结束循环;
  5. 上面的步骤中,2.和3.是一次循环,会重复执行,for语句的主要作用就是不断执行步骤2.和3.;

1.2 while、do while循环语法

while语句

while (表达式)
{
  语句;
}
  • 先计算控制表达式。如果为true,就执行循环体,然后再次计算控制表达式。如果控制表达式为false,程序跳过循环体,而去执行循环体后面的语句。

do while语句

do
{
  语句;
}
while (表达式);
  • 首先无条件地执行一次循环体,然后再根据循环控制表达式的值来判断是否继续执行循环体。若为true,则继续执行;若为false,则停止执行,退出 do-while 循环。也就是说,do-while 循环至少执行一次循环体。

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

1.31break语句

  • 当break关键字用于while、for循环时,会终止循环而执行整个循环语句后面的代码。break关键字通常和if语句一起使用,即满足条件时便跳出循环。

例:计算1加到100的值

    #include <stdio.h>
    int main()
    {
        int i=1, sum=0;
        while(1)        //循环条件为死循环//
      {  
            sum+=i;
            i++;
        if(i>100)
            break;
       }
        printf("%d\n", sum);
        return 0;
    }

1.32continue语句

  • continue 语句的作用是跳过循环体中剩余的语句而强制进入下一次循环.

例:输出2位数中所有能同时被3和5整除的数

#include<stdio.h>
int main()
{ int n;
for (n = 10; n < 100; n++)
	{
	if (n % 3 != 0 || n % 5 != 0) 
		continue;      //n不满足要求,结束本次循环//
	printf(" %5d\n", n);
	}
	return 0;
}
  • break与continue的对比:break用来结束所有循环,循环语句不再有执行的机会;continue用来结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。

1.4 循环嵌套

例:打印九九口诀表

#include <stdio.h>
int main()
{
    int i, j, n;
    scanf("%d", &n);
    for (i = 1; i <= n; i++) 
    {
        for (j = 1; j <= i; j++) 
        {
            printf("%d*%d=%-4d", j, i, i * j);
        }
        printf("\n");
    }
    return 0;
}
  • 在一个循环体语句中又包含另一个循环语句,称为循环嵌套。

学习体会

  1. 目前对循环结构还是非常不熟练,写题目的时候会想很久都没有思路,要借鉴一下才可以开始写代码。
  2. 还不能灵活使用三种循环语句熟练解决问题。

2.编程技巧总结

求交错序列前N项和

计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和

#include<stdio.h>
int main()
{
	int n, i, c;
	double a, b, sum;
	a = 1;
	b = 1;
	sum = 0;
	c = 1;
	scanf("%d", &n);

	for (i = 0;i < n;i++)
	{
		sum += a / b * c;
		a++;
		b += 2;
		c = -c;
	}
	printf("%.3f", sum);
	return 0;
} 

特殊a串数列求和

给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和

#include<stdio.h>
int main()
{
	int a, n, i, sum;
	double b;
	sum = 0;
	b = 0;
	scanf("%d %d", &a, &n);

	for (i = 1;i <= n;i++)
	{
		b = b * 10 + a;    //组成n个a//
		sum += b;     //求a的和//
	}
	printf("s = %d", sum);
	return 0;
}

打印菱形图形

i k j
1 3 1
2 2 3
3 1 5
4 0 7
5 1 5
6 2 3
7 3 1

解题思路:

1.外循环控制行数:i
2.内循环控制空格数:k
3.内循环控制个数:j*

(k = |4-i|)
(j = 7-2*|4-i|)
#include<stdio.h>
#include<math.h>
int main()
{ 
	int i, j, k;
	int n;
	scanf("%d", &n);
	for (i = 1;i <= 7;i++)
	{
		for (k = 1;k <= abs(4 - i);k++)
			printf(" ");
		for (j = 1;j <= 7 - 2 * abs(4 - i);j++)
			printf("*");
		printf("\n");
	}
	return 0;
}

整数四则运算

#include<stdio.h>
int main()
{ 
	int a, b;
	scanf("%d%d", &a, &b);
	printf("%d + %d = %d\n", a, b, a + b);     //输出a+b的值//
	printf("%d - %d = %d\n", a, b, a - b);     //输出a-b的值//
	printf("%d * %d = %d\n", a, b, a * b);     //输出a*b的值//
	printf("%d / %d = %d\n", a, b, a / b);     //输出a/b的值//
	return 0;
}

3.PTA实验作业

3.1数列求和问题

特殊a串数列求和

特殊a串数列求和

3.1.3 PTA提交列表及说明

特殊a串数列求和

  1. 刚开始以为是字符串的相加,然后多读了几遍以后发现不是,只是一串数列求和。(也就是2+22+222+2222+...)

3.2打印菱形图形

打印菱形图形

3.2.3 PTA提交列表及说明

打印菱形图形

  1. 之前打代码的时候没有可以关注每一行开始的空格,就会导致输出的图形不是一个菱形。
    2.每一行的*都在渐增或者渐减,要找到每一行的规律。

printf调试如何检查错误

3.3.1 单步调试截图

3.3.2 代码截图

龟兔赛跑

  1. 在循环内设计一个printf输出观察变量,就可以观察到每一次循环的变量值。
posted @ 2020-11-22 22:40  Lzwx2  阅读(228)  评论(0编辑  收藏  举报