为啥出现输入数字后出现log10: SING error

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥出现输入数字后出现log10: SING error相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
main()
unsigned long a,n;
printf("Input a:");
scanf("%d",&a);
n=log10(a)+1;
if(a*(a-1)%10^n==0)
printf("%d yes.%dX%d=%d",a,a,a,a*a);
else
printf("%d no.%dX%d=%d",a,a,a,a*a);

#include “math.h”
要用log10 必须要包含该文件追问

这个程序部分运行错误,比如运行5,结果错误

追答

那你也得把你的设计要求贴出来才好给你改啊

追问

判断是否为同构数
是的话:格式例子:25 yes.25X25=625
不是的话:格式例子:11 no.11X11=121

追答

#include
#include

int main()

unsigned int a,n;
printf("Input a:");
scanf("%d",&a);
n=log10(a)+1;
double tmp = pow(10,n);
int x = int(tmp);
if(a == (a*a - a*a/x*x))
printf("%d yes.%dX%d=%d",a,a,a,a*a);
else
printf("%d no.%dX%d=%d",a,a,a,a*a);
return 0;

终于对了 累死我了改得

参考技术A 没啥大问题,include math.h
VC6通过
#include<stdio.h>
#include<math.h>

void main()

unsigned long a,n;
printf("Input a:");
scanf("%d",&a);
n=log10(a)+1;
if(a*(a-1)%10^n==0)
printf("%d yes.%dX%d=%d",a,a,a,a*a);
else
printf("%d no.%dX%d=%d",a,a,a,a*a);
return;
参考技术B //---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#define DEC 10
#define HEX 16
#define BIN 2
#define OCT 8

#define MAX 32

unsigned long int binToUl(const char *binr)

int i=0,n=strlen(binr)-1;
unsigned long int rt=0;
for (i = 0; n-i>=0; i++)
if (binr[n-i]=='1') rt+=(unsigned long int)floor(pow(2,i));

return rt;

unsigned long int getNum(const char *num ,const int type)

unsigned long int number;
switch (type)

default: number=-1;
case DEC:sscanf(num,"%lu",&number);break;
case HEX:sscanf(num,"%lx",&number);break;
case OCT:sscanf(num,"%lo",&number);break;
case BIN: number=binToUl(num);

return number;

char *toBin(const char *num,const int type)

char *ret=NULL;
int i,n,mask;
unsigned long int number=getNum(num,type);

n=(int)floor(log(number)/log(2))+1;
mask= 1<<n;
ret=malloc(sizeof(char)*(n+1));
for (i = 0; i<=n; i++)
ret[i]= (number&mask)?'1':'0';
number<<=1;

ret[n+1]=0;
return ret;


char *toHex(const char *num,const int type)

unsigned long int number=getNum(num,type);
char *rt=malloc(sizeof(char)*((int)floor(log(number)/log(16))+1));
sprintf(rt,"%X",number);
return rt;


char *toOct(const char *num,const int type)

unsigned long int number=getNum(num,type);
char *rt=malloc(sizeof(char)*((int)floor(log(number)/log(8))+1));
sprintf(rt,"%o",number);
return rt;


void change(const char *num,const int type)

switch (type)

default: fprintf(stderr,"ERROR,type %d is not defined!",type);
case DEC:
printf("DEC:%s\nBIN:%s\nHEX:%s\nOCT:%s\n",num,toBin(num,type),toHex(num,type),toOct(num,type));
break;
case HEX:
printf("DEC:%ul\nBIN:%s\nHEX:%s\nOCT:%s\n",getNum(num,type),toBin(num,type),num,toOct(num,type));
break;
case BIN:
printf("DEC:%ul\nBIN:%s\nHEX:%s\nOCT:%s\n",getNum(num,type),num,toHex(num,type),toOct(num,type));
break;
case OCT:
printf("DEC:%ul\nBIN:%s\nHEX:%s\nOCT:%s\n",getNum(num,type),toBin(num,type),toHex(num,type),num);


int main(void)

char num[MAX];
int type;
scanf("%79s",num);/*输入原数字,无符号整数形式*/
scanf("%d",&type);/*输入原数字的进制,10表示十进制,16表示十六进制,8表示八进制,2表示二进制,可以在程序开始处的宏定义中修改*/
change(num,type); /*转换并输出*/
return 0;

//---------------------------------------------------------------------------

每次输入验证码都不正确是为啥

参考技术A 一、页面上的刷新问题
每刷新一次页面,验证码都会跟着变换,如果提示验证码错了系统便会更换验证码,这时可能页面还是原来验证码,所以你可能输入了两次相同的验证码,请看到验证码更换后再重新输入新验证码就可以了。
二、输入法的全角/半角问题
输入法的全角/半角输入的数字是不一样的,即全角数字1234和半角数字1234是不同的,新浪博客的验证码输入只支持半角数字,如果输入成全角数字,虽然数字是正确的但是还是不能通过验证。
三,随着新浪博客新用户的逐渐增多,系统必须要经常的升级维护。出现一些意想不到的问题属于正常现象,部分用户会受到影响。
希望上述说明对你有所帮助!

以上是关于为啥出现输入数字后出现log10: SING error的主要内容,如果未能解决你的问题,请参考以下文章

在Excel里,日期为啥变成了数字

C语言文件输出时,输入数据后为啥会出现乱码

这个C语言程序输入字母会出现死循环,为啥?怎么办?

批处理在设置时间时,时分秒后总会出现空格,为啥?之前年月日中日也会出现这样的问题,输入set d

在Excel里,日期为啥变成了数字

为啥开机出现winload. exe?