笔记——week2_c++

week2

知识点:

大、小写字母的ASCII码值相差32。

ASCII码包含字母、数字、通用符号、控制符等。

基本的ASCII码的打印字符部分包括32~126(共95个)是字符:32是空格,其中48~57为0到9十个阿拉伯数字,65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。第127个字符表示的是键盘上的删除命令。

题目:

1、输入两个整数,交换其数值并输出。

#include<iostream>
using namespace std;
void swap(int a, int b) {  // void swap(int& a, int& b)
	int temp;
	temp = a;
	a = b;
	b = temp;
}
int main() {
	double a, b;
	cin >> a >> b;
	cout << "交换前:" << a  << ' ' << b << endl;
	swap(a, b);
	cout << "交换后:" << a << ' ' <<  b << endl;
	return 0;
}
2 3
交换前:2 3
交换后:3 2

2、将n个整数存入数组中并经行求和。

#include<iostream>
using namespace std;
int sum(int a[], int n) {
	int sum = 0;
	for (int i = 0; i < n; i++) {
		sum += a[i];
	}
	return sum;
}
int main() {
	int n, s;
	int a[100]; // 静态定义长度为100的数组
	cin >> n;
	// int* a = new int[n]; // 动态定义
	for (int i = 0; i < n; i++) {
		cin >> a[i];
	}
	s = sum(a, n);
	cout << "sum = " << s << endl;
	return 0;
}
3
1 2 3
sum = 6

3、输入n个字母,如果是小写字母,则将其转换为大写字母,输出转换后的结果。

#include<iostream>
using namespace std;

void strconvert(string& s) { // char *s
	for (int i = 0; i < s.length(); i++) // strlen(s)
		if (s[i] >= 'a' && s[i] <= 'z')
			s[i] -= 32;
}
using namespace std;
int main() {
	string str;
	cin >> str;
	strconvert(str);
	cout << str << endl;
	return 0;
}
12qwe
12QWE

3、输入两个整数a和b。求这两个整数的最大公约数和最小公倍数。

#include<iostream>
using namespace std;
int gcd(int a, int b) {
	int t;
	t = a % b;
	while (t != 0) {
		a = b;
		b = t;
		t = a % b;
	}
	return b;
}
int lcm(int a, int b) {
	int g;
	g = gcd(a, b);
	return a * b / g;
}
int main() {
	int a, b, g, l;
	cin >> a >> b;
	g = gcd(a, b);
	l = lcm(a, b);
	cout << g << "\t" << l << endl;
	return 0;
	
}
100 10
10      100

4、写一个函数,实现字符串类型的数据,取其长度的一班,对于浮点数类型的数据,取其值的二分之一。

#include<iostream>
using namespace std;
float half(float n) {
	return n / 2;
}
string half(string st) {
	int n = st.length() / 2;
	char* s = new char[n+1];
	for (int i = 0; i < n; i++) {
		s[i] = st[i];
	}
	s[n] = '\0';  // 字符串结尾是'\0' 
	return s;
}
int main() {
	float n;
	string st;
	cin >> n >> st;
	cout << half(n) << endl;
	cout << half(st) << endl;
	return 0;
}
123
qwert
61.5
qw

5、输入两个数a和b(整数或则浮点数),求这两个数的和值。

#include<iostream>

using namespace std;

template<typename T>
T add(T x, T y) {
	return x + y;
}

int main() {
	int a, b;
	double c, d;
	cin >> a >> b >> c >> d;
	cout << add(a, b) << "\n" << add(c, d) << endl;
	return 0;
}
1 2
0.1 0.2
3
0.3

5、蛇形填数,按照蛇形填写 n ∗ n n*n nn的矩阵

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ql2T7MjB-1691971967254)(C:\Users\86152\AppData\Roaming\Typora\typora-user-images\image-20230810144830844.png)]

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

int main() {
	int n, x, y, total;
	cin >> n;
	int** a = new int*[n];
	for (int i = 0; i < n; i++) {
		a[i] = new int[n];
		memset(a[i], 0, n * sizeof(int));
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			cout << setw(5) << a[i][j]; 
		}
		cout << endl;
	}
	cout << endl;
	x = y = 0;
	total = a[0][0] = 1;
	while (total < n * n) {
        while (y + 1 < n && !a[x][y + 1])
            a[x][++y] = ++total;
        while (x + 1 < n && !a[x + 1][y])
            a[++x][y] = ++total;
        while (y - 1 >= 0 && !a[x][y - 1])
            a[x][--y] = ++total;
        while (x - 1 >= 0 && !a[x - 1][y])
            a[--x][y] = ++total;
    }
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			cout << setw(5) << a[i][j];
		}
		cout << endl;
	}
	for (int i = 0; i < n; i++) {
		delete[] a[i];
	}
	delete[] a;
	return 0;
}
4
    0    0    0    0
    0    0    0    0
    0    0    0    0
    0    0    0    0

    1    2    3    4
   12   13   14    5
   11   16   15    6
   10    9    8    7

6、输入一些字符串,统计单词的个数,单词之间以空间隔开

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

int countword(string s) {
	int len, i = 0, num = 0;
	len = s.length();
	while (i < len) {
		while (s[i] == ' ')
			i++;
		if (i < len)
			num++;
		while (s[i] != ' ' && i < len)
			i++;
	}
	return num;

}

int main() {
	string s1;
	getline(cin, s1);
	cout << countword(s1) << endl;
	return 0;
}
qw qw qwqqw wqq qw
5

7、输入三个字符串,找出其中最小的字符串,长度最小的字符串。

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


string minstr(string s1, string s2) {
	if (s1 < s2)
		return s1;
	else
		return s2;
}

string minstrlen(string s1, string s2) {
	if (s1.size() < s2.size())
		return s1;
	else
		return s2;
}

int main() {
	string s1, s2, s3, min, minlen;
	cin >> s1 >> s2 >> s3;
	min = minstr(s1, minstr(s2, s3));
	minlen = minstrlen(s1, minstrlen(s2, s3));
	cout << min << '\n' << minlen << endl;
	return 0;
}
word cookie setprecision
cookie
word

其他:

ize())
return s1;
else
return s2;
}

int main() {
string s1, s2, s3, min, minlen;
cin >> s1 >> s2 >> s3;
min = minstr(s1, minstr(s2, s3));
minlen = minstrlen(s1, minstrlen(s2, s3));
cout << min << ‘\n’ << minlen << endl;
return 0;
}


```css
word cookie setprecision
cookie
word

其他:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值