标题:输入一行字符分别统计出其中的字母是数字和其他符号的个数,用for怎么做?刚 ...
只看楼主
rwh19870205
Rank: 2
等 级:论坛游民
帖 子:8
专家分:14
注 册:2017-12-20
得分:3 
先统计出字符串中字符的个数,再统计出是字母的个数,把得到的两数相减,就得到其他数字和符号的个数。
int main()
{    int i,j,a,b;
    char c[100];
    gets(c);
    for(i=0;c[i]!='\0';i++);
    b=i;
    for(j=0,--i;i>=0;i--){
        if(c[i]>='A'&&c[i]<='z')j++;
    }
    a=b-j;
    printf("b=%d,j=%d,a=%d\n",b,j,a);
    return 0;
 }
2018-11-22 09:21
Tomorrw_I
Rank: 10Rank: 10Rank: 10
等 级:禁止访问
威 望:6
帖 子:406
专家分:1712
注 册:2018-10-16
得分:0 
#include <stdio.h>
int main(){
char array[1000]={0};
scanf("%s",array);
char *p=array;
int LetterNum=0,FigureNum=0,ElseNum=0;
while(!(0==*p))
{
  if((64<*p&&*p<91)||(96<*p&&*p<123))
      LetterNum++;
  elze if(47<*p&&*p<57)
      FigureNum++;
          else ElseNum++;
  p++;
}
printf("%d,%d,%d",LetterNum,FigureNum,ElseNum);
return 0;
}


你会其他语言,不会c,看你急!直接给代码了!
既然会其他的,想学c,就看看语法吧!应该容易上手的!
楼上的,写的不对!

[此贴子已经被作者于2018-11-22 10:22编辑过]


学C有用吗?
学C++有前途吗?
数据库有必要学吗?
……
别问,你还什么都不会,学就对了
……
2018-11-22 10:14
rwh19870205
Rank: 2
等 级:论坛游民
帖 子:8
专家分:14
注 册:2017-12-20
得分:0 
回复 12楼 Tomorrw_I
谢谢指教,我的是不对。版主,你的程序我用几个样例试了一下,也有点问题,不知道问题在哪里?
2018-11-22 11:00
Tomorrw_I
Rank: 10Rank: 10Rank: 10
等 级:禁止访问
威 望:6
帖 子:406
专家分:1712
注 册:2018-10-16
得分:0 
回复 13楼 rwh19870205
手机测试的!57改为58就好了!
"9"当成其他处理了

[此贴子已经被作者于2018-11-22 11:07编辑过]


学C有用吗?
学C++有前途吗?
数据库有必要学吗?
……
别问,你还什么都不会,学就对了
……
2018-11-22 11:04
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
以下是引用Tomorrw_I在2018-11-22 10:14:48的发言:

#include <stdio.h>
int main(){
char array[1000]={0};
scanf("%s",array);
char *p=array;
int LetterNum=0,FigureNum=0,ElseNum=0;
while(!(0==*p))
{
  if((64<*p&&*p<91)||(96<*p&&*p<123))
      LetterNum++;
  elze if(47<*p&&*p<57)
      FigureNum++;
          else ElseNum++;
  p++;
}
printf("%d,%d,%d",LetterNum,FigureNum,ElseNum);
return 0;
}


你会其他语言,不会c,看你急!直接给代码了!
既然会其他的,想学c,就看看语法吧!应该容易上手的!
楼上的,写的不对!

写64 91 96这种坏习惯早点改掉
用'A' 'Z' '0' 等方式代替

https://zh.
2018-11-22 11:04
Tomorrw_I
Rank: 10Rank: 10Rank: 10
等 级:禁止访问
威 望:6
帖 子:406
专家分:1712
注 册:2018-10-16
得分:0 
回复 15楼 lin5161678
手机打的
打"",麻烦,所以直接用数字了
电脑,肯定不会这样打

学C有用吗?
学C++有前途吗?
数据库有必要学吗?
……
别问,你还什么都不会,学就对了
……
2018-11-22 11:08
pangdundun
Rank: 1
等 级:新手上路
帖 子:1
专家分:3
注 册:2018-11-22
得分:3 
程序代码:
/*
输入一行字符分别统计字母、数字、其他符号的个数
*/
#include <stdio.h>
int main()
{
    char input[1024] = { 0 };
    int letter, number, other;
    int i;
    letter = number = other = 0;
    gets(input);
    for (i = 0; input[i] != '\0'; i++)
        if ((input[i] >= 'A' && input[i] <= 'Z') || (input[i] >= 'a' && input[i] <= 'z'))
            letter++;
        else
            if (input[i] >= '0' && input[i] <= '9')
                number++;
            else
                other++;
    printf("%d,%d,%d,\n", letter, number, other);
    getch();
    return 0;
}
🍧🍧
2018-11-22 14:38
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:620
专家分:3020
注 册:2011-4-22
得分:0 
回复 8楼 mozihu520 C++代码,按照你的代码仿写成的
C++代码,按照你的代码仿写成的,你的代码和C++比较接近
c代码结构出入较大了
dev c++测试过了

程序代码:
#include <iostream>          //包含输入输出流头文件 
#include <string>            //为了在程序中使用string类型,必须包含头文件 <string>
using namespace std;         //c++使用命名空间,防止命名冲突。 
int main ( )                 //c语言入口函数 
{
    int h;
    int z=0;
    int s=0;
    int q=0;
    string c;                              //定义了一个空字符串
    cout <<"请输入一行字符窜"<<endl;       //打印提示字符 
    cin >> c;                              // accept"请输入一行字符窜" to c
    h = c.length();                        //h=len(alltrim(c))
    for(int i=0;i<h;i++)                   //for i=1  to  h
    {
        char cc=c[i];                      //cc=substr(c,i,1)
        if (cc > 'a' && cc < 'z'  || cc > 'A' && cc < 'Z')
              z=z+1;
          else if(cc > '0' && cc < '9')
              s=s+1;
          else
          q=q+1;
    }
    cout << z << ','<< s << ',' << q << endl; //?z,s,q
    return 0;
} 


[此贴子已经被作者于2018-11-22 18:11编辑过]

2018-11-22 18:09
C基础
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:133
专家分:421
注 册:2018-10-15
得分:0 
回复 10楼 mozihu520
看看这个,我是用DEVC编的,
#include "stdio.h"
#include "string.h"
int main()
{
    void fun(char b[],int *t,int *m,int *n,int *p,int *q);
    char c[100];
    int t,m=0,n=0,p=0,q=0;
    gets(c);
    t=strlen(c);
    fun(c,&t,&m,&n,&p,&q);
    puts(c);
    printf("字母:%d\n数字:%d\n空格:%d\n其他:%d\n",m,n,p,q);
return 0;
}

void fun(char b[],int *t,int *m,int *n,int *p,int *q)
{
    int i;
    for(i=0;i<*t;i++)
    {
   
    if((b[i]>='A'&&b[i]<='Z')||(b[i]>='a'&&b[i]<='z'))
    (*m)++;
    else if(b[i]>='0'&&b[i]<='9')
    (*n)++;
    else if(b[i]==' ')
    (*p)++;
    else
    (*q)++;
    }
}

[此贴子已经被作者于2018-11-22 22:34编辑过]

2018-11-22 22:32
wlxy_wang
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:77
专家分:303
注 册:2018-11-2
得分:3 
给你一个思路吧,在C语言中判断是字符还是数字合适其他字符都是通过判断ASCII值来实现的,不知道你现在是否接触字符数组,你也没有给出字符输入什么情况下终止,所以写一点,你自己看一下就可,假设你已经会用字符数组了

char ch1[81];
int i,count1=0,count2=0,count3=0;
scanf("%s",ch1);
for(i=0;ch[i]!=0;i++)
{if(ch[i]>='a'&&ch[i]<='z'||ch[i]>='A'&&ch[i]<='Z')count1++;
 else if(ch[i]>='0'&&ch[i]<='9') count2++;
      else count3++;
}
i=count1+count2+count3;
printf("字符串长度为:%d\n字母个数为:%d\n,数字个数为:%d\n,其他字符个数为:%d\n",i,count1,count2,count3);


[此贴子已经被作者于2018-11-23 08:55编辑过]

2018-11-23 08:47



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




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

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