第7章 7-8题

来源:互联网 发布:smtp 端口 编辑:程序博客网 时间:2024/06/03 20:58
第7题

#include<iostream>
const int MAX = 5;
using namespace std;
const double* fill_array(double ar[] , int limit); //填充数组函数
void show_array(const double ar[] , const double* last); //显示数组
void change_array(int r , double ar[] , const double* last);
int main()
{
double oldHouse[MAX];
const double* lastHouse = fill_array(oldHouse,MAX); //填充
show_array(oldHouse,lastHouse); //第一次显示
change_array(3,oldHouse,lastHouse); //因子随便选了个数字3,只是为了说明程序功能
show_array(oldHouse,lastHouse); //显示X因子后的数组
return 0;
}
const double* fill_array(double ar[] , int limit)
{
double num = 0;
int size = 0;
for(int i = 0 ; i < limit ; ++i)
{
cout<<"请输入第"<<i+1<<"个数.";
cin>>num;
if(!cin) //判断输入是否位double,如果输入非法结束
{
cin.clear();
while(cin.get() != '\n')
continue;
cout<<"输入非法数据,填充结束\n";
ar[size] = 0; //这两行作用:第一个输入为非法,则该数组默认第一个数值位0,避免段错误,下同
++size; //这两行如果注释掉,那第一个输入错误或为负,程序就会出错
break;
}
else if(num < 0) //输入负数,控制结束
{
cout<<"数组填充完成.\n";
ar[size] = 0; //同上
++size;
break;
}
ar[size] = num;
++size;
}
return &(ar[size-1]);
}
void show_array(const double ar[] , const double* last)
{
cout<<"显示数组\n";
const double* mid = ar;
for(int i = 0 ; ; ++i) //省略掉判断条件,作为无限循环
{
cout<<"第"<<i+1<<"个数为"<<ar[i]<<endl;
if((mid+i) == last)
break;
}
}
void change_array(int r , double ar[] , const double* last)
{
for(int i = 0 ; ; ++i)
{
ar[i] *= r;
if(ar+i == last)
break;
}
}


第8题 第1小题

#include<iostream>
using namespace std;
const int season = 4;
const char* seasonName[season] = {"Sprint","Summer","Fall","Winner"}; //c++11
void fillArray(double* arr , int season);
void showArray(const double* arr , int season);
int main()
{
double InSeason[season];
fillArray(InSeason,season);
showArray(InSeason,season);
return 0;
}
void fillArray(double* arr , int season)
{
for(int i = 0 ; i < season ; ++i)
{
cout<<"请输入"<<*(seasonName+i)<<"的收入.";
cin>>*(arr+i);
}
}
void showArray(const double* arr , int season)
{
double cost = 0;
for(int i = 0 ; i < season ; ++i)
{
cout<<*(seasonName+i)<<"收入为"<<*(arr+i)<<"\n";
cost += *(arr+i);
}
cout<<"总收入:"<<cost;
}


第8题第2小题

#include<iostream>
using namespace std;
const int season = 4;
const char* seasonName[season] = {"Sprint","Summer","Fall","Winner"};
struct inCome
{
double takeIn[season];
};
void fillArray(inCome* re);
void showArray(const inCome* re);
int main()
{
inCome gets;
fillArray(&gets);
showArray(&gets);
return 0;
}
void fillArray(inCome* re)
{
for(int i = 0 ; i < season ; ++i)
{
cout<<"请输入"<<*(seasonName+i)<<"的收入:";
cin>>re->takeIn[i];
}
}
void showArray(const inCome* re)
{
double cost = 0;
for(int i = 0 ; i < season ; ++i)
{
cout<<*(seasonName+i)<<"的收入为"<<re->takeIn[i]<<endl;
cost += re->takeIn[i];
}
cout<<"总收入为"<<cost;
}

0 0
原创粉丝点击