⑴ c語言程序一元一次方程
方法一:要不你把所有的形式全定義為ax+b=cx+d
。這樣x=(d-b)÷(a-c)。輸入方程簡單,定義四個數據就可以了,然後定義一個x,關鍵是輸入後怎麼確定abcd。你把「ax+b=cx+d」看作一個字元串,分別把這個數提取出來,賦值梁毀鎮給abcd。這個提取就考慮多了,因為上了兩位余昌以後,比如21由2和1組成,然後你還要放在一起看成二十一。方法二:第二就要用矩陣,直接輸入abcd,為了好看,你可以讓輸出ax+b=cx+d這個字元串。再輸入值橡粗。
⑵ 求解n元一次方程組的C語言程序,簡單點的,網上的太復雜了
#include<stdio.h>
intmain(void)
{
inti,j,m,n,r,k=0,t;//i,j,m,k,t作為循環計數變數;n表示有n個未知數,即n元;r表示有r個方程組成方程組。
printf("請輸入未知數個數n和方程的個數: ");
scanf("%d%d",&n,&r);//n表示有n個未知數,即n元;r表示有r個方程組成方程組。
floata[11][20];//用二維數組存儲方程組參數。11和100課改動。這里的程序限10元20個方程的方程組。
printf("請輸入方程組參數 ");
for(j=0;j<n;j++)
for(i=0;i<r+1;i++)
scanf("%f",&a[j][i]);
if(r<n)
printf("方程有無窮解 ");
if(r==n)
{
printf("方程有唯一解 ");
for(t=0;t<n-1;t++)//循環次數:當t=0時,僅將a[1][0],a[2][0],a[2][1]的值轉換為0;t=1時,才將其轉換成最簡型階梯矩陣。
for(m=0;m<n;m++)//m表示第m列
for(j=0;j<n;j++)//j表示第j行
if(j!=m)
{
floatb=a[j][m]/a[m][m];
for(i=0;i<n+1;i++)//因為一行的每個元素均要進行運算等式兩邊才會相等。
a[j][i]-=a[m][i]*b;
}
for(j=0;j<n;j++)//為了將其轉換成單位矩陣,見《線性代數》
{
a[j][n]/=a[j][j];
a[j][j]/=a[j][j];
}
}
for(j=0;j<r;j++)
printf("x[%d]=%f ",j,a[j][n]);//輸出最終結果,即未知數x,y,z...的值。
return0;
}
輸入為:2 2 -1 6 1 -2 4 3 5 7 1 28
即方程組為:
2x+2y- z=6
x-2y+4z=3
5x+7y+ z=28
其正確結果是:x=1,y=3,z=2
⑶ 解釋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中不一樣,這樣寫會報錯
⑷ 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
⑸ 用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;
}
⑹ 用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
⑺ c語言解一元一次方程
確認輸入過程中輸入的逗號為英文半形字元,不是中文逗號