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

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

0.展示PTA总分

1.本章学习总结

1.1 for循环语法

for(表达式1;表达式2;表达式3)
{
   语句;
}

注意事项:

*表达式1:通常为循环变量赋初值。
*表达式2:循环条件,判断是否继续执行循环。
*表达式3:更新循环变量的值。
*分号,用来分隔三个表达式,不可省略!for(;;)是死循环。
*适用于固定次数的循环。
*循环条件缺少时或循环变量不更新都会造成死循环。
eg.
循环输入6个月的工资数,计算半年内的平均工资。

int i;
double salary;//工资
double TotalSalary = 0;//6个月的总工资
double AvgSalary;//6个月的平均工资
for(i = 0;i < 6; i++)
{
  printf("请输入第%d个月的工资:",i + 1);
  scanf("%lf",&salary);
  TotalSalary += salary;//累加
}
  AvgSalary = TotalSalary / 6;//计算平均工资

1.2 while、do while循环语法

1.2.1 while循环

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

注意事项:

*适用于未知次数的循环
*当循环体语句只是一条语句时,表达式可以是任意合法的语句。

1.2.2 do while循环

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

注意事项:

*特点:先执行,再判断。先执行一遍循环操作,符合条件,循环继续执行,否则循环退出。

int a =1,b = 10;
//进入循环体
do{
  b -= a;//b=10-1=9
  a++;//a=2
}while(b--<0);//b=9>0,循环条件为假,结束循环;9--
//执行循环语句后b的值为8

1.3 跳出循环相关语句breakcontinue

1.3.1 break语句

作用:跳出循环,执行循环之后的语句。


eg.

  //循环输入玩家年龄,如果年龄为负停止输入,提示输入错误
  int age;//输入玩家年龄
  for(;;)
  {
     printf("请输入玩家年龄:");
     scanf("%d",&age);
     //判断
     if(age<0)
       {
          printf("年龄不能为负数!程序强制退出!
");
          break;
       }
   }

1.3.2 continue语句

作用:跳过本次循环,继续下次循环!

eg.

//循环输入5个玩家的年龄,统计年龄为负的录入次数
int age;//年龄
int i;//循环变量
int count = 0;//计数器变量
for(i = 0;i < 5;i++)
{
 printf("请输入玩家年龄:");
 scanf("%d",&age);
 if(age >= 0)//跳过正确的情况
       continue;
 count++;//输入错误则计数器+1
}
printf("输入年龄为负数的次数是:%d
",count);

continue语句和break语句的区别:

1.break是结束循环,而continue只是跳过后面语句继续循环。
2.break除了可以中止循环外,还用于switch语句,而continue只能用于循环。

1.4 循环嵌套

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

eg.

// 打印九九口诀表
#include<stdio.h>

int main()

{
   int Row, Column, input;// Row是行 Column是列 input是输入的数据
   scanf("%d", &input);

   for (Row = 1; Row <= input; Row++)
   {
       for (Column = 1; Column <= Row; Column++)
           printf("%d*%d=%-4d", Column, Row, Row * Column);

           printf("
");
   }
   return 0;
}

2 编程技巧总结

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

#include <stdio.h>
int main()
{
   int i,n;//定义循环变量,循环次数

   int flag;//利用flag实现符号的交换

   double sum;
   scanf("%d", &n);
   flag = 1;
   sum = 0;
   for (i = 1; i <= n; i++)
   {
   	sum = sum + flag*i * 1.0 / (2 * i - 1);
   	flag = -flag;//交换符号
   }
   printf("%.3f", sum);
   return 0;
}

2.2 字符转数字

char ch;
scanf("%c",&ch);
printf("%d",ch - '0');

2.3.1 大写字母转小写

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

2.3.2 小写字母转大写

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

2.4 图形打印:菱形图案

代码示例:

#include<stdio.h>
#include<math.h>
int main()
{
   int i, j, k;

   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("
");
   }
   
   return 0;
}
  

总结:

找到外循环控制行数与内循环控制空格数、内循环控制“*”个数的关系,用for循环解决。

2.5 数字逆序问题

while(a>0)
{
 b=b*10+a%10;
 a=a/10;
}

3.PTA实验作业

3.1 数列求和问题

3.1.1 伪代码思路

int 循环变量为i,循环次数为n;
int 每项的值为x,累加总和为sum,每项分母为m;
for (进入循环)
{
 //判断每项的符号
 if(分子为偶数,即i为偶数)
   {x为负值}
 else(分子为奇数,即i为奇数)
   {x为正值}
 进行累加;
 m的值递增+2;
}
 输出sum;

3.1.2 代码截图

3.1.3 PTA提交列表及说明

答案正确,未出现调试错误。

3.2 图形打印问题:菱形图案

3.2.1 数据处理

3.2.2 代码截图

3.2.3 PTA提交列表及其说明

格式错误:

第一次提交时,未注意到题目给定的要求“第一行图形符号前面有5个空格”,搞错了i与k之间的关系,重新思考后,得出k=|4-i|+2,重新提交,答案正确。

3.3 学习造printf调试代码——龟兔赛跑

3.3.1 单步调试截图


·循环内自己设计printf语句输出变量,直观了解每一次循环的变量值。

3.3.2 代码截图


3.3.3 PTA提交列表及其说明

第一次提交,没注意输出格式,改正后,答案正确。

原文地址:https://www.cnblogs.com/SONGminusone/p/14018827.html