C++程序设计-实验1 C++程序设计基础、控制结构与函数

广州大学c++程序设计实验报告(代码基于大一初学者来设计)

实验A: 简单的C++程序设计、数据类型、运算符与表达式

一、实验目的及要求

1. 了解在集成开发环境下程序的编辑、编译、连接、运行与调试;

2. 掌握C语言的基本数据类型、算术运算符、赋值运算符和逗号运算符及表达式

3. 输入并编译C++程序

二、实验设备与平台

1. 实验设备:计算机;

2. 平台:Windows 2000操作系统,Visual C++ 6.0或Microsoft Visual Studio 2005/2008/2010/2012/2013/2015/2017/2019。

三、实验内容

编写程序,解下列问题,然后把编写的程序代码和运行结果截图复制到题目后面的空白处。

1、输入一摄氏温度,编程输出华氏温度。已知;华氏温度转换为摄氏温度的计

算公式如下: C=5/9*(F-32),其中,F 表示华氏温度,C表示摄氏温度

#include<iostream>
using namespace std;
int main()
{
	double F, C;
	cout << "Please input C:\n";
	cin >> C;
	F = (9 * C / 5) + 32; 0;
	cout << "C=" << C << endl;
	cout << "F=" << F << endl;
	system("pause");
	return 0;
}	

2、输入一个大于1000的int型数,将它的低4位(右四位)都置为1;

#include<iostream>
using namespace std;
int main()
{
		int a, b;
		cout << "Please input a=" << endl;
		cin >> a;
		if (a > 1000)
			b = (a / 10000) * 10000 + 1111;
	
		if (a < 1000)
			b = a;
		cout << "b="<<b << endl;
	system("pause");
	return 0;
}	

实验B  顺序结构和选择结构设计程序设计

一、实验目的及要求:

  1. 学会正确使用逻辑运算符和逻辑表达式;
  2. 熟练掌握if语句和switch语句;
  3. 掌握在程序设计中灵活使用顺序结构选择结构。

二、实验设备与平台

1. 实验设备:计算机;

2. 平台:Windows 2000操作系统,Visual C++ 6.0或Microsoft Visual Studio 2005/2008/2010/2012/2013/2015/2017/2019。

三、实验内容及步骤:

编写程序,解下列问题,然后把编写的程序代码和运行结果截图复制到题目后面的空白处。

1、有一个函数

用cin函数输入x的值(分别为x<=0,1<=x<=10,x>=10),输出y的值 。

#include<iostream>
using namespace std;
int main()
{
	double x, Y;
	cout << "x=";
	cin >> x;
	if (x <= 0) {
        Y = x; 
    }
	else if (1 <= x < 10) { 
         Y = 5 * x - 10; 
    }
	else { 
        (x >= 10) Y = 10 * x - 20;
    }
	cout << "Y=" << Y << endl;
}

2、给出一个不多于5位的正整数,要求:

(1) 求出它是几位数;

(2)分别输出每一位数;

(3)按逆序输出各位数字,例如原数为5631,应输出为1365。

#include<iostream>  
using namespace std;

int main() {
    int x, a, b, c, d, e;

    // 提示用户输入  
    cout << "请输入一个不多于五位的正整数:" << endl;
    cin >> x;

    // 检查输入是否有效  
    if (x <= 0 || x > 99999) {
        cout << "输入的数字不合法!" << endl;
        return 1;
    }

    // 获取每一位数字  
    e = x % 10;          // 个位  
    d = x % 100 / 10;    // 十位  
    c = x % 1000 / 100;  // 百位  
    b = x % 10000 / 1000; // 千位  
    a = x / 10000;        // 万位  

    // 判断并输出是几位数,并输出每一位数字  
    if (x >= 10000) {
        cout << "这是一个五位数." << endl;
        cout << a << " " << b << " " << c << " " << d << " " << e << endl;
        cout << "逆序: " << e << d << c << b << a << endl;
    }
    else if (x >= 1000) {
        cout << "这是一个四位数." << endl;
        cout << b << " " << c << " " << d  << " " << e << endl;
        cout << "逆序: " << e << d << c << b << endl;
    }
    else if (x >= 100) {
        cout << "这是一个三位数."<< endl;
        cout << c << " " << d << " " << e << endl;
        cout << "逆序: " << e << d << c << endl;
    }
    else if (x >= 10) {
        cout << "这是一个二位数." << endl;
        cout << d  << " " << e << endl;
        cout << "逆序: " << e << d << endl;
    }
    else {
        cout << "这是一个一位数." << e << endl;
        cout << "逆序: " << e << endl;
    }

    // 暂停,等待用户按键退出  
    system("pause");
    return 0;
}

实验C  循环结构程序设计

一、实验目的及要求

1.掌握while、for、do…while 循环结构的使用方法以及循环条件的使用;

2.能够使用三种循环结构设计程序、分析程序并解决实际问题;

3.掌握三种循环结构的差异和不同,能灵活地实现三种结构间的转换;

4.正确编写具有循环结构的C语言程序。

二、实验设备与平台

1. 实验设备:计算机;

2. 平台:Windows 2000操作系统,Visual C++ 6.0或Microsoft Visual Studio 2005/2008/2010/2012/2013/2015/2017/2019。

三、实验内容及步骤

编写程序,解下列问题,然后把编写的程序代码和运行结果截图复制到题目后面的空白处。

1、求    \sum_{n=1}^{100}n = 1+2+···+100  之和。

方法一:用while语句编程。

#include<iostream>
using namespace std;
int main()
{
	    int n, s;
		s = 0;
		n = 1;
		while (n <= 100)
		{
			s += n;
			n++;
		}
		cout <<"1到100的和为:"<< s << endl;
}

方法二:用do-while语句,求1到100的和。

#include<iostream>
using namespace std;
int main()
{
		int n, s;
		s = 0;
		n = 1;
		do
		{
			s += n;
			n++;
		} while (n <= 100);
		cout <<"1到100的和为:"<< s << endl;
}

方法三:用for语句编程。

#include<iostream>
using namespace std;
int main()
{
		int n, s;
		s = 0;
	    for (n=1;n<=100;n++)
			s += n;
		cout <<"1到100的和为:"<< s << endl;
}

2、先由计算机“想”一个1~2000之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反复猜多个数,直到操作者想停止时才结束。

#include<iostream>
using namespace std;
#include<ctime> //time系统时间头文件

int main() {

	//添加随机数种子 作用是利用当前系统时间生成随机数,防止每次随机数都一样
	srand((unsigned int)time(NULL));
	int num = rand() % 2000 + 1;
	cout << "请玩家进行猜数:(1-2000)" << endl;
	int a;

	for (int t = 1; t < 10; t++)
	{
		cin >> a;
		if (a == num)
		{
			cout << "玩家胜利!  游戏结束" << endl;
			cout << "猜了次数为:" << t << endl;
			break;
		}
		else if (a > num) {
				cout << "提示:数字过大,请重新输入" << endl;
		}
		else{
				cout << "提示:数字过小,请重新输入" << endl;
		}

		if (t == 9) {
			cout << "次数已满,游戏失败" << endl;
		}
	}
	system("pause");
	return 0;
}

实验D  函数

一、实验目的及要求

    主要叙述本节对应要掌握的主要概念和要解决的主要问题。

1.掌握函数的定义方法,及函数调用的形式;

2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;

3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;

4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;

5.综合应用顺序结构选择结构循环结构的设计方法设计函数程序。

二、实验设备与平台

1. 实验设备:计算机;

2. 平台:平台:Windows 2000操作系统,Visual C++ 6.0或Microsoft Visual Studio 2005/2008/2010/2012/2013/2015/2017/2019。

三、实验内容及步骤

编写程序,解下列问题,然后把编写的程序代码和运行结果截图复制到题目后面的空白处。

1、求三角形的面积。已知三角形的三边a、b、c,则三角形的面积为

(1)三角形的三边的边长由cin输入,需要判断这三边是否构成一个三角形。若是,则计算其面积并输出,否则输出“错误:不能构成三角形!”。

(2)程序中要包含两个函数,一个函数判断是否构成三角形,另一个函数计算三角形的面积。

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	double a, b, c, s, area;
	cout << "请输入三角形的边长: a, b, c: ";
	cin >> a >> b >> c;
	if ((a + b) <= c || (b + c) <= a || (c + a) <= b)
		cout << "错误:不能构成三角形!" << endl;
	else {
		s = (a + b + c) / 2;
		area = sqrt(s*(s - a)*(s - b)*(s - c));
		cout << "三角形面积=" << area << endl;
	}
	system("pause");
	return 0;
}

 2、编程求下式值,其中ni用函数来实现,且设参数n的默认值为2:

#include <iostream>
#include<cmath>
using namespace std;
int chengji(int n = 2)
{
    int a1 = 1, a2 = 1, a3 = 1, a4 = 1, a5 = 1, a6 = 1, a7 = 1, a8 = 1, a9 = 1, a10 = 1;
    for (int i = 1; i < 2; i++)
        a1 *= n;
    for (int i = 1; i < 3; i++)
        a2 *= n;
    for (int i = 1; i < 4; i++)
        a3 *= n;
    for (int i = 1; i < 5; i++)
        a4 *= n;
    for (int i = 1; i < 6; i++)
        a5 *= n;
    for (int i = 1; i < 7; i++)
        a6 *= n;
    for (int i = 1; i < 8; i++)
        a7 *= n;
    for (int i = 1; i < 9; i++)
        a8 *= n;
    for (int i = 1; i < 10; i++)
        a9 *= n;
    for (int i = 1; i < 11; i++)
        a10 *= n;
    return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10;
}
int main()
{
    int n;
    cout << "Please input your n: ";
    cin >> n;
    cout << "您得到的结果为 " << chengji(n) << endl;
}

3、用递归法编写函数:将一个整数n转换成由指定字符分割的字符串。如输入整数和字符分别为:1234和A,应输出字符串:“1A2A3A4”。其中n的位数不确定,可以是任意位数的整数。

#include <string>
#include<iostream>
using namespace std;

// 递归函数,将一个整数n转换成由指定字符c分割的字符串  
string intToString(int n, char c) {
    // 如果n为0,返回空字符串  
    if (n == 0) {
        return "";
    }
    // 递归情况:先将n-1转换为字符串,然后在后面添加n的最后一个数字和字符c  
    else {
        return intToString(n / 10, c) + to_string(n % 10) + c;
    }
}

int main() {
    int n;
    char c;
    cout << "请输入整数n:";
    cin >> n;
    cout << "请输入字符c:";
    cin >> c;
    string result = intToString(n, c);
    cout << result << endl;
    return 0;
}

4、编写程序,计算下面公式并输出结果。

(1)编写一个函数计算n!

(2)编写主函数,由键盘输入n和m,调用(1)中的函数完成计算。

(3)输入n和m要给出提示,并检查n和m的合理性,不合理的输入应输出错误信息,并不再进行计算。

(4)运行程序,输出计算

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int Fabricate(int m, int n);
int multi(int m, int n);
int main(void)
{
	int m, n;
	printf("输入m(按q退出):");
	while (scanf ("%d", &m))
	{
		printf("输入n:");
		scanf ("%d", &n);
		if (n != 0 && m != 0)//判断m,n是否为0
		{
			if (m > n) //自动将大数设置为m,小数设置为n
				printf("%d\n", Fabricate(m, n));
			else
				printf("%d\n", Fabricate(n, m));
			printf("输入m:(按q退出)");
		}
		else
			printf("错误!重新输入,输入m:");
	}
}
int Fabricate(int m, int n)
{
	int a = 1, b = 1, c;
	int i = m, j = n;
	for (int i = m; i > 0; i--)  //求m的阶乘
		a *= i;
	for (int j = 0; j > 0; j--)  //求n的阶乘
		b *= j;
	c = multi(m, n);
	return (a / b)* c;
}
int multi(int m, int n)
{
	int sum = 1;
	int k = m - n;
	while (k > 0)
		sum *= k--;
	return sum;
}

订阅专栏和关注博主,可查看后续更多实验报告,(〃'▽'〃),大家一起加油叭

  • 30
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冬天boyfriend

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值