首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C中使用熔断器的乘法

C中使用熔断器的乘法
EN

Stack Overflow用户
提问于 2015-10-01 17:54:05
回答 2查看 94关注 0票数 1

我正在做一些乘法。我要求用户输入9位数和乘每一位数。如果用户输入123456789,那么我们将这样做:

代码语言:javascript
复制
123456789
246824682

我们将用以下代码增加用户输入:

代码语言:javascript
复制
    #include <stdio.h>
    int main(void) {

        char num[10];
        int num1,num2,num3;

        printf("Enter your num: ");
        fgets(num,10,stdin);

        num1 = num[1] * 2;
        num2 = num[2] * 4;
        num3 = num[3] * 6;

        printf("%d %d %d", num1,num2,num3);



        return 0;
}

当我运行这个时,我得到的是:

代码语言:javascript
复制
admin@matrix:~/cwork> ./lab2
Enter your num: 123
100 204 60admin@matrix:~/cwork>

为什么我得到100,204和60,我想我会得到:2,8,18或2818!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-01 18:09:10

首先,在C编程语言中,数组从0开始被索引。因此,需要将索引从[1][2][3]更改为[0][1][2]

第二,输入中的每个数字都是一个ASCII字符。因此,字符2实际上以数字50的形式存储在数组中。这就是为什么num[1] * 2是100。

将数字转换为所期望的数字的最简单方法是从每个数字中减去'0'。综合起来,您的代码应该如下所示

代码语言:javascript
复制
num1 = (num[0] - '0') * 2;
num2 = (num[1] - '0') * 4;
num3 = (num[2] - '0') * 6;
票数 2
EN

Stack Overflow用户

发布于 2015-10-01 18:06:09

当您从stdin读取时,会得到一个char数组。

所以在你的例子中有"123“

您的数组如下所示:

代码语言:javascript
复制
num[1] == '2' == 50 // 50 is the ascii code for '2'
num[2] == '3' == 51 // 51 is the ascii code for '3'

当然,这些数字是100,204。

还要注意数组从0开始,而不是从1开始!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32893849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档