南京邮电大学使用计算机求解问题实验一(C语言简单编程练习)

文章目录

一、 实验目的和要求

(1)初识C语言上机环境,学会编辑、编译、链接并运行程序,查找并修改简单的语法错误。

(2)正确调用输入输出处理的函数scanf( )、printf( )进行数据的I/O,观察输出格式,掌握键盘输入方法。

(3)初步认识顺序、分支、循环结构。

(4)需在PTA在线测评通过程序。

二、实验环境(实验设备)

硬件:微型计算机

在线平台:PTA

自备软件:VS / VS Code / Dev-C++ / 等

三、实验原理及内容

实验准备:在D盘上建立以自己学号命名的文件夹(例如:B25040101)(以后实验的所有文件存于此文件夹下);进入VS(或其他)集成开发环境,建立一个C项目,然后向该项目中以新建方式添加一个源文件,实验一的第1题可取名为:exp1_1.c,实验二的第3题可取名为:exp2_3.c等。

实验内容:实验一的题目选自实验指导书的实验1和实验2。

补充说明:先在自己电脑完成程序,自行准备多组数据进行运行测试,可使用调试工具;将已完成的代码复制到PTA平台相对于的实验作业集进行在线测评。

实验题目(1):编写程序exp1_1.c,求阶乘问题。

输入一个正整数n,输出n!。

实验解答:

源程序代码如下:

c 复制代码
#include<stdio.h>
int main(void)
{
	int N,i,prt;
	scanf("%d",&N);
	prt=1;
	for(i=1;i<=N;i++){
		prt=prt*i;
	}
	printf("%d",prt);
	return 0;
}

程序运行及分析:

1)运行程序,输入6,输出结果为720。

2)运行程序,输入12,输出结果为479001600。

3)运行程序,输入20,输出结果为-2102132736。这个结果错误。

思考该问题: 20的阶乘结果太大,超出了int型最大表示位数。

实验题目(2):编写程序exp1_2.c,计算摄氏温度26°C 对应的华氏温度。

计算公式:
F = 9 5 C + 32 , F=\frac{9}{5}C+32, F=59C+32,

式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。

输出格式:celsius = 26, fahr = 对应的华氏温度整数值

实验解答:

源程序中,如定义 int C=26 , F;

计算公式表达为:F = 9 * C / 5 + 32;

运行程序,输出结果为celsius = 26, fahr = 78。这个结果正确。

源程序中,如定义 int C=26 , F;

计算公式表达为:F = 9 / 5 * C + 32;

运行程序,输出结果为celsius = 26, fahr = 58。这个结果错误。

在数学中上面计算公式×与÷的顺序颠倒,结果是一样的,C语言中不可以颠倒。

思考该问题:这题出得有点问题吧,结果不一样啊,fahr=58输出的结果虽然不符合要求,但是计算过程是正确的,只是计算时精确度不一样。因为计算过程中所有数值为int型,所以在计算除法时会出现误差。

先乘后除时除法为234/5,等于46余4,舍去余数得46;

先除后乘时9/5=1余4舍去余数得1,再乘26得26。

源程序中,如定义 int C=26 ; double F; ,输出格式与要求不变,源程序代码如下:

c 复制代码
#include<stdio.h>
int main(void)
{
    int C,fahr;
    double F;
    C = 26;
    F = 9.0 * C / 5 + 32;
    fahr = F;
    printf("celsius = %d, fahr = %d", C, fahr);
    return 0;
}

实验题目(3):编写程序exp1_3.c,计算分段函数。

输入实数x,计算并输出下列分段函数f(x)的值(保留2位小数)。请调用函数sqrt()求平方根。

f\left(x\right)=x+12+2*x+1xx x≥0 x<0

输入输出格式如下所示:

输入示例:-0.5

输出示例:f(-0.50)=-2.75

实验解答:

源程序代码如下:

c 复制代码
#include<stdio.h>
#include<math.h>
int main(void)
{
    double x,y;
    scanf("%lf",&x);
	if(x<0){
	    y=pow(x,2)+2*x+1/x;
	}else{
	    y=sqrt(x);
	}
    printf("f(%.2lf)=%.2lf",x,y);
    return 0;
}
复制代码
程序运行结果:

1)运行程序,输入10,输出结果为f(10.00)=3.16。

2)运行程序,输入-0.5,输出结果为f(-0.50)=-2.75。

3)运行程序,输入0,输出结果为f(0.00)=0.00。

实验题目(4):编写程序exp1_4.c,生成3的乘方表。

输入一个非负整数n,生成一张3的乘方表,输出30 到 3n的值。可调用函数pow()求乘方,注:该函数返回值为double类型。

输入输出格式如下所示:

输入示例:3

输出示例:

pow(3,0) = 1

pow(3,1) = 3

pow(3,2) = 9

pow(3,3) = 27

源程序代码如下:

c 复制代码
#include<stdio.h>
#include<math.h>
int main(void)
{
	int n,i,y;
	scanf("%d",&n);
	y=0;
	for(i=0;i<=n;i++){
		y=pow(3,i);
		printf("pow(3,%d) = %d\n",i,y);
	}
	return 0;
}
复制代码
程序运行结果截图:
相关推荐
我是哈哈hh1 小时前
【Python数据分析】Numpy总结
开发语言·python·数据挖掘·数据分析·numpy·python数据分析
Michelle80231 小时前
24大数据 14-2 函数练习
开发语言·python
qq_381454991 小时前
Python学习技巧
开发语言·python·学习
勇气要爆发1 小时前
物种起源—JavaScript原型链详解
开发语言·javascript·原型模式
Gomiko2 小时前
C/C++基础(四):运算符
c语言·c++
freedom_1024_2 小时前
【c++】使用友元函数重载运算符
开发语言·c++
San30.2 小时前
深入理解 JavaScript OOP:从一个「就地编辑组件」看清封装、状态与原型链
开发语言·前端·javascript·ecmascript
郑州光合科技余经理2 小时前
基于PHP:海外版同城O2O系统多语言源码解决方案
java·开发语言·git·spring cloud·uni-app·php·uniapp
zmzb01032 小时前
C++课后习题训练记录Day43
开发语言·c++