哈尔工业大学上机题(n诺1349-1363)

1349 互换最大最小数
输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。

#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#define N 100
using namespace std;

int a[100];
int main()
{
	int n, min, max,temp;
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> a[i];
	max = min = 0;
	for (int i = 0; i < n; i++) {
		if (a[i] > a[max])
			max = i;
		if (a[i] < a[min])
			min = i;
	}
	temp = a[min];
	a[min] = a[max];
	a[max] = temp;
	for (int i = 0; i < n; i++)
		cout << a[i] << " ";
	cout << endl;
	return 0;
}

1350 找X
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。

#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#define N 100
using namespace std;

int a[100];
int main()
{
	int n, temp;
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> a[i];
	cin >> temp;
	int i;
	for (i = 0; i < n; i++)
	{
		if (temp == a[i]) {
			cout << i << endl;
			break;
		}
	}
	if (i == n)
		cout << "-1" << endl;
	return 0;
}

1351 判断三角形类型

// ConsoleApplication11.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<cmath>

using namespace std;

int main()
{
	int e[3];
	while (cin >> e[0] >> e[1] >> e[2])
	{
		sort(e, e + 3);
		double result = pow(e[0], 2) + pow(e[1], 2) - pow(e[2], 2);
		if (result == 0)
			cout << "直角三角形" << endl;
		else if (result > 0)
			cout << "锐角三角形" << endl;
		else
			cout << "钝角三角形" << endl;
	}
	return 0;
}


1352 众数
输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。


#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<cmath>

using namespace std;

int main()
{
	int a[11] = { 0 };
	int temp;
	for (int i = 1; i <= 20; i++)
	{
		cin >> temp;
		a[temp]++;
	}
	int max = 0, x = 0;
	int i;
	for ( i = 1; i <= 10; i++)
	{
		if (a[i] > max)
		{
			max = a[i];
			x = i;
		}
	}
	cout << x << endl;
	return 0;
}

1353 求最大公约数
输入两个正整数,求其最大公约数。

#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<cmath>

using namespace std;

int gcd(int a, int b)
{
	if (a%b == 0)
		return b;
	else
		return gcd(b, a%b);
}
int main()
{
	int a, b;
	while (cin >> a >> b)
	{
		if (a > b)
		{
			int t = a;
			a = b;
			b = t;
		}
		cout << gcd(a, b) << endl;
	}
	return 0;
}

1354 完数
求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子(除了它自己)相加和的数。

#include<bits/stdc++.h>
using namespace std;

bool fun(int n)
{
	int sum = 0, cnt = 0;
	for (int i = 1; i <= n / 2; i++)
	{
		if (n%i == 0)
		{
			sum = sum + i;
		}
	}
	if (sum == n)
		return true;
	return false;
}

int main()
{
	int n;
	while(cin >> n)
	{
		cout << "6";
		for (int i = 7; i <= n; i++)
			if (fun(i))
				cout <<" "<< i ;
		cout << endl;
	}
	return 0;
}

1355 素数的判定
给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。

#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<cmath>

using namespace std;

bool isprime(int n)
{
	int i;
	if (n <= 1)
		return false;
	for (i = 2; i <= sqrt(n); i++)
	{
		if (n%i == 0)
			return false;
	}
	return true;
}
int main()
{
	int n;
	while (cin >> n)
	{
		if (isprime(n))
			cout << "yes" << endl;
		else
			cout << "no" << endl;
	}
	return 0;
}

1356 字符串连接
不用strcat 函数,自己编写一个字符串链接函数MyStrcat(char dstStr[],charsrcStr[])

#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<cmath>

using namespace std;

char *MyStrcat(char a[], char b[]) {
	char *p = a;
	char *s = b;
	while (*p != 0)
		p++;
	while (*s != 0)
	{
		*p = *s;
		p++;
		s++;
	}
	*p = '\0';
	return a;
}
int main()
{
	char a[100], b[100], *c;
	while (cin >> a >> b)
	{
		c = MyStrcat(a, b);
		cout << c << endl;
	}
	return 0;
}

1357 百万富翁问题
一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你10 万元,你第一天给我1 分钱,第二天2 分钱,
第三天4 分钱……
这样交换 30 天后,百万富翁交出了多少钱?陌生人交出了多少钱?(注意一个是万元,一个是分)

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int x=300;
    long long y=0;
    for(int i=0;i<30;i++){
        y+=pow(2,i);
    }
    cout<<x<<" "<<y<<endl;
    return 0;
}

1358 数组逆置
输入一个字符串,长度小于等于200,然后将数组逆置输出。

#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<cmath>

using namespace std;


int main()
{
	char a[200];
	int n;
	while (cin >> a)
	{
		for (int i = strlen(a) - 1; i >= 0; i--)
			cout << a[i];
		cout << endl;
	}
	return 0;
}

1359 数字阶梯求和
给定a和n,计算a+aa+aaa+a…a(n个a)的和。

#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<cmath>

using namespace std;


int main()
{
	int a, n;
	long sum = 0;
	cin >> a >> n;
	long t = a;
	for (int i = 1; i <= n; i++)
	{
		sum += t;
		t = t * 10 + a;
	}
	cout << sum << endl;
	return 0;
}


1360 字符串内排序
输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。

#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<cmath>

using namespace std;

int main()
{
	char a[200];
	while (cin >> a)
	{
		int len = strlen(a);
		sort(a, a + len);
		cout << a << endl;
	}
	return 0;
}

1361 求最大值
输入10个整数,要求输出其中的最大值。

#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<cmath>

using namespace std;

int main()
{
	int max = -1;
	int temp;
	for (int i = 0; i < 10; i++)
	{
		cin >> temp;
		if (temp > max)
			max = temp;
	}
	cout << "max="<<max << endl;
	return 0;
}


1362 字符串去特定字符
输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    char c;
    while(cin>>s>>c){
        int len=s.size();
        for(int i=0;i<len;i++){
            if(s[i]!=c)
                cout<<s[i];
        }
        cout<<endl;
    }
    return 0;
}

1363 计算另两个矩阵的乘积
计算两个矩阵的乘积,第一个是23,第二个是32

#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<cmath>

using namespace std;

int main()
{
	int a[2][3], b[3][2], c[2][2];
	int sum;
	for (int i = 0; i < 2; i++)
		for (int j = 0; j < 3; j++)
			cin >> a[i][j];
	for (int i = 0; i < 3; i++)
		for (int j = 0; j < 2; j++)
			cin >> b[i][j];
	for(int i=0;i<2;i++)
		for (int j = 0; j < 2; j++)
		{
			sum = 0;
			for (int k = 0; k < 3; k++)
				sum += a[i][k] * b[k][j];
			c[i][j] = sum;
		}
	for(int i=0;i<2;i++){
		for (int j = 0; j < 2; j++) 
			cout << c[i][j] << " ";
		cout << endl;
		}

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值