#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <math.h>
using namespace std;
void fun(int s[],FILE *fp){
float a, b, c, diat, realpart, imagpart;
a = s[0];
b = s[1];
c = s[2];
diat = b*b-4*a*c; // diat=0有两个相等实根,diat>0有两个不等实根,diat<0有两个共轭复根
if(fp == NULL){
printf("cannot write this file\n");
exit(0);
}
else{
if(fabs(a)<=1e-6){ //a=0
if(fabs(b)<=0){ //b=0
printf("%dx^2+%dx+%d=0 有任意解\n",s[0],s[1],s[2]);
fprintf(fp,"%dx^2+%dx+%d=0 有任意解\n",s[0],s[1],s[2]);
}else{ //b!=0
printf("%dx^2+%dx+%d=0 的解为x=%f\n",s[0],s[1],s[2],-c/b);
fprintf(fp,"%dx^2+%dx+%d=0 的解为x=%f\n",s[0],s[1],s[2],-c/b);
}
}else{ //a!=0
if(diat < 0){ //有两个共轭复根
realpart = -b/(2*a);
imagpart = sqrt(-diat)/(2*a);
printf("%dx^2+%dx+%d=0 x=%f + %fi\n",s[0],s[1],s[2],realpart,imagpart);
printf("%dx^2+%dx+%d=0 x=%f - %fi\n",s[0],s[1],s[2],realpart,imagpart);
fprintf(fp,"%dx^2+%dx+%d=0 x=%f + %fi\n",s[0],s[1],s[2],realpart,imagpart);
fprintf(fp,"%dx^2+%dx+%d=0 x=%f - %fi\n",s[0],s[1],s[2],realpart,imagpart);
}
else if(diat <= 1e-6){ // diat=0有两个相等的实根
printf("%dx^2+%dx+%d=0 的解为x2=x1=%f\n",s[0],s[1],s[2],-b/(2*a));
fprintf(fp,"%dx^2+%dx+%d=0 的解为x2=x1=%f\n",s[0],s[1],s[2],-b/(2*a));
}
else {// diat >0
printf("%dx^2+%dx+%d=0 的解为x1=%f x2=%f\n",s[0],s[1],s[2],(-b+sqrt(diat))/(2*a),(-b-sqrt(diat))/(2*a));
fprintf(fp,"%dx^2+%dx+%d=0 的解为x1=%f x2=%f\n",s[0],s[1],s[2],(-b+sqrt(diat))/(2*a),(-b-sqrt(diat))/(2*a));
}
}
}
}
int main(){
int a[3] = {0}, i = 0;
char ch;
FILE *fp,*wp;
if((fp=fopen("Coefficient.txt","r")) == NULL){
printf("connot open this file\n");
exit(0);
}
if((wp=fopen("result.txt","w")) == NULL){
printf("cannot write this file\n");
exit(0);
}
else{
while(!feof(fp)){
ch = fgetc(fp);
if(ch >= '0' && ch <= '9'){
a[i] = a[i]*10 + ch- '0';
}
else{
i++;
if((i+1)%4 == 0){
cout << a[0] << ' ' << a[1] << ' ' << a[2] << endl;
fun(a,wp); //可以把文件都写入,不出现覆盖情况,读一行写入一行
i = 0;
a[0] = a[1] = a[2] = 0;
}
}
}
fclose(wp);
fclose(fp);
}
return 0;
}
#include<stdio.h>
int main(){
int Fun(int n,int k);
int n,k;
printf("输入n和k(n>=k):\n");
scanf("%d %d",&n,&k);
if(k > 0 && k < n);
printf("%d\n",Fun(n,k));
return 0;
}
int Fun(int n,int k){
if(n==k||k==0)
return 1;
else
return Fun(n-1,k-1)+Fun(n-1,k);
}