实验4-必做题(2)用c语言实现查找字符串中所有指定的字符 要求编写一个实现输出字符串s中值等于字符ch的所有字符的函数,并用主函数测试结果。 输入格式: 输入有2行,第一行是一个字符x,表示需要查找的字符;第二行是一个以回车结束的非空字符串(不超过100个字符)。 输出格式: 输出所有查找到的字符的下标(从0开始),每个数之间隔1个空格,行末不留空格,如果查找不到,输出-1。
时间: 2023-06-18 16:06:31 浏览: 242
以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char ch, s[100];
int i, len, flag = 0;
scanf("%c", &ch); // 输入需要查找的字符
getchar(); // 消耗多余的换行符
fgets(s, 100, stdin); // 输入字符串
len = strlen(s); // 获取字符串长度
for(i = 0; i < len; i++)
{
if(s[i] == ch)
{
printf("%d ", i);
flag = 1; // 查找到标记为1
}
}
if(!flag) // 如果没有查找到
{
printf("-1");
}
return 0;
}
```
使用 `fgets()` 函数可以读入带空格的字符串,然后遍历字符串,判断每个字符是否等于需要查找的字符,如果相等就输出该字符的下标,同时将查找到的标记 `flag` 设为1。如果遍历完整个字符串仍然没有查找到,则输出-1。
相关问题
用c语言实现查找字符串中所有指定的字符要求编写一个实现输出字符串s中值等于字符ch的所有字符的函数,并用主函数测试结果。输入格式: 输入有2行,第一行是一个字符x,表示需要查找的字符;第二行是一个以回车结束的非空字符串(不超过100个字符)。 输出格式: 输出所有查找到的字符的下标(从0开始),每个数之间隔1个空格,行末不留空格,如果查找不到,输出-1。
以下是用C语言实现查找字符串中所有指定的字符的代码:
```c
#include <stdio.h>
#include <string.h>
void find_char(char ch, char *s) {
int len = strlen(s);
int found = 0;
for (int i = 0; i < len; i++) {
if (s[i] == ch) {
printf("%d ", i);
found = 1;
}
}
if (!found) {
printf("-1");
}
}
int main() {
char ch, s[100];
scanf("%c", &ch);
scanf("%s", s);
find_char(ch, s);
return 0;
}
```
主函数中首先读入需要查找的字符 `ch` 和字符串 `s`,然后调用 `find_char` 函数进行查找。 `find_char` 函数遍历整个字符串 `s`,如果找到与 `ch` 相等的字符,就输出它的下标。如果没有找到,就输出 `-1`。
编写算法删除字符串s中值等于ch(变量名)的所有字符,用c语言实现
好的,我了解了您的要求。下面是C语言实现删除字符串s中值等于ch的所有字符的代码:
```c
#include <stdio.h>
#include <string.h>
void removeChar(char *s, char ch) {
int len = strlen(s);
int j = 0;
for (int i = 0; i < len; i++) {
if (s[i] != ch) {
s[j] = s[i];
j++;
}
}
s[j] = '\0';
}
int main() {
char s[100];
char ch;
printf("请输入字符串: ");
fgets(s, 100, stdin);
printf("请输入要删除的字符: ");
scanf("%c", &ch);
removeChar(s, ch);
printf("删除后的字符串为: %s\n", s);
}
```
您可以将要删除的字符串存储在字符数组s中,将要删除的字符存储在char类型的变量ch中。函数removeChar()将遍历字符串s中的每个字符,如果字符不等于ch,则将其存储在原始字符串的位置。最后用'\0'结束字符串。
阅读全文