1

include<stdio.h>

int main()
{
int n,t;//存储输入的小数含小数点的长度,t:四舍五入的次数。
scanf("%d %d",&n,&t);
char a[200010];
scanf("%s",&a);

int i;
for( i=0;i<n;i++)
{
if(a[i]=='.')
break;
}

if(i==n)
{
printf("%s",a);
return 0;
}

for(int j=0;j<t;j++)
{
for(int k=i+1;k<n;k++)
//k从i + 1小数点后第一位开始,遍历到字符数组a的末尾(索引n - 1),检查小数部分的每个数字
{
if(a[k]>='5')
{
n=k;//后续处理时,只需要考虑到当前处理的位置k之前的字符
a[k]='\0';
a[k-1]++;
}
}

}

if(a[i]!='.'){
a[i]='\0';
int j;
for(j=i-1;j>=0;j--){
if(a[j]'9'){
a[j]='0';
}
else {
a[j]++;
break;
}
}
if(j
-1&&a[0]=='0') printf("1%s",a);
else printf("%s",a);
return 0;
}
printf("%s",a);
}

◮:

◮:先找到小数点位置,从小数点后第一位开始检查,若某位数 ≥5 则向前一位进位,最多处理 t 次;若进位导致整数部分产生连续进位(如 999.5 进位后变成 1000)

posted @ 2025-08-15 14:50  ervgiu28hg34y827  阅读(7)  评论(0)    收藏  举报