自解c语言
1. 求一个用c语言编写的能解二元一次方程组的程序,希望不要是复制粘贴别处的
/*一.关于自动解一元二次方程*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
double a,b,c,del,k;
s:
printf ("a=");scanf ("%lf",&a);
printf ("b=");scanf ("%lf",&b);
printf ("c=");scanf ("%lf",&c);
del=pow (b,2)-4*a*c;
if (a==0) if (b==0&&c==0) printf ("If you want,it can be anything~");
else if (b==0&&c!=0) {printf ("Get out,don't ask me!
");exit (0);}
else printf ("%.0lfX+%.0lf=0
X=%lf",b,c,-c/b);//a为0时为一元一次方程
else if (0==del) printf ("有唯一解:%lfX^2+%lfX+%lf=0
X=%lf",a,b,c,-b/(2*a));//del等于0
else if (0>del) printf ("无实数解!");
else printf ("%lfX^2+%lfX+%lf=0
X1=%lf
X2=%lf",a,b,c,(-b+sqrt(del))/2*a,(-b-sqrt(del))/2*a);
printf ("
continue?");
scanf ("%d",&k);if (k==1) goto s;
return 0;
}
2. 用c语言编程求线性方程组的解
给,下面的代码已经编译运行确认,肯定好用了,试试吧:)
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define
number
20
#define
esc
0x1b
#define
enter
0x0d
float
a[number][number+1]
,ark;
int
flag,n;
void
exchange(int
r,int
k);
float
max(int
k);
void
message();
int
main()
{
float
x[number];
/*此数组用于存放方程解*/
int
k,i,j;
char
celect;
system("cls");
printf("\n用gauss列主元消元法解线性方程组");
printf("\n1.解方程组请按enter.");
printf("\n2.退出程式请按esc.");
celect=getch();
if(celect==esc)
exit(0);
printf("\n
输入方程组的维数:n=");
scanf("%d",&n);
printf("\n现在输入系数矩阵a和向量b:");
for(i=1;i<=n;i++)
{
printf("\n请输入a%d1--a%d%d系数和向量b%d:
\n",i,i,n,i);
/*实现将每一行中的系数和向量一次性输入,数之间用空格格开,输完后回车确定*/
for(j=1;j<=n+1;j++)
/*将刚才输入的数存入数组*/
scanf("%f",&a[i][j]);
}
for(k=1;k<=n-1;k++)
{
ark=max(k);
if(ark==0)
/*判断方程是否为线性方程,即是否合法*/
{
printf("\n此方程组不合法!");message();
}
else
if(flag!=k)
exchange(flag,k);
for(i=k+1;i<=n;i++)
for(j=k+1;j<=n+1;j++)
a[i][j]=a[i][j]-a[k][j]*a[i][k]/a[k][k];
}
x[n]=a[n][n+1]/a[n][n];
for(
k=n-1;k>=1;k--)
{
float
me=0;
for(j=k+1;j<=n;j++)
{
me=me+a[k][j]*x[j];
}
x[k]=(a[k][n+1]-me)/a[k][k];
}
for(i=1;i<=n;i++)
{
printf("\nx%d=%f",i,x[i]);
}
message();
getch();
return
1;
}
void
exchange(int
r,int
k)
/*交换行的矩函数*/
{
int
i;
for(i=1;i<=n+1;i++)
a[0][i]=a[r][i];
for(i=1;i<=n+1;i++)
a[r][i]=a[k][i];
for(i=1;i<=n+1;i++)
a[k][i]=a[0][i];
}
float
max(int
k)
/*比校系数大小的函数*/
{
int
i;
float
temp=0;
for(i=k;i<=n;i++)
if(fabs(a[i][k])>temp)
{
temp=fabs(a[i][k]);
flag=i;
}
return
temp;
}
void
message()
/*实现菜单选择的函数*/
{
printf("\n
继续运算按
enter
,退出程式按
esc!");
switch(getch())
{
case
enter:
main();
case
esc:
exit(0);
default:{printf("\n不合法的输入!");message();}
}
}
3. 用C语言编写二分法解方程程序
#include <stdio.h>
#include <math.h>
float getvalue(float x)
{
return x*x*x+4*x*x-10;
}
void main()
{
float a=1,b=1.5,c;
c=(a+b)/2;
while(fabs(getvalue(c))>0.00001 && fabs(a-b)>0.00001){
if(getvalue(c)*getvalue(b)<0) a=c;
if(getvalue(a)*getvalue(c)<0) b=c;
c=(a+b)/2;
}
printf("%0.3f\n",c);
}
4. 用C语言实现从指定的地址下载一个文件吗,并自解压
有两种实现方式
1)就是用system来运行命令,比如system("wget http://abc.com/test.rar"); 然后system("unrar x test.rr");。。。。其实这种方式就和写脚本差不多
2)如果完全自己编程,那么就要用到各种库文件了。比如下载你可以使用libcurl,rar解压你可以用libunrar,输入用户存储路径,你用scanf输入,然后根据系统的不同(windows或者linux)调用系统api来创建目录,显示下载进度,你可以先获得该文件的大小,然后根据已下载的数据量和文件大小计算进度
你确定要集体的代码吗?