标题:初学者请教几个简单的问题,5分关于字符的表达
只看楼主
魑魅
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2016-9-18
结帖率:85.71%
已结贴  问题点数:5 回复次数:10 
初学者请教几个简单的问题,5分关于字符的表达
输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

用C语言怎么去编程?
搜索更多相关主题的帖子: 英文字母 C语言 统计 
2016-10-19 19:11
魑魅
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2016-9-18
得分:0 
Description
输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
Input
一行字符
Output
统计值
Sample Input
aklsjflj123 sadf918u324 asdf91u32oasdf/.';123
Sample Output
23 16 2 4



以上是程序的详细要求,可是我的程序如下
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
      char c;
      int c1,c2,c3,c4;
      scanf("%c",&c);
      while(c){
          if(c>='a'&&c<='z'){
              c1++;
          }
          else if(c==' '){
              c2++;
          }
          else if(c>=0&&c<=9){
              c3++;
          }
          else{
              c4++;
          }
          scanf("%c",&c);
    }
      printf("%d %d %d %d",c1,c2,c3,c4);
    return 0;
}  while后面的括号放什么条件》?????
2016-10-19 19:24
宇宙无敌狗蛋
Rank: 2
等 级:论坛游民
帖 子:23
专家分:19
注 册:2016-10-12
得分:5 
可以这样试试     while(c!='\n')

慢慢的沉淀才是精华。
2016-10-19 19:45
魑魅
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2016-9-18
得分:0 
回复 3楼 宇宙无敌狗蛋
int main(int argc, char *argv[]) {
      char c;
       int c1,c2,c3,c4;
       c1=c2=c3=c4=0;
      scanf("%c",&c);
      while(c!='\0'){
          if((c>=97&&c<=122)||(c>=65&&c<=90)){
              c1++;
          }
          else if(c==' '){
              c2++;
          }
          else if(c>='0'&&c<='9'){
              c3++;
          }
          else{
              c4++;
          }
          c++;
          scanf("%c",&c);
    }
      printf("%d %d %d %d",c1,c2,c3,c4);
    return 0;
}


这是修改后的,但是运行不可以
2016-10-19 19:47
寻找不讨厌
Rank: 1
等 级:新手上路
帖 子:24
专家分:5
注 册:2016-10-17
得分:0 
多设个int i 用来循环再设个一维数组输入字符
main(){
int c1,c2,c3,c4,i;
char a[100] /*里面的数顺便添*/
for(i=0;i<100;i++)
if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z') c1++;
else if(a[i]==' ') c2++;
else if(a[i]>='0'&&a[i]<='9') c3++;
else c4++;
/*接下来就可以输出了*/
}
2016-10-19 19:56
寻找不讨厌
Rank: 1
等 级:新手上路
帖 子:24
专家分:5
注 册:2016-10-17
得分:0 
哦,忘了之前还得加个输入,在for语句前面

for(i=0;i<100;i++) scanf("%c",&a[i]);
2016-10-19 20:00
宇宙无敌狗蛋
Rank: 2
等 级:论坛游民
帖 子:23
专家分:19
注 册:2016-10-12
得分:0 
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
      char c;
      int c1,c2,c3,c4;
      c1=c2=c3=c4=0;
      scanf("%c",&c);
      while(c!='\n'){
          if(c>=65&&c<=90||c>=97&&c<=122){
              c1++;
          }
          else if(c==' '){
              c2++;
          }
          else if(c>='0'&&c<='9'){
              c3++;
          }
          else{
              c4++;
          }
          scanf("%c",&c);
    }
      printf("%d %d %d %d",c1,c2,c3,c4);
    return 0;
}  这样就绝对可以了

慢慢的沉淀才是精华。
2016-10-19 20:01
宇宙无敌狗蛋
Rank: 2
等 级:论坛游民
帖 子:23
专家分:19
注 册:2016-10-12
得分:0 
printf("%d个字母 %d个空格 %d个数字 %d个符号",c1,c2,c3,c4);
这样输出结果就更完美了Y.Y

慢慢的沉淀才是精华。
2016-10-19 20:03
寻找不讨厌
Rank: 1
等 级:新手上路
帖 子:24
专家分:5
注 册:2016-10-17
得分:0 
应该不行吧,你哪个只能计算1个字吧,不过你到提醒我了还不能='\n',我一时都忘了!!!感谢!!!
2016-10-19 20:05
魑魅
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2016-9-18
得分:0 
回复 8楼 宇宙无敌狗蛋
非常感谢
2016-10-19 20:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-469992-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.557910 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved