##MyThirdLog

题目 1023: [编程入门] 选择排序

题目描述
用选择法对10个整数从小到大排序。

输入格式
输入10个无序的数字
输出格式
排序好的10个整数

样例输入
4 85 3 234 45 345 345 122 30 12
样例输出
3 4 12 30 45 85 122 234 345 345

MYCPP;//正确答案//选择排序和冒泡排序相差无几!

int main()
{//可以写的更可视化一点 但是下午醒的太晚了┭┮﹏┭┮ 
	int arr[10];
	for (int i = 0; i < 10; i++)
	{
		cin >> arr[i];
	}

	int j, k, temp;
	for (j = 0; j < 9; j++)//j是小于n-1的
	{
		for (k = j + 1; k < 10; k++)//这里要注意 k是从j+1开始的 而k是小于n的!
		{
			if (arr[j] >arr[k])
			{
				temp = arr[j];//一个简单的swap函数
				arr[j] = arr[k];
				arr[k] = temp;
			}
		}
	}
	for (int a = 0; a < 10; a++)
	{
		cout << arr[a] << endl;
	}
	return EXIT_SUCCESS;
}
void BubbleSort(int arr[], int len)//冒排;
{
	int i, j, temp;
	len = sizeof(&arr) / sizeof(&arr[0]);
		for (i = 0; i < 10 - 1; i++)
		{
			for (j = 0; j < 10 - i - 1; j++)
			{
				if (arr[j] > arr[j + 1])
				{
					temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
}

void print(int arr[], int len)
{
	int i = 0;
	for (i = 0; i < len; i++)
	{
		cout << arr[i] << endl;
	}
}
int main()
{
	int arr[10]={ 4 ,85 ,3, 234 ,45 ,345, 345 ,122 ,30 ,12 };
	int l = 0;
	int i, j, temp;
	for (l = 0; l < 10; l++)
	{
		cin >> arr[l];
	}
	BubbleSort(arr, 10);
	print(arr, 10);
	return 0;
}

题目 1024: [编程入门]矩阵对角线求和

题目描述
求一个3×3矩阵对角线元素之和。

输入格式
矩阵
输出格式
主对角线 副对角线 元素和

样例输入
1 2 3
1 1 1
3 2 1
样例输出
3 7

MYCPP;//正确答案//代码复用性差 但是赶时间赶ac没办法啦!(ง •_•)ง

int main()
{
	int arr[3][3] = { 0 },i,j;
	for (i=0;i<3;i++)
	{
		for (j=0;j<3;j++)
		{
			cin >> arr[i][j];
		}
	}
	int sum1 = arr[0][0] + arr[1][1] + arr[2][2];
	int sum2 = arr[0][2] + arr[1][1] + arr[2][0];
	cout << sum1 << " " << sum2;
	return EXIT_SUCCESS;
}

题目 1025: [编程入门]数组插入处理

题目描述
已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。

输入格式
第一行,原始数列。 第二行,需要插入的数字。
输出格式
排序后的数列

样例输入
1 7 8 17 23 24 59 62 101
50
样例输出
1 7 8 17 23 24 50 59 62 101

MYCPP;//正确答案

//思路1.运用一个循环先输入有序数列然后把第0号空间留给待排数n
//思路2.输入待排数后进行冒泡或者选择排序(目前就学这俩 快排学了 还没理解(ง •_•)ง)

int main()
{
	int arr[11] = { 0 };
	int x = 0;
	for (x = 1; x < 10; x++)
	{
		cin >> arr[x];
	}
	int n;
	cin >> n;
	arr[0] = n;

	int i, j,t;
	for (i=0;i<9;i++)
	{
		for (j = 0; j < 9-i; j++)
		{
			if (arr[j]>arr[j+1])
			{
				t = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = t;
			}
		}
	}
	int l = 0;
	for (l = 0; l < 10; l++)
	{
		cout << arr[l] << endl;
	}
	return EXIT_SUCCESS;
}

题目 1026: [编程入门]数字逆序输出

题目描述
输入10个数字,然后逆序输出。

输入格式
十个整数
输出格式
逆序输出,空格分开

样例输入
1 2 3 4 5 6 7 8 9 0
样例输出
0 9 8 7 6 5 4 3 2 1

MYCPP;//正确答案
//想的太复杂了 既然题目要求逆序输出数组 那么直接倒叙打印这个数组不就完了吗
//unsigned int 都可以用这种方法 倒叙输出就直接倒叙打印
//最开始我还打算用排序算法写一下 然后输出 (没仔细读题!)

int main()
{
	int arr[10] = { 0 };
	for (int x = 0; x < 10; x++)
	{
		cin >> arr[x];
	}

	for (int l = 9; l >= 0; l--)
	{
		cout << arr[l] << " " ;
	}
	return EXIT_SUCCESS;
}

题目 1027: [编程入门]自定义函数处理最大公约数与最小公倍数

题目描述
写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。

输入格式
两个数
输出格式
最大公约数 最小公倍数

样例输入
6 15
样例输出
3 30

MYCPP;

//辗转相除法:用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。
//.利用辗转相除法求出最大公约数,而得出两个数的最大公约数,把两数相乘再除以最大公约数就能求出最小公倍数。

void  isB(int a, int b)
{//思路错误 应该利用辗转相除法来求解
		if (a * c == b * c)
		{
			cout<< c;
		}
}
int main()
{
	int a, b;
	cin >> a >> b;
	isB(a,b);
	return EXIT_SUCCESS;
}

//正确答案//利用辗转相除法!

int fun1(int m,int n)
{
    int s;
    while(n!=0)
    {
        s=m%n;
        m=n;
        n=s;
    }
    return m;
}
int fun2(int m,int n)
{
    int a;
    a=fun1(m,n);
    return m*n/a;
}
int main()
{
    int m,n;
    cin>>m>>n;
    cout<<fun1(m,n)<<fun2(m,n); 
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值