【发布时间】:2019-02-28 17:31:13
【问题描述】:
我一直在研究这个程序,但遇到了障碍。我完成了所有工作,但编译时一个细节无法正常工作。
你将编写一个从键盘读取字符的程序 使用 getch() 函数。所有小写字母都将被转换 大写并使用 putchar() 打印到显示器上 功能。所有大写字母都将使用 putchar() 打印。全部 单个数字将被累加,总和将打印在 使用 printf() 结束程序。你会写你自己的 函数返回字母的大写,不要使用 C 库转换函数,以及接收的第二个函数 当前总和使用当前字符数字,不要使用 C 库转换函数。转换数字功能将转换 将字符数字转换为十进制值并将数字累加到 sum 返回新的总和。只有字母会被打印出来 没有其他的。该计划将继续进行,直到收到退货 此时数字的总和将打印在下一行。 输入的内容: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(sum,c);?sum = cvtdigit(sum,d);?最后一个参数有错别字?
标签: c