编程实现文件中的数据读取后进行一元二次方程的运算结果放到result.txt中

#include<stdio.h>
#include<math.h>
#include<string.h>
int main(){
	void Fun(int a[3]);
	FILE *fp;
	int a[3]={0},n=0;
	char ch,ch2='0';
	if((fp=fopen("e:\\data\\Coefficient.txt","r"))!=NULL){
		while(!feof(fp)){//判断文件流结束
			ch=getc(fp);//读一个字符
			if(ch>='0'&&ch<='9'){	///如果是数字
				a[n]=a[n]*10+ch-48;	//求当前数字
				if((n+1)%3==0){//如果已经有三个系数了
					Fun(a);//调用输出函数
					n=0;//重置n=0 
					memset(a,0,sizeof(a));    //重置数组a	
				}
			}else
				if(ch!='\n')
				n++;	//读取下一个	
		}
		fclose(fp);//关闭文件流			
	}else{//打开不了
		printf("文件打开失败!");
		return 0; 
	}	
	return 0;
} 

void Fun(int *a){//输出函数
	FILE *fp;
	float diat=(float)(a[1]*a[1]-4*a[0]*a[2]);//判别式
	printf("%f %d %d %d\n",diat,a[0],a[1],a[2]);
	if((fp=fopen("e:\\data\\result.txt","a+"))==NULL){
			printf("result.txt打开失败\n");
			return;
	}
	if(a[0]==0){
		if(a[1]!=0){
			fprintf(fp,"%dx^2+%dx+%d=0的解为:x=%d\n",a[0],a[1],a[2],-a[2]/a[1]);
		} else{
			if(a[2]==0)
			fprintf(fp,"%dx^2+%dx+%d=0的解为:任意实数\n",a[0],a[1],a[2]);
			else 
			fprintf(fp,"%dx^2+%dx+%d=0的解为:无解\n",a[0],a[1],a[2]);
		}
		
	}else {
		if(diat<0)
			fprintf(fp,"%dx^2+%dx+%d=0的解为:无解\n",a[0],a[1],a[2]);
		else 
			fprintf(fp,"%dx^2+%dx+%d=0的解为:x1=%.2f,x2=%.2f\n",a[0],a[1],a[2],(-a[1]+sqrt(diat))/2*a[0],(-a[1]-sqrt(diat))/2*a[0]);
	}
	
}

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值