为啥出现输入数字后出现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);
要用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;
终于对了 累死我了改得
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的主要内容,如果未能解决你的问题,请参考以下文章