鱼C论坛

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

[已解决]计算输入的值是什么

[复制链接]
发表于 2020-3-20 20:33:49 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 一只程序猫 于 2020-3-20 20:36 编辑

也是一个题目:

输入一串字符,当输入“Enter ”键结束。统计其中的字母、数字和其他字符的个数,
                   同时将其中所有的连续数字串转化成整数并进行相加,输出累加的结果。

心态爆炸,做了一遍虽然不对。但是手贱没了!!!!!!
  1. /*
  2. 2020年3月20日19:56:17
  3. 目的 :做题
  4. 题目 : 输入一串字符,当输入“Enter ”键结束。统计其中的字母、数字和其他字符的个数,
  5.                    同时将其中所有的连续数字串转化成整数并进行相加,输出累加的结果。
  6. e              
  7.                    27
  8.                 else if(==)//
  9.    
  10.                         break;    27  'i'      )  ?、
复制代码


变成这个鬼东西!!!!!

我的思路是,每输入一个字符,都进行ASCII码对照。然后回车的ASCII码就退出
最佳答案
2020-3-20 21:24:55
本帖最后由 sunrise085 于 2020-3-20 21:40 编辑

看看程序是否正确。
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         char ch;
  5.         int al=0,num=0,el=0;
  6.         int sum=0,temp=0;
  7.         while((ch=getchar())!='\n'){
  8.                 if(ch>='0'&&ch<='9'){
  9.                         num+=1;
  10.                         temp=temp*10+(ch-'0');
  11.                 }
  12.                 else if ((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){
  13.                         al+=1;
  14.                         sum+=temp;
  15.                         temp=0;
  16.                 }
  17.                 else{
  18.                         el+=1;
  19.                         sum+=temp;
  20.                         temp=0;
  21.                 }
  22.         }
  23.         printf("字母字符个数:%d,数字字符个数:%d,数字之和:%d,其他字符个数:%d\n",al,num,sum,el);
  24.         return 0;
  25. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-20 20:38:16 | 显示全部楼层
心态爆炸!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-20 21:18:32 | 显示全部楼层
那个,连续数字串是个啥==
123abd234里的123和234
或者是只有123才行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-20 21:24:55 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-3-20 21:40 编辑

看看程序是否正确。
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         char ch;
  5.         int al=0,num=0,el=0;
  6.         int sum=0,temp=0;
  7.         while((ch=getchar())!='\n'){
  8.                 if(ch>='0'&&ch<='9'){
  9.                         num+=1;
  10.                         temp=temp*10+(ch-'0');
  11.                 }
  12.                 else if ((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){
  13.                         al+=1;
  14.                         sum+=temp;
  15.                         temp=0;
  16.                 }
  17.                 else{
  18.                         el+=1;
  19.                         sum+=temp;
  20.                         temp=0;
  21.                 }
  22.         }
  23.         printf("字母字符个数:%d,数字字符个数:%d,数字之和:%d,其他字符个数:%d\n",al,num,sum,el);
  24.         return 0;
  25. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-20 21:32:40 | 显示全部楼层
本帖最后由 墨羽岚 于 2020-3-20 21:34 编辑
sunrise085 发表于 2020-3-20 21:24
看看程序是否正确。


你这个代码好像有点问题==(不过我暂时不知道在哪==)
当我输入
  1. qwert114514@qq.com
复制代码
后回车了没有任何反应
是不是因为getchar的原因
然后判断回车那儿是不是少了个!号==
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-20 21:40:22 | 显示全部楼层
墨羽岚 发表于 2020-3-20 21:32
你这个代码好像有点问题==(不过我暂时不知道在哪==)
当我输入后回车了没有任何反应
是不是因为getc ...


哦,不好意思,有一处写错了,while循环的条件while((ch=getchar())!='\n')
把!=写成=了
现在改过来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-20 22:53:13 | 显示全部楼层
本帖最后由 bin554385863 于 2020-3-20 23:11 编辑

连续数字串累加懒得写了
你自己看着办吧

  1. #include <stdio.h>
  2. #include <malloc.h>
  3. #include <ctype.h>
  4. #include <string.h>
  5. char *getString(const size_t size)
  6. {
  7.     char *str = (char *)malloc(sizeof(char) * (size + 1));
  8.     size_t i = 0;
  9.     while ((str[i] = getchar()) != '\n')
  10.     {
  11.         if (i == size - 1)
  12.         {
  13.             break;
  14.         }
  15.         i++;
  16.     }
  17.     str[i + 1] = '\n';
  18.     return str;
  19. }
  20. void putDate(const char *str)
  21. {
  22.     size_t i = 0;
  23.     int a = 0, d = 0, o = 0, s = 0;
  24.     if (strlen(str) > 0)
  25.     {
  26.         while (str[i] != '\n')
  27.         {

  28.             if (isalpha(str[i])) //字母个数
  29.             {
  30.                 a++;
  31.             }
  32.             if (isdigit(str[i])) //数字个数
  33.             {
  34.                 d++;
  35.                 s += (str[i] - 48); //累加
  36.             }
  37.             if (!isalnum(str[i])) //其他字符个数
  38.             {
  39.                 o++;
  40.             }
  41.             i++;
  42.         }
  43.     }
  44.     printf("字母个数 = %d\n数字个数 = %d\n其他字符个数 = %d\n数字累加和 = %d\n\n", a, d, o, s);
  45. }

  46. int main(int argc, char const *argv[])
  47. {
  48.     printf("请输入字符串\n");
  49.     char *str = getString(100);
  50.     printf("开始统计\n");
  51.     putDate(str);
  52.     free(str);
  53.     return 0;
  54. }
复制代码

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

D:\My data\Documents\C++> cmd /C "c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.3\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-4d1gtc4a.p3f --stdout=Microsoft-MIEngine-Out-ocig5yyl.ihy --stderr=Microsoft-MIEngine-Error-gh1s0prn.35w --pid=Microsoft-MIEngine-Pid-yhlwsxao.eke --dbgExe=D:\MinGW\bin\gdb.exe --interpreter=mi "
请输入字符串
123456789/*-+
开始统计
字母个数 = 0
数字个数 = 9
其他字符个数 = 4
数字累加和 = 45


D:\My data\Documents\C++> cmd /C "c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.3\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-kqbev1li.fmr --stdout=Microsoft-MIEngine-Out-zuw3aeqb.dki --stderr=Microsoft-MIEngine-Error-jp0qdqit.xbz --pid=Microsoft-MIEngine-Pid-tmymw4m1.j3v --dbgExe=D:\MinGW\bin\gdb.exe --interpreter=mi "
请输入字符串
123adsds+-*/456fdasfs=--
开始统计
字母个数 = 11
数字个数 = 6
其他字符个数 = 7
数字累加和 = 21


D:\My data\Documents\C++>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-21 09:23:27 | 显示全部楼层
sunrise085 发表于 2020-3-20 21:24
看看程序是否正确。

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

使用道具 举报

 楼主| 发表于 2020-3-21 09:24:35 | 显示全部楼层
sunrise085 发表于 2020-3-20 21:24
看看程序是否正确。

我写的时候思路也是这样,但是没你的好,也不知道判断回车
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-21 09:26:00 | 显示全部楼层
bin554385863 发表于 2020-3-20 22:53
连续数字串累加懒得写了
你自己看着办吧

哇,谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 03:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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