注册 登录
编程论坛 C语言论坛

for循环里的字符为什么不允许相减?求大神。

魂之子 发布于 2020-01-21 00:34, 2249 次点击
读入一个正整数 n,计算其各位数字之和。
#include<stdio.h>

int main(){
    char* i;
    scanf("%s",i);
    int con;
    int sum=0;
    for(con=0;con<sizeof(i);con++){
        sum+=(double)(char[con]-'0');
    }
    printf("%d",sum);
    return 0;
}
6 回复
#2
吹水佬2020-01-21 06:42
#include<stdio.h>

int main()
{
    char i[20];
    int n;
    scanf("%20s%n",i,&n);
    int con;
    int sum=0;
    for(con=0; con<n; con++)
    {
        sum+=i[con]-'0';
    }
    printf("%d",sum);
    return 0;
}
#3
纯蓝之刃2020-01-21 08:37
程序代码:
#include<stdio.h>
#include<string.h>

int main()
{
    char i[50];
    scanf("%s",i);
    unsigned int con;
    int sum=0;
    for(con=0;con<strlen(i);con++)
    {
        sum+=i[con]-'0';
    }
    printf("%d",sum);
    return 0;
}
#4
魂之子2020-01-21 17:33
回复 3楼 纯蓝之刃
问一下大佬,为啥用sizeof不行呢?
#5
xianfajushi2020-01-21 20:58
d = sizeof(aa) / sizeof(aa[0]);
#6
纯蓝之刃2020-01-22 08:43
回复 4楼 魂之子
strlen个函数,遇到空字符返回,比如你输入abcd,那么strlen返回返回的就是4,而sizeof是个运算符,返回的是该变量占用的长度,因为定义char i[50],那么不论输入的是什么,sizeof(i)返回的值就是50,是数组i所占用的大小。
#7
魂之子2020-01-22 21:17
回复 6楼 纯蓝之刃
非常感谢大佬指点,
1