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

编程,输入一个以回车结束的字符串(少于80个字符),先输出其中的小写英文字母、空格和感叹号!,然后统计出字符的个数。

#include<stdio.h>
int main()
{
char str[80];
int i,m;
gets(str);
for(i=0;i<80;i++)
{if(str[i]>='A'&&str[i]<='Z')
continue;
printf("%c",str[i]);
m++;
}
printf("字符个数有:%d\n",m);
}
哪里有问题?运行不出来

#include<iostream>
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 (nChar<65 || nChar>91)//大写字母在ASCII码之中是从65到91的。
{
oper[NewNum]=oper[i];
NewNum++;
}//如果输入的不是大写字母,则将其以新的顺序填入数组。
}//获得除去大写字母的字符串。

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

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

return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-04-24
#include<stdio.h>
int main(void)
{
int i=0,count=0;
char s[80],c;
printf("please input a string:\n");
while((c=getchar())!='\n')
{
s[i++]=c;
}
s[i]='\0';
for(i=0;s[i]!='\0';i++)
{
if(s[i]>='A'&&s[i]<='Z')
{
if(s[i]!='A'&&s[i]!='E'&&s[i]!='I'&&s[i]!='O'&&s[i]!='U')
count++;
}
}
printf("count=%d",count);
return 0;
}编程回忆录已经有八年的历史,是教程团队旗下的一个在线网络培训机构,目前已录制十三个科目,涉及到互联网开发,软件开发,游戏开发(虚拟现实开发),现在编程回忆录的Unity3D是国内唯一一家中文连载的大型视频教程。零基础开始讲解,通俗易懂 ,以实战为目地,受到众多网友的一致好评。本回答被提问者和网友采纳
第2个回答  2011-05-17
#include <stdio.h>
int main(void)
{
int index=0,flag,i=0;
char ch[80],c;
flag=0;
printf("input a character:");
scanf("%c",&c);
printf("input a string:");
getchar();
while((ch[i]=getchar())!='\n')
i++;
ch[i]='\0';
for(i=0;ch[i]!='\0';i++)
if(c==ch[i]){
index=i;
flag=1;}
if(flag==1)
printf("index=%d",index);
else
printf("Not found\n");
}

我刚刚做着道题啊,也是在知道上查的,修改了一下,运行正确。但是我也不太懂,就给你一个正确答案吧。
第3个回答  2010-04-24
在你的while((ch[i]=getchar())!='\n')前面再加一句getchar();
因为要读取你scanf时输入的回车符
相似回答