6bingame 发表于 2024-11-26 14:21:20

每日一学3

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

字符串和字符数组

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

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

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

    char input;

    char math,English,others;

    m=e=o=0;

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

    gets(input);      //输入字符

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

            math=input;

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

            English=input;

      else others=input;
    }
    printf("整数字符:");      //输出整数字符

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

      printf("%c",math);

    printf("\n");

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

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

      printf("%c",English);

    printf("\n");

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

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

      printf("%c",others);

    printf("\n");

    return 0;
}


题2:连接两个字符串。

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

    char b[]="123456";

    char c;

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

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

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

            c=b;

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

    puts(c);

    return 0;
}


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

解:
#include<stdio.h>

#define LSIZE 81

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

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

    char newMessage; //复制后的数组

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

    gets(message);

    strcopy(newMessage,message);

    puts(newMessage);

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

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

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

FishC 发表于 2024-11-26 14:28:15

#include <stdio.h>
#include <string.h>

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

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

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

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

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

    return 0;
}

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 每日一学3