在C语言课上写了无聊程序

是这样的,今天课上学到了double,然后呢这个函数你懂的,会有很多无聊的0在后面,这就涉及到去掉他们。

我模拟了一种超级辣鸡的方法来去掉他们,也就是先去放到一个char数组,然后末尾淘汰0,最后如果.是最后一个就把它也干掉。

代码如下:

#include<bits\stdc++.h>

using namespace std;

int main()
{
	char seq[100];
	memset(seq,0,100*sizeof(char));
	int i=0,j;
	while(1)
	{
		char lalala=getchar();
		if((lalala>='0' && lalala<='9') || lalala=='.')
		{
			seq[i]=lalala;
			if(lalala=='.')j=i; 
			i++;
		}
		else break;
	}
	--i;
	for(int k=i;k>j;k--)
	{
		if(seq[k]=='0') seq[k]=0;
		else break;
	}
	i=strlen(seq);
	if(seq[i-1]=='.') --i;
	for(int k=0;k<i;k++)
	{
		cout << seq[k];
	}
	return 0;
}

后来要交程序作业,是三个整数求平均,我就又一次修改了我的程序,这次的去0输出更加高端点。

#include<stdio.h>
#include<string.h>

char seq[102];
double a,b,c,ans;

int main()
{
	scanf("%lf%lf%lf",&a,&b,&c);
	ans=(a+b+c)/3;
	//ans=123.0000;
	sprintf(seq, "%lf", ans);
	int i=0;
    for(i=strlen(seq)-1;i>strchr(seq,'.')-seq;i--)
    {
        if(seq[i]=='0') seq[i]=0;
        else break;
    }
    if(seq[i]=='.')seq[i]=0;
    for(i=0;i<strlen(seq);i++) printf("%c",seq[i]);
	printf("\n");
	return 0;
}

留下你的评论呗...

电子邮件地址不会被公开。 必填项已用*标注