您将编写一个程序,使用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()是一个非标准的功能。
答案 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);
}