用指针编写一个程序,先从键盘上输入一个字符串,然后在该字符串中查找是否有’x’字符。如果有,输出第一

用指针编写一个程序,先从键盘上输入一个字符串,然后在该字符串中查找是否有’x’字符。如果有,输出第一个‘x’字符的位置,如果没有,则输出-1。

#include"stdio.h"
void main()
{
int research(char string[]);
char str[80];
int k;
printf("请输入一个字符串:\n");
scanf("%s",str);
k=research(str);
if(k!=-1)printf("第一个x的下表为%d\n",k);
else printf("该字符串中没有x!\n");
}
int research(char string[])
{
int i;
char *p=string;
for(i=0;*(p+i)!='\0';i++)
if(*(p+i)=='x')
{return i;break;}
return -1;
}
运行过了,是正确的!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-29
#include<stdio.h>
main()
{
char a[100];
char *p;
p=&a[0];
printf("输入一个字符串:");
gets(a);
for(;*p!='\0';p++)
{
if(*p=='x')
{
printf("x位于第%d个。\n",p-&a[0]+1);
break;
}
}
if(*p=='\0')
printf("-1\n");
}
(VC++6.0运行)本回答被提问者采纳
第2个回答  2011-12-29
源码如下:
#include <stdio.h>

int searchA(char *s, int c)
{
int i = -1;
char *p = s;
while (p != NULL && *p != '\0' && *p != c) p++;

if (p != '\0') i = (int)(p - s) + 1; // 如果以0为起始,就把+1去掉

return i;
}

int main (int argc, const char * argv[])
{
int s[100] = {0}, index;
scanf("%s", s);
index = searchA(s, 'x');
printf("%d\n", index);

return 0;
}追问

怎么没有这个……“如果没有X字符,则输出-1”这问的呢……高手……

追答

没有x就输出-1啊,没问题啊,本来就是这么实现的啊,你认为需要怎么样才叫有呢?

第3个回答  2011-12-29
#include "stdio.h"

void main()
{
char str[81];
char *p=str;
gets(str);
while(*p)
{
if(*p=='x')
break;
p++;
}
if(*p=='x')
printf("%d\n",p-str);
else printf("-1\n");
}
第4个回答  2011-12-29
输入第一...问题没写完吧追问

补充完了……可以的话,加分都没问题的……

相似回答