对如何完成计划感到不知所措

时间:2015-02-23 07:14:57

标签: c

您将编写一个程序,使用getch()函数从键盘读取字符。 所有小写​​字母都将转换为大写字母并打印到 使用putchar()函数显示。所有大写字母都将使用putchar()打印。 所有个别数字将被累积,总和将在结尾处打印 程序使用printf()。 您将编写一个函数来返回字母的大写字母 第二个函数,它接收当前的和和字符数字。转换 数字函数将字符数字转换为十进制值并累积数字 返还新金额的总和。只有字母才能打印出来。 程序将继续,直到收到返回,此时数字的总和将 打印在下一行。 输入内容:a9 wF23'; / 4i 该线实际显示的是:aA9wWFiI 数字的总和是:18

到目前为止我所拥有的骨架。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int uppercaseconversion (int c);


int digitconversion (int sum, int c);



  int main() 
{

    int c, upper;
    int sum = 0;


    printf("Please enter a character or characters ");

   while (c !='\n') {
    c = getch();

    // Check for a digit
    if isdigit(c)
    {
        digitconversion (sum, c);
        continue;
    }

    // If lowercase, convert to upper case




if (islower(c) )
    {
    c = uppercaseconversion (int c);
    }
    if (isupper(c)) 
    {
    putchar(c);
    }

    printf("The sum of the digits is %d\n", sum);   






    return 0;
}

int uppercaseconversion (int c);
{
    c = toupper(c);
    return c;
}

int digitconversion (int sum, int c);
{

        sum += c - '0';

    return sum;
}

重新阅读程序说明后。我必须使用putchar()输出char,然后打印总和。由于我使用char而不是字符串输出,我认为我必须打印出每个循环,否则值会丢失?

然后当按下回车或返回时,最后打印总和。

我不必打印实际输入的内容。我认为教授补充说这是一个例子。

****以上代码就是我所拥有的。目前爆发 第57行1 F:\ group2 assign \ main.c [错误]预期标识符或&#39;(&#39;之前&#39; {&#39;令牌

我被告知这是因为getch()是一个非标准的功能。

2 个答案:

答案 0 :(得分:0)

使用islower()确定char是否为小写;使用isdigit()确定char是否为数字;使用toupper()将小写字母转换为大写。

如果c是数字字符,那么c - '0'会给你数字。(查看ASCII图表。)

答案 1 :(得分:0)

你可以试试这个......

printf("Please enter a character or characters ");
while (c !='\n') {
    c = getch();

    // Check for a digit
    if isdigit(c){
        sum += c - '0';
        continue;
    }

    // If lowercase, convert to upper case
    if islower(c) c = toupper(c);
    if isupper(c) putchar(c);

}

编辑:

实际上continue不是必需的,因为我们正在检查我们打印的内容......

printf("Please enter a character or characters ");
while (c !='\n') {
    c = getch();

    // Check for a digit
    if isdigit(c) sum += c - '0';

    // If lowercase, convert to upper case
    if islower(c) c = toupper(c);
    if isupper(c) putchar(c);

}