A. c語言解一元一次方程
確認輸入過程中輸入的逗號為英文半形字元,不是中文逗號
B. C語言怎麼計算一元一次方程
#include<stdio.h>
int main(){
int x;
for(x=0;;x++) //一遍一遍的循環知道找到解
if(x+2==4){ //判斷x+2是否等於4
printf("解:x=%d\n",x); //輸出結果
break; //退出循環
}
return 0;
}
C. 解釋C語言(逐句) 解一元一次方程的
#include<stdio.h>
#include<string.h>
//前面兩個是庫函數,第一個用於輸入輸出,第二個用於調用對字元串的各種操作
//下面是main函數主體,定義為void類型則最後不需要return返回值,若定義為int則需要返回
void main()
{
char s[20], *p, b[10], ch; //定義了四個變數,S[20],b[10]是字元串數組,P是字元串指針,用
//於指向一個字元串,ch是字元變數
int i=0, f=0, f1=1; //定義int型的變數,變數作用下面會說明
int x=0, c=0;
int u=0;
gets(s); // gets()函數是庫函數,用於從鍵盤接受你輸入的一串東西,只接受你回車鍵以前
//的內容
p=s; //讓指針p 指向 上面gets()函數接收到的那串字元,就是把那串字元的首地址給p
while(*++p!='\0'); //一個while循環,由於p只是指向那串字元的首地址,因此循環的作用是到達
//那串字元的末尾,'\0'表示一串字元串結束了,'\0'不是你輸的,而是一串字
//符結束後,系統自動添上去的
*p=' '; *(p+1)='\0'; //上面while循環結束後p指針已經指向字元串的末尾了,現在把字元串的最
//後一位變為' '(空格),這時候需要自己給字元串末尾添加結束標志'\0',因
//為你把字元串單個執行系統不會自動給你添了
p=s; //上面p指針已經通過while循環跑到字元串末尾了,因此需要重新賦值下,
//這樣p又一次指向字元串s的開頭
//下面是解一元一次方程的過程,主體還是一個while循環
while(*p!='\0') //*p!='\0'是指只要p指針沒指向字元串結束的位置,就一直循環
{
if(*p>='0'&&*p<='9') { b[i++]=*p; f=1; } //判斷p此時指向的那個字元是否屬於0-9的數字,
//如果是則把p指向的內容放在b數組
//否則執行else語句,並讓f=1(f本來為0),注意
//i++使b數組遞增
else
if(f==1) { //現在是else的部分,說明p指向的那個字元不是0-9了,而是其他字元
if(*p>='a'&&*p<='z') { //上面說到p指向的不是0-9,現在判斷p是否指向a-z的26個字元,
//其實這樣寫是有問題的,萬一你輸入大寫字母,結果會出錯,建議改為 if(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z')
ch=*p; //*p是指p指針指向的那個字元,注意p指向的是地址,*P代表p地址處存放
//的數據
//b數組中存放的是字元串中的數字部分,下面的if跟else分別是把char類型的數字轉換為int型
//if是處理負數的情況,else處理正數的情況,如何判斷正負數是通過,f1,u的值來看的
if((u==0&&f1==0)||(u==1&&f1==1)) {
b[i]='\0';
f=0; i=0; u=0;
x=x+ atoi(b)*(-1); //atoi()是庫函數,把char類型的數據轉換為int型
//x=x+ atoi(b)*(-1); 等效於 x+=atoi(b)*(-1);
} // end if((u==0&&f1==0)||(u==1&&f1==1))
else {
b[i]='\0';
f=0; i=0; u=0;
x+=atoi(b);
} //end else
} //end if(*p>='a'&&*p<='z')
//上面所有操作是在 if(*p>='a'&&*p<='z')內進行的,也就是遇到字母的時候,
//所以x最後的值存儲的是變數(一元函數中的那個要求的值如2x=9中的x)的前綴
//(方程2x=9中2是叫前綴嗎?)
//不對,那個2叫系數
else
if((u==0&&f1==0)||(u==1&&f1==1)) { b[i]='\0'; f=0; i=0; u=0; c+=atoi(b); }
else { b[i]='\0'; f=0; i=0;u=0; c=c+ atoi(b)*(-1);}
//上面兩句是else中的內容,說明遇到的不是字母,因此c不是指系數,而是值,
//(比如2x=9中的9)
} //end if(f==1)
//到此判斷p指向的那個字元的判斷過程就結束了,但一次while循環沒跑完,下面是指當遇到為負
//數的情況下,應該使u=1
//u=1就告訴我們遇到負數了,f1是指遇到=該怎麼處理
if(*p=='-') u=1;
if(*p=='=') f1=0;
p++;
} //end while
//while循環到此結束,此時已經把一個一元方程化簡了
//比如輸入 2a+3a+6=12,可以認為他已經化簡為 5a=6的形式
//而且系數5存放在變數x中,值6存放在c中,變數名字a存放在ch中
printf("%c=%d",ch,c/x); //輸出結果
getch(); //可以不要,在windows平台下從控制台無回顯地取一個字元
}
//最後告訴樓主一點,這樣寫太繁瑣了,如果樓主用棧來實現,不可實現多元多次方程求解,而
//且就很簡單的一個後綴式來處理
//不用這樣各種if else來回判
//ps: 建文件的時候一定要寫成c語言的**.c形式,不要寫成c++的**.cpp格式,否則會報錯
//因為atoi(),等函數在c++中的參數跟c中不一樣,這樣寫會報錯
D. 用c語言怎麼解一元一次方程
用c語言怎麼解一元一次方程:比如輸入,3a+21=4a+1,輸出:a=20。
#include
#include
#include
void
main()
{
\x09char
s[20],*p,b[10],ch;
\x09int
i=0,f=0,f1=1;
\x09int
x=0,c=0;
\x09int
u=0;
\x09gets(s);
\x09p=s;
while(*++p!='\0');
\x09*p='
';
*(p+1)='\0';
\x09p=s;
\x09while(*p!='\0')
\x09{\x09
\x09\x09if(*p>='0'&&*p='a'&&*p
E. 如何用c解一元一次方程
C演算法:
#include "stdio.h"
main(){
float a[3][4]={{3 , -0.1 ,-0.2, 0.85 },
{0.1,7, -0.3, -19.3},
{0.3 ,-0.2 ,10, 71.4}};
int i=0;j=0;k=0;
while(i<4)
{
a[0][i]=a[0][i]/a[0][0];
a[1][i]=a[0][i]+a[1][i];
a[2][i]=a[2][i]+a[0][i];
i++;
}
while(j<4)
{
a[1][j]=a[1][j]/a[1][1];
a[0][j]=a[1][j]*a[0][1]+a[0][j];
a[2][j]=a[1][j]*a[2][1]+a[2][j];
j++;
}
while(k<4)
{
a[2][k]=a[2][k]/a[2][2];
a[0][k]=a[2][k]*a[0][2]+a[0][k];
a[1][k]=a[2][k]*a[1][2]+a[1][k];
}
printf("%f",a[t][0]);
printf("%f",a[t][1]);
printf("%f",a[t][2]);
}
C++演算法:
#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
void abc(double *[],double[],int);
void main()
{
int n,i,j,k,t;
cout<<"輸入方程的元數:";
cin>>n;
double **a=new double *[n],max;
double *b=new double[n];
double *temp=new double[n+1];
if(a==0||b==0||temp==0)
{
cout<<"動態內存申請失敗程序終止執行\n";
exit(1);
}
for(i=0;i<n;i++)
{
a[i]=new double[n];
if(a[i]==0)
{
cout<<"動態內存申請失敗程序終止執行\n";
exit(1);
}
}
for(i=0;i<n;i++)
{
cout<<"輸入第"<<i+1<<"個方程的系數:";
for(j=0;j<n;j++)
cin>>a[i][j];
}
cout<<"輸入等號右邊的"<<n<<"個數:";
for(i=0;i<n;i++)
cin>>b[i];
for(k=n-1;k>0;k--)
{
max=fabs(a[0][k]);
for(int m=0;m<=k;m++)
{
if(fabs(a[m][k])>max)
{
max=fabs(a[m][k]);
t=m;
}
}
if(max==0)
{
cout<<"方程無解或有無數解\n";
exit(0);
}
for(m=0;m<=k;m++)
{
temp[m]=a[t][m];
a[t][m]=a[k][m];
a[k][m]=temp[m];
}
temp[n]=b[t];
b[t]=b[k];
b[k]=temp[n];
for(i=0;i<k;i++)
{
for(j=0;j<k;j++)
a[i][j]-=a[k][j]*a[i][k]/a[k][k];
b[i]-=b[k]*a[i][k]/a[k][k];
a[i][k]=0;
}
}
if(a[0][0]==0)
{
cout<<"方程無解或有無數解\n";
exit(0);
}
cout<<"方程的"<<n<<"個根為:";
abc(a,b,n-1);
cout<<endl;
for(i=0;i<n;i++)
delete[] a[i];
delete[] a; delete[] b; delete[] temp;
}
void abc(double*a[],double b[],int i)
{
if(i==0)
cout<<(b[i]/=a[i][i])<<'\t';
else
{
abc(a,b,i-1);
for(int j=0;j<i;j++)
b[i]-=b[j]*a[i][j];
cout<<(b[i]/=a[i][i])<<'\t';
}
}
供參考!
F. C語言編寫一元一次方程。。。 想用C編個求一元一次方程的解。。
#include<stdio.h>
#include<string.h>
#include<windows.h>
void main()
{
char s[20], *p, b[10], ch;
int i=0, f=0, f1=1;
int x=0, c=0;
int u=0;
gets(s);
p=s; while(*++p!='\0');
*p=' '; *(p+1)='\0';
p=s;
while(*p!='\0')
{
if(*p>='0'&&*p<='9') { b[i++]=*p; f=1;}
else if(f==1)
{
if(*p>='a'&&*p<='z')
{ch=*p;<br> if((u==0&&f1==0)||(u==1&&f1==1)){ b[i]='\0'; f=0; i=0; u=0; x=x+ atoi(b)*(-1);}
else { b[i]='\0'; f=0; i=0;u=0; x+=atoi(b); }}
else
if((u==0&&f1==0)||(u==1&&f1==1)){ b[i]='\0'; f=0; i=0; u=0; c+=atoi(b); }
else { b[i]='\0'; f=0; i=0;u=0; c=c+ atoi(b)*(-1);}
}
if(*p=='-') u=1;
if(*p=='=') f1=0;
p++;
}
printf("%c=%d",ch,c/x);
}
比如輸入:
3a+21=4a+1
輸出:
a=20
G. 用C語言編寫一段程序,求一個一元一次方程
#include<stdio.h>
#include<math.h>
#define step 0.000001
#define pi 3.14159265
int main()
{
double x= 0;
for(x= step ; x<2*pi; x+= step)
if( fabs(sin(77.8*x)/sin(79.8*x)-0.9197) <= 0.000001 )
printf("%lf\n", x);
return 0;
}
H. 問一道關於用C語言編程實現解一元一次方程的題。
思路:
方程組 定義為 方程的列表;
方程定義為 等式(= 連接的算式 你編程時,應該先找等號,把方程分成兩半);
算式定義為 項的和(符號看成-1乘以某);
項定義為常數或者積;
積定義為常數乘以字母。(分清楚項以後,就可以移項,合並同類項。)
自頂向下分析。
理清楚變數和系數以後,用矩陣解。