南京邮电大学使用计算机求解问题实验一(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;
}
复制代码
程序运行结果截图:
相关推荐
无敌贵点大王38 分钟前
RTThread学习记录11——RT-Thread 设备模型吃透:UART/ADC/PWM/PIN 到底有什么区别?
c语言·stm32·学习·链表
Logic1011 小时前
C语言/数据结构位运算题解:异或XOR找出时尚聚会中的“独特颜色“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
qq_2518364572 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
郑州光合科技余经理3 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
知识分享小能手3 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
+VX:Fegn08954 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计
阿里嘎多学长4 小时前
2026-09-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
Escalating_xu5 小时前
【C 语言项目】数组和函数综合实践:从零实现控制台扫雷游戏
c语言
weixin_307779136 小时前
C++代码实现MATLAB中的ode23tb函数功能
开发语言·c++·算法·matlab
2601_966949656 小时前
为什么量化回测中 for 循环比 DataFrame 慢三个数量级?从向量化原理讲起
开发语言·python·pandas·股票数据·quantdash