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

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

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

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

1.1 for循环语法

    for(表达式1;表达式2;表达式3)
{
循环体语句:在条件成立的情况下能够反复执行。
}

表达式2为真(1),循环能成立;为假(0),结束循环。
循环体中的语句只能是一条语句

复合语句在语法上被认为是一条语句

1.2 while、do while循环语法 (常用于循环次数未知的情况

while循环

        while(条件表达式)
       {
        进行的循环体内容;
        }

代码举例:

do-while循环

            do{
             进行的循环体内容;
             }while(条件表达式);

代码特点:保证能执行至少一次循环,适合于先循环后判断循环条件的情况。

如:统计整数的位数。

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

break语句强制循环结束;不再执行循环体后面的语句,跳出循环;
continue语句仅跳过循环体中其后面的语句,继续下次循环。
如:

     #include<stdio.h>
     int main ()     
      {
     int i,m;
     scanf("%d",&m);
    for(i=x;i<=m/n;i++)
    {
      if(m%i==0)
       break;
     if(i>m/2&&m!=1)
      printf("ok");
     else 
    printf("no");
     return 0;
    }

上述对素数的判断中,若break语句满足,则m一定不为素数,后面的判断不用进行。break语句使循环提前结束,不再进行for循环的内容

```c
   #include<stdio.h>
 int main ()     
  {
 int i,m;
 scanf("%d",&m);
for(i=x;i<=m/n;i++)
{
  if(m%i==0)
   continue
 if(i>m/2&&m!=1)
  printf("ok");
 else 
printf("no");
 return 0;
}
```

改成continue语句后,当满足continue语句所在的判断后,此次循环结束,但for循环并没有结束,而是根据条件是否满足继续进行。

1.4 循环嵌套

简单来说就是在循环语句中再次加入循环语句,在大循环中加入小循环。
如计算1!+2!+3!+......100!

    #include<stdio.h>
    int main (void)
     {
     int i,j;
     double item,sum;
     sum=0;
    for(i=1;i<=100;i++)
   {
    item=1;
    for(j=1;j<=i;j++)
    item=item*j;
     sum=sum+item;
     }
    printf("1!+2!+3!+......100!= %e\n",sum);//使用指数形式输出
    return 0;
     }
 ###此题通过双层for循环,让内层计算i!的值,让外层计算阶层的累加值,将问题简单化。

学习体会:循环结构的用处很大,可与包括if-else分支结构和数组在内的多种内容相结合使用。

循环结构适用于解决需要重复执行,但每次执行都有所变化的情况。

多做题,多思考。先理清题意,再开始作答。

2 编程技巧总结(2分)

各种数列求和问题

数列求和问题关键在于找出数列通解*8(即各项与项数的关系),同时注意累加**的使用。
如:

    t=-t;
    sum+=t*i/(2*i-1);    //求交错序列前N项和 

    sum=sum+1.0/(2*i-1);    //求奇数分之一序列前N项和

    sum=sum+1.0/i;         //求N分之一序列前N项和

字符如何转数字

暴力方法:
大写字母转换为小写:
ch=ch-'A'+'a';
小写字母转换为大写:
ch=ch-'a'+'A';

逆序数字

关键在于通过取余来获取数字,寻找一个变量来储存数字,通过循环来保证数值。

     #include<stdio.h>
int main()
{
	int num; 
	int flag = 0;   //变量

	scanf("%d", &num);
	while (num!= 0)     
	{
		flag = flag * 10 + num % 10;
		num /= 10;               //去尾数
	}
	printf("%d", flag); 
	return 0;
}

3.PTA实验作业(6分)

3.1 数列求和问题

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

3.1.2 代码截图

3.1.3 PTA提交列表及说明

题目:

3.1.1

伪代码:

定义整型存放正整数n
定义双精度浮点数sum
定义flag用于变号
用户输入项数n
for循环(定义i;i增加至n;i累加)
sum累加,每一项=i/(2.0*i-1)*flag
flag进行变号
结束

3.1.2 代码

3.1.3 pta提交


这一题的思路是比较清晰的。注意使用flag进行变号,实现错位的符号变化。

3.2 图形打印问题

题目:

3.2.1 数据处理

输入i作为外循环改变量
定义j作为内循环改变量
分为两部分(上下)进行输出
第一个for循环输出空格(第一格5个空格为起点下半部分倒向计算)
第二个for循环输出(第一格一个为起点)

3.2.2 代码截图

3.2.3 PTA提交列表及说明


格式错误的出现是由于输出空格的失误。
这类图形输出题主要在于拆解输出。

3.3

题目:

3.3.1 单步调试截图

第一次:


发现没有输出

警告无返回值

![](https scanf("%d", &num);
max = num;😕/img2020.cnblogs.com/blog/2160553/202011/2160553-20201122222601642-1484472943.png)


第一个循环顺利进入


输出奇怪的数值。

修改后:

可正常输出。

3.3.2 代码截图

3.3.3 PTA提交列表及说明

posted @ 2020-11-22 22:40  落叶满长安  阅读(264)  评论(0编辑  收藏  举报