julicliy 2017-10-12 14:32 采纳率: 0%
浏览 1418

POJ 1001 总是提示答案错误

#include
#include
#include
#include
using namespace std;
const int MAX = 500;
char a[MAX];
char b[MAX];
char temp[MAX];
char result[MAX];
char str[8]="98.999";
int n = 10,point;
bool pointEmpty(){
int i;
for(i=0; i<strlen(str); i++)
if(str[i] == '.')
return true;
return false;
}
void init(){
int i,j;
memset(a,0,MAX*sizeof(char));
memset(b,0,MAX*sizeof(char));
memset(result,0,MAX*sizeof(char));
memset(temp,0,MAX*sizeof(char));
if(pointEmpty())
for(i=strlen(str)-1; str[i]=='0'; i--)
str[i] = '\0';

for(i=strlen(str)-1,j=0; i>=0; i--){        
    if(str[i]!='.'){            
        b[j] = str[i];
        a[j++] = str[i];
    }else{
        point = strlen(str) - i - 1;        
    }
}
point = point*n;

}
void fun(){
int i,j,h,k,v,z,x,y;

if(n==1) {
strcpy(result, a);
return ;
}
if(n==0){
strcpy(result, "1");
return ;
}

while(--n){

    for(i=0; i<strlen(a); i++){
        z=0; h=0;
        for(j=0; j<strlen(b); j++){
            z = (a[i]-48) * (b[j]-48) + z;
            v = z%10;
            z = z/10;
            temp[h++] = v+48;
        }               
        if(z!=0) temp[h++] = z+48;
        temp[h] = '\0';         
        h=0;z=0;
        for(k=i; k<j || h<strlen(temp); h++,k++){
            if(i==0){
                result[k] = temp[h];
            }else{
                if(result[k] == 0) x=0;
                else x = result[k]-48;
                if(temp[h] == 0) y=0;
                else y = temp[h]-48;
                z = x + y + z;              
                v = z%10;
                z = z/10;
                result[k] = v+48;               
            }
        }
        if(z!=0) result[k++] = z+48;
        result[k] = '\0';       
    }       
    strcpy(b, result);      
}   

}

void solve(){

int count,i,j,k;
char ch;
init();
fun();
strcpy(temp, result);

for(i=0,j=0; i<strlen(result); i++){
    if(point == i && point!=0){
        result[j++] = '.';          
    }
    result[j++] = temp[i];      
}   

k = strlen(result); 
for(i=k-1; i>=k/2; i--){
    ch = result[i];
    result[i] = result[k-i-1];
    result[k-i-1] = ch;
}
printf("%s\n",result);  

}
int main()
{
while(cin>>str>>n){
solve();
}
return 0;
}

  • 写回答

1条回答

  • threenewbee 2017-10-13 01:22
    关注
    评论

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面