dashidai_ 2023-01-01 12:28 采纳率: 94.1%
浏览 40
已结题

关于#字符串#的问题,如何解决?(语言-c语言)

字符数组 str,通过 gets 输入一行任意的字符串,
1)请计算字符串长度,以及 sizeof(str),并打印输出
2)请把该字符串按照 ASCII 码重新排序,并输出 3)请输入一个字串,并在该字符串中查询它的位置。注:如果找不到,输出-1

  • 写回答

2条回答 默认 最新

  • 关注

    遍历字符统计长度(或者strlen计算长度)sizeof()计算的是数组的大小,如果数组定义为char str[1000],sizeof(str)就是1000。
    运行结果:

    img

    代码:

    #define _CRT_SECURE_NO_WARNINGS 1
    
    #include <stdio.h>
    #define MAXLEN 1000
    //计算长度
    int length(const char* p)
    {
        int n = 0;
        while (p[n] != '\0')
            n++;
        return n;
    }
    
    //查找字串的位置,如果找不到输出-1
    int findStr(char* big, char* sml)
    {
        int i = 0, j = 0;
        for (i = 0;  big[i] != '\0'; i++)
        {
            for (j = 0; sml[j] != '\0'; j++)
            {
                if (big[i + j] != sml[j])
                    break;
            }
            if (sml[j] == '\0')
                return i;
        }
        return -1;//没有找到
    }
    
    int main()
    {
        char str[MAXLEN] = { 0 }, tmp[MAXLEN] = { 0 };
        char sub[MAXLEN] = { 0 };
        int i, j, t;
        int len = 0;
        int pos = -1;
        printf("请输入一个字符串:\n");
        gets_s(str);
        len = length(str);
    
        //TMP保留str的原始内容,以便查找字串
        for (i = 0; str[i] != '\0'; i++)
            tmp[i] = str[i];
        tmp[i] = 0;
    
        printf("字符串长度:%d\n", len);
        printf("sizeof(str):%d\n", sizeof(str));
        //按ASCII排序并输出
        for (i = 0; i < len - 1; i++)
        {
            for (j = 0; j < len - 1 - i; j++)
            {
                if (str[j] > str[j + 1])//按ASCII码从小到大排序
                {
                    t = str[j];
                    str[j] = str[j + 1];
                    str[j + 1] = t;
                }
            }
        }
        //输出排序后的
        printf("按ASCII从小到大排序后的字符串:%s\n", str);
        //输入并查找字串
        printf("请输入一个字串:\n");
        gets_s(sub);
        pos = findStr(tmp, sub);
        printf("字串位置:%d\n", pos);//输出字串位置
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月9日
  • 已采纳回答 1月1日
  • 创建了问题 1月1日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效