| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1200 人关注过本帖
标题:问道题目的解法
只看楼主 加入收藏
zppasd
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-11-5
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:12 
问道题目的解法
输入一行字符串,分别统计出其中的英文字母,空格,数字和其他字符的个数。

这道题目不用数组能做的吗?应该怎么做啊?
搜索更多相关主题的帖子: 解法 
2009-11-05 21:04
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:1 
可以,那就一边输入一边判断了。
2009-11-05 21:09
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:2 
i=0,j=0,k=0,l=0;
while((c=getch())!='\0')
{
if(c是字母)
i++;
else if(c==' ')
j++;
else if(c是数字)
l++;
else
k++;
}
2009-11-05 21:18
xy4919961
Rank: 5Rank: 5
等 级:职业侠客
帖 子:199
专家分:362
注 册:2009-10-24
收藏
得分:2 
#include "stdio.h"
#include "ctype.h"/*字符串头文件*/
main()
{
  int i=0,j=0,k=0,t=0;
  char c[80]; /*还是觉得用下数组好点*/
  gets(c);
  while(c[i]!='\0'){
    if(isalpha(c[i]))/*判断是否是大写或小写*/
       t++;
     if(isdigit(c[i]))/*判断是否是数字*/
       j++;
       if(isgraph(c[i++]))/*判断是否是可打印字符*/
          k++;}
      printf("string=%d number=%d 字符=%d",t,j,k);/*输出结果*/
}
       如果不用数组的话..找个人改下吧..


[ 本帖最后由 xy4919961 于 2009-11-5 21:51 编辑 ]

QQ群:96348241
2009-11-05 21:38
zppasd
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-11-5
收藏
得分:0 
回复 3楼 m456m654
问下大虾 while(1)能不能用break让它停下来的啊?
2009-11-05 22:43
刘月华
Rank: 2
等 级:论坛游民
帖 子:7
专家分:19
注 册:2009-11-6
收藏
得分:2 
/*用于计算字符串中的字母数字和其他字符函数*/
#include <stdio.h>
#include <ctype.h>
void count (void);
//main function
int main (void)
{
    count();//用于计数的函数

    return 0;
}
//count函数实现
void count (void)
{
    int al_num,nu_num,spa_num,oth_num;
    //字母数字和其他字符的变量
    char ch;

    al_num = nu_num = spa_num = oth_num = 0;//清除内存垃圾数据
    while((ch = getchar()) != '#')
    {
        if(isspace(ch))
        {//是否为空字符
            spa_num ++;
        }
        else
        {
            if(isalpha(ch))
            {//是否为字符
                al_num ++;
            }
            else
            {
                if(isdigit(ch))
                {//是否为数字
                    nu_num ++;
                }
                else
                {
                    oth_num ++;
                }
            }
        }
    }
    printf("数字的个数为:%d\n"
           "字母的个数为:%d\n"
           "空字符的个数为:%d\n"
           "其他字符的个数为:%d\n",nu_num,al_num,spa_num,oth_num);
}
2009-11-06 01:15
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:2 
我的思路和3楼一样,代码如下:
#include<stdio.h>
int main(){
    int c, i, nwhite, nother,nword;
    int ndigit;
    ndigit=nwhite=nword=nother=0;
    while((c=getchar())!=EOF){
        if(c>='0' && c<='9')
            ++ndigit;
        else if(c==' ' || c=='\n' || c=='\t')
            ++nwhite;
        else if('a'<=c && c<='z' || 'A'<=c && c<='Z')
            ++nword;
        else
            ++nother;
    }
    printf("ndigit=%d,white space=%d,nword=%d, other=%d\n",ndigit, nwhite ,nword,nother);
    return 0;
}
看看吧,应该很好懂。

学无止境!
2009-11-06 10:34
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:0 
6楼的好像太复杂了

学无止境!
2009-11-06 11:06
xuru1990
Rank: 2
等 级:论坛游民
帖 子:36
专家分:23
注 册:2009-10-28
收藏
得分:1 
以下是引用zppasd在2009-11-5 22:43:59的发言:

问下大虾 while(1)能不能用break让它停下来的啊?
break ;可以让他所在的当前循环停下,不管那循环的条件是否满足;
2009-11-06 12:56
小鸟飞过
Rank: 2
等 级:论坛游民
帖 子:54
专家分:44
注 册:2009-9-14
收藏
得分:0 
顶三楼的
2009-11-06 13:16
快速回复:问道题目的解法
数据加载中...
 
   



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

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