C语言中字符统计问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中字符统计问题相关的知识,希望对你有一定的参考价值。
#include<stdio.h>
int main(void)
char num='0';
int blank=0,Snum=0,other=0;
printf("输入十个字符:");
scanf("%c",&num);
for(int i=0;i<10;i++)
switch(num)
case ' ':
case '\n':
blank++;
break;
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case '0':
Snum++;
break;
default:
other++;
break;
printf("blank=%d,Snum=%d,other=%d\n",blank,Snum,other);
return 0;
我是要统计字符,包括空格或回车,数字字符和其他字符。但是不知道什么原因,程序运行的结果总是 other字符是10.
请高手帮忙!
但是你却循环了10次,如果第一次你输入的是字母的话,那应该都为default,所以other为10。 参考技术B #include<stdio.h>
int main(void)
char num='0';
int blank=0,Snum=0,other=0;
printf("输入十个字符:");
for(int i=0;i<10;i++)
scanf("%c",&num);//输入应该是多个,像你那么写就只能输入一个
switch(num)
case ' ':
case '\n':
blank++;
break;
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case '0':
Snum++;
break;
default:
other++;
printf("blank=%d,Snum=%d,other=%d\n",blank,Snum,other);
return 0;
本回答被提问者采纳 参考技术C 因为你只输入了十个字符,只有一个字符型变量得到赋值,因此switch(num)都是一个值…这个应该吧scanf("%c",&num)放到for循环里面,switch的上面 参考技术D 哈哈!
这程序太烂 第5个回答 2010-07-26 建议学习一下流程图
程序工作流程好象还比较不太清楚
c语言,从键盘输入一串字符串,统计字符串中特定字符的个数,并输出个数
程序设计思路如下:
从键盘分别输入字符串和要统计的字符,然后对此字符串从头开始逐个与所统计的字符比较,如相同,则让计数器加1,知道字符串整体比较结束为止,计数器中就是需统计的字符的个数。
#include "stdio.h"main()
char str[100],ch; /*定义str字符串,定义ch用来存放要统计的字符*/
int cnt=0,i; /*定义cnt用作计数器,初始值为0*/
/*输入字符串*/
printf("请输入字符串:");
gets(str);
/*输入要统计的字符*/
printf("请输入要统计的字符:");
scanf("%c",&ch);
/*对此字符串从头开始逐个与所统计的字符比较,如相同,则让计数器加1,知道字符串整体比较结束为止*/
for( i=0;str[i];i++ )
if( str[i]==ch )
cnt++;
/*输出结果*/
printf("%s串中%c字符的个数是:%d个",str,ch,cnt);
参考技术A
主要代码:
char s[1000];int i,j=0;
scanf("%s",s);
for(i=0;i<1000;i++)
if(s[i]=='*') //for循环查找字符*的数量
j++;//利用变量j计数
追问
可不可以编写完整程序呢?谢谢
追答基本上把它写入主函数就行了吧
#include<stdio.h>int main()
char s[1000];
int i,j=0;
scanf("%s",s);
for(i=0;i<1000;i++)
if(s[i]=='*') //for循环查找字符*的数量
j++;//利用变量j计数
printf("指定字符数为%d\\n",j);
return 0;
追问
要输出的是从键盘上输入的一个特定字符的个数,不是*
追答你把*换成你要求的字符就行了,*只是做个示范。你的意思是我把它改改,加一个从键盘输入特定字符的语句?
追问不用了,你写的对的,可能我理解错题意了,谢谢了
追答如你所说,我写了个比较全能的代码,应该更符合题意
#include<stdio.h>int main()
char s[1000],sp;
int i,j=0;
printf("请输入字符串\\n");
scanf("%s",s);
getchar();
printf("请输入特定字符\\n");
scanf("%c",&sp);
for(i=0;i<1000;i++)
if(s[i]==sp) //for循环查找字符sp的数量
j++;//利用变量j计数
printf("指定字符数为%d\\n",j);
return 0;
本回答被提问者采纳 参考技术B 主要代码:
char s[1000];
int i,j=0;
scanf("%s",s);
for(i=0;i<1000;i++)
if(s[i]=='*') //for循环查找字符*的数量
j++;//利用变量j计数
参考技术C 主要代码:
char s[1000];
int i,j=0;
scanf("%s",s);
for(i=0;i<1000;i++)
if(s[i]=='*') //for循环查找字符*的数量
j++;//利用变量j计数
参考技术D #include <stdio.h>
#include <string.h>
#define MAX 100
int main()
char num[MAX]=0;
char c=0;
int len,cnt=0;
scanf("%s %c",num,&c);
len=strlen(num);
while(len--)
if(c==num[len]) cnt++;
printf("%d\\n",cnt);
return 0;
以上是关于C语言中字符统计问题的主要内容,如果未能解决你的问题,请参考以下文章
c语言:输入一行字符,统计其中的单词个数,单词之间用空格分开
C语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开
C语言输入一行字符 统计其中有多少个单词,单词之间用空格分隔开
C语言输入一行字符 统计其中有多少个单词,单词之间用空格分隔开