西安交大C程序设计第四章作业2讲解.docx
- 文档编号:404937
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:26
- 大小:522.31KB
西安交大C程序设计第四章作业2讲解.docx
《西安交大C程序设计第四章作业2讲解.docx》由会员分享,可在线阅读,更多相关《西安交大C程序设计第四章作业2讲解.docx(26页珍藏版)》请在冰豆网上搜索。
西安交大C程序设计第四章作业2讲解
西安交通大学实验报告
课程__计算机程序设计__实验名称__结构体__第1页共29页
系别__________实验日期2014年4月26日
专业班级______组别_____________实验报告日期2014年4月27日
姓名__________学号__报告退发(订正、重做)
同组人_________________________________教师审批签字
一、实验目的
掌握结构体的使用方法,学会用结构体的方法定义变量并对变量进行处理;掌握枚举法的使用方法。
二、实验内容
(一)第一题:
1、输入某小组5个人的姓名、性别、出生年份等信息,统计男女人数以及1988年以后(含1988年)出生的人数。
1.源程序代码:
//输入某小组个人的姓名、性别、出生年份等信息,统计男女人数以及年以后(含年)出生的人数。
#include
usingnamespacestd;
structxinxi
{
charname[20];
charsex;
intyear;
};//定义结构体xinxi,包含名称(字符串)、性别(字符)、出生时间(整数)三个变量
intmain()
{
xinxicy[5];
inti,s=0,m=0;
for(i=0;i<5;i++)
{
cout<<"请输入第"<
\n姓名:
";
cin>>cy[i].name;
cout<<"性别(男的输入“b”,女的输入“g”):
";
cin>>cy[i].sex;
cout<<"出生年份:
";
cin>>cy[i].year;
}
cout<<"您输入的是:
\n";
for(i=0;i<5;i++)//显示输入内容
cout< for(i=0;i<5;i++)//统计男女、之后个数 { if(cy[i].sex=='b') s++; if(cy[i].year>=1988) m++; } cout<<"其中男生人数为: "< "<<5-s< cout<<"1988年以后(含)出生的的人数为: "< return0; } 2.实验结果: 3.问题分析: 略。 (二)第二题: 读入五个用户的姓名和电话号码,按照姓名的字典顺序排列后,输出用户的姓名和电话号码。 1.源程序代码: //读入五个用户的姓名和电话号码,按照姓名的字典顺序排列后,输出用户的姓名和电话号码。 #include #include usingnamespacestd; structdianhuabu { charname[30]; charnum[15]; };//定义结构体dianhuabu,包含两个变量: 名字和电话号码。 由于电话号码较长又无需对其进行具体处理,故定义为字符串型 intmain() { dianhuabudhb[5];//声明dianhuabu型变量 inti; for(i=0;i<5;i++) { cout<<"请输入第"< \t姓名: "; cin>>dhb[i].name; cout<<"电话号码: "; cin>>dhb[i].num; } cout<<"您输入的信息如下: \n"; for(i=0;i<5;i++)//显示输入信息 { cout< } for(i=0;i<5;i++)//排序 { intk=i; for(intj=i+1;j<5;j++) if(strcmp(dhb[j].name,dhb[k].name)<0)//用库函数strcmp比较字符串大小 k=j; if(k! =i) { dianhuabutmp=*(dhb+i);//定义dianhuabu型变量tmp作为中间变量,进行交换 *(dhb+i)=*(dhb+k); *(dhb+k)=tmp; } } cout<<"排序结果如下: \n"; for(i=0;i<5;i++) cout< return0; } 2.实验结果: (1)随机输入名称: (2)输入名称长度递增,后者包含前者,用来检验库函数strcmp的排序效果: 3.问题分析: 略。 (三)第三题: 输入两个整型数组(假设数组的大小为7)的各个元素,输出不是两个数组共有元素,例如,输入1,2,3,4,5,6,7和5,6,7,8,9,0,输出为1,2,3,4,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. #include usingnamespacestd; intmain() { inta[7],b[7],c[14]; inti,j,m=0; cout<<"请输入数组a的每个元素: \n"; for(i=0;i<7;i++) cin>>*(a+i); cout<<"请输入数组b的每个元素: \n"; for(j=0;j<7;j++) cin>>*(b+j); for(i=0;i<7;i++) { j=0; while(*(a+i)! =*(b+j)&&j<7) j++; if(j==7) { *(c+m)=*(a+i); m++; } } for(i=0;i<7;i++) { j=0; while(*(b+i)! =*(a+j)&&j<7) j++; if(j==7) { *(c+m)=*(b+i); m++; } } if(m==0) { cout<<"没有非共有元素! \n"; return0;//直接结束,不再进行以下内容 } cout<<"共有"< \n"; intk; for(k=0;k cout<<*(c+k)<<"";//输出 cout< return0; } 2.实验结果: (1)全不相同: (2)部分相同: (3)全相同: 3.问题分析: 不足之处: 题目中说是数组大小为7,但第二个数组只有六个元素也进行了比较。 而我的作业中没有实现这一点,只能是7个元素. (四)实验题目四: 口袋中有红、黄、蓝、白、黑5种颜色的小球若干个,如果每次都从口袋中取出3种不同颜色的小球,共有多少种组合? 试打印出每种组合的3种颜色,要求使用枚举类型来表示小球的颜色。 1.程序源代码 #include usingnamespacestd; enumColors{red,yellow,blue,white,black}; voidys(inti) { switch(i) { casered: cout<<"red"; break; caseyellow: cout<<"yellow"; break; caseblue: cout<<"blue"; break; casewhite: cout<<"white"; break; caseblack: cout<<"black"; break; } } voidmain() { ints=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); cout< } cout<<"总共的组合数为: "< } 2.实验结果 3.问题分析: 此题中虽然定义了枚举类型,然而实际过程中,感觉并没有使用到枚举,它的存在似乎没有意义,不知道是不是方法用错了。 五、第五题: 5、编写函数,该函数实现任意一个正整数是否为完全数。 再编写函数输出完全数等于各因子之和的式子。 最后找出2~100000之内所有完全数。 所谓完全数是其各因子之和正好等于本身的数,例如输出格式如下的完全数: 6=1+2+3,28=1+2+4+7+14。 #include usingnamespacestd; voidpanduan(inti)//自定义函数,用于判断i是不是完全数 { intm,s=0; int*num=newint[i];//动态分配数组空间,虽然仍然大于实际需要值,但数组大小基本上得到了控制 for(m=1;m<=i/2;m++) { if(i%m==0) { num[s]=m; s++;//s最终为因子个数 } } intsum=0; intn; for(n=0;n sum=sum+num[n];//sum最终为各因子之和 if(sum==i) { cout< for(n=0;n cout< cout< } delete[]num;//释放数组空间 } intmain() { inti; cout<<"从2到的100000完全数如下: \n"; for(i=2;i<100000;i++) panduan(i); return0; } 2.实验结果: 3.问题分析: 在做这道题的过程中,起初出现了一个奇怪的现象: 如果上限由100000改为10000,则程序正常运行,但对于100000,会显示出现问题: 后来检查不出问题时,发现了一直以来一个不良习惯: 不编写释放数组空间的语句。 试着加上这一语句之后再运行时,发现程序能够正常进行了,因而认为应该是这句语句的作用,但并不知道具体的原因。 六、第六题: 6、(必做题)编写一个实现文章(即字符串)单词统计功能的程序,要求: 输入一系列英文单词字符串(即带空格的字符串),单词间用空格隔开或逗号或句号隔开。 请统计该字符串中单词出现的频率,并按词典顺序输出单词及其频率。 必须用结构体方法实现。 1.源程序代码: #include #include usingnamespacestd; structfrequency { charword[20]; intn; }da
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西安交大C 程序设计第四章作业2讲解 西安 交大 程序设计 第四 作业 讲解