静心五 发表于 2019-12-3 20:59:03

怎么解决,急,求助

//有一片文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符得个数。
#include<stdio.h>
void main()
{
        char a;
        int i,n,k,b,c,d,e,f;
       
        gets(a);
        for(i=0;i<3;i++)
        {
                for(k=0;k<80;k++)
                {
                        if(a>='48' &&a<='57')
                        {
                                b++;
                        }
                        else
                        if(a>='65' &&a<='90')
                        {
                                c++;
                        }
                        else
                        if(a>='97' &&a<='122')
                        {
                                d++;
                        }
                        if(a=='0')
                        {
                                e++;
                        }
                        else
                        f++;
                }
        }
        printf("数字的个数是:%d\n",b);
        printf("大写字母的个数是:%d\n",c);
        printf("小写字母的个数是:%d\n",d);
        printf("空格的个数是:%d\n",e);
        printf("其他字符的个数是:%d",f);
               
}

李龙江 发表于 2019-12-3 21:45:04

你输入的字符串呢?连输入都没有怎么统计?还是说你准备使用文件导入?

bin554385863 发表于 2019-12-3 22:08:26

E:\Users\admin\Documents\VScode\Code\tmp\text.txt
0123456789
ASDFGHJKLL
asdfghjkll
!@#$%^&*()
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
    FILE *fp = fopen("E:/Users/admin/Documents/VScode/Code/tmp/text.txt", "r");
    if (fp == NULL)
    {
      perror("file opend fail");
      exit(1);
    }
    char str = {0};
    fread(str, sizeof(char), 255, fp);
    fclose(fp);
    printf("文件内容:\n%s\n", str);
    int ct = {0};
    for (char *i = str; *i != '\0'; i++)
    {
      if (isdigit(*i))//统计数字
      {
            ct++;
      }
      if (islower(*i))//统计小写字母
      {
            ct++;
      }
      if (isupper(*i))//统计大写字母
      {
            ct++;
      }
      if (isspace(*i))//统计空格
      {
            ct++;
      }
      if (ispunct(*i)) //统计除去数字,字母,空白字符以外的字符
      {
            ct++;
      }
    }
    printf("数字的个数是:%d\n", ct);
    printf("大写字母的个数是:%d\n", ct);
    printf("小写字母的个数是:%d\n", ct);
    printf("空格的个数是:%d\n", ct);
    printf("其他字符的个数是:%d", ct);
}

=========================================================
Microsoft Windows [版本 10.0.18363.476]
(c) 2019 Microsoft Corporation。保留所有权利。

E:\Users\admin\Documents\VScode\Code>c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.2\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-yrmjek43.tit --stdout=Microsoft-MIEngine-Out-frlhiicr.hcb --stderr=Microsoft-MIEngine-Error-mkn4tkug.gke --pid=Microsoft-MIEngine-Pid-pjgpyktx.jz3 --dbgExe=D:\MinGW\bin\gdb.exe --interpreter=mi
文件内容:
0123456789
ASDFGHJKLL
asdfghjkll
!@#$%^&*()
数字的个数是:10
大写字母的个数是:10
小写字母的个数是:10
空格的个数是:3
其他字符的个数是:10
E:\Users\admin\Documents\VScode\Code>

bin554385863 发表于 2019-12-3 22:10:17

李龙江 发表于 2019-12-3 21:45
你输入的字符串呢?连输入都没有怎么统计?还是说你准备使用文件导入?

回错对象了............

静心五 发表于 2019-12-3 22:24:00

{:7_133:}&#127383;厉害

静心五 发表于 2019-12-3 22:25:04

但是我用c语言好像编译不了哦

静心五 发表于 2019-12-3 22:26:22

第十七行是有一点问题吗还是我的编译器有问题

静心五 发表于 2019-12-3 22:27:21

李龙江 发表于 2019-12-3 21:45
你输入的字符串呢?连输入都没有怎么统计?还是说你准备使用文件导入?

就是用文件导入的这一种

bin554385863 发表于 2019-12-3 22:34:32

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
void strFromFile(const char *Faddr, char *str, size_t sz)
{
    FILE *fp = fopen(Faddr, "r");
    if (fp == NULL)
    {
      perror("file opend fail");
      exit(1);
    }
    fread(str, sizeof(char), sz, fp);
    fclose(fp);
    printf("文件内容:\n%s\n", str);
    int ct = {0};
    for (char *i = str; *i != '\0'; i++)
    {
      if (isdigit(*i)) //统计数字
      {
            ct++;
      }
      if (islower(*i)) //统计小写字母
      {
            ct++;
      }
      if (isupper(*i)) //统计大写字母
      {
            ct++;
      }
      if (isspace(*i)) //统计空格
      {
            ct++;
      }
      if (ispunct(*i)) //统计除去数字,字母,空白字符以外的字符
      {
            ct++;
      }
    }
    printf("\n数字的个数是:%d\n", ct);
    printf("大写字母的个数是:%d\n", ct);
    printf("小写字母的个数是:%d\n", ct);
    printf("空格的个数是:%d\n", ct);
    printf("其他字符的个数是:%d", ct);
}
int main(int argc, char const *argv[])
{
    char *addr = "E:/Users/admin/Documents/VScode/Code/tmp/text.txt";
    char str = {0};
    strFromFile(addr, str, 255);
    return 0;
}
=======================================
Microsoft Windows [版本 10.0.18363.476]
(c) 2019 Microsoft Corporation。保留所有权利。

E:\Users\admin\Documents\VScode\Code>c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.2\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-zvxmiasy.a5t --stdout=Microsoft-MIEngine-Out-mw4zhur4.fpl --stderr=Microsoft-MIEngine-Error-w42cggib.yph --pid=Microsoft-MIEngine-Pid-kfg3knrd.cvb --dbgExe=D:\MinGW\bin\gdb.exe --interpreter=mi
文件内容:
0123456789
ASDFGHJKLL
asdfghjkll
!@#$%^&*()

数字的个数是:10
大写字母的个数是:10
小写字母的个数是:10
空格的个数是:3
其他字符的个数是:10
E:\Users\admin\Documents\VScode\Code>

喜与樂der 发表于 2019-12-20 20:26:38

静心五 发表于 2019-12-3 22:26
第十七行是有一点问题吗还是我的编译器有问题

我也是17行欸,你解决了吗
页: [1]
查看完整版本: 怎么解决,急,求助