c语言解一元一次方程计算题200程

欢迎访问C语言网www.dotcpp.com 比赛栏每月有奖月赛!举办比赛联系QQ:问题反馈、粉丝交流 QQ群 蓝桥杯训练群: 申请群时请备注排名里的昵称C语言研究中心 为您提供有图、有料、解渴的C语言专题! 欢迎讨论!
C语言版简易计算器,包含几个小功能,而且比较精简,适合新手了解整合框架结构
源代码如下:
#include &stdio.h&
#include &math.h&
#include &stdlib.h&
//预处理指令
int main(void)
double bNumber, Number, R
//给加减乘除定义的变量
//选项的定义变量
double a, b, c, x1, x2, R
//给一元一次方程定义的变量
int Ary_10;
//定义进制的变量
char string[32];
//二进制变量定义
system (&title: www.dotcpp.com&);
printf (&┏ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┓\n&);
printf (&┇请选择你要计算的方法:
printf (&┣ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┫\n&);
printf (&┇
加法请按_1
进制转换_5
printf (&┇
减法请按_2
求一元二次方程_6
printf (&┇
乘法请按_3
printf (&┇
除法请按_4
printf (&┗ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┛\n&);
printf (&Please write down the number:&);
scanf (&%d&,&No);
if (No == 1)
请输入被加数:&);
scanf (&%lf&,&bNumber);
请输入加数:&);
scanf (&%lf&,&Number);
Result = bNumber + N
printf (& 结果是: %lf\n\n&,Result);
else if (No == 2)
请输入被减数:&);
scanf (&%lf&,&bNumber);
请输入减数:&);
scanf (&%lf&,&Number);
Result = bNumber - N
printf (& 结果是: %lf\n\n&,Result);
else if (No == 3)
请输入被乘数:&);
scanf (&%lf&,&bNumber);
请输入乘数:&);
scanf (&%lf&,&Number);
Result = bNumber * N
printf (& 结果是: %lf\n\n&,Result);
else if (No == 4)
请输入被除数:&);
scanf (&%lf&,&bNumber);
请输入除数:&);
scanf (&%lf&,&Number);
Result = bNumber / N
printf (& 结果是: %lf\n\n&,Result);
else if (No == 5)
//进制转换的代码
printf(&请输入需要转换的十进制数:&);
scanf(&%d&, &Ary_10);
itoa (Ary_10, string ,2);
printf(&二进制: %s\n&, &string);
printf(&八进制: %o\n&, &Ary_10);
printf(&十六进制: %x\n&, &Ary_10);
else if (No == 6)
//求一元二次方程的解的代码
printf(&请输入一元一次方程的a,b,c三个数:&);
scanf(&%lf%lf%lf&,&a,&b,&c);
Rad = b*b - 4*a*c;
if (Rad & 0)
x1 = -b + sqrt(Rad) / (2*a);
x2 = -b - sqrt(Rad) / (2*a);
printf(&有两个解 x1 = %lf, x2 = %lf\n&, &x1, &x2);
else if (Rad == 0)
x1 = -b / (2*a);
printf(&只有一个解 x1 = %lf\n&, &x1);
printf(&无解\n&);
else if (No == 0)
输入的选项不对
请输入正确的数字。\n\n&);
system (&pause&);
//按任意键继续
system (&cls&);
getchar();
(www.dotcpp.com)
C语言网, 版权所有丨如未注明 , 均为原创丨本网站采用协议进行授权 , 转载请注明!解释C语言(逐句) 解一元一次方程的_百度知道
解释C语言(逐句) 解一元一次方程的
#include&stdio.h&#include&string.h&voidmain(){chars[20],*p,b[10],inti=0,f=0,f1=1;intx=0,c=0;intu=0;gets(s);p=s;while(*++p!='\0');*p='';*(p+1)='\0';p=s;while(*p!='\0'){...
#include&stdio.h&#include&string.h&void main(){
char s[20], *p, b[10],
int i=0, f=0, f1=1;
int x=0, c=0;
while(*++p!='\0');
*p=' '; *(p+1)='\0';
while(*p!='\0')
if(*p&='0'&&*p&='9') { b[i++]=*p; f=1;}
else if(f==1)
if(*p&='a'&&*p&='z')
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); }}
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=='-')
if(*p=='=')
printf(&%c=%d&,ch,c/x);
采纳数:102
获赞数:622
#include&stdio.h&#include&string.h&//标准函数的使用声名void main()//主函数{
char s[20], *p, b[10],
int i=0, f=0, f1=1;
int x=0, c=0;
//定义变量
gets(s);//接收输入的字符S,存入数组中
//赋值语句,将S存入指针P中
while(*++p!='\0');//while循环的使用
*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')
//if循环的使用
if((u==0&&f1==0)||(u==1&&f1==1))
b[i]='\0'; f=0; i=0; u=0; x=x+ atoi(b)*(-1);// atoi. C语言库函数名 功能: 把字符串转换成整型数.
else { b[i]='\0'; f=0; i=0;u=0; x+=atoi(b); }}
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=='-')
if(*p=='=')
printf(&%c=%d&,ch,c/x);//输入ch以及c/x的值
getch();}C语言新手表示刚学的指针,不对的地方请更正
获赞数:132
#include&stdio.h&#include&string.h&//前面两个是库函数,第一个用于输入输出,第二个用于调用对字符串的各种操作//下面是main函数主体,定义为void类型则最后不需要return返回值,若定义为int则需要返回void main(){
char s[20], *p, b[10],
//定义了四个变量,S[20],b[10]是字符串数组,P是字符串指针,用
//于指向一个字符串,ch是字符变量
int i=0, f=0, f1=1;
//定义int型的变量,变量作用下面会说明
int x=0, c=0;
// gets()函数是库函数,用于从键盘接受你输入的一串东西,只接受你回车键以前
//让指针p 指向 上面gets()函数接收到的那串字符,就是把那串字符的首地址给p
while(*++p!='\0');
//一个while循环,由于p只是指向那串字符的首地址,因此循环的作用是到达
//那串字符的末尾,'\0'表示一串字符串结束了,'\0'不是你输的,而是一串字
//符结束后,系统自动添上去的
*p=' '; *(p+1)='\0';
//上面while循环结束后p指针已经指向字符串的末尾了,现在把字符串的最
//后一位变为' '(空格),这时候需要自己给字符串末尾添加结束标志'\0',因
//为你把字符串单个执行系统不会自动给你添了
//上面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的部分,说明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;
u=0;x=x+ atoi(b)*(-1);
//atoi()是库函数,把char类型的数据转换为int型
//x=x+ atoi(b)*(-1);
x+=atoi(b)*(-1); }
if((u==0&&f1==0)||(u==1&&f1==1))else { b[i]='\0'; f=0;
u=0; x+=atoi(b); }
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=='-')
if(*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中不一样,这样写会报错
jiangxiang0919
jiangxiang0919
获赞数:11
看下有关书籍,很简单的
采纳数:15
获赞数:23
擅长:暂未定制
#include&stdio.h& #include&math.h& int main() { printf(&请输入a b c:&); float a,b,c,x1,x2; while(scanf(&%f%f%f&,&a,&b,&c) == 3) { if(a==0&&b==0) {printf(&Not an equation\n&);} if(b*b-4*a*c==0) printf(&方程有两个相同的实根为:\n%f\n&,-b/(a*2)); if(b*b-4*a*c&0) { x1 = (-b+sqrt(b*b-4*a*c))/(2*a); x2 = (-b-sqrt(b*b-4*a*c))/(2*a); printf(&方程有两个不同的实根,分别为:\n%.2f,%.2f\n&,x1&x2?x1,x2:x2,x1); } if(b*b-4*a*c&0) printf(&方程有两个不同的虚根,分别为:\n%.2f+%.2fi %.2f-%.2fi\n&,-b/(a*2),sqrt(-b*b+4*a*c)/(2*a),-b/(a*2),sqrt(-b*b+4*a*c)/(2*a)); } }
xiaohu21500U4!
其他1条回答
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C语言编写一元一次方程。。。 想用C编个求一元一次方程的解。。_百度知道
C语言编写一元一次方程。。。 想用C编个求一元一次方程的解。。
比如输入:3a+21=4a+1输出:a=20;现在不知道如何定义输入这个一元一次方程求大神帮忙求解。。。财富值不够麻烦大神给个方向就可以了不用给出代码的。。。!!!谢谢了!!!...
比如输入:3a+21=4a+1输出:a=20;现在不知道如何定义输入这个一元一次方程求大神帮忙求解。。。财富值不够麻烦大神给个方向就可以了不用给出代码的。。。!!!谢谢了!!!
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
#include&stdio.h&#include&string.h&#include&windows.h&void main(){ char s[20], *p, b[10], 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
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。问题 1486: [蓝桥杯][算法提高VIP]一元一次方程
时间限制: 1Sec 内存限制: 128MB 提交: 194 解决: 133
输入一元一次方法的ax+b=0的解。且数据均在double类型以内,且一定有解(保留2位小数)
C语言在线学习平台微信号dotcpp
 格式错误
 答案错误
 时间超限
 输出超限
 运行错误
 编译错误用C语言编写一段程序,求一个一元一次方程_百度知道
用C语言编写一段程序,求一个一元一次方程
[sin(77.8x)]/[sin(79.8x)]=0.9197。要求()内的范围为(0~2*pi),只要非零解。我尝试过用牛顿迭代法得出的解都是0。咨询了老师,说是得用遗传算法,可是不会改,苦恼哇...
[sin(77.8x)]/[sin(79.8x)]=0.9197。要求()内的范围为(0~2*pi),只要非零解。我尝试过用牛顿迭代法得出的解都是0。咨询了老师,说是得用遗传算法,可是不会改,苦恼哇
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
来自知道合伙人认证行家
采纳数:1140
获赞数:4183
毕业于武汉工程大学邮电与信息工程学院通信专业,软件行业,4年工作经验。
#include&stdio.h&#include&math.h&#define
0.000001#define
3.int main(){ double
x= 0; for(x= x&2* x+= step)
fabs(sin(77.8*x)/sin(79.8*x)-0.9197) &= 0.000001 )
printf(&%lf\n&, x); return 0;}
得出好多解,但是算出来的结果不准确哇,谢谢了。这个我当时也编过,不能得出最优解。
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 一元一次方程快速解法 的文章

 

随机推荐