提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
有关宏的问题的一些解答
一、题目
二、代码解答
1.1-4的代码解答
代码如下(示例):
1.#include<iostream>
#include<iomanip>
using namespace std;
struct student
{
int num;
char name[20];
float score;
};
student Input()
{
student stud;
cout<<"请输入学号,姓名和成绩:";
cin>>stud.num>>stud.name>>stud.score;
return stud;
}
void Output(student stud)
{
cout<<setw(10)<<stud.num<<setw(20)<<stud.name<<setw(10)<<stud.score<<endl;
}
void high(student stud)
{
cout<<"最高分同学:"<<endl;
cout<<setw(10)<<stud.num<<setw(20)<<stud.name<<setw(10)<<stud.score<<endl;
}
int main()
{
int i,t=0,n=3;
student stud[3];
for(i=0;i<n;i++)
stud[i]=Input();
cout<<setw(10)<<"学号"<<setw(20)<<"姓名"<<setw(10)<<"成绩"<<endl;
for(i=0;i<n;i++)
Output(stud[i]);
cout<<endl;
for(i=0;i<n;i++)
{
if(stud[i].score<stud[i+1].score) t=i+1;
}
high(stud[t]);
return 0;
}
2.#include<iostream>
#include<iomanip>
using namespace std;
struct time
{
int year;
int month;
int day;
};
time Input()
{
time ti;
cout<<"请输入年月日:";
cin>>ti.year>>ti.month>>ti.day;
return ti;
}
int run(int i)
{
int a,b,c;
a=i%4;
b=i%100;
c=i%400;
if(a==0&&b!=0) return 1;
else if(c==0) return 1;
else return 0;
}
int yue(int x)
{
int y;
switch(x)
{
case 1:y=31;break;
case 2:y=28;break;
case 3:y=31;break;
case 4:y=30;break;
case 5:y=31;break;
case 6:y=30;break;
case 7:y=31;break;
case 8:y=31;break;
case 9:y=30;break;
case 10:y=31;break;
case 11:y=30;break;
case 12:y=31;break;
}
return y;
}
void Output(time ti)
{
int i=1,y,sum=0;
if(run(ti.year))
{
for(i=1;i<ti.month;i++)
{
y=yue(i);
if(i=2) y=y+1;
sum=sum+y;
}
}
else
{
for(i=1;i<ti.month;i++)
{
y=yue(i);
sum=sum+y;
}
}
sum=sum+ti.day;
cout<<"这是这一年的第"<<sum<<"天。"<<endl;
}
int main()
{
time ti[1];
ti[0]=Input();
Output(ti[0]);
return 0;
}
3.#include<iostream>
#include<iomanip>
using namespace std;
struct student
{
int num;
char name[20];
float math;
float chinese;
float english;
float music;
float biology;
};
student input()
{
student stud;
cout<<"请输入学号姓名和五科成绩:";
cin>>stud.num>>stud.name>>stud.math>>stud.chinese>>stud.english>>stud.music>>stud.biology;
return stud;
}
void output(student stud)
{
cout<<setw(10)<<stud.num<<setw(20)<<stud.name<<setw(10)<<stud.math<<setw(10)<<stud.chinese<<setw(10)<<stud.english<<setw(10)<<stud.music<<setw(10)<<stud.biology<<endl;
}
int main()
{
int i;
student stud[3];
for(i=0;i<3;i++)
stud[i]=input();
cout<<setw(10)<<"学号"<<setw(20)<<"姓名"<<setw(10)<<"数学"<<setw(10)<<"语文"<<setw(10)<<"英语"<<setw(10)<<"音乐"<<setw(10)<<"生物"<<endl;
for(i=0;i<3;i++)
output(stud[i]);
cout<<endl;
return 0;
}
4.#include<iostream>
#include<iomanip>
using namespace std;
#define N 3
struct student
{
int num;
char name[20];
char address[40];
char phone[12];
char email[40];
};
student input()
{
student stud;
cout<<"请输入学号,姓名,家庭住址,电话号码和邮箱地址:";
cin>>stud.num>>stud.name>>stud.address>>stud.phone>>stud.email;
return stud;
}
void output(student stud)
{
cout<<setw(10)<<stud.num<<setw(20)<<stud.name<<setw(20)<<stud.address<<setw(20)<<stud.phone<<setw(20)<<stud.email<<endl;
}
int main()
{
int i;
student stud[N];
for(i=0;i<3;i++)
stud[i]=input();
cout<<setw(10)<<"学号"<<setw(20)<<"姓名"<<setw(20)<<"家庭住址"<<setw(20)<<"电话号码"<<setw(20)<<"邮箱地址"<<endl;
for(i=0;i<3;i++)
output(stud[i]);
cout<<endl;
return 0;
}
2.5-8的代码解答
代码如下(示例):
5.#include<iostream>
#include<cmath>
using namespace std;
struct kkkk
{
int x;
int y;
int z;
} a,b;
int main()
{
double l;
cout<<"请输入六个整数:"<<endl;
cin>>a.x;
cin>>a.y;
cin>>a.z;
cin>>b.x;
cin>>b.y;
cin>>b.z;
l=sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z));
cout<<l<<endl;
return 0;
}
6.#include<iostream>
#include<iomanip>
using namespace std;
struct fushu
{
int shi;
int xv;
};
fushu input()
{
fushu fs;
cout<<"请输入实部和虚部:";
cin>>fs.shi>>fs.xv;
return fs;
}
void output(fushu fs)
{
if(fs.shi==0&&fs.xv==0) cout<<"0"<<endl;
else
{
if(fs.shi==0) cout<<fs.xv<<"i"<<endl;
else
{
if(fs.xv>0) cout<<fs.shi<<"+"<<fs.xv<<"i"<<endl;
if(fs.xv==0) cout<<fs.shi<<endl;
if(fs.xv<0) cout<<fs.shi<<"-"<<fs.xv<<"i"<<endl;
}
}
}
void jian(fushu fs1,fushu fs2)
{
int x,y;
x=fs1.shi-fs2.shi;
y=fs1.xv-fs2.xv;
if(x==0&&y==0) cout<<"0"<<endl;
else
{
if(x==0) cout<<y<<"i"<<endl;
else
{
if(y>0) cout<<x<<"+"<<y<<"i"<<endl;
if(y==0) cout<<x<<endl;
if(y<0) cout<<x<<"-"<<y<<"i"<<endl;
}
}
}
void add(fushu fs1,fushu fs2)
{
int x,y;
x=fs1.shi+fs2.shi;
y=fs1.xv+fs2.xv;
if(x==0&&y==0) cout<<"0"<<endl;
else
{
if(x==0) cout<<y<<"i"<<endl;
else
{
if(y>0) cout<<x<<"+"<<y<<"i"<<endl;
if(y==0) cout<<x<<endl;
if(y<0) cout<<x<<"-"<<y<<"i"<<endl;
}
}
}
int main()
{
int i;
fushu fs[2];
for(i=0;i<2;i++)
fs[i]=input();
for(i=0;i<2;i++)
{
cout<<"该复数为:";
output(fs[i]);
}
cout<<"两者之和为:";
add(fs[0],fs[1]);
cout<<"两者之差为:";
jian(fs[0],fs[1]);
cout<<endl;
return 0;
}
7.#include<iostream>
#include<iomanip>
using namespace std;
enum color{Monday,Tuesday,Wesnday,Thursday,Friday,Saturday,Sunday};
void print (color c)
{
switch(c)
{
case Monday:cout<<setw(10)<<"Monday"<<endl;break;
case Tuesday:cout<<setw(10)<<"Tuesday"<<endl;break;
case Wesnday:cout<<setw(10)<<"Wesnday"<<endl;break;
case Thursday:cout<<setw(10)<<"Thursday"<<endl;break;
case Friday:cout<<setw(10)<<"Friday"<<endl;break;
case Saturday:cout<<setw(10)<<"Saturday"<<endl;break;
case Sunday:cout<<setw(10)<<"Sunday"<<endl;break;
}
}
int main()
{
int j=100;
color i;
int m;
cin>>m;
i=color(m);
for(;j>0;j--)
{
print(i);
if(i==Sunday) i=Monday;
else i=color(int(i)+1);
}
cout<<endl;
cout<<"今天是:"<<'\t';
print(i);
cout<<endl;
return 0;
}
8.#include<iostream>
#include<iomanip>
using namespace std;
enum color{Red,Blue,Green};
void print (color c)
{
switch(c)
{
case Red:cout<<setw(10)<<"Red";break;
case Blue:cout<<setw(10)<<"Blue";break;
case Green:cout<<setw(10)<<"Green";break;
}
}
int main()
{
int count=0;
color i,j,k;
for(i=Red;i<=Green;i=color(int(i)+1))
for(j=Red;j<=Green;j=color(int(j)+1))
if(i!=j)
for(k=Red;k<=Green;k=color(int(k)+1))
if((k!=i)&&(k!=j))
{
cout<<setw(10)<<++count;
print(i);
print(j);
print(k);
cout<<endl;
}
cout<<"所有的可能数为:"<<count<<endl;
return 0;
}