c - C_求和函数没有给出预期的结果
问题描述
我一直在研究这个程序,但遇到了障碍。我完成了所有工作,但编译时一个细节无法正常工作。
您将编写一个使用 getch() 函数从键盘读取字符的程序。所有小写字母都将转换为大写字母并使用 putchar() 函数打印到显示器上。所有大写字母都将使用 putchar() 打印。所有单独的数字都将被累加,并在程序结束时使用 printf() 打印总和。您将编写自己的函数来返回字母的大写,不要使用 C 库转换函数,以及使用当前字符数字接收当前和的第二个函数,不要使用 C 库转换函数。convert digit 函数将字符数字转换为十进制值,并将数字累加到返回新总和的总和。只有字母不会被打印出来。该程序将继续执行,直到收到返回值,此时数字的总和将打印在下一行。输入的内容:a9 wF23';/4i 该行实际显示的内容:aAwWFiI 数字总和为:18
我在下面发布了我已经完成的工作。除了需要对整数求和的部分(最初是字符但被转换)之外,porgram 做了所有事情。它给了我一个非常大的数字,比输入数字的总和大得多。
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#define ctrlz 26
char cvttoupper(char);
int cvtdigit(int, char);
int main ()
{
int sum, d;
char c, cupper;
sum = 0;
do
{
c = getch();
if (c>='A' && c<='Z' || c>='a' && c<='z' )
{
putch(c);
if(c>='a' && c<='z')
{
cupper = cvttoupper(c);
putch(cvttoupper(c));
}
}
if (c>='0' && c<='9')
{
d=c&0x0F;
sum = cvtdigit(sum,c);
}
} while (c != ctrlz);
printf("\nThe sum of the digits is: %d\n", sum);
system ("PAUSE");
return 0;
}
char cvttoupper(char c)
{
char cupper;
cupper= c & 0x5F;
return (cupper);
}
int cvtdigit(int d, char c)
{
int sum;
sum=sum+d;
return (sum);
}
对于如何使求和部分正常工作的任何反馈,我们将不胜感激。我怀疑这是每个不正确的函数列出参数的方式。(我必须自己创建函数,不能使用 C 库函数)。
谢谢你。
解决方案
您将旧的传递sum
给cvtdigit
,您应该添加它,而不是使用未初始化的局部变量。
您可以通过从中减去数字来获得数字的数值'0'
。
int cvtdigit(int sum, char c)
{
int d = c - '0';
sum += d;
return sum;
}
推荐阅读
- amazon-web-services - 在哪里可以找到 AWS S3 部署密钥
- python - 当条件为 False 时,Numpy.where 评估为 True
- java - 如何使用字节数组作为键对字符串进行异或?
- json - 如何使用 jq 将 json 中的间歇性字符串元素转换为数组
- php - 两个带有 PHP 按钮的 Shell_Exec 命令但仍在一个 powershell 中?
- c - 尝试使用指针重新创建 strcpy 函数
- c - 为什么`printf`的原型有`restrict`?
- vb.net - 根据 vb.net 中另一个 SQL Server 表的显示行显示列
- swift - 如果我遵循 MVC 并通过 RealmSwift 持久化数据,那么 swift 模型类会是什么样子?
- python - 两个边界框接触时如何保存图像