C语言 编译函数 输入一段字符,求其中空格的个数

作者&投稿:牟贴 (若有异议请与网页底部的电邮联系)
用C语言编写一段程序,要求:输入一段字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。(~

你好!

给你一个程序,你试试吧,有问题再问
#include #include main(){char c[20];int i=0,j=0,k=0,l=0,h=0;printf("请输入一个字符串:");gets(c); for(i=0;i='0'&&c[i]='a'&&c[i]='A'&&c[i]32&&c[i]=58&&c[i]=91&&c[i]=123&&c[i]<=126))h++;}printf("数字有%d个
",j);printf("字母有%d个
",k);printf("空格有%d个
",l);printf("其它字符有%d个
",h);return 0;}

#include #include #define LEN 50int main (void) {char str[LEN];char *p = str;char cap[LEN], low[LEN], num[LEN], space[LEN], oth[LEN]; /*分类存储字符*/int capCnt, lowCnt, numCnt, spaceCnt, othCnt; /*分类计数*/capCnt = lowCnt = numCnt = spaceCnt = othCnt = 0;puts ("输入字符串:");gets (str);while (*p) {if (*p>='A'&&*p='a'&&*p='0'&&*p<='9') {num[numCnt] = *p;numCnt++;}else if (*p==' ') {space[spaceCnt] = *p;spaceCnt++;}else {oth[othCnt] = *p;othCnt++;}p++;}*p = cap[capCnt] = low[lowCnt] = num[numCnt] = space[spaceCnt] = oth[othCnt] = '\0'; /*字符串结束符*/ putchar ('
');printf ("大写字母%d个:%s
", capCnt ,cap);printf ("小写字母%d个:%s
", lowCnt ,low);printf ("数字%d个:%s
", numCnt ,num);printf ("空格%d个:%s
", spaceCnt ,space);printf ("其他字符%d个:%s
", othCnt ,oth);putchar ('
');getch (); /*屏幕暂留*/ return 0;}运行结果

貌似几个方面有问题:
1.接收有空格的字符串用gets(str);
scanf遇到空格自动结束接收。
2.scanf语句中,数组名就是它的地址,所以不要加&。
3.两个函数中,getchar();这句是多余的。
4.后一个函数中,for语句有问题(当你输入的字符中有0时会出错)。
5.下面代码可以供你参考。
代码一:
#include<stdio.h>
void main()
{
char str[30];
int i,a=0;
printf("Input string:\n");
gets(str);
for(i=0;str[i]!='0';i++)
{
if (str[i]==' ')
a++;
}
printf("%d\n",a);
}
代码二:
#include<stdio.h>
void main()
{
char str[30];
int i,t,b=0;
printf("Input string:\n");
gets(str);
t=strlen(str);
for(i=0;i<t;i++)
{
if (str[i]>='a'&& str[i]<='z')
b++;
}
printf("%d\n",b);
}

1

scanf("%s",&str);改为gets(str);
scanf本来就过滤了空格

void main()
{
char str[30];
int i,a=0;
printf("输入一个字符串:\n");
scanf("%s",&str);
getchar();
for(i=0;str[i]!='\0';i++)
{ if (str[i]==' ')a++;}
printf("%d\n",a);
}

2。
int main(int argc, char* argv[])
{
char str[30];
int i,b=0;
memset(str,0,sizeof(str));

printf("输入一个字符串:\n");
scanf("%s",&str);

for(i=0;str[i]!='\0';i++)
{
if (str[i]>='a'&& str[i]<='z')
b++;
}
printf("%d\n",b);

getchar();
return 0;
}

scanf("%s",&str);使用了%s,就不用加&了,改为:scanf("%s",str);
for(i=0;str[i]!='0';i++) ,应该是结束标示符,而不是‘0’,改为:for(i=0;str[i]!='\0';i++)。

#include<stdio.h>
void main()
{
 char str[30];
 int i,b=0;
 printf("input a string:
");
 scanf("%s",str);
 for(i=0;str[i]!='\0';i++)
 { if (str[i]>='a'&& str[i]<='z')b++;}
 printf("%d
",b);
}


代码存在如下问题:
1) C语言中,字符串结束的标记是'\0',虽然其数值上确实就是0,但你不能用字符'0'去判断(字符'0'的ASCII码是48)。故两段代码中的循环都要做出修改,此修改可解决第二段代码的错误。
2) C语言的scanf()函数在读取输入流时,回车和空格都是终结符,所以通过scanf()函数来输入字符串,你的变量str仅得到了用户输入的第一个空格前面的内容(例如输入“abc de fgh”,实际str = "abc\0"),所以此段代码即使修改了循环那里的错误,也无法得到正确的结果。想要读入空格,请更换其他输入函数。


新和县17662161879: C语言:写一个函数,求一个字符串的长度.在main函数中输入字符串并输出其长度 -
安高辉腾: #include<iostream> using namespace std; int main() { int character(char *a); char a[20]; int length; cout<<"请输入一个字符串:"<<endl; cin>>a; length=character(a); cout<<"字符串长度为:"<<length<<endl; return 0; } 扩展资料: return用...

新和县17662161879: C语言 编译函数 输入一段字符,求其中空格的个数 -
安高辉腾: 貌似几个方面有问题:1.接收有空格的字符串用gets(str); scanf遇到空格自动结束接收.2.scanf语句中,数组名就是它的地址,所以不要加&.3.两个函数中,getchar();这句7a686964616fe58685e5aeb931333332616439是多余的.4.后一个...

新和县17662161879: C语言编程在主函数中输入一个字符串利用函数求得字符串中大写字母小写字母数字字符空格及其他字符的个数 -
安高辉腾: #include int main(void) {char ch[100];void count(char * p);printf("请输入字符串 : ");gets(ch);count(ch);return 0; } void count(char * p) {int upp=0, low=0, digi=0, spa=0, oth=0;for (int i = 0; p[i]; ++i){if (isupper(p[i]))upp++;else if (...

新和县17662161879: C语言 输入一行字符,分别统计求出其中英文字母、空格、数字和其他字符的个数并输出结果 -
安高辉腾: ||#include "stdio.h" void main() {char s;int i=0,j=0,k=0,m=0,da=0,xiao=0;printf("please input the string\n");while((s=getchar())!='\n') /*循环从键盘读入字符直到一行结束(输入回车)*/{if((s='a')||(s'A')) {if(s='A')da++;if(s='a')xiao++;i++; ...

新和县17662161879: c语言用函数求一段文字中的空格,之母,数字和其他字符的数量! -
安高辉腾: 1234567891011121314151617181920212223242526272829303132333435363738394041 #include <stdio.h> chartext[3][80]; voidcount(int*upp, int*low, int*dig, int*spa, int*oth);//#####【1】#####;//函数原型声明 intmain() { inti,upp,low,dig,spa...

新和县17662161879: C语言 写一函数,求出字符串的长度,在主函数中输入字符串,并输出其长度,不要用strlen函数 -
安高辉腾: main你自己写吧,函数代码如下:slen(char s[]){ int n=0; while (s[n]) n++; return(n-1); }

新和县17662161879: c语言中如何输入一段字符串然后执行某程序? -
安高辉腾: scanf("%s",a) 它的返回值并不是a的地址(也就是说不是字符串a),而是成功读取的变量个数,而且这个scanf()也不能将回车读取到a中,应该将scanf()放在strcmp()外面,另外,用到了strcmp()就要包含string.h文件://---------------...

新和县17662161879: 用C语言编写一段程序,要求:输入一段字符,分别统计出其中的英文字母、空格、数字和其他字符的个数. -
安高辉腾: #include <stdio.h>#include <conio.h>#define LEN 50 int main (void) { char str[LEN]; char *p = str; char cap[LEN], low[LEN], num[LEN], space[LEN], oth[LEN]; /*分类存储字符*/ int capCnt, lowCnt, numCnt, spaceCnt, othCnt; /*分类计数*/ capCnt =...

新和县17662161879: c语言编程 写一个函数,输入一行字符,将此字符串中最长的单词输出.用最简单的方法 -
安高辉腾: #include "string.h" #include "ctype.h" main() { char str[50]; char str1[50][20]; char str2[20]; int i,j,t;gets(str);j=0,t=0; for(i=0;str[i];i++) /*提取字符串中的单词,但是输入时每个单词之间只允许*/ { /*有一个字符如空格,逗号只有句末才能用句号*/...

新和县17662161879: 用C语言编一段程序,写一函数,输入一行字符,将此字符串中最长的单词输出. -
安高辉腾: #include <stdio.h>#include <string.h> char *FindLongWord(char *szInBuff) { static char szLongWord[1024] = {0}; char *lpstr; const char *delim = ",.?;'\"<>{!}[]\n "; lpstr = strtok(szInBuff, delim); sprintf(szLongWord, "%s", lpstr); while((lpstr = strtok...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网