#include?stdio.h?
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),東豐企業(yè)網(wǎng)站建設(shè),東豐品牌網(wǎng)站建設(shè),網(wǎng)站定制,東豐網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,東豐網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
int?main(void)
{
double?x?=?0;
double?y?=?0;
const?double?t?=?0.005;
for(int?i?=?0;?i?=?230;?++i)
{
y?=?9?+?t?*?i;
x?=?(y?-?10.086)?/?((-2?/?10000000)?-?0.00053);
printf("y%d?=?%lf,?x?=?%lf\n",i,y,x);?
}
return?0;
}
//問題有點(diǎn)多,不方便指出,更改如下,對(duì)應(yīng)著看吧,調(diào)試過的,沒問題;
#includestdio.h
#includemath.h //使用開方函數(shù)要引入這個(gè)頭文件
void main()
{
float a,b,c,d,e,x1,x2,x;
//輸入最好一個(gè)一個(gè)輸入,一下子輸入容易出毛病
printf("請(qǐng)輸入a:\n");
scanf("%f",a);
printf("請(qǐng)輸入b:\n");
scanf("%f",b);
printf("請(qǐng)輸入c:\n");
scanf("%f",c);
d=b*b-4*a*c;
if (d0)
{
e=(float)sqrt(d);//使用開放函數(shù)得到的是double類型,比f(wàn)loat級(jí)別高,要強(qiáng)轉(zhuǎn)為float
x1=(-b+e)/(2*a);
x2=(-b-e)/(2*a);
printf("x1=%.2f,x2=%.2f",x1,x2);//輸出保留兩位小數(shù)
}
else if (d==0)
{
x=-b/(2*a);
printf("x=%.2f",x);
}
else
printf("無解");
printf("\n");
}
假設(shè)的情況:
輸入沒有錯(cuò)誤;
x 總是在前面,y 總是在后面;
不存在某個(gè)變量系數(shù)為 0 的情況(即總是二元方程);
不考慮小數(shù),其實(shí)考慮小數(shù)也簡(jiǎn)單,你可以自己思考如何實(shí)現(xiàn)。
首先,使用 scanf() 將回車之前的整個(gè)字符串掃描進(jìn)來,放進(jìn) str 變量中;
之后,分別以 x y = 為界,找到它們分隔的三個(gè)字符串,即從 str 的第一位開始循環(huán),當(dāng)遇到 'x' 時(shí),停止并將之前的所有字符存到 x 的系數(shù)字符串 xStr 中,再?gòu)?x 之后開始尋找,遇到 'y' 時(shí)將找到的 'x' 與 'y' 之間的字符存到 y 的系數(shù)字符串 yStr 中,再向后從 '=' 開始直到結(jié)束,存為結(jié)果字符串 sumStr。
這樣,我們得到的三個(gè)字符串都具有相同的格式,一定可以通過某種方式將其轉(zhuǎn)換為一個(gè)數(shù)字,使用同一個(gè)函數(shù)就可以做到。
對(duì)于某個(gè)字符串來說,它可能是以負(fù)號(hào) '-' 開頭,也可能以正號(hào)開頭 '+',也可能沒有符號(hào),也可能為空,分別考慮:以負(fù)號(hào)開頭的,將其作為負(fù)數(shù),以正號(hào)開頭或沒有符號(hào)的,將其作為正數(shù);為空的字符串將其視為 1。
截取符號(hào)之后,如果沒有剩余字符了,將其視為 1,再與符號(hào)相乘,就是最終結(jié)果。
如果還有剩余,那么之后的字符都是純數(shù)字了(不考慮小數(shù)),從字符串的最后一位往前開始循環(huán),下標(biāo)記為 i(從0開始一直到最前面的數(shù)字位數(shù)),每一位字符記為 ch,則 n=(int)(ch-'0') 就是當(dāng)前字符所代表的數(shù)字,用 n*pow(10, i) 就得到了當(dāng)前數(shù)字的實(shí)際值,把所有的乘積都加起來,就得到了總的系數(shù)的絕對(duì)值,再乘以符號(hào),就得到了系數(shù)值。
實(shí)現(xiàn)了這個(gè)部分之后,假設(shè)的情況也可以一一實(shí)現(xiàn)了,無非就是標(biāo)記歸屬的問題。我沒有貼代碼是因?yàn)槲铱吹侥銌柕膯栴}非常認(rèn)真,我希望你可以通過我的描述自己去實(shí)現(xiàn)它。這里用到了一些字符串相關(guān)的函數(shù),例如 strlen(str) 可以獲得 str 字符串的長(zhǎng)度,strncpy(dest, src, 3) 可以將 src 字符串的前三位拷貝到 dest 字符串中,strncpy(dest, src+3, 3) 可以將 src 字符串的 4~7 位拷貝到 dest 字符串中。
首先要找到二元一次方程組的通解,例如:ax+by=m ? ?cx+dy=n不難算出 ? ? ?x=(md-bn)/(ad-bc) ? ? ? y=(mc-an)/(bc-ad) ?這相當(dāng)于知道了算法,接下來就可以編程序了:
int?main(){
int?a,b,c,d,m,n;
double?x=0,y=0;
scanf("%d,%d,%d,%d,%d,%d",a,b,c,d,m,n);
if(a*d==b*c||b*c==a*d)puts("無解");
else{
x=(m*d-b*n)/(a*d-b*c);
y=(m*c-a*n)/(b*c-a*d);
printf("x=%f,y=%f",x,y);
}
return?0;
}
輸入系數(shù),就可以計(jì)算了
C語(yǔ)言是一門通用計(jì)算機(jī)編程語(yǔ)言,應(yīng)用廣泛。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
盡管C語(yǔ)言提供了許多低級(jí)處理的功能,但仍然保持著良好跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫出的C語(yǔ)言程序可在許多電腦平臺(tái)上進(jìn)行編譯,甚至包含一些嵌入式處理器以及超級(jí)電腦等作業(yè)平臺(tái)。
C語(yǔ)言之所以命名為C,是因?yàn)?C語(yǔ)言源自Ken Thompson發(fā)明的B語(yǔ)言,而 B語(yǔ)言則源自BCPL語(yǔ)言。