鱼C论坛

 找回密码
 立即注册
查看: 120|回复: 1

[学习笔记] 每日一学3

[复制链接]
发表于 2024-11-26 14:21:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 6bingame 于 2024-11-26 14:22 编辑

字符串和字符数组


自动分类字符应用
课堂练习
题1:任意输入一段字符串(不超过40个字符),将输入的字符串进行分类。数字字符分为一类,字母字符分为一类,其他字符分为一类。
例如:输入asdf123456QWE!@#$789TYU,输出效果如下:

数字字符:123456789
字母字符:asdfQWETYU
其它字符:!@#$

解:
#include<stdio.h>
int main()
{
    int i,m,e,o;

    char input[40];

    char math[40],English[40],others[40];

    m=e=o=0;

    printf("输入字符串\n");

    gets(input);        //输入字符

    for(i=0;input[i];i++)
    {
        if(input[i]>='0'&&input[i]<='9')

            math[m++]=input[i];

        else if((input[i]>='a'&&input[i]<='z')||(input[i]>='A'&&input[i]<='Z'))

            English[e++]=input[i];

        else others[o++]=input[i];
    }
    printf("整数字符:");        //输出整数字符

    for(i=0;i<m;i++)

        printf("%c",math[i]);

    printf("\n");

    printf("字母字符:");        //输出字母字符

    for(i=0;i<e;i++)

        printf("%c",English[i]);

    printf("\n");

    printf("其它字符:");        //输出其它字符

    for(i=0;i<m;i++)

        printf("%c",others[i]);

    printf("\n");

    return 0;
}


题2:连接两个字符串。

解:
#include<stdio.h>
int main()
{
    char a[]="ABCDEFG";

    char b[]="123456";

    char c[80];

    int i=0,j=0,k=0;

    while(a[i]!='\0'||b[j]!='\0')   //a和b不同时到结束
    {
        if(a[i]!='\0')  //a不到结束时
        {
    c[k]=a[i];

    i++;
        }
        else    //b不到结束时

            c[k]=b[j++];

        k++;    //c数组元素下标
    }
    c[k]='\0';  //c数组最后一个元素,标志字符串结束

    puts(c);

    return 0;
}


题3:两个字符串复制程序。

解:
#include<stdio.h>

#define LSIZE 81

void strcopy(char[],char[]);

int main()
{
    char message[LSIZE];    //原数组

    char newMessage[LSIZE]; //复制后的数组

    printf("输入字符串:");

    gets(message);

    strcopy(newMessage,message);

    puts(newMessage);

    return 0;
}
//复制string2到string1
void strcopy(char string1[],char string2[])
{
    int i=0;    //i是下标

    while(string2[i]!='\0') //是否结束
    {
        string1[i]=string2[i];  //复制

        i++;
    }
    string1[i]='\0';    //结束标志
}

评分

参与人数 1鱼币 +3 收起 理由
中英文泡椒 + 3 继续加油

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-11-26 14:28:15 | 显示全部楼层
#include <stdio.h>
#include <string.h>

int main() {
    char input[41]; // 用于存储输入的字符串,长度为40个字符加上一个结束符
    char math[41] = ""; // 用于存储数字字符
    char English[41] = ""; // 用于存储字母字符
    char others[41] = ""; // 用于存储其他字符

    int m = 0, e = 0, o = 0; // 分别用于记录数字、字母和其他字符的数量

    printf("输入字符串
");
    fgets(input, 41, stdin); // 使用fgets代替gets,避免缓冲区溢出

    for (int i = 0; i < strlen(input); i++) {
        if (input[i] >= '0' && input[i] <= '9') {
            math[m++] = input[i];
        } else if ((input[i] >= 'a' && input[i] <= 'z') || (input[i] >= 'A' && input[i] <= 'Z')) {
            English[e++] = input[i];
        } else {
            others[o++] = input[i];
        }
    }

    // 输出结果
    printf("数字字符:%s
", math);
    printf("字母字符:%s
", English);
    printf("其它字符:%s
", others);

    return 0;
}

以上代码实现了将输入的字符串分类为数字字符、字母字符和其他字符。请注意,使用`fgets`代替`gets`以避免缓冲区溢出的问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 17:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表