关于strlen函数的一些小问题(菜鸡的我遇到n次)
题目如下,我想倒叙输出数组num中存放的每一位数,为了从num中存放的最后一位数字输出,我使用了strlen函数,结果报错。
//作者:happyPeggy
//时间:2020.2.6
//题目:进制转换,输入两个非负十进制整数A,B(都满足(<1e+30)-1);以及要转换成的D进制数,输出A+B的D进制数
#include<cstdio>
#include<cstring>
int main(void){
long long A,B;
int D,num[20],i=0;
scanf("%lld%lld%d",&A,&B,&D);
long long y = A + B;
do{
num[i++] = y % D;
y /= D;
}while(y != 0);
for(i = strlen(num);i > 0; i--){//此行报错:no matching function for call to ‘strlen’
printf("%d",num[i]);
}
printf("\n");
return 0;
}
后来我想明白是因为strlen只能求字符数组的有效位长度,不能求 int 型数组的有效长度。
其实 i 在经历过do{} while() 循环后值已经是我想要的“strlen(num)”,所以改成
//作者:happyPeggy
//时间:2020.2.6
//题目:进制转换,输入两个非负十进制整数A,B((<1e+30)-1);以及D进制数,输出A+B的D进制数
#include<cstdio>
int main(void){
long long A,B;
int D,num[20],i=0;
scanf("%lld%lld%d",&A,&B,&D);
long long y = A + B;
do{
num[i++] = y % D;
y /= D;
}while(y != 0);
for(i--;i >= 0; i--){
printf("%d",num[i]);
}
printf("\n");
return 0;
}
结果运行正确