C语言中十进制转八进制中的一段程序trans[i++]=decimal%8+’0’是什么意思?
decimal%8是decimal除8的余数,对应8进制数
decimal%8+‘0’ ‘0’+0是‘0’,‘0’+1是‘1’,等等
C语言问题,文件?
因为要先输出数字个数,所以要先保存字符串,扫描一遍统计数字个数后,两次扫描时输出各个数字。
#include stdio.h
int main()
{ char s[100];
int i,k,n=0;
gets(s);
for(i=0; s[i]; i++)
if(s[i]=’0’s[i]=’9′)
{ if(!k)n++;
k=1;
}
else if(k)k=0;
printf(“%d\n”,n);
for(i=k=0; s[i]; i++)
if(s[i]=’0’s[i]=’9′)
{ putchar(s[i]);
k=1;
}
else if(k)
{ k=0;
putchar(‘ ‘);
}
return 0;
}
c语言 statement miss ;in funtion trans 什么原因?
如果trans在main里面被调用,而trans的实际内容在main下面的话(就像你这样)
那么在main前面应该对trans进行声明,
#includestdio.h
void trans(char *p,long m,int base)
void main()
…………
…………
也可以把trans的函数内容写在main前面,这样就不用再声明了
c语言编程问题~~弄不明白啊~~
1)p=string 是把string中的内容赋给字符指针p; *p指的是p指针不为空时;
p++就是指针p向下移(如把p从指向a移到s);
2)根据ASKII码的大小进行比较;
3)r和p是字符指针,一开始其指向字符串 string 的第一个字符;故可以和字符进行赋值操作;
4)输出:result:adfgjkls
/////这是一段将字符串从小到大排列的程序。
第二个程序中,用了“递归”,即函数里面又调用了本函数
789调用函数trans
首先,i=789/10=78(整型)!=0;然后, 第一次递归调用trans,实参是78(即i),现在第二次进入函数trans,i=78/10=7(整型)!=0;此时,继续第二次递归调用trans,实参为7
(即i);进入函数trans;现在i=7/10=0,故继续执行下去,n=7; 所以,
(n%10)+’0’=7,即输出7.这是在第二次递归调用trans函数中的trans函数执行的结果,也就是说,本次进入 trans前,是第一次递归调用,当时n=78,现在trans结束了,跳出第二次调用trans,继续执行下面的程序(n=78),(n%10)+’0’=8;即输出8;同理,此时是第一次递归调用trans结束,此后,又回到第一次主函数调用trans时的情形,即,n=789,(n%10)+’0’=9;即输出9;; 综上,输出为7,8,9
==========================================================
一个一个字打的啊。。可能说的你不太明白,但我尽力了。。思想就这样,,希望对你有帮助。呵呵。。