| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1048 人关注过本帖
标题:省二级最后一道题
只看楼主 加入收藏
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:16 
省二级最后一道题
输入一行字符串,要求分别输出该字符串中字母、数字、空格键和其他字符的个数。
程序代码:
#include"stdio.h"
#include"string.h"
int statistics(char a[],int *x,int *y,int *z,int *r);
int main()
{    int x=0,y=0,z=0,r=0;
    char a[50];
    scanf("%s",a);
    statistics(a,&x,&y,&z,&r);
    printf("%d,%d,%d,%d",x,y,z,r);
    return 0;
}
int statistics(char a[],int *x,int *y,int *z,int *r)
{
    int i;
    for(i=0;i<strlen(a);i++)
    {
        if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
            (*x)++;
        else if(a[i]>=0&&a[i]<10)
            (*y)++;
        else if(a[i]==' ')
            (*z)++;
        else
            (*r)++;
    }
   
    return 0;
}

        
          
上面的程序还不能算出空格键和其他字符的个数,不知道怎么弄,请大家指点。

[ 本帖最后由 nbaqqqq 于 2010-5-29 21:14 编辑 ]
搜索更多相关主题的帖子: 二级 其他 字符串 
2010-05-29 20:51
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:3 
#include "stdio.h"
#include<ctype.h>
#include<string.h>
void main()
{
    void panduan(char aa[50]);
    void pandun(char ab[50]);
    char a[50];
    printf("请输入字符串:");
    scanf("%s",a);
    //panduan(a);
    pandun(a);
}
void pandun(char ab[50])
{
    int cunt1=0,cunt2=0,cunt3=0,cunt4=0,n=strlen(ab),i;
    for(i=0;i<n;i++)
    if(isdigit((int)ab[i]))
        cunt1++;
    else if(islower((int)ab[i]))
        cunt2++;
    else if(isupper((int)ab[i]))
        cunt3++;
    else if(isspace((int)ab[i]))
        cunt4++;
    printf("小写字母个数为%d\n大写字母个数为%d\n数字个数为%d\n空格符为%d",cunt1,cunt2,cunt3,cunt4);   
}
我这个也一样找不到空格!

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-05-29 21:30
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
原来有这么方便的函数。。。空格键是不是赋值那出问题了,碰到空格键就把空格键之前的字符串赋给数组,空格键和空格键之后的字符串就被忽略了。
2010-05-29 21:52
ly5201314
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2010-5-20
收藏
得分:3 
#include "stdio.h"
main()

{ char ch;
  int let1,let2,digit,space,other;  /* 大写字母、小写字母、数字、空格、其他 */
  let1=let2=digit=space=other=0;
  while((ch=getchar())!='!')   /*以!作为输入字符串的结束标志*/                       
  if(ch>='a' && ch<='z') let2++;
  else if(ch>='A' && ch<='Z') let1++;
  else if(ch>='0' && ch<='9') digit++;
  else if(ch==' ') space++;
  else other++;
  printf("let1=%d,let2=%d,digit=%d,space=%d,other=%d\n",let1,let2,digit,space,other);
}





这个不知道可以吗?
2010-05-29 22:05
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:3 
回复 4楼 ly5201314
你的这个程序我觉得比楼上两位的都要好!

愿用余生致力编程
2010-05-29 22:11
cs198797
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-29 22:46
cs198797
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-29 22:49
cs198797
该用户已被删除
收藏
得分:3 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-29 23:15
cs198797
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-29 23:17
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:3 
#include<stdio.h>
#include<string.h>
void main()
{
 char str[100];
 int i;
 int letter=0;
 int number=0;
 int space=0;
 int other=0;
 gets(str);
 for(i=0;i<strlen(str);i++)
 {
  if((str[i]<91&&str[i]>64)||(str[i]<123&&str[i]>96))
  letter++;
  else if(str[i]<58&&str[i]>47)
  number++;
  else if(str[i]==32)
  space++;
  else if(str[i]!='\0')
  other++;
  else
  break;
 }
 printf("the letter is %d\n",letter);
 printf("the number is %d\n",number);
 printf("the space is %d\n",space);
 printf("the other is %d\n",other);
}
个人感觉输入字符串时用gets函数比scanf函数要好,因为这样误输入少……
scanf函数具体是怎样读入字符的我一直不是很清楚……

我很懒,但我讨厌别人说我懒……
2010-05-29 23:29
快速回复:省二级最后一道题
数据加载中...
 
   



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

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