第12、13讲 课后自主学习及实践方案 代码
来源:互联网 发布:js字符串首字母大写 编辑:程序博客网 时间:2024/06/06 00:03
说明:本周大多项目带有提示的代码以及需要用到的其他数据,已经上传到云学堂和QQ群,由老师博客中课程主页也可以找到代码,请避免不必要的输入而浪费时间。
【项目1 - 数组大折腾】
(1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行。
int main( )
{
int a[20]={...}; //初始化前10个元素
//键盘输入后10个元素的值
//由前往后输出数组中所有元素的值
cout<<"由前往后,数组中的值是:"<<endl;
return 0;
}
【项目2- 成绩处理】
int main()
{
int score[50]; //保存成绩的数组,不会超过50名
int num,i; //小组人数
cout<<"小组共有多少名同学?";
cin>>num;
cout<<"请输入学生成绩:"<<endl;
//输入num名同学的成绩
//求出并输出最高成绩、最低成绩和平均成绩
//求出并输出考得最高成绩和最低成绩人数以及学号
//求出并输出标准偏差(选做)
return 0;
}
【项目3 - 成绩处理函数版】
void input_score(int s[], int n); //将小组中n名同学的成绩输入数组s
int get_max_score(int s[], int n); //返回数组s中n名同学的最高成绩值
int get_min_score(int s[], int n); //返回数组s中n名同学的最低成绩值
double get_avg_score(int s[], int n); //返回数组s中n名同学的平均成绩值
double get_stdev_score(int s[], int n); //返回数组s中n名同学成绩值的标准偏差
int count(int x, int s[], int n); //返回在数组s中n名同学中有多少人得x分(实参给出最高/低时,可以求最高/低成绩的人数)
void output_index(int x, int s[], int n); //在函数中输出数组s中n名同学中得x分的学号(下标)
int main(void)
{
int score[50]; //将score设为局部变量,通过数组名作函数参数,传递数组首地址,在函数中操作数组
int num; //小组人数也设为局部变量,将作为函数的实际参数
int max_score,min_score;
cout<<"小组共有多少名同学?";
cin>>num;
cout<<endl<<"请输入学生成绩:"<<endl;
input_score(score, num); //要求成绩在0-100之间
max_score=get_max_score(score, num);
cout<<endl<<"最高成绩为:"<<max_score<<",共有 "<<count(max_score, score, num )<<" 人。";
min_score=get_min_score(score, num);
cout<<endl<<"最低成绩为:"<<min_score<<",共有 "<<count(min_score,score, num )<<" 人。";
cout<<endl<<"平均成绩为:"<<get_avg_score(score, num);
cout<<endl<<"标准偏差为:"<<get_stdev_score(score, num);
cout<<endl<<"获最高成绩的学生(学号)有:";
output_index(max_score,score, num);
cout<<endl<<"获最低成绩的学生(学号)有:";
output_index(min_score,score, num);
cout<<endl;
return 0;
}
【项目4 - 数组的排序】
(1)编写函数,完成冒泡排序
要求不能改变下面的main函数。
//两个函数bubble_sort和output_array的声明
int main( )
{
int a[20]={86,76,62,58,77,85,92,80,96,88,77,67,80,68,88,87,64,59,61,76};
int b[15]={27,61,49,88,4,20,28,31,42,62,64,14,88,27,73};
bubble_sort(a,20); //用冒泡法按降序排序a中元素
output_array(a,20); //输出排序后的数组
bubble_sort(b,15); //用冒泡法按降序排序b中元素
output_array(b,15); //输出排序后的数组
return 0;
}
//请在下面定义bubble_sort和output_array函数
(2)字符数组排序:改造(1)的程序,使其能对字符数组进行排序,其中:
int a[20]={...};
int b[15]={...};
改为
char a[20] = {'s','o','r','t','b','u','b','b','l','e','s','e','l','e','c','t','o','k','o','k'};
char b[15] = {'a','b','a',...}; //自己补足
(3)体验选择排序:改造(1)的程序,将bubble_sort(...)改为select_sort(...),排序算法由冒泡排序换作为选择排序,完成相同的任务。
【项目5-字符串操作】
(1)阅读下面的程序,完成类似的字符统计功能
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
char str[50];
int i=0,n=0;
cout<<"输入字符串:";
gets(str);
while(str[i]!='\0')
{
if(str[i]>='0'&&str[i]<='9') n++;
i++;
}
cout<<"其中的数字个数是: "<<n<<endl;
return 0;
}
(2)阅读下面的程序,完成类似字符串复制的功能
#include<iostream>
using namespace std;
int main()
{
char str1[50]="I am a happy boy\'s daddy.",str2[50];
int i=0,j=0;
while(str1[i]!='\0')
{
if(str1[i]!=' ')
{
str2[j]=str1[i];
j++;
}
i++;
}
str2[j]='\0';//切记!!
cout<<"整理后的字符串"<<str2<<endl;
return 0;
}
【附件】C++文件操作初体验
例1:将数据“写入/输出”到文件中
//看这个例子一定要举一反三,凡是要将数据输出到文件(写文件)都可这样处理
#include<fstream> //处理文件要包括头文件fstream
#include<iostream>
#include<cstdlib> //调用exit(1)需要包含cstdlib
using namespace std;
int main( )
{
int a;
//打开文件,要使用文件必须正确打开,对输出文件,注意写ios::out
// f1.dat是要“写”的文件名,你可以起你喜欢的名字,如myfile.txt
ofstream outfile("f1.dat",ios::out);
if(!outfile) //测试文件打开操作是否成功
{
cerr<<"open error!"<<endl;
exit(1); //打开不成功,则提示后退出。
}
//用ios::out方式成功打开文件后,可以如下所示将数据保存到文件中
//操作中,要用打开的文件对象名(outfile),而不是用文件名(此例f1.dat)
//本例将键盘输入的10个整数“写”到文件中。
for(int i=0; i<10; i++)
{
cin>>a;
outfile<<a<<endl; //a被写到了文件
//理解:outfile就是前面打开文件时创建的“输出文件流对象”,
//是否想起了cout<<a<<endl?道理一样,用法也一样,只是输出到了文件
}
outfile.close(); //关闭文件。用完了必须关闭,否则会丢失数据
cout<<"处理完毕,请打开文件查看结果!"<<endl;
return 0;
}
运行完程序后查看结果,需要到程序所在的文件夹中,这时多了一个文件f1.dat,用记事本打开(用CodeBlocks也可以打开),其内容就是你输出的数据。
例2:从文件中读入数据
#include <fstream> //操作文件必写
#include<iostream>
#include<cstdlib> //调用exit(1)需要包含cstdlib
using namespace std;
int main( )
{
int a,max=-9999,i; //要求最大值,先默认其为一个很小的数
//以输入的方式(ios::in)打开文件,注意f1.dat必须在文件夹中存在
ifstream infile("f1.dat",ios::in);
//测试是否成功打开,打开失败时(如要读的数据文件不存在)退出
if(!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
//下面读取数据并完成处理,若数据需要多次使用,可以读入到数组中
while(infile>>a) //当到达文件尾,则循环处理结束。类似cin>>a,只不过数据来源于打开的文件
{
if(a>max) max=a; //在读入过程中,max将保存最大值
}
infile.close(); //读入完毕要关闭文件
//下面对数据的操作和文件就没有关系了,本例输出求得的最大值
cout<<"文件中最大的数是:"<<max<<endl;
return 0;
}
可以选择运行上面的两种程序,以增强体验的映像。再次细读一遍程序,尤其是注释中的文字,品味操作文件中的要点。
- 第12、13讲 课后自主学习及实践方案 代码
- 第9、10讲 课后自主学习及实践方案代码
- 2014秋C++ 学术休假期间程序设计自主学习及实践方案
- 课后自主实践-Switch语句初体验
- 第014讲:Scala中Map和HashMap源码剖析及代码实践(从1000个代码案例中学习人工智能和大数据实战)
- 第12周课后实践①
- 第12周课后实践②
- 第12周课后实践③
- 第12周课后实践④
- 第12周课后实践(1)
- 第12周课后实践(2)
- 第12周课后实践(3)
- 第12周课后实践(4)
- 第12周课后实践 多文件组织
- 《C语言及程序设计》第22讲实践项目
- 《C语言及程序设计》第23讲实践项目
- 《C语言及程序设计初步》第26讲实践项目
- 《C语言及程序设计》第31讲实践项目
- Hadoop RPC实现NIO通信Server端剖析
- 深入理解Android:Wi-Fi NFC和GPS.pdf
- BMS 民主测评 研发-QA
- HTTP请求以及HTTP响应
- java throw抛出异常
- 第12、13讲 课后自主学习及实践方案 代码
- json数据与JAVA数据的转换
- html5 audio读取文件流播放音频
- 关于iOS App的切图
- c++ 学习 随笔一
- 第十三周项目1-数组大折腾1 换行
- JBoss 日志级别修改
- 第十三周项目1---1
- 新奇特产品招商,98元就能用微信控制你家家电、灯光、电饭锅的产品