c语言第一次实验报告

 

一.实验题目,设计思路,实现方法

题目1:

4-6 输出华氏-摄氏温度转换表(15 分)

输入2个正整数lowerupperlowerupper≤100),请输出一张取值范围为[lowerupper]、且每次增加2华氏度的华氏-摄氏温度转换表。

温度转换的计算公式:2,其中:C表示摄氏温度,F表示华氏温度。

 

输出格式:

第一行输出:"fahr celsius"

接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,保留1位小数)。

若输入的范围不合法,则输出"Invalid."。

设计思路:首先要对输入数值的范围进行判断,再对数据进行判断并限制循环次数,要注意华氏度是每次增加2,然后输出相应的数据。最后注意摄氏温度Celsius是6个字符宽度并保留1位小数。

 

实现方法:先用if-else对输入数值进行规范判断,然后在if语句中嵌入for循环对输入数据进行判断,并打印出相应数据(注意数据类型和输出格式)。

题目2:

4-5 求简单交错序列前N项和(15 分)

本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。题目保证计算结果不超过双精度范围。

设计思路:输入一个N值,再用一个循环对N进行判断得到序列所要运行的最后一项,输入相应的式子(主要对符号的判断),最后打印出sum值并保留3位小数。

实现方法:先用scanf函数输入N值,再用while语句进行项数判断;式子中的符号判断,我使用了pow函数(因此在程序的开头加入#include <math.h>);之后打印数据时注意下有效数字。

题目3:

4-2-6 到底是不是太胖了(10 分)

据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。

输入格式:

输入第一行给出一个正整数N≤ 20)。随后N行,每行给出两个整数,分别是一个人的身高H(120 < H< 200;单位:厘米)和真实体重W(50 < W ≤ 300;单位:市斤),其间以空格分隔。

输出格式:

为每个人输出一行结论:如果是完美身材,输出You are wan mei!;如果太胖了,输出You are tai pang le!;否则输出You are tai shou le!

设计思路:输入一个N值,对输入的行数和数据进行限定;再设置两个数组,再对输入的值进行多次循环判断,在判断语句条件中要注意绝对值的判断。

实现方法:先输入N值,再导入两个数组,用for循环对数组进行赋值,再用一个for循环进行条件判断,在条件判断中要用到fabs()因此开头要加#include <math.h>  ,在判断中可用if-else if语句成分三个判断分支。

二.源程序

4-6 

#include<stdio.h>
int main()
{
int low, up;
scanf("%d %d", &low, &up);
double c=0;
if (low <= up&&up<=100&&low<=100) {
for (printf("fahr celsius\n"); low <= up; low += 2) {
c = 5.0 * (low - 32) / 9.0;
printf("%d%6.1lf\n", low, c);
}
}
else {
printf("Invalid.");
}
return 0;
}

4-5

#include <stdio.h>
#include <math.h>
int main()
{
double n, s ,i,m,a;
s = 0;
i = 1;
m = 1;
a = 2;
scanf("%lf", &n);
while (m <= n) {
s = 1 / i * pow(-1,a)+ s;
i = i + 3;
m++;
a++;
}
printf("sum = %.3f", s);
return 0;
}

4-2-6

 

#include <stdio.h>
#include <math.h>
int main()
{
int a, d,i,c;
int b, e;
double n;
scanf("%d", &a);
int h[21];int w[21];
for (b = 0; b < a; b++) {
scanf("%d %d", &c, &d);
h[b] = c; w[b] = d;
}
for (e = 0; e < a; e++) {
n = (h[e] - 100)*0.9 * 2;
if (fabs(w[e] - n) < n*0.1) {
printf("You are wan mei!\n");
}
else if (fabs(w[e] - n) >= n*0.1 && w[e] > n) {
printf("You are tai pang le!\n");
}
else if (fabs(w[e] - n) >= n*0.1 && w[e] < n) {
printf("You are tai shou le!\n");
}
}
return 0;
}

三.遇到的问题及解决方法,心得体会

1.对输出格式的重要,比如题目要求输出占据6个字符宽度的数据,而我多次没注意(还有先前实验中对空格的要求)2.在一些数学运算中多次没有在开头输入math.h头文件进行声明3.对数组的定义不够熟练,对[]内的数值没有明确概念和各个数值对应的数组值。最后经过百度和c语言书籍进行解决

因此在平时应要多多编程,用错误积累经验。不懂的地方可以求助于他人或自己百度和翻看书籍。做题时要认真,减少不必要的错误。

 

posted @ 2017-10-21 00:13  吴修恩  阅读(1117)  评论(0编辑  收藏  举报