第五次C语言作业
(一)改错题
输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉。计算公式如下:
c = 5×(f-32)/9 其中,c表示摄氏温度,f表示华氏温度。
源程序(有错误的程序)
#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;
}
错误信息1:
错误原因:for语句后多加了;
改正方法:去掉for语句后的;
错误信息2:
错误原因:for语句中括号里的表达式用了“,”隔离
改正方法:将“,”换成“;”
错误信息3:
错误原因:前面声明变量时fahr为整型,但输出时fahr的格式化输出符号错误,并且celsius的格式化输出格式也有问题
改正方法:将第15行printf("%3.0f %6.1f\n", fahr, celsius); 改成printf("%d %.1f\n",fahr,celsius);
错误信息4:
错误原因:for语句后有多条语句,但是for后未添加“{}”
改正方法:在13行和第16行插入“{}”
错误信息5:
错误原因:原题为每次循环的华氏度的温度增加2,而在错误的源代码中,每次循环中华氏度只增加1
改正方法:将for语句中的“fahr++”改为“fahr += 2
错误信息6:
错误原因:计算公式不对
改正方法:celsius = 5 /9 * (fahr - 32.0)改为celsius = 5 * (fahr - 32.0) / 9
(二)学习总结
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的初始值赋为零
3、将oeven赋初始值赋为零
4、进入for循环,当输入的整形数据数量大于i的时候,跳出for循环语句
5、输入一个整型变量num
6、进入选择语句。判断输入的值能否被2整除
7、若判断结果为真,则执行even加一
8、若判断结果为假,则执行else语句,odd加一
9、回到for循环。判断i是否<=10.条件为真。继续执行for循环,条件为假,跳出循环
10、输出even和odd最后的结果
第一次循环:输入一个整形变量,判断是否能被2整除,判断为真则even加一;否则执行else语句,odd加一,I+1=2,2<10,继续for循环语句。
第二次循环:输入一个整形变量,判断是否能被2整除,判断为真则even加一,,否则执行else语句,odd加一 ,I+1=3,3<10,继续for循环语句。
最后一次循环:输入一个整形变量,判断是否能被2整除,判断为真则even加一,,否则执行else语句,odd加一,I+1=11,11>10,跳出for循环语句。
该程序的功能是输入10个整型数据,由系统判断该数值是奇数还是偶数,10个数输入完毕后统计奇数与偶数的个数,并输出结果。
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;
}
运行结果

增量运算符在单独使用时,前缀和后缀形式没有区别
(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;
}
运行结果

此程序首先定义了两个变量i和j,并且赋初值为2,只是i的增量运算符为后缀型,而j的增量运算符为后缀型。当执行i的增量运算符时,先执行输出语句,再对i执行增量操作层,所以i的值输出为2,即为增量前的值;而执行j的增量运算符时,首先对j执行增量操作,再执行输出命令,因此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、
1 2 之间的差别为缩格的不同,结果上二者完全相同,效果完全相同,因此证明循环体的认定与缩格并没有关系。
2 3之间的差别为括号的不同,结果上二者完全不同,一个为横排,一个为竖排,二者的区别在于大括号括起的位置不同
3 4之间的差别为在于括号的位置不同,结果导致4没有换行
循环体的认定与缩格形式是无关
输出格式与括号的位置与包含关系有关系
(三)实验总结
1、 求奇数分之一序列前N项和
(1)题目 本题要求编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。
(2)流程图

(3)源代码
#include<stdio.h>
int main()
{
int x,N;
double sum;
sum=0;
scanf("%d",&N);
for(x=1;x<=N;x++)
{
sum+=1.0/(2*x-1);
}
printf("sum = %.6f",sum);
return 0;
}
(4)本题PTA提交列表

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

(3)源代码
# include <stdio.h>
int main()
{
int N,i,m,num1=0,num2=0;
scanf("%d",&N);
for(i=1;i<=N;i++)
{
scanf("%d",&m);
if(m%2==0)
num1++;
else
num2++;
}
printf("%d %d\n",num2,num1);
return 0;
}
(4)本题PTA提交列表

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


(3)源代码
#include<stdio.h>
int main()
{
char c;
int j;
int letter=0,blank=0,digit=0,other=0;
for(j=1;j<=10;j++)
{
scanf("%c",&c);
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letter+=1;
else if(c==' '||c=='\n')
blank+=1;
else if(c>='0'&&c<='9')
digit+=1;
else
other+=1;
}
printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
return 0;
}
(4)本题PTA提交列表

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

(3)源代码
#include<stdio.h>
#include<math.h>
int main(void)
{
int deno=1,fl=1,i,n;
double sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
sum+=1.0*fl/deno*pow(-1,i%2);
fl++;
deno=2*fl-1;
}
printf("%.3lf",sum);
return 0;
}
(4)本题PTA提交列表

(四)博客互评
http://www.cnblogs.com/ying-7/p/7818967.html
http://www.cnblogs.com/english123-/p/7815142.html
http://www.cnblogs.com/XDD--/p/7820467.html
第五次C语言作业的更多相关文章
- C语言作业评价标准
C语言作业评价标准 作业内容: 每周作业分为基础作业.挑战作业和预习作业: 基础作业为本周所学内容的巩固: 挑战作业包括但不仅限于所学知识的综合运用: 预习作业为下周所学内容的任务单,要求必须在课前完 ...
- 第五周博客作业 <西北师范大学| 周安伟>
第五周博客作业 一,助教博客链接https://home.cnblogs.com/u/zaw-315/ 二,本周工作查阅项目汇报,班级微信群.对同学们的中期项目汇报进行查看,解决上周留言问题,对及时出 ...
- 第一次c语言作业。
第一次c语言作业 作业1 2.1 你对软件工程专业或者计算机科学与技术专业了解是怎样? 我认为计算机科学与技术是研究信息过程.用以表达此过程的信息结构和规则及其在信息处理系统中实现的学科.这门学科是为 ...
- 我的第三次C语言作业
我的第三次C语言作业 这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-2 这个作业要求在哪里 https://edu.cnblogs.co ...
- C语言第五次博客作业--函数
一.PTA实验作业 题目1:使用函数判断完全平方数 1. 本题PTA提交列表 2. 设计思路 3.本题调试过程碰到问题及PTA提交列表情况说明. 部分正确 :将else的情况放入for循环内,导致循环 ...
- C语言第五次博客作业
一.PTA实验作业 题目1:6-6 使用函数输出水仙花数 1. 本题PTA提交列表 2. 设计思路 (1) 首先先定义narcissistic函数. (2)定义四个整形变量n,a,d,cnt,sum, ...
- C语言作业--函数
一.PTA实验作业 题目1: 400-499 中4出现的次数 1. 本题PTA提交列表 2. 设计思路 一.main函数 1.函数声明int fun(int x) 2.定义变量i,k,i表示输入的值, ...
- C语言作业007
问题 答案 这个作业属于那个课程 C语言程序设计1 这个作业要求在哪里 我在这个课程的目的是 学习并掌握C语言 这个作业在那个具体方面帮助我实现目标 参考文献 四 作业格式 1PTA作业贴图 1.1题 ...
- C语言Ⅰ作业-05
这个作业属于哪个课程 C语言程序设计Ⅰ 这个作业要求在哪里 https://www.cnblogs.com/tongyingjun/p/11722665.html 我在这个课程的目标是 熟练掌握如何用 ...
随机推荐
- iOS 11 导航栏 item 偏移问题 和 Swift 下 UIButton 设置 title、image 显示问题
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- Java可重入锁如何避免死锁
本文由https://bbs.csdn.net/topics/390939500和https://zhidao.baidu.com/question/1946051090515119908.html启 ...
- LeetCode & 118-Pascal's Triangle-Easy
Array Description: Given numRows, generate the first numRows of Pascal's triangle. For example, give ...
- 将Python程序打包为exe方法
将Python程序打包为exe文件,需要使用到的工具是pyinstaller pyinstaller是一个多平台的Python程序打包为exe的免费工具 安装pyinstaller: 1,在Windo ...
- AngularJS1.X学习笔记8-自定义指令(上)
AngulaJS的指令是一种非常强大的特性,一个ng-repeat就能让我们非常方便的展示一个数据列表,指令相当于是一个组件,为我们将一些东西封装起来了,提供了复用的可能性.个人认为自定义指令还是比较 ...
- 移动端300ms与点透总结
300ms,主要发生在mobile 为啥会出现300ms延迟现象 浏览器想知道用户是否dobule tap(双击缩放) 下列情况不会出现300ms延迟 桌面浏览器 meta的viewport设置了us ...
- (java基础)Java输入输出流及文件相关
字节流: 所有的字节输入输出都继承自InputStream和OutputStream,通常用于读取二进制数据,最基本单位为单个字节,如图像和声音.默认不使用缓冲区. FileInputStream和F ...
- FatMouse's Speed ~(基础DP)打印路径的上升子序列
FatMouse believes that the fatter a mouse is, the faster it runs. To disprove this, you want to take ...
- JavaScript简单重写构造器的原型
//简单重写原型对象: //一个构造函数Person function Person(){ } //重写Person的原型 //把Person的原型赋值给一个新的对象 是我们重写的过程 Person. ...
- 关于vertical-align和line-height的真知灼见
本文的重点是了解vertical-align和line-height的使用 涉及到的名词:基线,底端,行内框,行框,行间距,替换元素及非替换元素,对齐.只有充分理解这些概念才会灵活运用这两个属性. 什 ...