鱼C论坛

 找回密码
 立即注册
查看: 1491|回复: 9

[已解决]怎么解决,急,求助

[复制链接]
发表于 2019-12-3 20:59:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
//有一片文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符得个数。
#include<stdio.h>
void main()
{
        char a[3][80];
        int i,n,k,b,c,d,e,f;
       
        gets(a[k]);
        for(i=0;i<3;i++)
        {
                for(k=0;k<80;k++)
                {
                        if(a[k]>='48' &&a[k]<='57')
                        {
                                b++;
                        }
                        else
                        if(a[k]>='65' &&a[k]<='90')
                        {
                                c++;
                        }
                        else
                        if(a[k]>='97' &&a[k]<='122')
                        {
                                d++;
                        }
                        if(a[k]=='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 22:34:32
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. void strFromFile(const char *Faddr, char *str, size_t sz)
  6. {
  7.     FILE *fp = fopen(Faddr, "r");
  8.     if (fp == NULL)
  9.     {
  10.         perror("file opend fail");
  11.         exit(1);
  12.     }
  13.     fread(str, sizeof(char), sz, fp);
  14.     fclose(fp);
  15.     printf("文件内容:\n%s\n", str);
  16.     int ct[5] = {0};
  17.     for (char *i = str; *i != '\0'; i++)
  18.     {
  19.         if (isdigit(*i)) //统计数字
  20.         {
  21.             ct[0]++;
  22.         }
  23.         if (islower(*i)) //统计小写字母
  24.         {
  25.             ct[1]++;
  26.         }
  27.         if (isupper(*i)) //统计大写字母
  28.         {
  29.             ct[2]++;
  30.         }
  31.         if (isspace(*i)) //统计空格
  32.         {
  33.             ct[3]++;
  34.         }
  35.         if (ispunct(*i)) //统计除去数字,字母,空白字符以外的字符
  36.         {
  37.             ct[4]++;
  38.         }
  39.     }
  40.     printf("\n数字的个数是:%d\n", ct[0]);
  41.     printf("大写字母的个数是:%d\n", ct[2]);
  42.     printf("小写字母的个数是:%d\n", ct[1]);
  43.     printf("空格的个数是:%d\n", ct[3]);
  44.     printf("其他字符的个数是:%d", ct[4]);
  45. }
  46. int main(int argc, char const *argv[])
  47. {
  48.     char *addr = "E:/Users/admin/Documents/VScode/Code/tmp/text.txt";
  49.     char str[255] = {0};
  50.     strFromFile(addr, str, 255);
  51.     return 0;
  52. }
复制代码

=======================================
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>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-3 21:45:04 | 显示全部楼层
你输入的字符串呢?连输入都没有怎么统计?还是说你准备使用文件导入?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-3 22:08:26 | 显示全部楼层
  1. E:\Users\admin\Documents\VScode\Code\tmp\text.txt
  2. 0123456789
  3. ASDFGHJKLL
  4. asdfghjkll
  5. !@#$%^&*()
复制代码
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <stdlib.h>
  4. int main(int argc, char const *argv[])
  5. {
  6.     FILE *fp = fopen("E:/Users/admin/Documents/VScode/Code/tmp/text.txt", "r");
  7.     if (fp == NULL)
  8.     {
  9.         perror("file opend fail");
  10.         exit(1);
  11.     }
  12.     char str[255] = {0};
  13.     fread(str, sizeof(char), 255, fp);
  14.     fclose(fp);
  15.     printf("文件内容:\n%s\n", str);
  16.     int ct[5] = {0};
  17.     for (char *i = str; *i != '\0'; i++)
  18.     {
  19.         if (isdigit(*i))//统计数字
  20.         {
  21.             ct[0]++;
  22.         }
  23.         if (islower(*i))//统计小写字母
  24.         {
  25.             ct[1]++;
  26.         }
  27.         if (isupper(*i))//统计大写字母
  28.         {
  29.             ct[2]++;
  30.         }
  31.         if (isspace(*i))//统计空格
  32.         {
  33.             ct[3]++;
  34.         }
  35.         if (ispunct(*i)) //统计除去数字,字母,空白字符以外的字符
  36.         {
  37.             ct[4]++;
  38.         }
  39.     }
  40.     printf("数字的个数是:%d\n", ct[0]);
  41.     printf("大写字母的个数是:%d\n", ct[2]);
  42.     printf("小写字母的个数是:%d\n", ct[1]);
  43.     printf("空格的个数是:%d\n", ct[3]);
  44.     printf("其他字符的个数是:%d", ct[4]);
  45. }
复制代码

=========================================================
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>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


回错对象了............
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-3 22:24:00 | 显示全部楼层
&#127383;厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-3 22:25:04 | 显示全部楼层
但是我用c语言好像编译不了哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-3 22:26:22 | 显示全部楼层
第十七行是有一点问题吗还是我的编译器有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

就是用文件导入的这一种
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-3 22:34:32 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. void strFromFile(const char *Faddr, char *str, size_t sz)
  6. {
  7.     FILE *fp = fopen(Faddr, "r");
  8.     if (fp == NULL)
  9.     {
  10.         perror("file opend fail");
  11.         exit(1);
  12.     }
  13.     fread(str, sizeof(char), sz, fp);
  14.     fclose(fp);
  15.     printf("文件内容:\n%s\n", str);
  16.     int ct[5] = {0};
  17.     for (char *i = str; *i != '\0'; i++)
  18.     {
  19.         if (isdigit(*i)) //统计数字
  20.         {
  21.             ct[0]++;
  22.         }
  23.         if (islower(*i)) //统计小写字母
  24.         {
  25.             ct[1]++;
  26.         }
  27.         if (isupper(*i)) //统计大写字母
  28.         {
  29.             ct[2]++;
  30.         }
  31.         if (isspace(*i)) //统计空格
  32.         {
  33.             ct[3]++;
  34.         }
  35.         if (ispunct(*i)) //统计除去数字,字母,空白字符以外的字符
  36.         {
  37.             ct[4]++;
  38.         }
  39.     }
  40.     printf("\n数字的个数是:%d\n", ct[0]);
  41.     printf("大写字母的个数是:%d\n", ct[2]);
  42.     printf("小写字母的个数是:%d\n", ct[1]);
  43.     printf("空格的个数是:%d\n", ct[3]);
  44.     printf("其他字符的个数是:%d", ct[4]);
  45. }
  46. int main(int argc, char const *argv[])
  47. {
  48.     char *addr = "E:/Users/admin/Documents/VScode/Code/tmp/text.txt";
  49.     char str[255] = {0};
  50.     strFromFile(addr, str, 255);
  51.     return 0;
  52. }
复制代码

=======================================
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>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-20 20:26:38 | 显示全部楼层
静心五 发表于 2019-12-3 22:26
第十七行是有一点问题吗还是我的编译器有问题

我也是17行欸,你解决了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-5 03:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表