鱼C论坛

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

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

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

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

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

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

也是一个题目:

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

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

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

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

看看程序是否正确。
#include <stdio.h>
int main()
{
        char ch;
        int al=0,num=0,el=0;
        int sum=0,temp=0;
        while((ch=getchar())!='\n'){
                if(ch>='0'&&ch<='9'){
                        num+=1;
                        temp=temp*10+(ch-'0');
                }
                else if ((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){
                        al+=1;
                        sum+=temp;
                        temp=0;
                }
                else{
                        el+=1;
                        sum+=temp;
                        temp=0;
                }
        }
        printf("字母字符个数:%d,数字字符个数:%d,数字之和:%d,其他字符个数:%d\n",al,num,sum,el);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> 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 编辑

看看程序是否正确。
#include <stdio.h>
int main()
{
        char ch;
        int al=0,num=0,el=0;
        int sum=0,temp=0;
        while((ch=getchar())!='\n'){
                if(ch>='0'&&ch<='9'){
                        num+=1;
                        temp=temp*10+(ch-'0');
                }
                else if ((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){
                        al+=1;
                        sum+=temp;
                        temp=0;
                }
                else{
                        el+=1;
                        sum+=temp;
                        temp=0;
                }
        }
        printf("字母字符个数:%d,数字字符个数:%d,数字之和:%d,其他字符个数:%d\n",al,num,sum,el);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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


你这个代码好像有点问题==(不过我暂时不知道在哪==)
当我输入
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 编辑

连续数字串累加懒得写了
你自己看着办吧
#include <stdio.h>
#include <malloc.h>
#include <ctype.h>
#include <string.h>
char *getString(const size_t size)
{
    char *str = (char *)malloc(sizeof(char) * (size + 1));
    size_t i = 0;
    while ((str[i] = getchar()) != '\n')
    {
        if (i == size - 1)
        {
            break;
        }
        i++;
    }
    str[i + 1] = '\n';
    return str;
}
void putDate(const char *str)
{
    size_t i = 0;
    int a = 0, d = 0, o = 0, s = 0;
    if (strlen(str) > 0)
    {
        while (str[i] != '\n')
        {

            if (isalpha(str[i])) //字母个数
            {
                a++;
            }
            if (isdigit(str[i])) //数字个数
            {
                d++;
                s += (str[i] - 48); //累加
            }
            if (!isalnum(str[i])) //其他字符个数
            {
                o++;
            }
            i++;
        }
    }
    printf("字母个数 = %d\n数字个数 = %d\n其他字符个数 = %d\n数字累加和 = %d\n\n", a, d, o, s);
}

int main(int argc, char const *argv[])
{
    printf("请输入字符串\n");
    char *str = getString(100);
    printf("开始统计\n");
    putDate(str);
    free(str);
    return 0;
}
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, 2025-1-12 06:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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