c++实训(3)

1.动态申请结构体数组
定义结构体PERSON 表示一个人的基本信息,成员包含姓名(char),性别(char),年龄(int)。在主函数中输入正整数n,动态申请能存放n 个人的基本信息的存储空间,通过指针输入若干人的信息,输入三个 0 时表示结束,通过指针逆序输出这些人的信息。实际人数不超过 n,字符串的比较可以使用字符串处理库函数。
运行结果如下:
c++实训(3)_第1张图片
程序如下:

#include
#include
using namespace std;
struct student     //定义结构体
{
 char name[20];
 char sex[20];
 int age;
};
struct student *p;  //指针*p指向名为student的结构体
int main()
{
int n,i;
int count=0;
cin>>n;
student *stu=new student[n];  //动态申请储存空间
p=stu;
cin>>p->name>>p->sex>>p->age;
while(strcmp(p->name,"0")!=0&&strcmp(p->sex,"0")!=0&&p->age!=0)
{
count++;
p++;
cin>>p->name>>p->sex>>p->age;
}
p--;
while(p>=stu)
{
cout<<p->name<<p->sex<<p->age<<endl;
  p--;   //实现倒序输出
}
return 0;
}

2.用随机函数rand,
随机给出两个数,让使用程序的人求出两个数之和,可以求2次,对了则打印“真棒,算对了。”,否则显示“真遗憾,算错了”。
运行结果如下:
两次都错的情况:
c++实训(3)_第2张图片
有一次答对的情况:
c++实训(3)_第3张图片
程序如下:

#include
#include  //头文件,产生随机数
#include   //为保证种子不同,即用不同的时间
using namespace std;
int main()
{
int a,b,i,sum;
srand(time(0));  //设置种子
 a=rand()%100;     //%100让随机数变小,有无不产生影响    产生随机数
  cout<<"a="<<a<<endl;
  b=rand()%100;
  cout<<"b="<<b<<endl;
  i=0;
  while(1)
  {
 i++;
   if(i>2)
   {
 cout<<"超过两次了!";
   cout<<endl;
   break;
  }
  else
  {
  if(i==2)
    cout<<"最后一次机会!"<<endl;
       cout<<"请输入两个数之和:"<<endl;
    cin>>sum;
    if(sum=a+b)
    {
 cout<<"恭喜你,算对了"<<endl;
    break;
}
else
{
cout<<"很遗憾,你算错了"<<endl;
    if(i==2&&sum!=a+b)
    cout<<"正确答案是:"<<a+b<<endl;
}
}
  }
}

知识补充:
srand是种下的随机种子数,你每回种下的种子不一样,用rand得到的随机数就不一样,为了每回种下不一样的种子,所以就选用time(0),time(0)是得当前的值。(因为每时每刻的时间不一样)

3.职工信息处理
职工的信息有姓名char *name、年龄 int age、工龄 int workage、性别 char sex sex=’F’ sex=’M’、婚姻状况 bool marrage marrage=true magrrage=false 、级别 int grade 、工资 salary 、在职否 bool tired tired=true tired=false 。现在要进行工资的调整,规定凡是退休职工一律增加工资50元,在职1~5级职工的工资分别增加20、40、60、80、100元。编程实现上述工资调整。
要求如下:
(1)分析要存放的信息,设计合适的数据结构;(2)分析要对信息进行的操作,进行处理;
(3)打印程序执行前后的工资状况和级别。

#include
using namespace std;
struct worker  //struct和class基本一致,struct默认访问权限为public,而 class是private
{char *name;
int age;
int workage;
char sex;
bool marrage;
int grade;
double salary;
bool tired;
}
wor[4]={{"a",60,40,'m',true,5,450,true},{"b",56,26,'f',true,3,560,false},{"c",66,13,'n',true,4,500,true},{"d",30,15,'f',true,2,645,false}}; //数据初始化
int main()
{
int i;
cout<<"before change vage!"<<endl;
for(i=0;i<4;i++)
cout<<wor[i].name<<'\t'<<wor[i].age<<'\t'<<wor[i].workage<<'\t'<<wor[i].sex<<'\t'<<wor[i].marrage<<'\t'<<wor[i].grade<<'\t'<<wor[i].salary<<'\t'<<wor[i].tired<<endl;
cout<<"after change vage!"<<endl;
for(i=0;i<4;i++)
{
  if(wor[i].tired==true)
   wor[i].salary +=50;  //退休职工 工资加50
  else
  wor[i].salary +=wor[i].grade *20;//根据等级加工资
}
for(i=0;i<4;i++)
cout<<wor[i].name<<'\t'<<wor[i].age<<'\t'<<wor[i].workage<<'\t'<<wor[i].sex<<'\t'<<wor[i].marrage<<'\t'<<wor[i].grade<<'\t'<<wor[i].salary<<'\t'<<wor[i].tired<<endl;
return 0;
}  //'\t'水平制表(tab=4个空格)

你可能感兴趣的:(c++实训(3))