241130-C05-字符数组
原题链接:33265.笔记 汇总2024-11-30 18:55:59
发布于:江苏
一. 练习补充知识点
1. 三目运算符
其实就是双分支的缩写版本,格式如下:
(条件) ? (语句1) : (语句2)
如果条件成立,那么执行语句1, 否则执行语句2
cout << (1 > 2 ? 2 : 3);
方法1:统计因数个数
int n, cnt = 0; //count 表示因数的个数
cin >> n;
for (int i=1; i<=n; i++) {
if (n%i == 0) {
cnt++;
}
}
if (cnt == 2) cout << "Yes";
else cout << "No";
2. 多分支的两种实现方法:
(1). if多分支:
if (){
}else if (){
}else if (){
}else{
}
(2). switch多分支:
switch(变量/表达式){
case 1: 语句1; break;
case 2: 语句2; break;
case 3: 语句3; break;
...
default:
}
实例:
int n; cin >> n;
//开关语句,n为开关变量,不能为小数类型, 可以是整数或者字符
switch(n)
{
case 1: cout << "Mon"; break;
case 2: cout << "Tue"; break;
case 3: cout << "Wed"; break;
case 4: cout << "Thu"; break;
case 5: cout << "Fri"; break;
case 6: cout << "Sat"; break;
case 7: cout << "Sun"; break;
default : cout << "error"; //如果都不是,那么输出error
}
3. 数组练习题
练习1:
输入n个元素的数组,两两进行交换, 之后输出。
输入:
6
1 2 3 4 5 6
输出:
2 1 4 3 6 5
参考程序:
int a[20010], n;
int main(){
cin >> n;
for (int i=1; i<=n; i++) cin>>a[i];
for (int i=1; i<=n; i+=2){
swap (a[i], a[i+1]);
}
for(int i=1; i<=n; i++) cout<<a[i]<<' ';
return 0;
}
二. 字符数组
1. ASCII码表
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。
💥 打死都要记住的三个ASCII码值
'0': 48
'a': 97
'A': 65
char ch = 'a';
cout << (int)ch << endl; //97
for (int i=65; i<=90; i++){
cout << (char)i << "";
printf("%c ", i+32); //char类型的占位符
}
char ch = '9'; //(48)->0
cout << ch - '0' << endl;
cout << ch - 48 << endl;
🚀 所有的字符串都是以'\0'结尾的。
ps: ascii码为0的就是啥也没有。
2. 字符数组表示的字符串
char s[1005] = {};
// cin >> s; //读不到空格
fgets(s, 1005, stdin); //获取空格
//fgets(数组名,大小,stdin)
cout << s;
字符数组的遍历与整型数组一样,只不过下标一定是从0开始。
3. 字符数组实例练习
实例1: A5700.替换字母
输入一个字符串(不含空格),将字符串中的字母 t 都换成字母 w,并这个字符串输出。字符串长度不超过 100。
#include <iostream>
using namespace std;
char s[1005];
int main(){
cin >> s;
// 所有的字符串都是以'\0'结尾的。
for (int i=0; s[i]!='\0'; i++)
{
if(s[i] == 't') s[i] = 'w';
}
cout << s;
return 0;
}
#include <iostream>
#include <cstring>
using namespace std;
char s[1005];
int main(){
cin >> s;
int len = strlen(s); //计算字符串的实际长度
for (int i=0; i<len; i++)
{
if(s[i] == 't') s[i] = 'w';
}
cout << s;
return 0;
}
实例2:A23114.大小写互换
输入一个字符串(不含空格,字符个数不超过 10000),将字符串中的大写字母转成小写字母,将字符串中的小写字母转成大写字母,并且将字符串输出。
#include <bits/stdc++.h>
using namespace std;
char s[10005];
int main(){
cin>>s;
for(int i=0;s[i]!='\0';i++){
if(s[i]>='A'&&s[i]<='Z'){
s[i]+=32;
}
else if(s[i]>='a'&&s[i]<='z'){
s[i]-=32;
}
}
cout<<s;
return 0;
}
实例3:A31059.【字符串】【入门】简单密码
Julius Caesar曾经使用过一种很简单的密码。对于明文中的每个字符,将它用它字母表中后5位对应的字符来代替,这样就得到了密文。比如字符A用F来代替。给出密文,输出明文,长度不超多200。
#include <iostream>
#include <cstring>
using namespace std;
char s[1005];
int main(){
fgets(s, 1005, stdin);
int len = strlen(s);
for(int i=0; i<len; i++){
if ('A'<=s[i] && s[i]<='E')
s[i] = s[i] - 5 + 26;
else if ('F'<=s[i] &&s[i]<='Z')
s[i] -= 5;
}
cout << s;
return 0;
}
3. 字符数组函数
strlen(a) //计算字符串的实际长度,不包含\0
strcmp(a, b) //比较两个字符串的大小(按照ascii码逐位比较),返回值可以理解为a-b
strcat(a, b) //把字符串b**增加**到字符串a的后面
stccpy(a, b) //把字符串b**复制**到字符串a
这里空空如也
有帮助,赞一个