程序代码:/******************************************************************
为了使可以转换的数字位数更多,所以使用字符数组来作。
如有不足之处,欢迎批评。谢谢。
******************************************************************/
#include
#include
#define X {char c;while(c=getchar()!='\n');}
#define N 1000
int ch(char a[],int n)
{
char *p;
int i,b;
b=strlen(a); /* 测出字符串长度 */
for(i=0;i
if(a[i]=='.')
break; /* 找出小数点的位置 */
if(b-i
{
printf("对不起,您输入的数字与所要保留的位数不符,请重新输入.\n");
sleep(1); /* ~~暂停屏幕1秒 */
return 0; /* 返回 0 ,要求重新输入 */
}
p=a+i+n+1; /* 指针指向要保留的字符位数后一位 */
if(*p>'4')
{
*(p-1)+=1;
*p='\0'; /* 如果保留字符后的数字大于4,保留字符加1,并在后*/
} /* 面加上结束标记 */
else *p='\0'; /* 如果保留字符后的数字小于4,直接将它重新赋为结束标记*/
return 1; /* 如果四舍五入成功,返回 1 */
}
int main(void)
{
char a[N];
int n,b;
do
{
system("cls"); /* 当输入出错后返回时,清屏 */
printf("请输入想要保留的小数后位数:\n");
scanf("%d",&n);
X; /* 清除键盘缓存 */
printf("\n请输入您的数字:\n");
gets(a); /* 输入字符串*/
b=ch(a,n); /* 调用函数四舍五入 */
}
while(!b);
printf("\n四舍五入后的数字为:\n");
puts(a);
getch();
}