程序设计基础C++课程设计.docx
- 文档编号:8692677
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:23
- 大小:177.06KB
程序设计基础C++课程设计.docx
《程序设计基础C++课程设计.docx》由会员分享,可在线阅读,更多相关《程序设计基础C++课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
程序设计基础C++课程设计
程序设计基础(C++)
课程设计说明书
课程名称:
程序设计基础C++
题目:
姓名:
学号:
教学班号:
指导教师:
兰州交通大学软件科学与工程系
二○一一年七月六日
一、程序设计课程设计任务书
从下面的16道题中任选10道
1)利用循环求1-1/3+1/5-1/7+…+1/2n-1的值(直到第100项的和)。
2)编制程序求e的近似值。
3)给定一个不多于5位的正整数,要求:
①求它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字。
例如原数为321,应输出123。
4)求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。
例如:
2+22+222+2222+22222(n=5),n由键盘输入。
5)编一程序,将两个从键盘输入的字符串连接起来,不要使用strcat函数。
6)写一函数,使输入的一个字符串按反序存放,在主函数中输入输出字符串。
7)输入10个学生5门课的成绩,分别用函数求:
①每个学生平均分;②每门课的平均分;③找出最高分所对应的学生和课程;
8)写一函数,输入一个十六进制数,输出相应的十进制数。
9)编程计算数学式子
的值。
10)某校土木工程专业大约有800名学生(不超过800),现要求编写程序,输入该专业所有同学《材料力学》课程的成绩,以-1结束,输出高于或等于平均分的所有成绩,并输出及格率和所有同学平均分。
11)输入一个整数,如果能被3和5同时整除,输出这个数;如果不能,输出“No”。
12)有100匹马驮100块瓦,大马驮3块,小马可以驮2块,两匹马驹合驮一块,请编写程序求大马、小马和马驹各有多少匹。
13)对已经排好序(从小到大)的成绩数组进行以下操作:
把一个新成绩按照顺序插入到数组的合适位置。
14)有三个字符串(长度不超过20),要求找出其中最大者。
15)任意输入10个数据,对其进行排序(用选择法、冒泡法两种方法,小到大)。
16)编程实现任意输入年月日,计算出该天是当年的第几天。
如:
请输入日期(年月日的格式):
2007131
该天是本年的第31天。
文档内容要求
1、在做上述题目时,正文要求包含4部分内容:
1)各小题解题基本思路;2)各小题算法流程框图;3)各小题主要程序源代码;4)总结和体会
2、文档装订顺序:
1)封面;2)课程设计任务书;3)正文。
二、题目一
1)要求:
利用循环求1-1/3+1/5-1/7+…+1/2n-1的值(直到第100项的和)
2)解题思路
定义一整型的变量i,一双精度型的sum=0,利用for循环控制i从1增到100,利用公式sum=sum+(pow(-1,i+1))/(2*n-1)计算sum的值。
3)
流程图
4)程序源代码
#include
#include
usingnamespacestd;
intmain()
{
inti,n=1;
doublesum=0;
for(i=1;i<=100;i++)
{
sum=sum+(pow(-1,i+1))/(2*n-1);
n=n+1;
}
cout<<"sum="< return0; } 三、题目二 1)要求: 编制程序求e的近似值。 2)解题思路 定义整型变量n,i,j,输入n的值,i从1循环到n,j从1循环到i,计算出j的阶乘,再计算出j的阶乘和,最后输出阶乘和的值就是e的值。 3)流程图 4)程序源代码 #include usingnamespacestd; intmain() { intn,i,j; doublesum; cout<<"Entern: "; cin>>n; for(i=1;i<=n;i++) { doublek=1; sum=1; for(j=1;j<=i;j++) { k=k*j; sum=sum+1/k; } } cout<<"e: "< return0; } 四、题目五 1)要求: 编一程序,将两个从键盘输入的字符串连接起来,不要使用strcat函数 2)解题思路 定义三个string类型的字符串str1,str2,和str,输入两个字符串str1和str2,计算str=str1+str2,输出str。 即完成题目要求。 3)流程图 4)程序源代码 #include #include usingnamespacestd; intmain() { stringstr1,str2,str; cin>>str1; cout< cin>>str2; str=str1+str2; cout< return0; } 五、题目八 1)要求: 写一函数,输入一个十六进制数,输出相应的十进制数 2)解题思路 首先定义x函数来将十进制整数n转换成十六进制数,然后输入一个待转换的十六进制数值, 用K来记录录入的数据的位数if(c[i]>='0'&&c[i]<='9'),sum=sum+(c[i]-'0')*x(k-1),一个任意一位数对应的ASCLL码减去0的ASCLL码就是这个任意数本身了,if(c[i]>='A'&&c[i]<='F'),sum+=(c[i]-55)*x(k-1),一个十六进制大写字母与它对应的ASCLL码相差55,if(c[i]>='a'&&c[i]<='f'),sum+=(c[i]-87)*x(k-1),一个十六进制小写字母与它对应的ASCLL码相差87,最后输出转化好的十进制数。 3)流程图 4)程序源代码 #include usingnamespacestd; intmain() { intx(intn);//定义x函数来将十进制整数n转换成十六进制数// charc[100]; inti,t,k=0; longintsum=0; cout<<"请输入一个待转换的十六进制数值\n"; gets(c); while(c[k]! ='\0') k++;//用K来记录录入的数据的位数// for(i=0,t=k;i {if(c[i]>='0'&&c[i]<='9') sum+=(c[i]-'0')*x(k-1);//一个任意一位数对应的ASCLL码减去0的ASCLL码就是这个任意数本身了// if(c[i]>='A'&&c[i]<='F') sum+=(c[i]-55)*x(k-1);//一个十六进制大写字母与它对应的ASCLL码相差55// if(c[i]>='a'&&c[i]<='f') sum+=(c[i]-87)*x(k-1);//一个十六进制小写字母与它对应的ASCLL码相差87// } cout<<"转换成十进制数是: "< return0; } intx(intn) { inti,j=1; if(n==0) return1; for(i=1;i<=n;i++) j*=16; returnj; } 六、题目九 1)要求: 编程计算数学式子 的值 2)解题思路 定义一个函数fun,功能是求i从1到k的和,输入n,利用循环求i从1到n的和,调用函数fun,用公式sum=sum+fun(i)求和。 所得结果就是题目所要求的值,最后输出。 3)流程图 4)程序源代码 #include usingnamespacestd; longdoublefun(intk) { longdoublesum=0; for(inti=1;i<=k;i++) sum+=i; returnsum; } intmain() { longdoublesum=0; intn,i=1; cin>>n; for(i=1;i<=n;i++) { sum=sum+fun(i); } cout< return0; } 七、题目十 1)要求: 某校土木工程专业大约有800名学生(不超过800),现要求编写程序,输入该专业所有同学《材料力学》课程的成绩,以-1结束,输出高于或等于平均分的所有成绩,并输出及格率和所有同学平均分 2)解题思路 首先定义一个数组,输入所有同学的成绩,计算出及格的人数,再计算出所有同学成绩的和,用及格了的总人数除以总的人数计算出及格率,所有同学的总成绩除以总的人数计算出平均分,最后输出及格率和平均分。 3)流程图 4) 程序源代码 intmain() { doublescore[800]; inti,n=0,count; doublesum,ave,f; intm=0; do{cin>>score[n]; n++; } while(score[n-1]! =-1); n--; for(i=0,count=0,sum=0;i { sum=sum+score[i]; if(score[i]>=60) count++; } ave=sum/n; f=count/n*100; for(i=0;i { if(score[i]>=ave) { cout< m++; if(m%8==0) cout< } } cout< cout<<"平均分="< "< cout< return0; } 八、题目十一 1)要求: 输入一个整数,如果能被3和5同时整除,输出这个数;如果不能,输出“No”。 2)解题思路 首先定义一个整型的x,输入一个整数x,如果x对三求余等于零并且x对五求余等于零,那么就输出这个数x,如果对三求余等于零但是对五求余不等于零,或者对三不等于零,那么久输出“NO”。 这就完成题目要求。 3)流程图 4)程序源代码 #include usingnamespacestd; intmain() { intx; cout<<"Enterx: "; cin>>x; if(x%3==0&&x%5==0) cout< else cout<<"NO"< return0; } 九、题目十二 1)要求: 有100匹马驮100块瓦,大马驮3块,小马可以驮2块,两匹马驹合驮一块,请编写程序求大马、小马和马驹各有多少匹。 2)解题思路 定义整型的x,y,z,用for循环控制使x,y,z,从1循环到100,,如果x+y+z==0并且 3*x+2*y+(z*1.0)*0.5==100,那么输出x,y,z,则x为大马的数量,y为小马的数量,z。 为马驹的数量。 这就完成题目要求。 3)流程图 4)程序源代码 #include usingnamespacestd; intmain() { intx,y,z; for(x=0;x<=100;x++) for(y=0;y<=100;y++) for(z=0;z<=100;z++) if(x+y+z==100&&3*x+2*y+(z*1.0)/2==100) cout<<"大马: "< "< "< return0; } 一十、题目十五 1)要求: 任意输入10个数据,对其进行排序(用选择法、冒泡法两种方法,小到大) 2)冒泡法解题思路 定义一个函数,实现利用二重循环实现起泡,外层循环控制比较趟数,内层循环控制每趟比较的次数,如果a[i]大于a[i+1],则二者换位置。 在主函数中输入要比较的数据,调用函数比较大小,然后输出比较排序的数据。 这就完成题目的要求。 3)冒泡法流程图 4)冒泡法程序源代码 #include usingnamespacestd; voidfun(intb[],intn); intmain() { inti,a[11]; cout<<"Input10numbers: "; for(i=1;i<=10;i++) cin>>a[i]; fun(a,10); cout<<"\nThesortednumbers: \n"; for(i=1;i<=10;i++) cout< return0; } voidfun(intb[],intn) { inti,j,t; for(j=1;j<=n-1;j++) for(i=1;i<=n-1-j;i++) if(b[i]>b[i+1]) { t=b[i]; b[i]=b[i+1]; b[i+1]=t; } return; } 5)选择法解题思路 输入10个要比较的数,i从1循环到9,j从i+1循环到9,如果a[j] 这就完成题目的要求。 6)选择法程序源代码 #include usingnamespacestd; intmain() { inta[10];inti,j,p,t; cout<<"Input10numbers: "; for(i=0;i<10;i++) cin>>a[i]; for(i=0;i<9;i++) { p=i; for(j=i+1;j<10;j++) if(a[j] p=j; if(p! =i); { t=a[i]; a[i]=a[p]; a[p]=t; } } cout<<"thesortednumbers: \n"; for(i=0;i<10;i++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 C+ 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)