-1

我正在尝试编写一个简短的程序:

#include <stdio.h>
void main()
{
char=a,b,c;
printf("please place 3 numbers:\n");
scanf("%c%c%c", &a,&b,&c);
}

我要解决的练习是如何将 char 更改为 int,所以如果我输入数字 3,我将打印数字 3。在这一点上,我只得到了价值。我将不胜感激任何帮助。

4

4 回答 4

1

答案在某种程度上取决于您对字符集的假设。如果它类似于 ASCII(或者实际上是任何包含按顺序排列的数字的字符集),则只需将字符值偏移字符的值0

int aValue = a - '0';

不过,我确信 C# 提供了更好的方法来做你想做的事情。例如,有关将字符串转换为整数值的一些示例,请参阅此问题

于 2013-10-23T14:13:54.533 回答
0

你的问题不太好理解。我仍然会尽力提供帮助。我认为您想要的是在 char 变量中存储一个整数值。您可以使用以下代码执行此操作:

#include<stdio.h>
void main()
{
char a,b,c;
printf("Enter three numbers:\n");
scanf(" %c %c %c",&a,&b,&c);       //notice the spaces between %c
}

或者如果你想输入一个字符并打印它的 ASCII 值,你可以使用下面的代码:

#include<stdio.h>
#include<conio.h>
void main()
{
char a,b,c;
printf("Enter three characters:\n");
scanf(" %c %c %c",&a,&b,&c);
printf("Entered values: %d %d %d",a,b,c);
getch();
}
于 2013-10-23T14:56:01.160 回答
0

您的问题在细节上非常简单,所以这里有几个选项:

#include <stdio.h>
int main()
{
    char a,b,c;
    printf("please place 3 numbers:\n");
    scanf("%c%c%c", &a,&b,&c);

    printf("Printing ints (auto-promotion): %d %d %d\n", a, b, c);
    printf("Printing ints (explicit-promotion): %d %d %d\n", (int)a, (int)b, (int)c);
    printf("Printing digits: %d %d %d\n", a-0x30, b-0x30, c-0x30);
    return 0;
}

如果输入是123,我希望输出是:

Printing ints (auto-promotion): 49 50 51
Printing ints (explicit-promotion): 49 50 51
Printing digits: 1 2 3 

我一路上修好了一些东西。

  • main应该返回一个int,而不是无效。
  • char=a,b,c;是语法错误。你的意思是char a,b,c;
  • return 0;在末尾加了一个main
于 2013-10-23T14:23:12.950 回答
0

首先你的语法需要一些检查

你应该知道你是这样声明一个变量的(在这个例子中是一个字符):

char a;

如果要连续声明多个相同类型的变量,请执行以下操作:

char a, b, c;

如果要为声明的变量赋值:

a = '3';

现在使用 printf 打印一个字符(必须阅读 man printf,更多信息在 coreutils 中):

printf("%c", a);

如果您想从命令行获取 char,我建议您使用getchar()(man getchar) 而不是scanf因为如果更适合您想要实现的目标并且不需要您使用scanf我相信您不使用的语法还没有完全明白。

于 2013-10-23T14:20:39.077 回答