如何用C语言解决该题?

编写程序,实现以下功能:

首先,提示用户输入一个字符串(按回车键确认);
然后,依次判断用户输入的每个字符,进行转换后输出。转换规则如下:
如果该字符为大写字母,则将其转换为对应的小写字母;
如果该字符为小写字母,则将其转换为对应的大写字母;
如果该字符为数字,则将其转换为井号;
如果该字符为其它字符,则将其转换为加号;
最后,在新的一行输出字符总数信息。
例如:假如用户输入:“Ab1-2”,则系统先输出:“aB#+#”,然后在新的一行输出:“您共输入了5个字符!”。

img


#include <stdio.h>
int my_strlen(char *s); //自定义一个函数,用来计算字符串的长度
int main()
{
    char str[100]; //定义一个字符数组,用来存储用户输入的字符串
    int i; //定义一个循环变量
    int len; //定义一个变量,用来存储字符串的长度
    printf("请输入一个字符串(按回车键确认):\n"); //提示用户输入一个字符串
    gets(str); //使用gets函数读取用户输入的字符串,并存储在str数组中
    len = my_strlen(str); //使用自定义的函数计算字符串的长度,并赋值给len变量
    printf("转换后的结果为:\n"); //输出转换后的结果
    for (i = 0; i < len; i++) //使用for循环遍历字符串中的每个字符
    {
        if (str[i] >= 'A' && str[i] <= 'Z') //如果该字符为大写字母
        {
            str[i] = str[i] + 32; //则将其转换为对应的小写字母,即ASCII码值加32
        }
        else if (str[i] >= 'a' && str[i] <= 'z') //如果该字符为小写字母
        {
            str[i] = str[i] - 32; //则将其转换为对应的大写字母,即ASCII码值减32
        }
        else if (str[i] >= '0' && str[i] <= '9') //如果该字符为数字
        {
            str[i] = '#'; //则将其转换为井号
        }
        else //如果该字符为其它字符
        {
            str[i] = '+'; //则将其转换为加号
        }
        printf("%c", str[i]); //输出转换后的字符
    }
    printf("\n您共输入了%d个字符!\n", len); //在新的一行输出字符总数信息
    return 0;
}

int my_strlen(char *s) //自定义一个函数,用来计算字符串的长度
{
    int count = 0; //定义一个变量,用来记录字符个数
    while (*s != '\0') //使用while循环遍历字符串,直到遇到空字符结束
    {
        count++; //每遇到一个非空字符,就将count加一
        s++; //将指针s向后移动一位,指向下一个字符
    }
    return count; //返回count作为字符串的长度
}

以下是使用C语言实现该功能的代码:

#include <stdio.h>

int main() {
    char str[100];
    int count = 0; // 统计输入字符总数
    printf("请输入字符串:");
    scanf("%s", str);
    printf("转换后的结果为:");
    for (int i = 0; str[i] != '\0'; i++) {
        if (str[i] >= 'A' && str[i] <= 'Z') { // 大写字母转小写字母
            printf("%c", str[i] + ('a' - 'A'));
        }
        else if (str[i] >= 'a' && str[i] <= 'z') { // 小写字母转大写字母
            printf("%c", str[i] - ('a' - 'A'));
        }
        else if (str[i] >= '0' && str[i] <= '9') { // 数字转井号
            printf("#");
        }
        else { // 其他字符转加号
            printf("+");
        }
        count++;
    }
    printf("\n您共输入了%d个字符!", count);
    return 0;
}

用户输入一个字符串后,程序依次遍历每个字符并进行相应的转换,输出转换后的结果。在统计完输入字符总数后,输出提示信息。运行该程序,可以得到与题目描述中相同的输出结果。

以下内容引用CHATGPT、有用望采纳:

思路:

  1. 提示用户输入一个字符串;
  2. 用循环逐一判断输入的每个字符,进行转换后输出;
  3. 统计字符总数并输出。

代码实现:

#include <stdio.h>

int main() {
    char str[100];
    int i, count = 0;
    printf("请输入一个字符串:");
    scanf("%s", str);
    printf("转换后的字符串为:");
    for (i = 0; str[i] != '\0'; i++) {
        if (str[i] >= 'A' && str[i] <= 'Z') { // 大写字母转小写
            printf("%c", str[i] + 32);
        } else if (str[i] >= 'a' && str[i] <= 'z') { // 小写字母转大写
            printf("%c", str[i] - 32);
        } else if (str[i] >= '0' && str[i] <= '9') { // 数字转井号
            printf("#");
        } else { // 其它字符转加号
            printf("+");
        }
        count++;
    }
    printf("\n您共输入了%d个字符!", count);
    return 0;
}

#include<stdio.h>
#include<string.h>
int main() {
    char str[1000]= {'\0'}; //定义一个初始内容全部为空的字符数组 ,现长度为100,可以根据要求修改
    printf("请输入一个字符串:\n");
    gets(str);//考虑到输入的字符串中可能会有空格相较于scanf ,    gets()更好      (scanf遇到空格会停止读取)
    int len=strlen(str);//strlen()--用于计算字符串的长度
    for(int i=0; i<len; i++) {
        if(str[i]>='A'&&str[i]<='Z') {
            str[i]+=32;
        }//大写转小写,在ASCII码里小写字母比大写字母大32
        else if(str[i]>='a'&&str[i]<='z') {
            str[i]-=32;
        }//小写转大写
        else if(str[i]>='0'&&str[i]<='9') { //在字符数组中数字应当为字符形式,ascii码中0到9为其他字符
            str[i]='#';
        }//如果该字符为数字,则将其转换为井号
        else {
            str[i]='+';
        }//如果字符为其它字符,则将其转换为加号;
    }
    printf("%s\n",str);//输出字符串 
    printf("您共输入了%d个字符\n", len);
    return 0;
}

img

#include <stdio.h>
#include <ctype.h> // 调用toupper和tolower函数

int main() {
    char str[100];
    int count = 0; // 统计字符个数
    printf("请输入一个字符串:");
    scanf("%s", str);
    printf("转换后的字符串为:");
    for (int i = 0; str[i] != '\0'; i++) {
        if (isupper(str[i])) { // 判断是否为大写字母
            printf("%c", tolower(str[i])); // 转换为小写字母并输出
        } else if (islower(str[i])) { // 判断是否为小写字母
            printf("%c", toupper(str[i])); // 转换为大写字母并输出
        } else if (isdigit(str[i])) { // 判断是否为数字
            printf("#"); // 输出井号
        } else {
            printf("+"); // 其他字符输出加号
        }
        count++; // 统计字符个数
    }
    printf("\n您共输入了%d个字符!", count);
    return 0;
}

#include <stdio.h>
#include <ctype.h>
int main() {
    char str[100];
    int count = 0;
    printf("Enter a string: ");
    scanf("%s", str);
    for (int i = 0; str[i] != '\0'; i++) {
        if (isupper(str[i])) {
            printf("%c", tolower(str[i]));
        } else if (islower(str[i])) {
            printf("%c", toupper(str[i]));
        } else if (isdigit(str[i])) {
            printf("#");
        } else {
            printf("+");
        }
        count++;
    }
    printf("\nYou entered %d characters.\n", count);
    return 0;
}



```c
#include <stdio.h>
#include <ctype.h>

int main() {
    char str[100];
    int count = 0;
    
    printf("请输入一个字符串:\n");
    scanf("%s", str);
    
    printf("转换后的字符串为:");
    for (int i = 0; str[i] != '\0'; i++) {
        char ch = str[i];
        if (isupper(ch)) { // 如果该字符为大写字母,则转换为小写字母
            ch = tolower(ch);
        } else if (islower(ch)) { // 如果该字符为小写字母,则转换为大写字母
            ch = toupper(ch);
        } else if (isdigit(ch)) { // 如果该字符为数字,则转换为井号
            ch = '#';
        } else { // 如果该字符为其它字符,则转换为加号
            ch = '+';
        }
        printf("%c", ch);
        count++; // 计算字符总数
    }
    
    printf("\n您共输入了%d个字符!", count);
    return 0;
}


```

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
以下是使用C语言编写的解答代码:

#include <stdio.h>
#include <ctype.h>

int main() {
    char str[100];
    int count = 0;  // 统计输入的字符数
    
    printf("请输入一个字符串:\n");
    scanf("%s", str);
    
    for (int i = 0; str[i] != '\0'; i++) {
        count++;  // 每读取一个字符计数器+1
        
        if (isupper(str[i])) {
            str[i] = tolower(str[i]);  // 大写字母转换为小写字母
        }
        else if (islower(str[i])) {
            str[i] = toupper(str[i]);  // 小写字母转换为大写字母
        }
        else if (isdigit(str[i])) {
            str[i] = '#';  // 数字转换为井号
        }
        else {
            str[i] = '+';  // 其他字符转换为加号
        }
    }
    
    printf("%s\n", str);
    printf("您共输入了%d个字符!\n", count);
    
    return 0;
}

程序先提示用户输入一个字符串,然后读入并保存到字符数组中。使用for循环依次遍历数组中每个字符,按照题目要求进行转换,并统计字符数。最后,输出转换后的新字符串和统计信息。
如果我的回答解决了您的问题,请采纳!

这个还是比较简单的:

#include <stdio.h>
#include <ctype.h>

int main() {
    char s[100];
    int i, count = 0;
    printf("请输入一个字符串:");
    scanf("%s", s);
    printf("转换后的字符串为:");
    for (i = 0; s[i] != '\0'; i++) {
        if (isupper(s[i])) {
            printf("%c", tolower(s[i]));
        } else if (islower(s[i])) {
            printf("%c", toupper(s[i]));
        } else if (isdigit(s[i])) {
            printf("#");
        } else {
            printf("+");
        }
        count++;
    }
    printf("\n您共输入了%d个字符!", count);
    return 0;
}

该程序首先提示用户输入一个字符串,然后遍历字符串中的每个字符,根据转换规则进行转换,同时统计字符总数。最后输出转换后的字符串和字符总数。在实现中,使用了C标准库中的一些字符处理函数,如isupper、tolower、isdigit等。

引用chatGPT作答,以下是用 C 语言实现该功能的代码示例:

#include <stdio.h>
#include <ctype.h>

int main() {
    char input[100];
    int count = 0;
    
    printf("请输入一个字符串:\n");
    fgets(input, 100, stdin);  // 读取用户输入的字符串
    
    printf("转换后的字符串为:");
    for (int i = 0; input[i] != '\0'; i++) {
        char c = input[i];
        if (isupper(c)) {  // 大写字母转小写字母
            c = tolower(c);
        } else if (islower(c)) {  // 小写字母转大写字母
            c = toupper(c);
        } else if (isdigit(c)) {  // 数字转井号
            c = '#';
        } else {  // 其它字符转加号
            c = '+';
        }
        count++;
        printf("%c", c);
    }
    printf("\n您共输入了%d个字符!\n", count);
    
    return 0;
}

代码的执行过程如下:

1.定义了一个字符数组 input 和一个整数变量 count,分别用于存储用户输入的字符串和字符总数。
2.使用 printf 函数提示用户输入一个字符串,并使用 fgets 函数读取用户输入的字符串(这里假设用户输入的字符串不超过 100 个字符)。
3.使用 for 循环遍历用户输入的字符串,依次判断每个字符并进行相应的转换,同时将字符总数加 1。
4.使用 printf 函数输出转换后的字符串和字符总数信息。
其中,使用了 C 语言标准库中的 ctype.h 头文件中的函数 isupper、islower、isdigit、tolower 和 toupper 来判断字符类型和进行大小写转换。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^