码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-11-12 21:53:08      阅读:491      评论:0      收藏:0      [点我收藏+]

标签:clu   数据   有关   查看   输入输出   c语言   dig   学习   区别   

(一)改错题

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:将for内的逗号改为;

技术分享编译错误!

仔细查看程序后,发现变量输入输出格式并不匹配

技术分享技术分享

错误信息4:fahr变量定义为整型,但输出确是以浮点型输出

改正方法4:将%3.0f改为%d

错误信息5:技术分享技术分享

错误信息5:celsius为double型,与计算结果不匹配

改正方法5:在5/9前加强制类型转换(double)

运行正确!技术分享

二.学习总结:

1.详细描述程序的执行过程,即说明程序的每一步是执行的哪条代码,执行顺序如何。循环需描述前两次循环和最后一次循环的详细执行过程。最后说明程序实现的功能是什么。

答:①定义了四个整形常量i num odd even

       ②分别给odd和even赋初值0

       ③进入for循环,i=1,条件为真

       ④输出一个整数num,判断num的奇偶性,并给相应的统计奇偶的个数的数值加一,此为第一次循环

       ⑤执行i++,此时i=2,条件为真,开始第二次循环

       ⑥输入一个整数num,判断奇偶性并给统计其个数的数值加一,此为第二次循环

       ⑦重复执行

       ⑧当i=11时,条件为假,无法执行该循环,故循环结束

实现功能:输入任意的10个整型数,分别统计其中奇数的个数和偶数的个数

2.增量运算符

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

结果为技术分享

该增量运算符本身是有不同的,++i指先让i自加,而后执行语句,i++指先执行语句,而后i自加,但在本程序中,增量运算符在单独使用时,前缀和后缀并没有影响。

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

结果为技术分享

第一条输出语句printf("%d\n",i++);是先输入i的值,而后i的值加一;第二条输出语句printf("%d\n",++j); 是先讲j的值加一,而后输出。说明增量运算符在语句运行时是有一定区别的。两条输出语句执行完后,i和j的值均为3.

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

1、技术分享

2、技术分享

3、技术分享

4、技术分享

结合1,2来分析,缩进的格式并不相同,但结果是一样的,因此循环体与缩格并无关系。

结合2,3来分析,很明显3多了{},输出结果不同;结合3,4都有{},但是里边所含的语句个数不同,输出结果也不同,因此与{}有关。

第二种缩进不正确

4.对其他你认为需要进行总结的内容进行总结。

1、要注意增量符i++与++i的区别,正确使用。

2、for语句中的判断条件是否成立应用“==”来表示,“=”为赋值不要混淆。

三.实验总结
1.(1)题目
 求奇数分之一序列前N项和
本题要求编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。
(2)流程图

   技术分享

(3)源代码

 

  #include<stdio.h>

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

 

(4)实验分析:

问题:把“sum = sum + 1.0 / i”写成了“sum = sum + 1 / i”

原因:精确度不准确,导致结果错误

解决办法:把“sum = sum + 1 / i”改为“sum = sum + 1.0 / i”

(5)本题PTA提交列表

技术分享

3. (1)题目:奇偶分家
 给定N个正整数,请统计奇数和偶数各有多少个?

(2)流程图

技术分享

(3)源代码

 

  #include<stdio.h>

  int main()
  {
   int N,i,x,count1=0,count2=0;
   scanf("%d",&N);
   for(i=0;i<N;i++)
   {
    scanf("%d",&x);
    if(x%2==1)
      count1++;
    else
      count2++;
   }
   printf("%d %d",count1,count2);

  }

 

(4)实验分析

问题:if语句内的判断只写了一个等号

原因:=为赋值,if内==才是判断

改正方法:改为==

(5)本题PTA提交列表

 

技术分享

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

技术分享

技术分享

(3)源代码

 

  #include <stdio.h>

  #include <string.h>
  #define N 10
  int main()
  {
      int letter=0,blank=0,digit=0,other=0,i;
      char x;
      for(i=0;i<N;i++)
      {
       scanf("%c",&x);
       if((x>=‘a‘&&x<=‘z‘)||(x>=‘A‘&&x<=‘Z‘))
          {
              letter++;
          }
          else if(x==‘ ‘||x==‘\n‘)
          {
              blank++;
          }
          else if(x>=‘0‘&&x<=‘9‘)
          {
              digit++;
          }
          else
          {
              other++;
          }
  }     
      printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
      return 0;
  }

 

(4)实验分析

问题:if((a >= "a"&& a <="z")||(a >= "A"&& a <= "Z"))

原因:判断的是字符,要用‘’

改正方法:if((a >= ‘a‘ && a <= ‘z‘)||(a >= ‘A‘ && a <= ‘Z‘))

(5)本题PTA提交列表

技术分享

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

技术分享

 

(3)源代码

 

  #include<stdio.h>

  int main()
  {
  int i,j=3,N;
  double a=1,b;
  scanf("%d",&N);
  if(N!=1)
  {
  for(i=2;i<=N;i++)
  {
  b=(double)i/j;  
  if(i%2==0)
  {
  b=-b;
  } 
  a=a+b;
  j=j+2;
  }
  }
  printf("%.3f",a);
  return 0;
  }

 

 

(4)实验分析

发现运行结果i数据不精确时,要仔细检查,常常是要使用强制类型转换的!

(5)本题PTA提交列表

技术分享

 四.博客互评

         http://www.cnblogs.com/zrx--/p/7814055.html

         http://www.cnblogs.com/ziluo/p/7819483.html

         http://www.cnblogs.com/xiaoqi1/p/7821666.html

 

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

标签:clu   数据   有关   查看   输入输出   c语言   dig   学习   区别   

原文地址:http://www.cnblogs.com/J9810/p/7819791.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!