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)
第一个循环顺利进入
输出奇怪的数值。
修改后:
可正常输出。