Problem 1  水仙花数

简要题意:

输出所有在m和n范围内的水仙花数。

解题思路:

现将定义域内(100<=m<=n<=999)所有数存入数组中,如果为水仙花数,则该位置即为该水仙花数,否则赋值为0。输入给定范围区间,判断区间内数组的每个数值是否为0,若全部为0则输出no,否则输出对应不为0的水仙花数。

细节处理:

  1. 在主函数前定义数组,数组直接默认初始化,不需再在后面单独赋值0。
  2. 输出时,注意空格的输出(最后一个数输出后没有空格)。

源代码:

#include<iostream>
using namespace std;
int f[1010], g[1010];
int main()
{int m, n, a, b, c;for(int i=100;i<=1010;i++){a=i/100;b=(i-a*100)/10;c=(i-a*100-b*10);if(i==a*a*a+b*b*b+c*c*c) f[i]=i;}while(cin>>m>>n){int d=0;for(int i=m;i<=n;i++){if(f[i]!=0) g[d++]=f[i];}if(d==0) cout<<"no"<<endl;  else{for(int i=0;i<d-1;i++)cout<<g[i]<<" ";cout<<g[d-1]<<endl;}}return 0;
}

Problem 2  素数公式

简要题意:

对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。

解题思路:

首先判断输入的数据是否为终止数据(x=0,y=0),将x赋值给n,开始循环判断,循环次数为y-x+1次,通过公式将n转化为m(m= n^2+n+41),判断m是否为素数,只要有一个m不是素数,就可以输出“Sorry”,若全为素数则输出“OK”。

细节处理:

  1. 判断素数只用从2逐个除到数m的开方即可。
  2. 定义一个用与判断的整型数j,首先给j赋初值0,当出现的一个m不是素数,则给j赋值为1,最终判断j的值,即可判断给定区间内是否满足公式的数m是否有不是素数的数出现。

源代码:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{int x, y, m, n;while(cin>>x>>y){if(x==0&&y==0) break;int i=2, j=0;for(n=x;n<=y;n++){m=n*n+n+41;while(i<=sqrt(m)) //判断素数{if(m%i==0) {j=1;break;}i++;}}if(j==1) cout<<"Sorry"<<endl;if(j==0) cout<<"OK"<<endl;}return 0;
}

Problem 3  分数和

简要题意:

多项式的描述如下:1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...  计算前n项的和。

解题思路:

将1,-2,3,-4,……存入数组,输入测试实例个数,然后输入测试前几项数n,用1分别除以数组中的数得到新数组,将新数组的前n项求和,结果保留2位小数输出。

细节处理:

  1. 定义数组时新数组应定义为实型(double)数组。
  2. 在将原数组赋值给新数组时应注意要强制转换。
  3. 输出结果保留两位小数。

源代码:

#include<iostream>
#define n 1000+10
int a[n],c[n];
double b[n];
using namespace std;
int main()
{int m, t=-1;a[1]=1;for(int i=1;i<=n;i++){a[i]=i;t*=-1;c[i]=t*a[i];}while(cin>>m){for(int i=1;i<=m;i++){int x;cin>>x;        double sum=0.0;for(int i=1;i<=x;i++){b[i]=(double)1/c[i]; //强制转换sum+=b[i];}printf("%.2f\n",sum);}}return 0;
}

Problem 4  集合减法

简要题意:

求两集合的差。如果结果为空集合,则输出“NULL”,否则从小到大输出结果,每个元素后面跟一个空格。

解题思路:

定义数组,将A、B集合内元素分别输入,并排序,循环判断A与B中是否存在相等元素,若存在,则将该元素对应的A的数组中该位置的值赋为0。将A的数组中的非0元素存入新数组,然后循环输出新数组的值,若A的数组中元素全为0,即对应集合为空集,输出“NULL”。

细节处理:

  1. 注意输入多组数据。
  2. 当c没有被赋值时跳出循环。

源代码:

#include<iostream>
#include<algorithm>
#define N 110
int a[N], b[N], c[N];
using namespace std;
int main()
{int n, m;while(cin>>n>>m){if(n==0&&m==0) break;for(int i=1;i<=N;i++) c[i]=0;for(int i=1;i<=n;i++) cin>>a[i];sort(a+1,a+n+1);for(int i=1;i<=m;i++) cin>>b[i];sort(b+1,b+m+1);for(int i=1,k=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i]==b[j]) a[i]=0;}if(a[i]!=0){c[k]=a[i];k++;}}int z=0;for(int i=1;i<=n;i++) {if(c[i]!=0) z=1;}if(z==0) cout<<"NULL"<<endl;else{for(int i=1;i<=n;i++){if(c[i]==0) break;cout<<c[i]<<" ";}cout<<endl;}}return 0;
}

Problem 5  A^B

简要题意:

求A^B的最后三位数表示的整数。

解题思路:

输入A、B,将A循环相乘B次,当得数大于三位数时取后三位继续与A相乘。

细节处理:

  1. 不能直接用A本身来循环相乘,若B极大则最终得数将会超出64位整型数。
  2. 直接对A除以1000然后取余,则无需判断何时乘积大于三位数,可直接循环相乘。

源代码:

#include<iostream>
using namespace std;
int main()
{long long int A=0, B=0;while(cin>>A>>B){if(A==0&&B==0) break;else{int C=1;A%=1000; //对A取后三位余数for(int i=1;i<=B;i++)C=C*A%1000;cout<<C<<endl;}}return 0;
}

Problem 6  爬楼梯&小蜜蜂

简要题意:

R:有一楼梯共M级,从第1级开始,若每次只能上1级或2级,要走上第M级,共有多少种走法。

S:蜜蜂只能爬向右侧相邻蜂房。计算蜜蜂从蜂房a爬到b的可能路线数。蜂房结构如下。

解题思路:

经过找规律,两道题的解题思路完全相同,都用到斐波那契数列(从第三项开始,每一项都等于前两项之和)。首先计算出第一个和第二个数值,然后进行斐波那契数列的循环,将每个数赋值到数组中,然后输入 R:输入M,对应输出地址为M-1的数组值;S:输入a、b,对应输出地址为b-a的数组值。

细节处理:

  1. 定义的数组应为长整型数组(long long int)。
  2. R中起始台阶位置为1,故上到第2阶时实际只上了1阶。

源代码:

爬楼梯:

#include<iostream>
#define n 45
long long int a[n];
using namespace std;
int main()
{int N, M;a[1]=1,a[2]=2;for(int i=3;i<=n;i++){a[i]=a[i-1]+a[i-2];}while(cin>>N){for(int i=1;i<=N;i++){cin>>M;cout<<a[M-1]<<endl;}}return 0;
}

小蜜蜂:

#include<iostream>
#define N 55
using namespace std;
long long int c[N];
int main()
{int n,a,b,d;c[1]=1,c[2]=2;for(int i=3;i<=N;i++){c[i]=c[i-1]+c[i-2];}while(cin>>n){for(int i=1;i<=n;i++){cin>>a>>b;d=b-a;cout<<c[d]<<endl;}}return 0;
}

Problem 7  偶数分组求和

简要题意:

长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,按顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。

解题思路:

先将n个数分成i组,每组有m个数,将每个组中的数相加求平均值,然后若分成i组后,有剩余数,将剩余的数相加求平均值。

细节处理:

  1. 注意规定输出格式,每个数之间用空格隔开。
  2. 数列需在while循环内初始化,之后是逐一递加的。

源代码:

#include<iostream>
using namespace std;
int main()
{int n,m;while(cin>>n>>m){int k=0;for(int i=1;i<=n/m;i++){int sum=0;if(i>1) cout<<" ";for(int j=1;j<=m;j++){k+=2;sum+=k;}cout<<sum/m;}if(n%m){int sum=0;for(int j=1;j<=n-n/m*m;j++){k+=2;sum+=k;}cout<<" "<<sum/(n%m);}cout<<endl;}return 0;
}

Problem 8  亲和数

简要题意:

两个数的各自真约数之和等于另一个数,则这两个数为亲和数,输入两个数判断这两个数是否为亲和数。

解题思路:

分别求出两个数的真约数并求和,判断和是否等于另一个数。

细节处理:

  1. 由于真约数不包含数本身,故做整除循环时可从2开始除起,最后在和上加1即可。
  2. 每循环一次当能整除时,得到的是两个数,可将两个数都存入数组,这样只需循环至多数的开方次即可(减少循环次数,节约时间)。

源代码:

#include<iostream>
#include<cmath>
#define N 600000
int a[N], b[N];
using namespace std;
int main()
{int M, A, B;while(cin>>M){for(int i=1;i<=M;i++){int sum1=0;cin>>A>>B;for(int i=2,j=1;i<sqrt(A);i++,j+=2){if(A%i==0){a[j]=i;a[j+1]=A/i;sum1+=a[j]+a[j+1];}}int sum2=0;for(int i=2,j=1;i<sqrt(B);i++,j+=2){if(B%i==0){b[j]=i;b[j+1]=B/i;sum2+=b[j]+b[j+1];}}if((sum1+1)==B&&A==(sum2+1)) cout<<"YES"<<endl;else cout<<"NO"<<endl;}}return 0;
}

Problem 9  A1

简要题意:

有如下方程:Ai = (Ai-1 + Ai+1)/2 - Ci (i = 1, 2, 3, .... n).
若给出A0, An+1, 和 C1, C2, .....Cn.  求A1

解题思路:

通过n=1,n=2,n=3时求A1

n=1时 2A1=A0+A2 2C1

n=2时 3A1=2A0+A2 -4C1-2C2

n=3时 4A1=3A0+A2 -6C1-4C2-2C3

……

n时   (n+1)A1=nA0+An+1 -2[nC1+(n-1)C2+(n-2)C3 ……+Cn]

细节处理:

  1. 定义数组应为实型数组。
  2. 输出结果保留两位小数。

源代码:

#include<iostream>
#define N 3000+10
double c[N], d[N];
using namespace std;
int main()
{int n;double af, al, A=0;while(cin>>n){double a=0.0;cin>>af>>al;a=n*af+al;for(int i=1,j=n;i<=n;i++,j--){cin>>c[i];d[i]=2*c[i];a-=j*d[i];}A=a/(n+1);printf("%.2lf\n",A);}return 0;
}

Problem 10  车牌号

简要题意:

对于每次给出的一个牌照区间号,推断出实际上给多少辆新车上牌照了(不能出现4或连续的62)。

解题思路:

将1~1000000区间内的所有含有4或连续的62的数的个数记录下来(累加),输入定义区间n,m,将总车牌号个数减去区间内存在含有4或连续的62的数的个数后输出。

细节处理:

  1. 与处理时含有4或连续的62的数的个数是累加的。
  2. 区间内车牌号总数是m-n+1。

源代码:

#include<iostream>
#define M 1000000+10
using namespace std;
int a[M];
int main()
{int n, m, c=0;for(int i=1;i<=1000000;i++){int z=i, q;while(z){q=z%10;z=z/10;if(q==4){c++;break;}else if((q==2)&&(z%10==6)){c++;break;}}a[i]=c;}while(cin>>n>>m){if(n==0&&m==0) break;else cout<<m-n+1-(a[m]-a[n-1])<<endl;}return 0;
}

Problem 11  求末二位

简要题意:

一个整数,只知道前几位,不知道末二位,被另一个整数除尽,求该数的末二位。

解题思路:

将输入的位置末二位数乘100后从0开始依次加1,分别除以输入的除数,若能除尽,则将所加上的数存入数组,最后输出数组中的数。

细节处理:

  1. 从0开始加,不能忘记0。
  2. 输出时如果是个位数应在前面加一个0。

源代码:

#include<iostream>
#define n 100
int s[n];
using namespace std;
int main()
{int a,b;while(cin>>a>>b){if(a==0&&b==0) break;for(int i=0;i<n;i++) s[i]=0;int c=a*100;for(int i=0,j=0;i<n;i++){int d=c+i;if(d%b==0){j++;s[j]=i;}}for(int i=1;i<n;i++){if(i>1&&s[i]==0) break; //由于循环n次,当s没有被赋值时跳出循环if(s[i]<10) cout<<"0"<<s[i];if(i>1) cout<<" ";if(s[i]>=10) cout<<s[i];}cout<<endl;}return 0;
}

Problem 12  空心三角形

简要题意:

输出字符型空心三角形。

解题思路:

定义字符,分类讨论当n=1时和n>1时,n>1时,每行空格加字符共2n-1个,且字符位置从第一行居中开始,每向下一行,就分别往左和往右移动一次,形如左上图。

细节处理:

  1. 当只输出1行时相当于输出所定义字符。
  2. 每两个空心三角形之间有一空行。

源代码:

#include<iostream>
#include<cstring>
using namespace std;
int main()
{char c;int n;int flag=0;while(cin>>c){if(c=='@') break;cin>>n;if(flag) cout<<endl;  //在一个空心三角形前不空行flag=1;if(n==1) cout<<c<<endl;else{cout<<string(n-1,' ')<<c<<endl;for(int i=1;i<n-1;i++){cout<<string(n-i-1,' ')<<c; //输出左侧字符前的空格和第一个字符cout<<string(2*i-1,' ')<<c<<endl; //输出两字符间的空格和第二个字符}for(int i=0;i<2*n-1;i++) cout<<c; //单独输出最后一行cout<<endl;}getchar();}return 0;
}

Problem 13  判断整数存在

简要题意:

判断是否存在有二个整数,加起来等于某个整数,乘起来等于另一个整数。

解题思路:

从1开始循环,判断输入的乘积m是否能被整除,若能被整除,将该数与其余数相加,判断是否等于输入的和数n,若满足则输出”Yes”,不满足则继续循环,循环结束后仍无满足的则输出”NO”。

细节处理:

  1. 乘积m为0时一定正确。
  2. 注意n、m可以为负数,故考虑到两种情况。
  3. 除数i只需循环绝对值的开方次。
  4. 设一个标志变量,便与输出。

源代码:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{int n,m,a;while(cin>>n>>m){int flag=0;if(n==0&&m==0) break;if(m<0) a=-m; //若乘积为负,现将其变为正数else a=m;for(int i=1;i<=sqrt(a);i++) //只需循环乘积绝对值的开方次{if(m%i==0){int y=m/i, x=i;if((x+y)==n||(-x-y)==n){flag=1;cout<<"Yes"<<endl;break;}}}if(flag==0&&m==0) cout<<"Yes"<<endl; //m为0时一定正确if(flag==0&&m!=0) cout<<"No"<<endl;}return 0;
}

Problem 14  回文串

简要题意:

判断一串字符是否为“回文串”字符。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”。

解题思路:

定义字符数组,输入一串字符,判断字符第i和第n-i项是否相同。

细节处理:

  1. strlen()函数定义在<cstring>中

源代码:

#include<iostream>
#include<cstring>
using namespace std;
const int size=15;
char a[size];
int main()
{int n;while(cin>>n){for(int m=0;m<n;m++){int k=0;cin>>a;for(int i=0,j=strlen(a);i<strlen(a)/2;i++,j--){if(a[i]!=a[j-1]) k=1;}if(k==0) cout<<"yes"<<endl;else cout<<"no"<<endl;}}return 0;
}

Problem 15  进制转换

简要题意:

输入一个十进制数N,将它转换成R进制数输出。

解题思路:

每次用十进制数对R求模,结果用数组储存,然后每次除以R,直至等于0。

细节处理:

  1. 超过十进制后,会出现用字符表现数的情况,比较容易出错。
  2. 负数时输出负号。

源代码:

#include<iostream>
using namespace std;
int main()
{long long int a,b,j;char n;while(cin>>a>>b){long long int c[101],m=0;if(a<0){a=-a;cout<<"-";}if(a==0) cout<<a<<endl;while(a>0){c[m++]=a%b; //进制转换并存入数组a=a/b;}for(j=m-1;j>=0;j--){      if(c[j]>=10){n=c[j]+55; //通过ASCII码数值有序,进行转换cout<<n;}else cout<<c[j];}cout<<endl;}return 0;
}

总结
        学习C++也有一个学期了,这半年来让我从一个对计算机程序毫无概念的懵懂稚儿,对此有了最初步的了解。老师总强调“会写程序”,确实没错,懂概念懂知识,把课本上的知识点倒背如流也不一定会应用,会写程序。学写程序就如小儿学步一般,不摔上几次然后自己爬起来,是绝不可能会的。学长说:“大家都是从‘Hello World!’开始的。”简单的一条输出,记得当时自己可是做了三四遍(就因为World后面应该加!而不是.)这让我充分体会到了计算机编程语言的严谨性。
        Hello world 打开了计算机编程的大门,在此之中,我对许多从前见过或者没见过的文字、符号都有了新的认识。各种变量名、头文件、函数名……在对最基本的内容有所了解后,顺序、条件、循环,让程序变得越来越丰富,形式也越来越多样。数组的出现,连同循环一起使用,解决了很多之前不能解决的问题。
        一个学期,32个学时,对于如此丰富多彩的C++,我们只能学习最基本的,了解最笼统的,很多深奥的,更加有用的、奇妙的东西都未能接触,让人深感遗憾。C++越是学习越感其博大精深,它总能在自己绞尽脑汁,感觉无论如何也无法解决某一问题时,总能送上一个简单的方法教人豁然开朗,可谓是柳暗花明又一村。
        半年的时间太短,又怎能在一腔热血之时因结课而灭了激情?函数、指针、容器、栈……#include<set>、#include<map>、#include<cstdlib>……还有很多等着我去探索、学习。而大学不就是一个最佳的学习环境吗,无论是图书馆内的馆藏还是学校里的老师,都是毕生不可多得的资源。把握好,加油学!
        最后,送自己一碗鸡汤,人生的狂热是因为梦想的萌芽而日渐蓬勃人生的激情,是因为梦想的延续而茁壮成长。它让我们熔铸着骆驼越漠的坚韧,梦想之灯照亮我们依旧迷茫的方向,没有梦想的人生就如同没有星光的夜空让人不再仰望,没有梦想的人生就如同没有曙光的黎明怎能让人辉煌?

《C++程序设计》课程设计报告相关推荐

  1. c语言数据结构课程设计停车场管理系统,数据结构课程设计报告停车场管理系统...

    <数据结构课程设计报告停车场管理系统>由会员分享,可在线阅读,更多相关<数据结构课程设计报告停车场管理系统(8页珍藏版)>请在人人文库网上搜索. 1.数据结构课程设计报告系 别 ...

  2. c语言实现一元多项式程序报告设计,数据结构课程设计报告一元多项式的计算..doc...

    数据结构课程设计报告一元多项式的计算. 题目:一元多项式的计算 --链表 摘要(题目) 一元多项式计算 任务:能够按照指数降序排列建立并输出多项式: 能够完成两个多项式的相加.相减,并将结果输入: 目 ...

  3. 数据结构课程设计报告(附代码)

    数据结构课程设计报告 一.实训目的 通过课程设计,学会运用数据结构知识,针对具体应用,自己设计合理数据结构,确定存储结构,并能设计具体操作算法,选择使用具体语言进行实现.掌握C++较复杂程序的组织和设 ...

  4. c语言数据结构课程设计电梯,数据结构课程设计报告(模拟电梯).doc

    数据结构课程设计报告(模拟电梯) 山东理工大学计算机学院 课 程 设 计 (数据结构) 班 级姓 名学 号 指导教师 二〇一二年一月十日 课程设计任务书及成绩评定 课题名称电 梯 模 拟 Ⅰ.题目的目 ...

  5. 2018数据结构课程设计报告

    目录 一.引言 a) 编写目的 b) 项目背景 c) 术语说明 d) 参考资料 二.任务概述 a) 目标 b) 运行环境 c) 需求概述 d) 条件与限制 三. 总体设计 a) 处理流程 b) 总体结 ...

  6. 数据结构课程设计报告-职工信息管理系统

    "数据结构"课程设计报告 系 (院):           信息工程学院 设计题目:           员工管理系统 专业班级:          计算机科学与技术1401B 小 ...

  7. 【“BattenSnakexjp4.1”数据结构课程设计报告】

    烟台大学计算机与控制工程学院 "BattenSnakexjp4.1"数据结构课程设计报告 计146-2 徐吉平 版权所有

  8. 【数据结构课程设计报告】电话号码查询系统(Java实现)

    数据结构课程设计报告 电话号码查询系统 数据结构课程设计报告 一.需求分析 二.系统功能划分及设计 1.存储结构设计 2.系统的功能架构设计 3.模块设计 3.代码实现 一.需求分析 问题描述:路径规 ...

  9. 计算机课程设计收费管理系统,数据结构课程设计报告---收费停车场管理系统

    数据结构课程设计报告---收费停车场管理系统 (20页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 XX大学计算机与电子 信息学院< ...

  10. 公交换乘系统c语言,数据结构课程设计报告(公交换乘).docx

    课 程 设 计 报 告 题目: 武昌地区公交查询与换乘推荐 课程名称: 数据结构课程设计 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 计算机科学与技术学院 任 务 书 设计内容 掌握图.查 ...

最新文章

  1. jieba词性说明字典
  2. 【刷算法】判断链表是否有环以及返回入环节点
  3. JAVA中的SimpleDateFormat yyyy和YYYY的区别
  4. python3 log_Python3 log10()函数简单用法
  5. 25、UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释
  6. [C++11]指针空值类型nullptr
  7. 「译文」你必须掌握的 7 种 JavaScript 错误类型
  8. 安卓隐藏摄像_【快讯:诺基亚发布三款安卓机;全面屏手机的最终形态,目标是去掉摄像头;iPhone 打电话不息屏或挂断电话后不亮屏是什么问题?】...
  9. 马云后悔创办阿里:想停根本停不下来;人民日报评“滴滴顺风车争议”;jQuery 曝漏洞|极客头条...
  10. js 内存引用计数_快速内存管理–自动引用计数
  11. json获取key对应的值java_java 获取json字符串中key对应的值
  12. python用pandas读取数据时出现错误_Python Pandas错误标记数据
  13. 苍狼敏捷软件开发团队建设指南-2-团队建设
  14. java自动化测试面试题_自动化测试面试题
  15. 2021最新阿里代码规范(前端篇)
  16. HTML在列表中加图片,HTML + JS 列表显示图片
  17. 2021-2026年中国数字化转型市场预测:通过应用场景践行数字化优先策略
  18. Vue项目的打包\部署\优化
  19. kubectl 命令使用(create系列)
  20. IDC:中国人工智能及自动化市场十大预测

热门文章

  1. An unhandled exception occurred: listen EADDRNOTAVAIL: address not available
  2. axure9实用操作设置鼠标单击交互事件为什么没响应
  3. 除了攀附名人、杜撰荣恩录,家谱造假中,还有这件事令人羞耻
  4. torch.Longtensor是什么?和torch.Tensor有什么区别?
  5. 【笔记】2017电信大数据普惠金融应用案例
  6. 我37岁,从互联网大厂跳槽到国企后,发现没有一劳永逸的工作。。。
  7. linux格式化叫大硬盘命令,Linux_format命令 参数说明,格式化 格式化指定卷中的磁盘 - phpStudy...
  8. 关系数据库——关系操作关系模型的完整性
  9. ue4 FString 中文乱码问题
  10. dede源码详细分析之--全局变量覆盖漏洞的防御