查找指定字符

本题要求编写程序,从给定字符串中查找某指定的字符。

输入格式:
输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。

输出格式:
如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。

输入样例1:
m
programming

输出样例1:
index = 7

输入样例2:
a
1234

输出样例2:
Not Found

一开始想使用字符串解决,发现存在空格问题,于是改变方向,使用单个字符进行循环

#include <stdio.h>
int main()
{
	int a, b;
	char c, d;
	scanf("%c\n", &c);
	for (a = -1, b = 0; b < 80; b++)
	{
		scanf("%c", &d);
		if (d==10)
			break;
		if (c == d)
			a = b;
	}
	if (a == -1)
		printf("Not Found");
	else
		printf("index = %d", a);
	return 0;
}
在C语言中查找指定字符,可通过遍历字符数组并逐个比较元素与指定字符来实现。以下为两个示例代码: 示例代码一: ```c #include <stdio.h> #include <string.h> int main() { char a, b[100]; int c, i = 0, d = -1; a = getchar(); // 输入查找字符 getchar(); // 吃掉字符'\n',否则会使系统错误识别,无法输出预期结果 gets(b); c = strlen(b); // 小建议:字符数组的大小尽量以这种方法计算 for (i = 0; i < c; i++) { if (b[i] == a) { d = i; } } // 将数组中的字符与待查找字符进行比较 if (d == -1) // 此处的d用于判断是否找到对应字符 { printf("Not Found"); } else { printf("index = %d", d); } return 0; } ``` 此代码中,首先使用`getchar()`获取待查找字符,接着用另一个`getchar()`吃掉换行符,避免影响后续输入。然后使用`gets()`获取字符串,通过`strlen()`计算字符串长度。最后遍历字符串,若找到指定字符则记录其索引,若未找到则输出`Not Found` [^1]。 示例代码二: ```c #include <stdio.h> #include <string.h> int main() { int i, flag = -1; char m, a[100], ch; scanf("%c", &m); ch = getchar(); gets(a); for (i = 0; i < strlen(a); i++) { if (a[i] == m) flag = i; } if (flag >= 0) printf("index = %d", flag); else printf("Not Found"); return 0; } ``` 该代码利用`scanf()`获取待查找字符,再用`getchar()`吃掉换行符,接着使用`gets()`获取字符串。通过遍历字符串,若找到指定字符则更新`flag`为该字符的索引,若未找到则输出`Not Found` [^2]。 需要注意,由于题目要求第一行输入一个字符,第二行输入一个字符串,所以在输入一个字符之后,会先按回车键,再进行字符串输入。因此要用`getchar()`将这个换行操作吃掉,再进行字符串输入,直到换行才结束。若前面没有加这个`getchar()`,则输入的第一个字符即为换行键,索引的值不会改变,结果始终输出`Not Found` [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值