c语言,样例一可以输出,不会样例二的输出,不知道如何判断‘.'然后不会了,大脑空白,啥都不会,我好蠢啊
不超过1000位,那只能作为字符串输入了。然后检索小数点的位置就可以了。小数点前的整数部分求余4,就知道第一组有几个数需要输出
#include <stdio.h>
int main()
{
char s[1001] = {0};
int len=0,plen = 0,i=0,count=0,r=0,flag = 0;
gets(s);
while(s[plen] != '\0' && s[plen] != '.')
plen++;
len = strlen(s);
if(s[plen]!='.')
plen--;
count = plen%4;
if(count == 0)
count = 4;
while(r<plen)
{
if(flag == 1)
printf(" ");
flag = 1;
for(i=0;i<count;i++)
printf("%c",s[r++]);
count = 4;
}
if(r<len)
printf("%s",s+r);
return 0;
}
运行截图及代码如下,如有帮助,请帮忙采纳一下,谢谢。
代码:
#include <stdio.h>
#include <string.h>
int main()
{
double f;
char buf[40]={0};
int i,j,n,cnt = 0;
int flag = 0;
scanf("%lf",&f);
sprintf_s(buf,"%lf",f); //sprintf_s如果不识别,就改成sprintf(buf,"%s",f)
n = strlen(buf);
//去掉后面多余的0
while (buf[n-1]=='0')
{
buf[n-1] = 0;
n--;
}
for (i=n-1;i>=0;i--)
{
if (flag)
{
cnt++;
if(cnt%4==0)
{
for(j=n;j>i;j--)
buf[j] = buf[j-1];
buf[i]= ' ';
n+=1;
}
}else
{
if(buf[i]=='.')
flag = 1;
}
}
if(buf[n-1]=='.') buf[n-1]=0;
printf("%s",buf);
return 0;
}
你先想办法把输入的小数转换成字符串
可以直接scanf()成字符串,但感觉这样不符合出题者的意图,虽然简单,但没法排除各种奇奇怪怪的输入