本文主要是介绍广州大学程序设计基础实验一实验报告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
广州大学学生实验报告
报告日期:
学院 | 计算机科学与网络工程学院 | 年级/专业/班 | 姓名 | 学号 | |||
实验课程名称 | 程序设计基础(实验课) | 成绩 | |||||
实验项目名称 | 实验1 程序控制结构 | 指导 老师 |
实验A: 简单的C程序设计、数据类型、运算符与表达式
一、实验目的及要求
1. 了解在集成开发环境下程序的编辑、编译、连接、运行与调试;
2. 掌握C++语言的基本数据类型、算术运算符、赋值运算符和逗号运算符及表达式;
3. 输入并编译C++程序。
二、实验设备与平台
1. 实验设备:计算机
2. 平台:Windows操作系统,Microsoft Visual C++或其它合适的C++编程环境。
三、实验内容
编写程序,解下列问题,然后把编写的程序代码和运行结果截图复制到题目后面的空白处。
0、参考 教程:调试 C++ 代码 - Visual Studio (Windows) | Microsoft Docs ,了解项目的创建、编译、连接、运行与调试。
1、从键盘上输入两个int型数,比较其大小,并输出显示其中较小的数。
程序代码:
// 程序设计基础实验1 程序控制结构
// 实验A: 简单的C程序设计、数据类型、运算符与表达式
// 问题描述:从键盘上输入两个int型数,比较其大小,并输出显示其中 较小 的数。
#include<iostream>
using namespace std;
int main()
{
//定义两个需要比较的整型变量
int num1, num2;
// 数据初始化
num1 = num2 = 0;
cout << "请从键盘上输入两个int型数:" << endl;
cin >> num1 >> num2; // 数据输入
//比较两个数的大小,输出较小的数
if (num1 > num2)
cout << "较小的数为:" << num2 << endl;
else if (num1 < num2)
cout << "较小的数为:" << num1 << endl;
else
cout << "两个数大小相等,均为:" << num1 << endl;
return 0;
}
程序运行结果截图:
心得与体会:
1、需要考虑两个数相等的情况。
2、从键盘上输入一个int型数、一个浮点数,比较大小,将其中较大的数输出。
程序代码:
// 程序设计基础实验1 程序控制结构
// 实验A: 简单的C程序设计、数据类型、运算符与表达式
// 问题描述:从键盘上输入一个int型数、一个浮点数,比较大小,将其中 较大 的数输出。
#include<iostream>
using namespace std;
int main()
{
//定义需要比较的整型变量和浮点型变量
int numIntage;
double numDouble;
// 数据初始化
numIntage = 0;
numDouble = 0.0;
//数据输入
cout << "请从键盘上输入一个int型数:" << endl;
cin >> numIntage;
cout << "请从键盘上输入一个double型数:" << endl;
cin >> numDouble;
//比较数的大小并输出较大的数
if (numIntage > numDouble)
cout << "较大的数为:" << numIntage << endl;
else if (numIntage < numDouble)
cout << "较大的数为:" << numDouble << endl;
else
cout << "两个数大小相等,均为:" << numIntage << endl;
return 0;
}
程序运行结果截图:
心得与体会:
- 比较浮点数时,不能简单地使用大于小于号进行比较,否则会出现下面这种情况:
因此需要采用另外一种方式:fabs(numIntage - numDouble)<1e-9。但这仅能用于判断两个精度很高的数是否相等。
3、输入一个摄氏温度,编程输出华氏温度。已知;华氏温度转换为摄氏温度的计算公式如下: C=5/9*(F-32),其中,F 表示华氏温度,C表示摄氏温度;结果保留两位小数。
程序代码:
// 程序设计基础实验1 程序控制结构
//实验A: 简单的C程序设计、数据类型、运算符与表达式
/*问题描述:输入一个摄氏温度,编程输出华氏温度。
已知;华氏温度转换为摄氏温度的计算公式如下:
C = 5 / 9 * (F - 32),
其中,F 表示华氏温度,C表示摄氏温度;结果保留两位小数。*/
#include<iostream>
#include<iomanip> // 包含此头文件,用于格式控制
using namespace std;
int main()
{
//定义变量
double F, C, p; // F 表示华氏温度,C表示摄氏温度,p表示计算公式中的参数
//数据初始化
F = C = 0.0;
//数据输入
cout << "请从键盘上输入一个摄氏温度C:" << endl;
cin >> C;
//定义相关参数
p = 9.0 / 5.0;
F = p * C + 32; // 公式转换
cout << "根据输入的摄氏温度C,转化的华氏温度为:" << endl;
//setprecision(n)和fixed合用以控制小数点后有几位
cout << fixed << setprecision(2) << F; //格式控制,保留小数点后两位小数
return 0;
}
程序运行结果截图:
心得与体会:
1、需要将公式的自变量和因变量进行转化,因为题目要求自变量为摄氏度,因变量为华氏度。而题目公式给出的相反。
- 输入一个大于1000的int型数,将它的低4位(右四位)都置为1。
程序代码:
// 程序设计基础实验1 程序控制结构
// 实验A: 简单的C程序设计、数据类型、运算符与表达式
// 问题描述:输入一个大于1000的int型数,将它的低4位(右四位)都置为1
#include<iostream>
using namespace std;
int main()
{
//定义相关变量并进行初始化
int numPre, numNew, up, lowPre, lowNew;
numPre = numNew = up = lowPre = lowNew = 0;
//数据输入
cout << "请输入一个大于1000的int型数:" << endl;
cin >> numPre;
//执行将低4为赋值为全1的操作
up = numPre / 10000; // 保存数据的非低4位的数值
lowPre = numPre - up * 10000; // 保存数据先前的低4位的数值
lowNew = 1111; // 新的数据的低4位的数值
numNew = up * 10000 + lowNew; // 新的数据的值
cout << "将输入的数" << numPre << "的低4位(右四位)都置为1后,新的数为:" << endl;
cout << numNew << endl; // 输出修改后的新数据的值
return 0;
}
程序运行结果截图:
5、请文字解释以下代码运行的过程及结果。
short int s; //range?
s = 32768;
cout << s << " " << sizeof(short) << endl;
float f; double d;
f = 1.2345678901; d = 1.2345678901;
cout << fixed << setprecision(9) << f << " " << d << "\n";
int si; unsigned int ui;
si = -5; ui = 5;
cout << (si > ui) << '\n';
char c; int i;
c = 'A'; i = 0x30;
cout << c << " " << (int)c + 32 << " " << i << " " << (char)(i + 6) << endl;
分析:(请填写)
// 程序设计基础实验1 程序控制结构
// 实验A: 简单的C程序设计、数据类型、运算符与表达式
// 问题描述:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
// 短整型变量s,range为:-2^15 ~ 2^15-1,即-32768 ~ 32767
short int s;
// 超出了短整型的范围,会导致溢出。
/*短整型(short int)是有符号整数类型,它可以表示负数和正数。
在C++中,有符号整数类型使用最高位作为符号位,0表示正数,1表示负数。
当一个数超出了有符号整数类型的范围时,它的二进制表示会被解释为负数。
在这个例子中,32768的二进制表示是1000000000000000,最高位为1,表示负数。
当发生溢出时,C++会将这个二进制数解释为负数,即-32768。
所以输出的结果是-32768。*/
s = 32768;
//打印变量s的数值以及变量s的字节数
cout << s << " " << sizeof(short) << endl; //短整型为2个字节
// 单精度浮点数f,range为:双精度浮点数d,range为:
float f; double d;
f = 1.2345678901; d = 1.2345678901;
/*在这个例子中,我们将1.2345678901赋值给单精度浮点数f和双精度浮点数d。
然后,我们使用fixed和setprecision(9)来设置输出的浮点数精度为小数点后9位有效数字。
由于单精度浮点数的精度较低,它只能保留约7位有效数字。
因此,当输出单精度浮点数f时,它的值被截断为1.234567881。
双精度浮点数具有更高的精度,可以保留约15位有效数字。
因此,当输出双精度浮点数d时,它的值保持不变,为1.234567890。*/
//打印单精度浮点数f和双精度浮点数d的数值,并保留小数点后9位有效数字
cout << fixed << setprecision(9) << f << " " << d << "\n";
// 整型变量si,无符号整型变量ui
int si; unsigned int ui;
si = -5; ui = 5;
/*当我们执行(si > ui)时,我们正在比较一个有符号整数和一个无符号整数。
在这种情况下,C++会进行隐式类型转换,将有符号整数转换为无符号整数,以便进行比较。
在C++中,当将一个有符号整数转换为无符号整数时,如果有符号整数的值为负数,
那么它的二进制表示将被解释为一个较大的正数。这是因为无符号整数类型只能表示非负数。
在这个例子中,-5的二进制表示为1111 1111 1111 1111 1111 1111 1111 1011(假设使用32位整数)。
当将这个二进制数解释为无符号整数时,它的值将被解释为一个较大的正数,即4294967291。
因此,(si > ui)实际上是在比较4294967291和5,这个比较表达式为真*/
cout << (si > ui) << '\n'; // 打印逻辑语句的结果,即4294967291>5为真,返回1
char c; int i; // 字符型变量c,整型变量i
c = 'A'; i = 0x30; // i用十六进行表示,转换为十进制,结果为48
// 字符型变量在C++中实际上是以整数形式存储的
// 使用类型转化,将字符型c强制转换为整型,结果为65,加上32后为97
// (char)(i + 6)将返回ASCII码值为54的字符,即字符'6'。
cout << c << " " << (int)c + 32 << " " << i << " " << (char)(i + 6) << endl;
}
程序运行结果截图:
心得与体会:
1、在分析代码输出结果时,需要掌握好C++的深层原理,例如数据的储存、变量的字节数、变量的精度等,在掌握好这些后,才能够准确地分析代码运行结果。
实验B 顺序结构和选择结构设计程序设计
一、实验目的及要求:
- 学会正确使用逻辑运算符和逻辑表达式;
- 熟练掌握if语句和switch语句;
- 掌握在程序设计中灵活使用顺序结构和选择结构。
二、实验设备与平台
1. 实验设备:计算机;
2. 平台:Windows操作系统,Microsoft Visual C++或其它C++编程环境。
三、实验内容及步骤:
编写程序,解下列问题,然后把编写的程序代码和运行结果截图复制到题目后面的空白处。
1、有一个函数
x x<=0
Y= 5x-10 0<x<10
10x-20 x>=10
用cin输入函数输入x的值(分别为x<=0,0<x<10,x>=10),输出y的值 。
说明:这个题目主要是练习对if…else语句的使用。
程序代码:
// 程序设计基础实验1 程序控制结构
// 实验B 顺序结构和选择结构设计程序设计
// 问题描述:
/*有一个函数
x x<=0
Y= 5x-10 0<x<10
10x-20 x>=10
用cin输入函数输入x的值(分别为x<=0,0<x<10,x>=10),输出y的值 。*/
#include<iostream>
using namespace std;
int main()
{
//定义相关变量
int x, Y; // x表示函数输出,Y表示函数输出
//数据初始化
x = Y = 0;
//数据输入
cout << "请用键盘输入x的值,将其作为函数的输入:" << endl;
cin >> x;
//判断自变量范围
if (x <= 0)
Y = x;
else if (x > 0 && x < 10)
Y = 5 * x - 10;
else
Y = 10 * x - 20;
//打印函数输出结果
cout << "函数的输出 Y = " << Y << endl;
return 0;
}
程序运行结果截图:
2、给出一个不多于4位的正整数,要求:
(1) 求出它是几位数;
(2)分别输出每一位数;
(3)按逆序输出各位数字,例如原数为2560,应输出为0652。
说明:请分别使用if…else语句、switch语句进行实现。
程序代码1:使用if…else语句进行实现
// 程序设计基础实验1 程序控制结构
// 实验B 顺序结构和选择结构设计程序设计
// 问题描述:
/*给出一个不多于4位的正整数,要求:
(1)求出它是几位数;
(2)分别输出每一位数;
(3)按逆序输出各位数字,例如原数为2560,应输出为0652。
说明:使用if…else语句进行实现。 */
#include<iostream>
using namespace std;
int main()
{
cout << "使用if…else语句进行实现" << endl;
//定义相关变量
int num, count, thousand, hundred, ten, one;
// num表示输入,count表示输入的位数,thousand、hundred、ten、one分别表示千位、百位、十位、个位
//数据初始化
num = count = thousand = hundred = ten = one = 0;
//数据输入
cout << "请用键盘输入一个不多于4位的正整数:" << endl;
cin >> num;
// 判断输入数据的位数:使用if…else语句进行判断
if (num < 10)
count = 1;
else if (num <100)
count = 2;
else if (num < 1000)
count = 3;
else if (num < 10000)
count = 4;
cout << "输入数据为" << count << "位正整数" << endl;
// 打印每一位数
thousand = num / 1000; // 整除操作
hundred = (num - 1000 * thousand) / 100;
ten = (num - 1000 * thousand - 100 * hundred) / 10;
one = num % 10; // 除余操作
cout << "输入数据的个位数为:" << one << endl;
if (count >= 2)
{
cout << "输入数据的十位数为:" << ten << endl;
if (count >= 3)
{
cout << "输入数据的百位数为:" << hundred << endl;
if (count == 4)
{
cout << "输入数据的千位数为:" << thousand << endl;
}
}
}
// 逆序输出
if (count == 4)
cout << "逆序输出各位数字的结果为:" << one << ten << hundred << thousand << endl;
else if (count == 3)
cout << "逆序输出各位数字的结果为:" << one << ten << hundred << endl;
else if (count == 2)
cout << "逆序输出各位数字的结果为:" << one << ten << endl;
else
cout << "逆序输出各位数字的结果为:" << one << endl;
return 0;
}
程序运行结果截图:
心得与体会:为了逆序输出,我先对输入数据求解其每一位的数字,然后再从低位到高位进行滚打印即可。
程序代码2:使用switch…case语句进行实现
// 程序设计基础实验1 程序控制结构
// 实验B 顺序结构和选择结构设计程序设计
// 问题描述:
/*给出一个不多于4位的正整数,要求:
(1)求出它是几位数;
(2)分别输出每一位数;
(3)按逆序输出各位数字,例如原数为2560,应输出为0652。
说明:使用switch语句进行实现。 */
#include<iostream>
using namespace std;
int main()
{
cout << "使用switch…case语句进行实现" << endl;
//定义相关变量
int num, count, thousand, hundred, ten, one;
// num表示输入,count表示输入的位数,thousand、hundred、ten、one分别表示千位、百位、十位、个位
//数据初始化
num = count = thousand = hundred = ten = one = 0;
//数据输入
cout << "请用键盘输入一个不多于4位的正整数:" << endl;
cin >> num;
// 判断输入数据的位数
int temp = num;
while (temp != 0)
{
count++;
temp /= 10; //数据一直除以10,直到该数为零。最终记录下来count为该数的位数
}
cout << "输入数据为" << count << "位正整数" << endl;
// 打印每一位数
thousand = num / 1000; // 整除操作
hundred = (num - 1000 * thousand) / 100;
ten = (num - 1000 * thousand - 100 * hundred) / 10;
one = num % 10; // 除余操作
switch (count)
{
case 4:
cout << "输入数据的千位数为:" << thousand << endl;
case 3:
cout << "输入数据的百位数为:" << hundred << endl;
case 2:
cout << "输入数据的十位数为:" << ten << endl;
case 1:
cout << "输入数据的个位数为:" << one << endl;
}
// 逆序输出
switch (count)
{
case 1:
cout << "逆序输出各位数字的结果为:" << one << endl;
break;
case 2:
cout << "逆序输出各位数字的结果为:" << one << ten << endl;
break;
case 3:
cout << "逆序输出各位数字的结果为:" << one << ten << hundred << endl;
break;
default:
cout << "逆序输出各位数字的结果为:" << one << ten << hundred << thousand << endl;
}
return 0;
}
程序运行结果截图:
心得与体会:
1、在写代码的时候,我经常习惯性地使用if...else语句,而很少使用switch...case语句。但其实在有些情况下,switch...case语句更加适用,用起来更便捷。
实验C 循环结构程序设计
一、实验目的及要求
1.掌握while、for、do…while 循环结构的使用方法以及循环条件的使用;
2.能够使用三种循环结构设计程序、分析程序并解决实际问题;
3.掌握三种循环结构的差异和不同,能灵活地实现三种结构间的转换;
4.正确编写具有循环结构的C语言程序。
二、实验设备与平台
1. 实验设备:计算机;
2. 平台:Windows操作系统,Microsoft Visual C++或其它C++编程环境。
三、实验内容及步骤
编写程序,解下列问题,然后把编写的程序代码和运行结果截图复制到题目后面的空白处。
1、求 = 1+2+···+100 。
方法一:用while语句编程。
程序代码:
// 程序设计基础实验1 程序控制结构
// 实验C 循环结构程序设计
// 问题描述:
/*求 = 1+2+···+100 。
方法一:用while语句编程。*/
#include<iostream>
using namespace std;
int main()
{
//定义相关变量
int sum, temp; // sum表示总和,temp表示临时变量
//数据初始化
sum = 0;
temp = 1;
//使用while语句进行循环累加操作
while (temp <= 100)
{
sum += temp; // sum变量不断累加
temp += 1; // 自增1
}
//打印累加结果
cout << "使用while语句编程,得到的累加结果为:" << sum << endl;
return 0;
}
程序运行结果截图:
方法二:用do-while语句编程。
程序代码:
// 程序设计基础实验1 程序控制结构
// 实验C 循环结构程序设计
// 问题描述:
/*求 = 1+2+···+100 。
方法二:用do-while语句编程。*/
#include<iostream>
using namespace std;
int main()
{
//定义相关变量
int sum, temp; // sum表示总和,temp表示临时变量
//数据初始化
sum = 0;
temp = 1;
//使用do...while语句进行循环累加操作
do
{
sum += temp; // sum变量不断累加
temp += 1; // 自增1
} while (temp <= 100);
//打印累加结果
cout << "使用do...while语句编程,得到的累加结果为:" << sum << endl;
return 0;
}
程序运行结果截图:
方法三:用for语句编程。
程序代码:
// 程序设计基础实验1 程序控制结构
// 实验C 循环结构程序设计
// 问题描述:
/*求 = 1+2+···+100 。
方法三:用for语句编程。*/
#include<iostream>
using namespace std;
int main()
{
//定义相关变量
int sum; // sum表示总和
//数据初始化
sum = 0;
//使用for语句进行循环累加操作
for (int i = 1; i <= 100; i++)
{
sum += i; // sum变量不断累加
}
//打印累加结果
cout << "使用for语句编程,得到的累加结果为:" << sum << endl;
return 0;
}
程序运行结果截图:
心得与体会:
1、三种循环语句都有各自的特点,在使用while和do...while语句时,应该在每一次循环中,对某些变量进行自增或自减操作,否则循环体有可能没有终止条件。这是我在编程中经常忽略的。
2、先由计算机“想”一个1~200之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反复猜多个数,直到操作者想停止时才结束。
程序代码:
// 程序设计基础实验1 程序控制结构
// 实验C 循环结构程序设计
// 问题描述:
/*先由计算机“想”一个1~200之间的数请人猜,
如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;
否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,
如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。
每次运行程序可以反复猜多个数,直到操作者想停止时才结束。*/
#include<iostream>
#include<stdlib.h> // 包含两个头文件,用于设置随机数
#include<time.h>
using namespace std;
int main()
{
//定义相关变量
bool isContinue = 0;
//数据初始化
int guessCount, upLimit, randNum, guess; // guessCount用于统计玩家猜的次数
upLimit = 10; // 设置猜的次数上限为10
//使用do...while语句来让玩家选择是否进行下一轮游戏
do
{
guessCount = 0; // 数据初始化:猜的次数初始化为零
guess = 0;
srand(time(nullptr)); // 设置随机数种子
randNum = 1 + rand() % (200 - 1 + 1); // 产生一个1~200之间的随机数
cout << "游戏开始。\n计算机随机生成了一个1~200之间的数" << endl;
//使用while语句来让玩家进行数字猜想
while (guessCount < 10)
{
cout << "请输入您的猜测:" << endl;
cin >> guess; // 玩家输入猜测的数值
guessCount++; // 玩家猜测次数加1
//判断玩家猜测的数字是否正确
if (guess < randNum)
{
cout << "您猜小了" << endl;
}
else if (guess > randNum)
{
cout << "您猜大了" << endl;
}
else
{
//本轮游戏终止条件之一
cout << "恭喜!您的猜想正确!" << endl;
cout << "本轮游戏中,您总共猜测的次数为:" << guessCount << endl;
break;
}
}
//本轮游戏终止条件之一
if (guessCount == 10)
{
cout << "猜测次数已达上限(10次),本轮游戏结束。" << endl;
}
// 玩家选择是否继续游戏
cout << "是否继续下一轮游戏?(1表示继续,0表示结束)" << endl;
cin >> isContinue;
} while (isContinue);
cout << "游戏结束。" << endl;
return 0;
}
程序运行结果截图:
这篇关于广州大学程序设计基础实验一实验报告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!