{C++程序设计初步(6)}菜大学生C++笔记9

第3章 C++程序设计初步(6)


例题:
7、再次求一元二次方程的解。(如何写出完善的程序)
#include < iostream>
#include < cmath>
using namespace std;
int main()
{
double a,b,c,x1,x2;
cout<<“输入一元二次方程的三个系数a,b,c” <<endl;
cin>>a>>b>>c;
double delta;
delta=b b-4a c;
if(delta>0)
{
x1=(-b+sqrt(delta))/(2
a);
x2=(-b-sqrt(delta))/(2 a);
cout<<“方程在实数范围内有两个不相等的解:”<<endl;
cout<<x1<<endl<<x2<<endl;
}
else if(delta==0)
{
x1=(-b+sqrt(delta))/(2
a);
cout<<“方程在实数范围内有两个相等的解:”<<endl;
cout<<x1<<endl;
}
else
{
cout<<“方程在实数范围内无解!!”<<endl;
}
return 0;
}

#include < iostream>
#include < cmath>
using namespace std;
int main()
{
double a,b,c,x1,x2;
cout<<“输入一元二次方程的三个系数a,b,c” <<endl;
cin>>a>>b>>c;
double delta;
delta=bb-4ac;
if(a= =0 && b! =0)
{
//一元一次方程
x1=-c/b;
cout<<“方程为一元一次方程,解为:” <<x1<<endl;
}
else if(a= =0 && b= =0 && c= =0)
{
//方程解为任意数
cout<<“方程有无穷多解,任意数都是方程的解!!”;
}
else if(a= =0 && b= =0)//隐含c不为0,不用写 &&c!=0 为什么
{
//矛盾方程 无解
cout<<“这是一个盾方程 无解!!” <<endl;
}
else if(delta>0)
{
x1=(-b+sqrt(delta))/(2
a);
x2=(-b-sqrt(delta))/(2a);
cout<<“方程在实数范围内有两个不相等的解:”<<endl;
cout<<x1<<endl<<x2<<endl;
}
else if(delta==0)
{
x1=(-b+sqrt(delta))/(2
a);
cout<<“方程在实数范围内有两个相等的解:”<<endl;
cout<<x1<<endl;
}
else
{
cout<<“方程在实数范围内无解!!”<<endl;
cout<<“方程在复数范围内解为两个共轭复数!!”<<endl;
x1=-b/(2a);
x2=sqrt(-delta)/(2
a);
cout<<x1<<"+("<<x2<<")i"<<endl;
cout<<x1<<"-("<<x2<<")i"<<endl;
}
return 0;
}

2 再谈break与continue
break 功能结束循环
continue 功能结束本次循环,进入下一次循环。
Continue用在不同的循环中跳转的位置?
在for中跳到第3个表达式
在while do…while中跳到While后()中的表达式
输出1到20之间不能被3整除的数。
#include < iostream>
using namespace std;
int main()
{
int n;
for(n=1;n<=20;n++)
{
if(n%3= =0)
{
continue;
}
cout<<n<<endl;
}
return 0;
}
#include < iostream>
using namespace std;
int main()
{
int n;
n=1;
while(n<=20)
{
if(n%3==0)
{
n++;
continue;
}
cout<<n<<endl;
n++;
}
return 0;
}

Break与continue如果用在单层循环中。
如果用有循环嵌套中要注意属于哪一层。
Continue跳到本层循环中的条件判断或表达式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
9、百钱百鸡(穷举法, 求出共有多少个每位都不同的三位数)
公鸡 每只5元 母鸡每只3元 小鸡3只1元。
100元,100只鸡。有多少种可能。
公鸡 母鸡 小鸡
0 0 100
0 1 99
0 100 0
1 0 99
1 1 98
1 99 0

#include < iostream>
using namespace std;
int main()
{
int cock,hen,chick;
cout<<“cock hen chick”<<endl;
for(cock=0;cock<=20;cock++)
{
for(hen=0;hen<=33;hen++)
{
chick=100-cock-hen;
if(chick%3!=0)
{
continue;
}
if(cock5+hen3+chick/3==100)
{
cout<<cock<<" “<<hen<<” "<<chick<<endl;
}
}
}
return 0;
}

#include
using namespace std;
int main()
{
int ge,shi,bai;
for(bai=1;bai<=9;bai++)
{
for(shi=0;shi<=9;shi++)
{
if(shi= =bai)
{
continue;
}
for(ge=0;ge<=9;ge++)
{
if(ge= =bai ||ge==shi)
{
continue;
}
cout<<bai100+shi10+ge<<endl;
}
}
}
return 0;
}
10、分数序列(P81, 21题)
2/1 3/2 5/3 8/5 13/8
#include < iostream>
using namespace std;
int main()
{
double f1,f2,f3;
double s=0;
int i;
f1=1;
f2=1;
for(i=1; i<=20; i++)
{
f3=f1+f2;
s=s+f3/f2;
f1=f2;
f2=f3;
}
cout<<s<<endl;
return 0;
}

11 、水仙花数(求出所有的水仙花数,3位数,每位数字立方和等于这个数)
#include < iostream>
using namespace std;
int main()
{
int n,ge,shi,bai;
for(n=100;n<1000;n++)
{
ge=n%10;
bai=n/100;
shi=n/10%10;//shi=n%100/10;//求十位数的两种方法
if(gegege+shishishi+baibaibai==n)
{
cout<<n<<endl;
}
}
return 0;
}
12 输入行数输出一个用“*”组成的菱形,例如输入5则输出
外层循环与内层循环之间不能使同一个循环变量
两个并列的循环可以使用同一个循环变量
行数 i *数 j 空格数 行数 i *数 j 空格数
1 1 4 4 7 1
2 3 3 3 5 2
3 5 2 2 3 3
4 7 1 1 1 4
5 9 0

#include < iostream>
using namespace std;
int main()
{
int i,j;
int n;
cout<<“请输入行数:” ;
cin>>n;
//上三角
for(i=1;i<=n;i++)
{
//在输入之前输出空格
for(j=1;j<=n-i;j++)
{
cout<<" ";
}
//内层循环输出

for(j=1;j<=2i-1;j++)
{
cout<<"
";
}
//一行结束输出换行
cout<<endl;
}
//输出下面的三角形
for(i=n-1;i>=1;i–)
{
//在输入之前输出空格
for(j=1;j<=n-i;j++)
{
cout<<" ";
}
//内层循环输出

for(j=1;j<=2i-1;j++)
{
cout<<"
";
}
//一行结束输出换行
cout<<endl;
}
return 0;
}

13 、 用两种方法来求(双重循环,一重循环。方法不同效率大异)
1+(1+2)+(1+2+3)+…+(1+2+3+…+10)
#include < iostream>
using namespace std;
int main()
{
int s=0,n,sum=0;
int i;
for(n=1; n<=10; n++)
{
s=0;
for(i=1; i<=n; i++)
{
s=s+i;
}
sum=sum+s;
}
cout<<sum<<endl;
system(“pause”);
return 0;
}

#include < iostream>
using namespace std;
int main()
{
int s=0,n,sum=0;
for(n=1; n<=10; n++)
{
s=s+n;
sum=sum+s;
}
cout<<sum<<endl;
system(“pause”);
return 0;
}
作业: 在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C0ntr01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值