输入一个字符,再输入一个以回车结束的字符串(少于80 个字符)

#include<stdio.h>
int main(void)
{
int i,b=0;
char a;
char str[80];
printf("Input a character: ");
scanf("%c",&a);
printf("Input a string: ");
i=0;
while((str[i]=getchar())!='\n'){
if(a==str[i])
b=i;
i++;
}
str[i]='\0';
if(b==0)
printf("Not Found");
else
printf("index=%d",b);
return 0;
}
不能输入字符串,是哪儿出了问题
输入一个字符,再输入一个以回车结束的字符串(少于80 个字符),在字符串中查找该字符。如果找到,则输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出“NotFound”。

用%c输入时需要注意,比较特殊,输入字符后要以回车结束,回车又会影响到下一个输入,建议这么设计输入:scanf("%c%s",&a,str);具体输入时输入一个字符然后空格再输入字符串即可。

#include

using namespace std;

int main()

{

char oper[80];//用来接收用户输入的字符串。

int num=0;//用来接收总字符数。

int NewNum=0;//用来接收新字符数。

int nChar;//用来接收每shu个字符的ASCII码值。

gets(oper);//用户输入字符串,注意!这里不能用cin语句,因为cin会遇到空格停止。

for (int m=0;m<80;m++)

{

if (oper[m]=='\0')//字符串结尾符为'\0'。

{

num=m;

}

}//获取用户输入的总字符数。

for (int i=0;i<num;i++)

{

nChar=(int)oper[i];//获取每个字符的ASCII码值。

if (nChar91)//大写字母在ASCII码之中是从65到91的。

{

oper[NewNum]=oper[i];

NewNum++;

}//如果输入的不是大写字母,则将其以新的顺序填入数组。

}//获得除去大写字母的字符串。

for (int j=0;j<NewNum;j++)

{

cout<<oper[j];

}//输出新的字符串。

cout<<endl<<"新的字符数有:"<<NewNum<<endl;

return 0;

}

扩展资料:

字符串在存储上类似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。

通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

参考资料来源:百度百科-字符串

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-12-05

1、首先新建一个php文件,命名为test.php,用于讲解在php中如何将一个字符串转换为另一个字符。

2、然后在test.php文件中,使用header()方法设置页面的编码格式为utf-8。

3、接着在test.php文件中,定义一个字符串,存放在$str变量中,用于测试。

4、在test.php文件中,再定义一个数组,用于设置将指定的字符转换为另一个字符,例如 ,将hello转换为hi,hi转换为hello。

5、在test.php文件中,使用strtr函数将字符串按数组的规则实现指定字符串的转换,同时使用echo输出转换后的结果。

6、最后在浏览器打开test.php文件,查看结果,如下图所示就完成了。

本回答被网友采纳
第2个回答  2016-05-16
#include
using namespace std;

int main()
{
char oper[80];//用来接收用户输入的字符串。
int num=0;//用来接收总字符数。
int NewNum=0;//用来接收新字符数。
int nChar;//用来接收每个字符的ASCII码值。

gets(oper);//用户输入字符串,注意!这里不能用cin语句,因为cin会遇到空格停止。
for (int m=0;m<80;m++)
{
if (oper[m]=='\0')//字符串结尾符为'\0'。
{
num=m;
}
}//获取用户输入的总字符数。

for (int i=0;i<num;i++)
{
nChar=(int)oper[i];//获取每个字符的ASCII码值。
if (nChar91)//大写字母在ASCII码之中是从65到91的。
{
oper[NewNum]=oper[i];
NewNum++;
}//如果输入的不是大写字母,则将其以新的顺序填入数组。
}//获得除去大写字母的字符串。

for (int j=0;j<NewNum;j++)
{
cout<<oper[j];
}//输出新的字符串。

cout<<endl<<"新的字符数有:"<<NewNum<<endl;

return 0;
}
第3个回答  推荐于2017-12-16
用%c输入时需要注意,比较特殊,输入字符后要以回车结束,而这个回车又会影响到下一个输入,建议这么设计输入:scanf("%c%s",&a,str);具体输入时输入一个字符然后空格再输入字符串即可。追问

这种情况是只有%c会出现吗?输入非字符型不会?

追答

%c是比较特殊的,容易引起其他的输入出问题

本回答被提问者和网友采纳
相似回答