一个C语言编译错误问题


#include<stdio.h>
int main(){
    char s[101];
    int sum=0;
    int u=0
    for(int i=0;s[i]!='\0';i++){
        scanf("%c",s[i]);
        u++;
    }
    for(int j=0;j<=i-1;j++){
        sum=sum+(s[i]-'\0');
    }
    int shuzi;
    for(int k=0;sum!=0;k++){
        shuzi=sum%10;
        sum=sum/10;
        if(shuzi==1){
            printf(" yi");
        }else if(shuzi==2){
            printf(" er");
        }else if(shuzi==3){
            printf(" san");
        }else if(shuzi==4){
            printf(" si");
        }else if(shuzi==5){
            printf(" wu");
        }else if(shuzi==6){
            printf(" liu");
        }else if(shuzi==7){
            printf(" qi");
        }else if(shuzi==8){
            printf(" ba");
        }else if(shuzi==9){
            printf(" jiu");
        }else if(shuzi==10){
            printf("shi");
        }

    } 
    return 0;
}

img


为什么会出现这个问题?

img


而且输入时还少了&;
改正如下:

  
#include<stdio.h>
int main(){
    char s[101];
    int sum=0;
    int u=0;
    int flag=0;
    for(int i=0;s[i]!='\0';i++){
        scanf("%c",&s[i]);
        u++;
        flag=i;
    }
    for(int j=0;j<=flag-1;j++){
        sum=sum+(s[flag]-'\0');
    }
    int shuzi;
    for(int k=0;sum!=0;k++){
        shuzi=sum%10;
        sum=sum/10;
        if(shuzi==1){
            printf(" yi");
        }else if(shuzi==2){
            printf(" er");
        }else if(shuzi==3){
            printf(" san");
        }else if(shuzi==4){
            printf(" si");
        }else if(shuzi==5){
            printf(" wu");
        }else if(shuzi==6){
            printf(" liu");
        }else if(shuzi==7){
            printf(" qi");
        }else if(shuzi==8){
            printf(" ba");
        }else if(shuzi==9){
            printf(" jiu");
        }else if(shuzi==10){
            printf("shi");
        }
 
    } 
    return 0;
}
 

测试图:

img

希望对题主有所帮助,可以的话,帮忙点个采纳!

for(int j=0;j<=i-1;j++){
sum=sum+(s[i]-'\0');
}
这里你想使用i,那你应该把循环写到i的循环里面去,否则就要把i定义成全局变量


int u=0; //缺逗号
    //for(int i=0;s[i]!='\0';i++) '\0'输入不了,以回车符作为结束标志
    for(int i=0;(s[i]=getchar())!='\n';i++,u++);
    
    for(int j=0;j<u;j++){ //i是上个for的局部变量,此处无效,
        sum+=(s[j]-'0'); //
    }