2018-2019 C++程序设计报告

《c++程序设计》课程设计报告

班级:数学四班 学号:2018212767__

报告人姓名:张子琪__________

实验地点:东校教学楼N409____________________

完成起止日期:2019.1.2-2019.1.5________

课设二

Problem Description E
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
解题思路:把一个偶数分别拆成两个数并判断两个数是否为素数。

源代码
#include<stdio.h>
main()
{
int n,i,j,a,b,c,d;
while(scanf("%d",&n)!=EOF)
{
d=0;
if(n0)
return 0;
for(i=2;n/2>i;i++)
{
c=1;
for(j=2;i/2>=j;j++)
{
if(i%j
0&&i!=j)
{
c=0;
break;
}
}
if(c1)
{
a=n-i;
b=1;
for(j=2;a/2>=j;j++)
{
if(a%j
0&&a!=j)
{
b=0;
break;
}
}
if(b==1)
d+=1;
}
}
printf("%d\n",d);
}
}

Problem Description H
制作一个被掏空的字符三角形。
Input
每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。
显然其底边长为2n-1。
如果遇到@字符,结束这个程序。
Output
每个样板三角形之间应空上一行,三角形的中间为空。
行末没有多余的空格。
解题思路
由题意,输出的三角形所占据的空间为n行n-1列,前n-1行均需要先输出空格,且第一行空格个数为n-1,逐行递减,然后,从第二行开始,每行输出一个字符,设为m,再次输出空格,最后,在每一行行末输出一个m,紧接着输出换行,以上为一个大循环,可完成前n-1行的输出。对第n行,只需输出2n-1个字符m,即完成了空心三角形的输出。
细节处理
题目要求输入@时结束程序,则应添加:if(m==’@’) return 0;
关于最后的换行,多次提交错误后发现,题目要求
除最后一个三角形后有一个换行外,其余三角形后的换行均为两个。
所以将两个换行分开输出:
在程序最初定义一个i,并给这个i赋值为在程序中不可能出现的值,可设i=10000,并在输出三角形前加入:if(i!=10000) cout<<’\n’;
在之后的运行中,通过循环中的赋值使i不再等于10000,即从第二个三角形开始,每个三角形前后都有一个换行,而第一个三角形只有三角形后有换行。
源代码
#include
using namespace std;
int main()
{
int n,i=10000;
char m;
while(cin>>m)
{
if(m==’@’) return 0;
if(i!=10000)cout<<’\n’;
cin>>n;
for(i=1;i<n;i++)
{
for(int j=n-i;j>=1;j–)
cout<<" “;
if(i!=1) cout<<m;
for(int j=n-i+2;j<=n+i-2;j++)
cout<<” “;
cout<<m<<”\n";
}
for(i=1;i<=2*n-1;i++)
cout<<m;
cout<<"\n";
}
return 0;
}

课设一

Problem Description B
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+3^3。
现在要求输出所有在m和n范围内的水仙花数。
Input
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
Output
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。
解题思路:①输入m,n表示范围 ②表示出符合水仙花数条件的数学表达式(个位十位百位) ③if语句判断是否为水仙花数。
解题细节:先输出第一个数,之后用循环语句输出空格和之后的符合条件的水仙花数。
源代码:
#include
using namespace std;
int main()
{
int m,n;
while(cin>>m>>n)
{
int j=0;
for(int i=m;i<=n;i++)
{
int a=i/100;
int b=(i-100a)/10;
int c=(i%100)%10;
if(i==a
aa+bbb+cc*c)
{
j++;
if(j1) cout<<i;
else cout<<" "<<i;
}
}
if(j
0) cout<<“no”;
cout<<"\n";
}
return 0;
}

Problem Description D
对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值