c语言中输出时怎么将第一个非零数字前的零去掉

是用数组循环输出的,如0005080,则输出5080
这个真的很重要,跪求高手指导(附:我只看得懂C的,求高手见谅。。)


#include <stdio.h>
//先跳过'0'字符,再输出剩下的字符
//注意特判下0的情况
void output(char s[]){
    int i = 0;
    while(s[i] == '0' && s[i] != NULL)  i++; //跳过字符'0',即前导0
    if(s[i] == NULL) putchar('0'); //跳过所有'0'字符后下标i指向了字符串结尾,说明此时要输出的数是0
    while(s[i] != NULL) putchar(s[i++]);    //输出余下的字符
    putchar('\n');
}

int main(){
    char s[] = "0005080";
    output(s);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-26
#include<stdio.h>
mian()
{
int a[]="0005080",i,add=0;
for(i=0;a[i]!='\0';i++)
{
add+=a[i] //将数字叠加
if(add!=0) //很简单的一个判断(此次之前的数字相加是否为0,不是就输出)
printf("%d",a[i]);
}
}本回答被提问者采纳
第2个回答  2019-01-04
int t=0 , i;
int a[]={0,0,0,5,0,8,0};
for(i=0;i<7;i++)
{
if(a[i]!=0)t++;
if(t!=0)printf("%d",a[i]);
}
//其实就是用一个变量表示出现的非零数字的个数,不是零就说明出现了非零数字,就可以开始输出了;而且楼上最佳答案的代码有一个漏洞,之和为0不代表全都是0,如果数组是3,0,-3,-1,1,那就会输出3,-1。这个显然是不对的。
第3个回答  2012-11-24
字符数组的
#include <stdio.h>
int main()
{
char s[10] = "0005080";
int i;
int findheadflag = 0;
for(i=0;i<10 && s[i]!='\0';i++)
{
if(s[i]!='0')
{
break;
}
}
printf("%s\n", &s[i]);
return 0;
}
第4个回答  2012-11-24
#include <stdio.h>

int main()
{
char * s = "0005080";
int a = 0;
for (; *s != '\0'; s++)
{
if (*s != '0') a = 1;
if (a == 0 && *s == '0') continue;
putchar(*s);
}
return 0;
}
相似回答