计算输入的值是什么
本帖最后由 一只程序猫 于 2020-3-20 20:36 编辑也是一个题目:
输入一串字符,当输入“Enter ”键结束。统计其中的字母、数字和其他字符的个数,
同时将其中所有的连续数字串转化成整数并进行相加,输出累加的结果。
心态爆炸,做了一遍虽然不对。但是手贱没了!!!!!!
/*
2020年3月20日19:56:17
目的 :做题
题目 : 输入一串字符,当输入“Enter ”键结束。统计其中的字母、数字和其他字符的个数,
同时将其中所有的连续数字串转化成整数并进行相加,输出累加的结果。
e
27
else if(==)//
break; 27'i' )?、
变成这个鬼东西!!!!!
我的思路是,每输入一个字符,都进行ASCII码对照。然后回车的ASCII码就退出 心态爆炸! 那个,连续数字串是个啥==
123abd234里的123和234
或者是只有123才行 本帖最后由 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;
} 本帖最后由 墨羽岚 于 2020-3-20 21:34 编辑
sunrise085 发表于 2020-3-20 21:24
看看程序是否正确。
你这个代码好像有点问题==(不过我暂时不知道在哪==)
当我输入qwert114514@qq.com后回车了没有任何反应
是不是因为getchar的原因
然后判断回车那儿是不是少了个!号== 墨羽岚 发表于 2020-3-20 21:32
你这个代码好像有点问题==(不过我暂时不知道在哪==)
当我输入后回车了没有任何反应
是不是因为getc ...
哦,不好意思,有一处写错了,while循环的条件while((ch=getchar())!='\n')
把!=写成=了
现在改过来了 本帖最后由 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 = getchar()) != '\n')
{
if (i == size - 1)
{
break;
}
i++;
}
str = '\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 != '\n')
{
if (isalpha(str)) //字母个数
{
a++;
}
if (isdigit(str)) //数字个数
{
d++;
s += (str - 48); //累加
}
if (!isalnum(str)) //其他字符个数
{
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++> sunrise085 发表于 2020-3-20 21:24
看看程序是否正确。
谢谢
sunrise085 发表于 2020-3-20 21:24
看看程序是否正确。
我写的时候思路也是这样,但是没你的好,也不知道判断回车 bin554385863 发表于 2020-3-20 22:53
连续数字串累加懒得写了
你自己看着办吧
哇,谢谢你
页:
[1]