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\n");             /* 显示表头 */
        /* 温度转换 */
        for (fahr = lower , fahr <= upper, fahr ++) ;
            celsius = 5 /9 * (fahr - 32.0);
            printf("%3.0f %6.1f\n", fahr, celsius); 

       return 0;
    }

对源程序进行编译,采用每次修改第一个错误并重新编译的方法,记录每个错误的错误信息、分析错误原因并给出正确的语句。

错误一

for后边不加逗号

改正方法:将逗号删去

错误二

for后小括号的语句应用分号隔开

改正方法 将括号里的逗号改成分号

错误三

for后边的语句体没有加括号

改正方法:将for后的语句体用花括号括起来

错误四

fahr为整形变量 应用%d  celsius应为一位小数

改正方法:printf("%d %.1f\n", fahr, celsius);

错误五

每次循环只加1

改正方法:

错误六

计算公式错误

改正方法:

(二)学习总结

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.定义整型变量
2.给odd和even赋初始值0
3.执行for语句
(1)执行i=1;
(2)输入num
(3)执行if语句,若为真,则执行even++;若为假,则执行odd++
(4)进行for循环,当i=2时,执行(2)(3)
(5)再进行for循环,直到i=11时,不符合for循环的条件,输出even和odd的值
程序实验的功能:
输入十个整数,判断十个整数中有几个偶数,几个奇数

2.增量运算符
(1)运行下面程序,结果是什么?增量运算符在单独使用时,前缀和后缀形式有区别吗?

#include <stdio.h>
int main()
{
    int i,j;
    i = 2;
    j = 2;
    i++;
    ++j;
    printf("i = %d\n",i);
    printf("j = %d\n",j);
    return 0;
}

增量运算符在单独使用时,i++是先执行其他语句再加1;++j是先加1再执行其他语句

(2)运行下面的程序,结果是什么?两条输出语句的执行过程是怎样的?说明什么问题?这两条输出语句执行完后,i和j的值分别是多少?

#include <stdio.h>
int main()
{
    int i,j;
    i = 2;
    j = 2;
    printf("%d\n",i++);
    printf("%d\n",++j);
    return 0;
}

运行结果:

执行过程:1.执行整型定义2.执行i=2,j=2;3.输出i的值4.执行i++;5.执行++j,将j的值加16.输出j说明的问题:i++是赋值,再加1;++j是先加1,再去赋值两条输出语句执行完后,i和j的值都是3

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

#include <stdio.h>
int main()
{
    int i;
    for(i = 1;i <= 5;i++)
        printf("*");
    printf("\n");
    return 0;
}

运行结果:

(2)

#include <stdio.h>
int main()
{
    int i;
    for(i = 1;i <= 5;i++)
        printf("*");
        printf("\n");
    return 0;
}

运行结果:

(3)

#include <stdio.h>
int main()
{
    int i;
    for(i = 1;i <= 5;i++)
    {
        printf("*");
        printf("\n");
    }
    return 0;
}

运行结果:

(4)

#include <stdio.h>
int main()
{
    int i;
    for(i = 1;i <= 5;i++)
    {
        printf("*");
    }
    printf("\n");
    return 0;
}

运行结果:

(1)(2)的运行结果相同,所以循环体的认定与缩格形式无关;(3)(4)的运行结果不同,(3)(4)程序中{}里的内容也不一样,而循环结构执行的是{}中的内容,所以循环体的认定与{}有关。
如果一个循环语句后面加了{},那么这个语句循环体为{}里面的内容,如果循环语句后面没有加{},那么循环体语句为循环语句后的第一条语句。
(1)(3)(4)是正确的

(2)是错误的

7-2 统计学生平均成绩与及格人数(10 分)

#include<stdio.h>
int main()
{
int n,x=0,i;
double a[10001],sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%lf",&a[i]);
if(a[i]>=60) x++;
sum+=a[i];
}
if(n==0) printf("average = 0.0\n");
else printf("average = %.1f\n",sum/n);
printf("count = %d\n",x);
return 0;
}

7-4 到底是不是太胖了(15 分)

#include<stdio.h>
#include<math.h>
struct student{
int sg,tz;
double bz;
}stu[20];
int main(){
int num,i;
double c;
scanf("%d",&num);
for(i=0;i<num;i++){
scanf("%d %d",&stu[i].sg,&stu[i].tz);
stu[i].bz=0;
}
for(i=0;i<num;i++){
stu[i].bz=(stu[i].sg-100)*0.9;
c=stu[i].bz-(double)stu[i].tz/2.0;
if(stu[i].bz*0.1>fabs(c)){
printf("You are wan mei!\n");
}
if(c>0&&stu[i].bz*0.1<=fabs(c)){
printf("You are tai shou le!\n");
}
if(c<0&&stu[i].bz*0.1<=fabs(c)){
printf("You are tai pang le!\n");
}
}
return 0;
}

7-6 统计学生成绩(10 分)

#include<stdio.h>
int main(void)
{
int N;
int i,x;
int a=0,b=0,c=0,d=0,e=0;
while(scanf("%d",&N)!=EOF){

for(i=0;i<N;i++){
scanf("%d",&x);

if(x>=90){
a++;
}else if(x>=80){
b++;
}else if(x>=70){
c++;
}else if(x>=60){
d++;
}else{
e++;
}
}
printf("%d %d %d %d %d\n",a,b,c,d,e);

}
return 0;
}

7-8 找出最小值(10 分)

#include<stdio.h>
int main(void)
{
int n,i,l,min;
scanf("%d",&n);
scanf("%d",&l);
min=l;
for(i=1;i<n;i++){
scanf("%d",&l);
if(min>l)
min=l;
}
printf("min = %d",min);
return 0;
}

时间: 2024-10-08 11:48:55

C语言程序设计第五次作业——循环结构(1)的相关文章

c语言程序设计第六次作业——循环结构(2)

(一)改错题 序列求和:输入一个正实数eps,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... ,精确到最后一项的绝对值小于eps(保留6位小数). 修改前的源代码 错误信息(1): 错误原因:用do while循环语句在while后面要加分号,这个语句特殊需牢记 改正方法:在while后面加上分号 错误信息(2): 错误原因:item = 1/ n;次语句中n定义为整型,所以1/n不会出现小数 改正方法:把 item = 1/ n; 改为 item = (double)1/

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

(一)改错题 序列求和:输入一个正实数eps,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... ,精确到最后一项的绝对值小于eps(保留6位小数). 输入输出样例: Input eps:1E-4 s = 0.835699 源程序(有错误的程序) #include<stdio.h> int main() { int flag,n; double eps,item,s; printf("Input eps: "); scanf("%f",

C语言程序设计第五次作业

(一)改错题 1.输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下: c = 5×(f-32)/9 其中,c表示摄氏温度,f表示华氏温度.错误信息1: 错误原因1:for语句后不能加分号. 改正方法:将if后的分号去掉 错误信息2: 错误原因2:for循环内语句大于一句时要加{} 改正方法:将for内语句用{}括起 错误信息3: 错误原因3:for内的语句要用:间隔 改正方法3:将f

C语言程序设计第5堂作业

一.本次课学习主要内容及知识结构点: 二.实验内容:(60分) 1. 求奇数和.输入一批正整数(以零或负数为结束标志),求其中的奇数和.试编写相应程序. 2. 展开式求和.输入一个实数 x,计算并输出下式的值,直到最后一项的绝对值小于0.00001 (保留4 位小数).要求定义和调用函数fact(n)计算n 的阶乘,可以调用pow()函数求幂.试编写相应程序. 3. 求序列前n项和(2/1+3/2+5/3+8/5+...).输入一个正整数n,输出 2/1+3/2+5/3+8/5 +"的前n项之和

C语言程序设计第八次作业

一.学习内容     本次课学习了一维数组的基本知识,需要大家对如下知识点进行总结:     1. 数组的定义,数组元素的引用,数组的初始化和赋值.     2. 明确以下问题:能否给数组名赋值?为什么?C语言会对数组下标做越界检查吗?那么我们写程序时应该注意什么?     3. 对数组数据的访问一定是跟循环结构分不开的,一般情况下,循环变量的值随数组元素的下标变化.学会灵活运行循环结构完成对数组数据的处理.     4.通过火柴棍等式问题,理解利用函数.数组对程序的优化. 二.实验内容    

C语言程序设计第6堂作业

          一.  本次课主要内容:             通过几个实例来进一步掌握循环结构的应用. 二. 实验内容:(70分) 1. 穷举算法(古典算术问题-搬砖头)某地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬一块.问用45人正好搬45块砖,有多少种搬法? 2. 猴子吃桃问题.一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个:第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半加一个.到第n天早上想再吃时,见只剩下一

2018上C语言程序设计(高级)作业- 第0次作业

1.翻阅邹欣老师博客关于师生关系博客,并回答下列问题 1)最理想的师生关系是健身教练和学员的关系,在这种师生关系中你期望获得来自老师的哪些帮助? 师生间的人际关系,是在教学过程中师生交往的基础上,通师生相互影响.相互认识.相互间信息交流而形成的.师生之间通过言语和非言语两种形式彼此传递信息和交流思想.观点.态度.情感等,双方交流的愿望.目的.动机.心理状态以及交流的时间.态度.方式等影响着交往的程度和水平,由此决定着二者之间的关系亲近程度,从而影响着学生对教师的评价,进而影响着孩子的学习:影响学

C语言程序设计第六次作业

(一)改错题 序列求和:输入一个正实数eps,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... ,精确到最后一项的绝对值小于eps(保留6位小数). 输入输出样例: Input eps:1E-4 s = 0.835699 源程序(有错误的程序) #include<stdio.h> int main() { int flag,n; double eps,item,s; printf("Input eps: "); scanf("%f",

C语言程序设计第7堂作业

     一.本次课主要内容: 本次以计算圆柱体体积为例,通过定义体积计算功能的函数和主函数调用的例子,引出函数定义的一般形式:函数首部加函数体,且在函数结尾处通过return 语句返回结果.本节要重点掌握两点: (1)形参.实参及参数传递.形参只能用变量表示,在函数中起作用:实参可以是变量.常量或表达式,在主调函数中.实参与形参要个数一致,类型一致.参数传递时,实参把变量.常量的值或者表达式结果值传递给形参. (2)函数定义首部与声明.二者形式相似,函数声明的目的主要是说明函数的类型和参数的情