7-1 sdut-C语言实验-字符编码

请将一串长度最长为5的纯字母文本译成一个密码,密码规律如下:用原来的字母后面的第4个字母代替原来的字母。如C用G代替(如果该字母没后面没有第4个字母可代替,则需从26字母表中的首字母开始代替,比如:W用A代替,Z用D代替),最后得到的文本即为密码。

输入格式:

输入一串文本,长度最大为5。

输出格式:

输出对应的密码。格式为:
password is 密码

输入样例:

China

输出样例:

在这里给出相应的输出。例如:

password is Glmre
#include <iostream>
using namespace std;

#define N 100

int main() {
    char str[N];
    cin.getline(str, N); // 使用getline()函数以支持输入包含空格的字符串

    for (int i = 0; str[i] != '\0'; i++) {
        if (isalpha(str[i])) { // 检查字符是否为字母
            if (islower(str[i])) { // 如果是小写字母
                str[i] = 'a' + (str[i] - 'a' + 4) % 26; // 通过模运算实现循环移位
            } else if (isupper(str[i])) { // 如果是大写字母
                str[i] = 'A' + (str[i] - 'A' + 4) % 26; // 通过模运算实现循环移位
            }
        }
    }

    cout << "password is " << str << endl;

    return 0;
}

一个小小的问题,isalpha和islower以及isupper都需要整型函数作为参量,但是字符a[i]却可以应用函数是因为进行了隐式转换

7-2 sdut - C语言实验-保留字母

编一个程序,输入一个允许带空格的字符串,将组成字符串的所有非英文字母的字符删除后输出。

输入格式:

一个字符串,长度不超过80个字符。

输出格式:

删掉非英文字母后的字符串。

输入样例:

abc123+xyz.5

输出样例:

在这里给出相应的输出。例如:

abcxyz
#include<bits/stdc++.h>
using namespace std;
char a[10010];
int main(){
    cin.getline(a,10010);
    //应该是字符a[i]!='\0';
    for(int i=0;a[i]!='\0';i++){
        if(isalpha(a[i])){
            cout<<a[i];
        }
    }
    return 0;
}

 

 

 

7-6 sdut-C语言实验- 全字母句

全字母句 (pangram) 指包含字母表中全部 26 种英文字母(不区分大小写)的句子,其常被用于展示英文字体的显示效果。

输入多个句子,判断哪些句子是全字母句。
注意:句子是可以带空格的。

输入格式:

输入数据有多组(数据组数不超过 100),到 EOF 结束。

每组数据包含一行长度不超过 100 的字符串。

输出格式:

对于每组数据,输出一行。

如果是全字母句则输出 "Yes",否则输出 "No"(不包括引号)。

输入样例:

The quick brown fox jumps over the lazy dog.
The 6th ACM Funny Programming For/While Contest

输出样例:

Yes
No
#include <iostream>
#include<string>
//#include<bits/stdc++.h>
using namespace std;
const int N = 100;

void up(string& str) {
    for (int i = 0; i < str.size(); i++) {
        if (str[i] >= 'a' && str[i] <= 'z') {
            str[i] = str[i] - 32;
        }
    }
}
string s; int a[N];   //不知道为什么把这一行代码提到int main里面就出错,应该是和自定义函数有关
int main() {
   // string s; int a[N];

    while (getline(cin, s)) {
        memset(a, 0, sizeof(a));
        up(s);
        unsigned int m = s.size();
        for (unsigned int i = 0; i < s.size(); i++) {
            if (s[i] >= 65 && s[i] <= 90) {
                a[s[i]]++;
            }
        }
        int cnt = 0;
        for (int i = 65; i <= 90; i++) {
            if (a[i] != 0) cnt++;
        }
        if (cnt == 26) cout << "Yes" << endl;
        else cout << "No" << endl;
    }
    return 0;
}

 

posted on 2024-05-19 20:55  fafrkvit  阅读(66)  评论(0)    收藏  举报