求解释?哪位能看下这个程序?错在哪?该如何处理
求解释??哪位能看下这个程序?错在哪?
描述:给你一个字母不重复的字符串,再给你一个字母,请你编写程序输出该字母在字符串中第一次出现时候的位置,如果不在该字符串中,则输出-1
输入:
一个长度不大于20的字符串,和一个字母,它们中间用一个空格格开
输出:
输出要查找的字母在字符串中第一次出现时候的位置,最后输出一个回车
[code=C/C++][/code]#include <stdio.h>
#include <string.h>
void scan(char*str,char*ch);
void print(char*str,char ch);
int main()
{
char str[20];
char ch;
scan(str,&ch);
print(str,ch);
return 0;
}
void scan(char*str,char*ch)
{
scanf("%s",str);
scanf("%c",ch);
}
void print(char*str,char ch)
{
int i=0;
while(str[i]!=ch)
{
i++;
}
i==strlen(str)?printf("0\n"):printf("%d\n",i);
}
------解决方案--------------------
while(str[i]!=ch)
while(str[i]!=ch&& strr[i]!='\0')
原来的找不到会出现内存越界
------解决方案--------------------
while(str[i]!=ch)
{
i++;
}
这句如果str没有ch就是死循环,况且输出的应该是-1而不是0。其次当str[i]==ch时ch出现的实际位置应该i+1,因为str[0]是第一个元素啊
------解决方案--------------------
#include <string.h>
#include<stdio.h>
void scan(char*str,char*ch);
void print(char*str,char ch);
int main()
{
char str[20];
char ch;
scan(str,&ch);
print(str,ch);
return 0;
}
void scan(char*str,char*ch) //函数前面要加返回类型
{
scanf("%s\n",str); //加上换行,否则即使输入空格或回车也会被当成字符的
scanf("%c",ch);
}
void print(char*str,char ch) ////函数前面要加返回类型
{
int i=0;
while(str[i]!=ch)
{
i++;
if(i>int(strlen(str))) //这里设置一个出口
break;
}
i>int(strlen(str))?printf("-1\n"):printf("%d\n",i); //strlen返回值是无符号型,这里强制转换下
}
帮你改了下! 看看吧!
描述:给你一个字母不重复的字符串,再给你一个字母,请你编写程序输出该字母在字符串中第一次出现时候的位置,如果不在该字符串中,则输出-1
输入:
一个长度不大于20的字符串,和一个字母,它们中间用一个空格格开
输出:
输出要查找的字母在字符串中第一次出现时候的位置,最后输出一个回车
[code=C/C++][/code]#include <stdio.h>
#include <string.h>
void scan(char*str,char*ch);
void print(char*str,char ch);
int main()
{
char str[20];
char ch;
scan(str,&ch);
print(str,ch);
return 0;
}
void scan(char*str,char*ch)
{
scanf("%s",str);
scanf("%c",ch);
}
void print(char*str,char ch)
{
int i=0;
while(str[i]!=ch)
{
i++;
}
i==strlen(str)?printf("0\n"):printf("%d\n",i);
}
------解决方案--------------------
while(str[i]!=ch)
while(str[i]!=ch&& strr[i]!='\0')
原来的找不到会出现内存越界
------解决方案--------------------
while(str[i]!=ch)
{
i++;
}
这句如果str没有ch就是死循环,况且输出的应该是-1而不是0。其次当str[i]==ch时ch出现的实际位置应该i+1,因为str[0]是第一个元素啊
------解决方案--------------------
#include <string.h>
#include<stdio.h>
void scan(char*str,char*ch);
void print(char*str,char ch);
int main()
{
char str[20];
char ch;
scan(str,&ch);
print(str,ch);
return 0;
}
void scan(char*str,char*ch) //函数前面要加返回类型
{
scanf("%s\n",str); //加上换行,否则即使输入空格或回车也会被当成字符的
scanf("%c",ch);
}
void print(char*str,char ch) ////函数前面要加返回类型
{
int i=0;
while(str[i]!=ch)
{
i++;
if(i>int(strlen(str))) //这里设置一个出口
break;
}
i>int(strlen(str))?printf("-1\n"):printf("%d\n",i); //strlen返回值是无符号型,这里强制转换下
}
帮你改了下! 看看吧!