字符数组 str,通过 gets 输入一行任意的字符串,
1)请计算字符串长度,以及 sizeof(str),并打印输出
2)请把该字符串按照 ASCII 码重新排序,并输出 3)请输入一个字串,并在该字符串中查询它的位置。注:如果找不到,输出-1
关于#字符串#的问题,如何解决?(语言-c语言)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 技术专家团-小桥流水 2023-01-01 12:50关注
遍历字符统计长度(或者strlen计算长度)sizeof()计算的是数组的大小,如果数组定义为char str[1000],sizeof(str)就是1000。
运行结果:代码:
#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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂
- ¥15 wordpress 产品图片 GIF 没法显示
- ¥15 求三国群英传pl国战时间的修改方法
- ¥15 matlab代码代写,需写出详细代码,代价私
- ¥15 ROS系统搭建请教(跨境电商用途)