西安交大C程序设计作业2汇总

上传人:206****923 文档编号:91110951 上传时间:2019-06-22 格式:DOC 页数:25 大小:632KB
返回 下载 相关 举报
西安交大C程序设计作业2汇总_第1页
第1页 / 共25页
西安交大C程序设计作业2汇总_第2页
第2页 / 共25页
西安交大C程序设计作业2汇总_第3页
第3页 / 共25页
西安交大C程序设计作业2汇总_第4页
第4页 / 共25页
西安交大C程序设计作业2汇总_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《西安交大C程序设计作业2汇总》由会员分享,可在线阅读,更多相关《西安交大C程序设计作业2汇总(25页珍藏版)》请在金锄头文库上搜索。

1、西安交通大学实验报告课程_计算机程序设计_实验名称_结构体_第 1 页 共 29 页系 别_ _ 实 验 日 期 2014 年 4月 26日专业班级_ _组别_ 实 验 报 告 日 期 2014 年 4 月 27日姓 名_ _学号_ _ 报 告 退 发 ( 订正 、 重做 )同 组 人_ 教 师 审 批 签 字 一、 实验目的掌握结构体的使用方法,学会用结构体的方法定义变量并对变量进行处理;掌握枚举法的使用方法。二、实验内容 (一)第一题: 1、输入某小组5个人的姓名、性别、出生年份等信息,统计男女人数以及1988年以后(含1988年)出生的人数。1.源程序代码:/输入某小组个人的姓名、性别、

2、出生年份等信息,统计男女人数以及年以后(含年)出生的人数。#includeusing namespace std;struct xinxichar name20;char sex;int year;/定义结构体xinxi,包含名称(字符串)、性别(字符)、出生时间(整数)三个变量int main()xinxi cy5;int i,s=0,m=0;for(i=0;i5;i+)cout请输入第i+1cyi.name;coutcyi.sex;coutcyi.year;cout您输入的是:n;for(i=0;i5;i+)/显示输入内容coutcyi.nametcyi.sextcyi.yearendl;

3、for(i=0;i=1988)m+;cout其中男生人数为:st女生人数为:5-sendl;cout1988年以后(含)出生的的人数为:mendl;return 0; 2.实验结果: 3.问题分析:略。(二)第二题: 读入五个用户的姓名和电话号码,按照姓名的字典顺序排列后,输出用户的姓名和电话号码。1.源程序代码:/读入五个用户的姓名和电话号码,按照姓名的字典顺序排列后,输出用户的姓名和电话号码。#include#includeusing namespace std;struct dianhuabuchar name30;char num15;/定义结构体dianhuabu,包含两个变量:名字

4、和电话号码。由于电话号码较长又无需对其进行具体处理,故定义为字符串型int main()dianhuabu dhb5;/声明dianhuabu型变量int i;for(i=0;i5;i+)cout请输入第i+1dhbi.name;coutdhbi.num;cout您输入的信息如下:n;for(i=0;i5;i+)/显示输入信息coutdhbi.nametdhbi.numn;for(i=0;i5;i+)/排序int k=i;for(int j=i+1;j5;j+)if(strcmp(dhbj.name,dhbk.name)0)/用库函数strcmp比较字符串大小k=j;if(k!=i)dianh

5、uabu tmp=*(dhb+i);/定义dianhuabu型变量tmp作为中间变量,进行交换*(dhb+i)=*(dhb+k);*(dhb+k)=tmp;cout排序结果如下:n;for(i=0;i5;i+)coutdhbi.nametdhbi.numendl;/输出排序后结果return 0;2.实验结果:(1)随机输入名称:(2)输入名称长度递增,后者包含前者,用来检验库函数strcmp的排序效果:3.问题分析:略。 (三)第三题:输入两个整型数组(假设数组的大小为7)的各个元素,输出不是两个数组共有元素,例如,输入1,2,3,4,5,6,7和5,6,7,8,9,0,输出为1,2,3,4

6、,8,9,0.1.源程序代码: /输入两个整型数组(假设数组的大小为7)的各个元素,输出不是两个数组共有元素,/例如,输入1,2,3,4,5,6,7和5,6,7,8,9,0,输出为1,2,3,4,8,9,0.#includeusing namespace std;int main()int a7,b7,c14;int i,j,m=0;cout请输入数组a的每个元素:n;for(i=0;i*(a+i);cout请输入数组b的每个元素:n;for(j=0;j*(b+j);for(i=0;i7;i+)j=0;while(*(a+i)!=*(b+j)&j7)j+;if(j=7)*(c+m)=*(a+i

7、);m+;for(i=0;i7;i+)j=0;while(*(b+i)!=*(a+j)&j7)j+;if(j=7)*(c+m)=*(b+i);m+;if(m=0)cout没有非共有元素!n;return 0;/直接结束,不再进行以下内容cout共有m个非共有元素:n;int k;for(k=0;km;k+)cout*(c+k) ;/输出coutendl;return 0;2.实验结果:(1)全不相同:(2)部分相同:(3)全相同:3.问题分析:不足之处:题目中说是数组大小为7,但第二个数组只有六个元素也进行了比较。而我的作业中没有实现这一点,只能是7个元素.(四)实验题目四:口袋中有红、黄、蓝

8、、白、黑5种颜色的小球若干个,如果每次都从口袋中取出3种不同颜色的小球,共有多少种组合?试打印出每种组合的3种颜色,要求使用枚举类型来表示小球的颜色。 1. 程序源代码#includeusing namespace std;enum Colorsred,yellow,blue,white,black;void ys(int i)switch(i)case red:coutred ;break;case yellow:coutyellow ;break;case blue:coutblue ;break;case white:coutwhite ;break;case black:coutbla

9、ck ;break;void main()int s=0,i,j,k;for(i=red;i=blue;i+)for(j=1+i;j=white;j+)for(k=j+1;k=black;k+)s+;ys(i);ys(j);ys(k);coutendl;cout总共的组合数为:sendl;2. 实验结果3.问题分析:此题中虽然定义了枚举类型,然而实际过程中,感觉并没有使用到枚举,它的存在似乎没有意义,不知道是不是方法用错了。五、第五题: 5、编写函数,该函数实现任意一个正整数是否为完全数。再编写函数输出完全数等于各因子之和的式子。最后找出2100000之内所有完全数。所谓完全数是其各因子之和正

10、好等于本身的数,例如输出格式如下的完全数:6=1+2+3,28=1+2+4+7+14。#includeusing namespace std;void panduan(int i)/自定义函数,用于判断i是不是完全数int m,s=0;int *num=new inti;/动态分配数组空间,虽然仍然大于实际需要值,但数组大小基本上得到了控制for(m=1;m=i/2;m+)if(i%m=0)nums=m;s+;/s最终为因子个数int sum=0;int n;for(n=0;ns;n+)sum=sum+numn;/sum最终为各因子之和if(sum=i)couti=;for(n=0;ns-1;

11、n+)coutnumn+;coutnums-1endl;delete num;/释放数组空间int main()int i;cout从2到的100000完全数如下:n;for(i=2;i100000;i+) panduan(i);return 0;2.实验结果:3.问题分析:在做这道题的过程中,起初出现了一个奇怪的现象:如果上限由100000改为10000,则程序正常运行,但对于100000,会显示出现问题:后来检查不出问题时,发现了一直以来一个不良习惯:不编写释放数组空间的语句。试着加上这一语句之后再运行时,发现程序能够正常进行了,因而认为应该是这句语句的作用,但并不知道具体的原因。六、第六题:6、(必做题)编写一个实现文章(即字符串)单词统计功能的程序,要求:输入一系列英文单词字符串(即带空格的字符串),单词间用空格隔开或逗号或句号隔开。请统计该字符串中单词出现的频率,并按词典顺序输出单词及其频率。必须用结构体方法实现。 1.源程序代码:#include#includeusing namespace std;struct fr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号