C语言程序设计第五次作业-循环结构1

(一)改错题

输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉。计算公式如下:
c = 5×(f-32)/9
其中,c表示摄氏温度,f表示华氏温度。
输入输出样例1:
  Enter lower:32
  Enter upper:35
  fahr celsius
  32 0.0
  34 1.1
输入输出样例2:
  Enter lower:40
  Enter upper:30
  fahr celsius
源程序(有错误的程序)

#include <stdio.h>
int main(void)
{    
    int fahr , lower, upper;  /* fahr表示华氏度 */
    double celsius;        /* celsius表示摄氏度 */ 

    printf("Enter lower:");
    scanf("%d",&lower);
    printf("Enter upper:");
    scanf("%d",&upper);
    printf("fahr  celsius
");             /* 显示表头 */
    /* 温度转换 */
    for (fahr = lower , fahr <= upper, fahr ++) ;
        celsius = 5 /9 * (fahr - 32.0); 
        printf("%3.0f %6.1f
", fahr, celsius); 

   return 0; 
}

错误信息1:
错误原因:for循环中的条件应该用逗号隔开。
改正方法:逗号改成封号。
错误信息2:编译正确,结果不是想要的,如图

错误原因: for最后的语句有封号。
改正方法:for最后的封号去掉。
错误信息3:

错误原因:for下面要执行的语句没有用大括号括起来。
改正方法:for下面的用大括号括起来。
错误信息4:
错误原因:源程序第16行的输出语句中 fahr 与 celsius 对应的是 %3.0f %6.1f 。
改正方法:fahr整形输入的,应该用%d输出;celsius是用double输入,结果应保留一位小数。

错误信息5:
错误原因:这个公式中5/9始终为0。
改正方法:除以9最后写
错误信息6:
错误原因:增加了1
改正方法:题中要求每次增加2
运行结果:正确
二)学习总结

1.有如下程序:

include <stdio.h>

int main()
{
int i,num,odd,even;
odd = 0;
even = 0;
for(i = 1; i <= 10;i++)
{
scanf("%d",&num);
if(num % 2 == 0)
{
even++;
}
else
{
odd++;
}
}
printf("%d %d",even,odd);
return 0;
}
详细描述程序的执行过程,即说明程序的每一步是执行的哪条代码,执行顺序如何。循环需描述前两次循环和最后一次循环的详细执行过程。最后说明程序实现的功能是什么。
1.定义整型变量 i,num,odd,even
2.将odd,even赋值为0
3.执行for循环(i=1时,判断输入的数除以2,是否为偶数,如果是偶数,even+1,如果是奇数,odd+1)
4.输出even和odd
实现的功能就是将10个数字分类,分为奇数和偶数,最后输出结果是奇数和偶数的个数
2.增量运算符
(1)运行下面程序,结果是什么?增量运算符在单独使用时,前缀和后缀形式有区别吗?

include <stdio.h>

int main()
{
int i,j;
i = 2;
j = 2;
i++;
++j;
printf("i = %d ",i);
printf("j = %d ",j);
return 0;
}
运行结果:
增量运算符在单独使用时没有区别,都是表示加1
(2)运行下面的程序,结果是什么?两条输出语句的执行过程是怎样的?说明什么问题?这两条输出语句执行完后,i和j的值分别是多少?

include <stdio.h>

int main()
{
int i,j;
i = 2;
j = 2;
printf("%d ",i++);
printf("%d ",++j);
return 0;
}

运行结果:
执行过程:i++代表先使用,在加1;++j表示先加1,在使用。
说明:++的位置不同,执行的过程也不同。
这两条输出语句执行完后,i和j的值分别是2,3.

3.有些循环语句后面有{},有些没有,有些语句有缩进,运行下面的四个小程序,运行结果有什么不同?循环体的认定与缩格形式是否有关?与{}是否有关?那么,应该如何正确判断一个循环语句中的循环体?下面的程序中,哪几种格式是正确的缩进格式。
(1)

include <stdio.h>

int main()
{
int i;
for(i = 1;i <= 5;i++)
printf("*");
printf(" ");
return 0;
}
运行结果:

2)

include <stdio.h>

int main()
{
int i;
for(i = 1;i <= 5;i++)
printf("*");
printf(" ");
return 0;
}
运行结果:

(3)

include <stdio.h>

int main()
{
int i;
for(i = 1;i <= 5;i++)
{
printf("*");
printf(" ");
}
return 0;
}
运行结果:

(4)

include <stdio.h>

int main()
{
int i;
for(i = 1;i <= 5;i++)
{
printf("*");
}
printf(" ");
return 0;
}
运行结果:

运行结果的不同在于:*的排列方式不同。
循环体的认定与缩格形式无关,与{}有关。
应该如何正确判断一个循环语句中的循环体:{}扩起来的
下面的程序中,哪几种格式是正确的缩进格式:1.3.4
4.对其他你认为需要进行总结的内容进行总结。
for循环中条件用封号隔开,而不是逗号。

(三)实验总结(我的学号尾数是单数,应写1.3.5.7)
(1)题目
7-1 求奇数分之一序列前N项和(10 分)
本题要求编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。
(2)流程图

(3)源代码

include<stdio.h>

int main()
{
int i,x = 1,N;
double sum = 0,y;
scanf("%d",&N);
for(i = 0;i<N;i++)
{
y = (double)1/x;
sum = sum+y;
x = x+2;
}
printf("sum = %lf",sum);
return 0;
}
(4)实验分析
本题较简单,自己可以独立做出
(5)本题PTA提交列表

7-3 奇偶分家(10 分)
(1)题目
给定N个正整数,请统计奇数和偶数各有多少个?
(2)流程图

(3)源代码

include<stdio.h>

int main()
{
int N,i,a,b=0,c=0;
scanf("%d",&N);
for(i = 0;i < N;i++)
{
scanf("%d",&a);
if(a % 2 != 0)
{
b++;
}
else
{
c++;
}
}
printf("%d %d",b,c);
return 0;

}
(4)实验分析
记得初始化所定义的变量
(5)本题pta提交列表

7-5 统计字符(15 分)
(1)题目
本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
(2)流程图

(3)源代码

include<stdio.h>

include<string.h>

int main()
{
int i,letter = 0,blank = 0,digit = 0,other = 0;
char s;
for(i = 0;i<10;i++)
{
scanf("%c",&s);
if(s >= 'A'&&s <= 'Z'||s >= 'a'&&s <= 'z')
{
letter++;
}
else if(s == ' '||s == ' ')
{
blank++;
}
else if(s >= '0'&&s <= '9')
{
digit++;
}
else
{
other++;
}

}
printf("letter = %d, blank = %d, digit = %d, other = %d", letter,blank,digit,other);
return 0;

}
(4)实验分析
问题:不知道怎么判断这些字符
解决:问同学,现在知道了
(5)本题pta提交列表

7-7 求交错序列前N项和(15 分)
(1)题目
本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。
(2)流程图

(3)源代码

include<stdio.h>

include<math.h>

int main()
{
int N = 0,i = 1;
double x = 0,sum = 0;
scanf("%d",&N);
for(i = 1;i <= N;i++)
{
x=pow(-1,i+1)i/(2i-1);
sum=sum+x;
}
printf("%.3f",sum);
return 0;

}
(4)实验分析
问题:pow函数不会用
解决:看书,现在已解决。
(5)本题pta提交列表

(四)博客互评
1.

2.

3.

原文地址:https://www.cnblogs.com/zrx--/p/7814055.html