C++程序设计基础1:程序控制结构

270 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

  • 本文为笔者大一《C++程序软件设计》课程章节实验报告,现将题目整理并分享,希望能够帮助正在学习C++的小伙伴!
  • 本文将学习到的编程技能包括:基本数据类型、基本运算、程序控制语句...

知识提纲

  • 三元表达式
  • 基本类型:int、float
  • 四则运算
  • 取模运算
  • 条件表达式:if...else/switch..case
  • 循环表达式:while/do...while/for
  • goto无条件转移

一、简单的C程序设计、数据类型、运算符与表达式

1、整数大小比较

  • 题目:从键盘上输入两个int型数,比较其大小,并输出显示其中较小的数;
  • 代码:
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
	int a, b;
	cout << "input a,b:";
	cin >> a >> b;
	cout << "min=" << (a < b ? a : b) << endl;
	return 0;
}
  • 结果: 在这里插入图片描述

2、含浮点数的大小比较

  • 题目:从键盘上输入一个int型数,一个浮点数,比较其大小,将输出其中较大的数;
  • 代码:
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
	int a;
	double b;
	cout << "input int a, double b:";
	cin >> a >> b;
	cout << "max=" << (a > b ? a : b) << endl;
	return 0;
}
  • 结果: 在这里插入图片描述

3、摄氏度-华氏度换算

  • 题目:输入一摄氏温度,编程输出华氏温度。已知;华氏温度转换为摄氏温度的计 算公式如下: C=5/9*(F-32),其中,F 表示华氏温度,C表示摄氏温度。
  • 代码:
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
	float C, F;
	cout << "input 摄氏度:";
	cin >> C;
	F = C * 9 / 5 + 32;
	cout << "华氏度F=" << F << endl;
	return 0;
}
  • 结果: 在这里插入图片描述

4、取模运算

  • 题目:输入一个大于1000的int型数,将它的低4位(右四位)都置为1;
  • 代码:
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
	int a;
	cout << "请输入一个大于1000的整数";
	cin >> a;
	a = a - a % 10000 + 1111;
	cout << a;
}
  • 结果: 在这里插入图片描述

二、顺序结构和选择结构设计程序设计

1、分段函数计算(if...else)

  • 题目:有一个函数: 在这里插入图片描述 用cin函数输入x的值(分别为x<=0,0<=x<=10,x>=10),输出y的值 。
  • 代码:
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
	double x,y;
	cout << "please input x\n" << "x=";
	cin >> x;
	if (x <= 0) { y = x, cout << y; }
	else if (x >= 0 && x < 10) 
	{
		y = 5 * x - 10, cout << y;
	}
	else if (x >= 10)
	{
		y = 10 * x - 20, cout << y;
	}
}
  • 结果: 在这里插入图片描述

2、分离数字各个位(if...else/switch...case)

  • 题目:给出一个不多于5位的正整数,要求: (1) 求出它是几位数; (2)分别输出每一位数; (3)按逆序输出各位数字,例如原数为5631,应输出为1365。
  • 代码1:
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
	int a, b, c, d, e, f, g, h;
	cout << "请输入一个不多于5位的正整数:";
	cin >> a;
	if (a >= 1 && a < 10)
	{
		b = 1, cout << a << "是一位数\n个位数是" << a << '\n';
	}
	else if (a >= 10 && a < 100)
	{
		b = 2, cout << a << "是二位数\n" << '\n';
	}
	else if (a >= 100 && a < 1000)
	{
		b = 3, cout << a << "是三位数\n" << '\n';
	}
	else if (a >= 1000 && a < 10000)
	{
		b = 4, cout << a << "是四位数\n";
	}
	else if (a >= 10000 && a < 100000)
	{
		b = 5, cout << a << "是五位数\n" << '\n';
	}
	else cout << "输入错误\n";

	    c = a % 10;// cout << "个位数是" << c << '\n';
		d = ((a - a % 10) / 10) % 10;//cout << "十位数是" << d << '\n';
		e = ((a - a % 100) / 100) % 10;//cout << "百位数是" << e << '\n';
		f = ((a - a % 1000) / 1000) % 10, //cout << "千位数是" << f << '\n';
		g = ((a - a % 10000) / 10000) % 10 ;//cout << "万位数是" << g << '\n';

	switch (b)
	{
	case 1:cout << "个位数是" << c << '\n' << '\n' << "逆序数是 " << c ; break;
	case 2:cout << "个位数是" << c << '\n' << "十位数是" << d << '\n' << '\n' << "逆序数是 " << c << d ; break;
	case 3:cout << "个位数是" << c << '\n' << "十位数是" << d << '\n' << "百位数是" << e << '\n' << '\n' << "逆序数是 " << c << d << e ; break;
	case 4:cout << "个位数是" << c << '\n' << "十位数是" << d << '\n' << "百位数是" << e << '\n' << "千位数是" << f << '\n' << '\n' << "逆序数是 " << c << d << e << f ; break;
	case 5:cout << "个位数是" << c << '\n' << "十位数是" << d << '\n' << "百位数是" << e << '\n' << "千位数是" << f << '\n' << "万位数是" << g << '\n' << '\n' << "逆序数是 " << c << d << e << f << g; break;
	}
}
  • 代码2:
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
	int a,c,d,e,f,g,h;
	cout << "请输入一个不多于5位的正整数\n";
	cin >> a;
	if (a >= 1 && a < 10) 
	{
	    cout << a << "是一位数\n个位数是" << a<<'\n';
		cout << '\n' << "逆序数是 " << a;
	}
	else if (a >= 10 && a < 100) 
	{
		cout << a << "是二位数\n" << '\n';
		c = a % 10, cout << "个位数是" << c << '\n';
		d = (a - c) / 10, cout << "十位数是" << d << '\n';
		h = a%10*10+a%10;
		cout << '\n' << "逆序数是 " << c<<d;
    }
	else if (a >= 100 && a < 1000) 
	{
		cout << a << "是三位数\n" << '\n';
		c = a % 10, cout << "个位数是" << c << '\n';
		d = ((a - c) / 10)%10, cout << "十位数是" << d << '\n';
		e = ((a - a%100) / 100)%10, cout << "百位数是" << e << '\n';
		cout << "逆序数是 " << c << d<< e ;
	}
	else if (a >= 1000 && a < 10000) 
	{
		cout << a << "是四位数\n";
		c = a % 10, cout << "个位数是" << c << '\n';
		d = ((a - c) / 10) % 10, cout << "十位数是" << d << '\n';
		e = ((a - a % 100) / 100) % 10, cout << "百位数是" << e << '\n';
		f = ((a - a % 1000) / 1000) % 10, cout << "千位数是" << f << '\n';
		cout << '\n' << "逆序数是 " << c << d << e << f ;
	}
	else if (a >= 10000 && a < 100000) 
	{
		cout << a << "是五位数\n"<<'\n'; 
		c = a % 10, cout << "个位数是" << c << '\n';
		d = ((a - a % 10) / 10)%10, cout << "十位数是" << d << '\n';
		e = ((a - a % 100) / 100)%10, cout << "百位数是" << e << '\n';
		f = ((a - a % 1000) / 1000) % 10, cout << "千位数是" << f << '\n';
		g = ((a - a % 10000) / 10000) % 10, cout << "万位数是" << g << '\n';
		cout << '\n' << "逆序数是 " << c << d << e << f << g ;
	}
	else cout << "输入错误\n";
}

三、循环结构程序设计

1、数列求和(while/do...while/for)

  • 题目:求S=n=1100n=1+2+...+100的值\sum_{n=1}^{100}n=1+2+...+100的值
  • 代码1:while
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
	int i, sum;
	i = 1; sum = 0;
	while(i < 101)
	{
		sum += i;
		i++;
	}
	cout <<"sum=1+2+3+…+100="<< sum;
}
  • 代码2:do...while
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
	int i, sum;
	i = 1; sum = 0;
	do{
		sum += i;
		i++;
	} while (i <= 100);
	cout << "sum=1+2+3+…+100=" << sum;
}
  • 代码3:for
#include "pch.h"
#include <iostream>
using namespace std;

int main()
{
	int i = 1, sum = 0;
	for (; i <= 100; i++)
	{
		sum += i;
	};
	cout << "sum=1+2+3+…+100=" << sum;
}
  • 结果: 在这里插入图片描述

2、猜数游戏

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

using namespace std;

int main()
{
	A:int a, b=0,i;
	srand((int)time(NULL));
	a = rand() % 200+1;
	
	cout << "请输入你要猜的数(1-200):";
	
	for (i=1;a!=b,i!=11;i++)
	{
     B:cin >> b;
	 if (a == b)  cout << "恭喜你!猜对了!" << '\t' << "猜测次数:" << i, i = 10;
	 else if (b > a) cout << "输入的数字大了,请重新输入:";
	 else if (b <a&&i != 10) cout << "输入的数字小了,请重新输入:";
	}
	if (a == b) { cout << '\n' << '\n'<< "开始新的一局游戏" << '\n'; goto A; }
	else cout << "对不起,猜错了,您的十次机会用尽,游戏结束!" <<"本局的幸运数字是"<<a<< '\n' << '\n' <<"开始新的一局游戏"<<'\n'; goto A;
	return 0;
}

  • 结果: 在这里插入图片描述