IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c/c++刷题记录1(里面有我自己写的源码) -> 正文阅读

[C++知识库]c/c++刷题记录1(里面有我自己写的源码)

题目:

1.求并输出所有满足如下条件的三位正整数:它是某整数的平方,它的三位数有两位是相同的。如100是10的平方,它有两个0,225是15的平方,它有两个2。

2.从键盘输入10名学生的成绩,显示与平均成绩最接近的三个成绩。

3.利用循环打印如下5行字符。

4.?中国有句俗语“三天打鱼两天晒网”,某人从03年1月1日起三天打鱼两天晒网,编程计算某月某日,他在打鱼还是在晒网。某月某日从键盘输入,打鱼则输出1,晒网则输出0。

5.字符串逆序。例如输入字符串”I am happy today”,则输出” I ma yppah yadot”。

6.数字根指的是。例如,24,的数字根是6,就是每位数相加的和,39的数字和是12,12不是一位数,所以再把12的每一位求和,是3,那么39的数字根就是3.

7.

?8.

比如一场电影一共售出5张票,结果来了5个人,每个人手里拿的票号分别是3 3 1 2 4,两张3,那么3这种票,就有一张是假票。再比如一场电影一共售出6张票,结果来了10个人,每个人手里拿的票号分别是6 1 3 6 6 4 2 3 1 2,3张6,2张3,2张2,2张1,那么这场电影就有4种假票,分别是6号,3号,2号,和1号。

编写程序,找出每场比赛一共有多少假票。

9.

对于第1轮的比赛,他拿着一瓶酒,将大厅里所有的房间都打开了。对于第二轮,他拿着一瓶酒,然后将大厅所有偶数号房间锁起来(2,4,6,...).对于第3轮,他拿着一瓶酒,然后跑向大厅。这一次他只观察房间号为(3,6,9,...).的房间。如果该房间 已经锁定,将他解锁,如果它没有被锁定,他锁定它。对于第4轮,他拿着一瓶酒,然后跑向大厅。这一次他只观察房间号为(4,8,12,...).的房间。如果该房间 已经锁定,将他解锁,如果它没有被锁定,他锁定它。这样重复下去,n轮比赛后,这个狱卒晕了过去。
输入
输入的第一行包含一个正整数。这是后面的行数。下面的每一行包含一个数字

输出
对于每一行,你必须打印出来的是。当狱卒晕过去之后,有几个房间是开着的,犯人可以逃出去。

?解题:

1.求并输出所有满足如下条件的三位正整数:它是某整数的平方,它的三位数有两位是相同的。如100是10的平方,它有两个0,225是15的平方,它有两个2。

? ? ? ? 因为是三位正整数,所以并没有使用递归等方法。

#include<stdio.h>
bool judge(int n)
{
	int wei = 1;
	int wei1 = 10;
	int wei2 = 100;
	int a=0;
	int b=0;
	int c=0; 
	a = (n / wei) % 10;
	b = (n / wei1) % 10;
	c = (n / wei2) % 10;
	if (a==b||b==c||a==c)    //判断个十百是否有两位是相同的
	{
		return true;
	}
	else
	{
		return false;
	}
}
int main()
{
	int n ;
	int arr[] ={0};
	for (n = 10; n * n <= 1000 && (n * n )>= 100; n++)//算出拥有的三位数整数
	{
		if (judge(n*n))
		{
			printf("  %d  ", n * n);
		}
	}
	return 0;
}

2.从键盘输入10名学生的成绩,显示与平均成绩最接近的三个成绩。

? ? ? ? 通过排序,选择中间两个数,之后对靠近的两个数比较谁更加接近平均值即可

#include<iostream>
using namespace std;
double jud(double a, double b, double ppp)
{
	if (fabs(ppp-a)>= fabs(ppp - a))   //fabs是绝对值  判断两者谁的绝对值更小
	{
		return b;
	}
	else
	{
		return a;
	}
}
int main()
{
	double a[10]={0};
	double all=0;
	for (int i = 0; i < 10; i++)    //集体输入数组
	{
		cin >> a[i];
	}
	for (int i = 0; i < 10; i++)
	{
		all += a[i];                //算出总分
	}    
	double c = all / 10;            //平均分
	for (int i = 0; i < 9; i++)       //通过冒泡排序,做出中间的排序
	{
		for (int j = i + 1; j < 10; j++)
		{
			if (a[i] < a[j])
			{
				c = a[i];
				a[i] = a[j];
				a[j] = c;
			}
		}
	}
        //因为有10个数,所以排序后4和5最接近,然后只有判断3和6谁更加接近即可
	cout <<"平均值最近的三个成绩:" << a[4] << "  " << a[5]<<"  "<< jud(a[3],a[6],c);
	return 0;
}

3.?利用循环打印如下5行字符。

????????

#include<stdio.h>
int main()
{
	int i, j, k = 0, p = 0;
	for (i = 0; i < 5; i++)	//输出多少行
	{
		k++;	//控制输出a,b,c等等的次数的
		for (j = 0; j <k; j++)	
		{
			p++; 
			printf("%c", 96 + p); 
		}
		p -= i;	//将p恢复到上一行最后的字母
		for (int q = 0; q < 5-k; q++)	//k的逐渐减少
		{
			printf("k");
		}
		printf("\n");

	}
	return 0;
}

4.中国有句俗语“三天打鱼两天晒网”,某人从03年1月1日起三天打鱼两天晒网,编程计算某月某日,他在打鱼还是在晒网。某月某日从键盘输入,打鱼则输出1,晒网则输出0。

? ? ? ? 因为没有说年,所以只写了日和月

#include<iostream>
using namespace std;
int main()
{
	int a[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };//2003年的
	int allData = 0;
	int month = 0;
	int date = 0;
loop:
	cout << "请输入月份:";
	cin >> month;
	if (month>12||month<1)
	{
		goto loop;        //这是为了防呆,可以不写
	}
pic:                        
	cout << "请输入日:";
	cin >> date;
	if (date > 31 || date < 1)
	{
		goto pic;        //这是为了防呆,可以不写
	}
	for (int i = 0; i < month; i++)
	{
		allData += a[i];    //算出在几月之前过了多少天,如5月,则是前4个月过了多少天
	}
	allData += date;        //这个月的天数
	int c = (allData % 5);    //做5的公约数,算出前三天打鱼,后三天晒网
	if (c==1|| c == 2 || c == 3 )
	{
		cout << 1; //"打鱼";
	}
	else
	{
		cout << 0;
	}
	return 0;
}

5.字符串逆序。例如输入字符串”I am happy today”,则输出” I ma yppah yadot”。

? ? ? ? 正常逆序很简单,但是要将单词进行逆序,就要搞一点想法

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string a;
	getline(cin, a);    //输入一串字符
	int len = sizeof(a) / sizeof(a[0]);    //计算字符的元素个数
	while (1)
	{
		int i = 0;
		for (int k = 0; k < len; k++)
		{
			if (a[k] == 32 || a[k] == '\0')//这里是发现如果是空格或者字符串结尾的时候
			{
				int p = k;    //将k发现空格的位置保存
				while (i < k)    //将空格前面的单词进行逆序
				{
					int temp = a[i];
					a[i] = a[k - 1];
					a[k - 1] = temp;
					i++;
					k--;
				}
				k = p;    //逆序结束后,将k放到发现空格的位置
				i = k + 1;//i则是放到空格的后面一个
				if (a[k] == '\0')//这是发现'\0'之后直接退出循环
				{
					break;
				}
			}
		}
		break;
	}
	cout << a;
	return 0;
}

6.数字根指的是。例如,24,的数字根是6,就是每位数相加的和,39的数字和是12,12不是一位数,所以再把12的每一位求和,是3,那么39的数字根就是3.

????????

#include<iostream>
using namespace std;
int add1(int& n)
{
	if (n==0)
	{
		exit(0);
	}
	int a = 0;
	int b = 0;
	while (n >=10)    //一点点的将每个位数相加到最后
	{
		a = n / 10;    
		b = n % 10;    
		n = a + b;    
	}
	return n;
}
int main()
{
	int a;
	int e;
loop:
	cin >> a;
	e = add1(a);
	cout << "你输入的数字根是:" << e << endl;
	goto loop;    //这是搞特殊效果的,一般不要用,容易出错
	return 0;
}

7.

#include<iostream>
using namespace std;
int main()
{
loop:
	double a;
	int n = 1;
	double temp = 0;
	cout << "请输入范围0.01-5.20之间:";
	cin >> a;
	if (a == 0)
	{
		exit(0);
	}
	else if(a < 0.01 || a>5.20)  //保证效果
	{

		cout << "请重新输入:" << endl;
		goto loop;
	}
	while (1)    //视情况计算可以有多少块
	{
		temp += double(1) / (n + 1);
		n++;
		if (temp>=a)    
		{
			break;
		}
	}
	cout << (n-1)<<"块"<<endl;
	goto loop;
	return 0;
}

8.比如一场电影一共售出5张票,结果来了5个人,每个人手里拿的票号分别是3 3 1 2 4,两张3,那么3这种票,就有一张是假票。再比如一场电影一共售出6张票,结果来了10个人,每个人手里拿的票号分别是6 1 3 6 6 4 2 3 1 2,3张6,2张3,2张2,2张1,那么这场电影就有4种假票,分别是6号,3号,2号,和1号。编写程序,找出每场比赛一共有多少假票。

????????

#include<iostream>
using namespace std;
int main()
{
	int piao = 0;    //找到票数和人数
	int people = 0;
	cin >> piao >> people;
	int* p = new int(piao);    //申请有票数这么多的内存大小
	for (int i = 0; i < piao; i++)    //将每一个数放在申请的内存上
	{
		cin >> p[i];
	}
	int sum = 0;
	int xx = 0;    //几种假票
	for (int i = 0; i < people; i++)
	{
		for (int k = 0,l=0; k < people; k++)
		{

			if (p[i] == p[k]&&l==0)    //通过对有的票的对比,如果是第一次出现,则给l加加
			{
				l++;
			}
			else if (p[i] == p[k] && l == 1)    //如果相同的第二次出现了,则有一种,第三次就不关我们的事情了
			{
				xx++;
				l++;
			}
		}
	}
	cout << (xx-1);
	return 0;
}

9.

对于第1轮的比赛,他拿着一瓶酒,将大厅里所有的房间都打开了。对于第二轮,他拿着一瓶酒,然后将大厅所有偶数号房间锁起来(2,4,6,...).对于第3轮,他拿着一瓶酒,然后跑向大厅。这一次他只观察房间号为(3,6,9,...).的房间。如果该房间 已经锁定,将他解锁,如果它没有被锁定,他锁定它。对于第4轮,他拿着一瓶酒,然后跑向大厅。这一次他只观察房间号为(4,8,12,...).的房间。如果该房间 已经锁定,将他解锁,如果它没有被锁定,他锁定它。这样重复下去,n轮比赛后,这个狱卒晕了过去。
输入
输入的第一行包含一个正整数。这是后面的行数。下面的每一行包含一个数字

输出
对于每一行,你必须打印出来的是。当狱卒晕过去之后,有几个房间是开着的,犯人可以逃出去。

#include<iostream>
using namespace std;
int main()
{
	//设1为有锁。0为开锁
	int num = 0;
	cin >> num;
	int* p = new int[num];
	for (int i = 0; i < num; i++)	//给所有的房间开锁
	{
		p[i]=0;
		if ((i + 1) % 2 == 0)	//第二轮给房间锁门
		{
			p[i] = 1;
		}
	}
	for (int n = 3; n <= num; n++)
	{
		for (int i = 0; i < num; i++)
		{
			if ((i + 1) % n == 0)    //判断从3开始的接下来几轮
			{
				if (p[i]==0)    //0变1,1变0
				{
					p[i] = 1;
				}
				else
				{
					p[i] = 0;
				}
			}
		}
	}
	int openDoor = 0;
	for (int i = 0; i < num; i++)    //判断有几个开着的门
	{
		if (p[i]==0)
		{
			openDoor++;    
		}
	}
	
	cout << openDoor;
	
	return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 10:54:41  更:2022-09-13 10:55:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 19:33:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码