66.7%正确数据,求大神解答

#include<stdio.h>

#include<stdlib.h>

int is9(char a[],int i)

{

//整数部分进1

if(i<0)

{

putchar('1');return 0;

}

//小数部分进1

if(a[i]=='9')

{

a[i]='0';i--;

return is9(a,i);

}

a[i]++;

return 0;

}

int add(char a[],int i,int* t)

{

//四舍五入次数归零,结束

if(*t==0)

{

return 0;

}

//消耗一次四舍五入的次数

(*t)--;

//情况1:小数点后一位即满足条件,对整数部分进一位

if(a[i]=='.')

{

a[i]=0;

i--;

return is9(a,i);

}

//对小数部分归零

a[i]++;

a[i+1]=0;

if(a[i]>'4')

{

i--;

return add(a,i,t);

}

return 1;

}

int main()

{

//n,t分别表示小数(含小数点)的长度以及四舍五入的次数。

int n,t;

scanf("%d %d",&n,&t);

//a[n+1]字符串表示qdgg的初始分数。

char a[n+1];

scanf("%s",a);

//遍历分数的整数部分长度

int i;

for(i=0;a[i]!='.';i++);

//从分数的小数部分开始遍历,依次后推

int j;

for(j=i+1;a[j];j++)

{

//四舍五入次数为零,退出四舍五入

if(t==0)

{

break;

}

//当遍历小数部分满足条件时,四舍五入

if(a[j]>'4')

{

//构造一个子函数进行四舍五入,&t修改t的值

add(a,j-1,&t);

break;

}

}

printf("%s",a);

}

全部评论
111
点赞 回复 分享
发布于 2023-07-04 06:48 湖南

相关推荐

高斯林的信徒:问你有没有保底,好人啊,就差把这是kpi面告诉你了
点赞 评论 收藏
分享
嵌入式求职之路:可以看我经验😂,https://www.nowcoder.com/share/jump/73221730841876945
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务