第四周《C语言及程序设计》实践项目11 体验结构体

【项目1-复数结构体】

/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目1-复数结构体】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 9 月 17 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:编写一个程序,首先定义一个复数数据类型,即结构类型。然后按照复数的运算规则进行计算,并按照复数表示的格式进行输出,请将程序补充完整。
 */
#include<stdio.h>
struct complex
{
	int re;
	int im;
};
int main()
{
	struct complex x,y,s,p;
	scanf("%d%d",&x.re,&x.im);
	scanf("%d%d",&y.re,&y.im);
	s.re=x.re+y.re;
	s.im=x.im+y.im;
	printf("sum=%5d+%5d\n",s.re,s.im);
	p.re=x.im*y.im+x.re+y.re;
	p.im=x.re*y.im+x.im*y.re;
	printf("product=%5d+%5d\n",p.re,p.im); 
	
	return 0;
 }

运行结果



【项目2-学生成绩处理】
/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目2-学生成绩处理】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 9 月 17 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:(1)定义学生结构体,在结构体数组中,输入了学生学号和两门课的成绩,计算均分后,输出成绩单,请在下面的程序基础上,将程序补充完整。 
 */
#include<stdio.h>
#define N 100
struct Student 
{
	int num;//学号 
	int c;//c语言成绩 
	int math;
	float aver;//两课平均分 
};
int main()
{
	int n,i,pass=0;
	struct Student stu[N];
	printf("请输入学生人数:");
	scanf("%d",&n);
	printf("请输入学号,C和数学课的成绩:\n");
	for(i=0;i<n;i++)
	{
		scanf("%d %d %d",&stu[i].num,&stu[i].c,&stu[i].math);
		stu[i].aver=(stu[i].c+stu[i].math)/2;//求出两门课的平均数
		if(stu[i].c>=60&&stu[i].math>=60)
		  pass++;
	}
	//输出成绩单
	printf("成绩单:\n");
	printf("学号\tC\t数学\t均分\n");
	for(i=0;i<n;i++)
	  printf("%d\t%d\t%d\t%.2lf\n",stu[i].num,stu[i].c,stu[i].math,stu[i].aver); 
    //及格的人数
	printf("两门课都及格了的人数有:%d\n",pass); 
	return 0; 
}

运行结果


【项目2-学生成绩处理】2
/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目2-学生成绩处理】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 9 月 17 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:(2)请在上面的程序的基础上增加功能,使运行结果如下图: 
 *其中,需要做出的改动是:

 *计算每名学生的学分绩——各科成绩乘以学分的和,再除以总学分(本题中,C语言和数学课的学分分别是3和4);
 *计算各科的均分;
 *输出得奖学金的同学学号清单——奖学金规则是,学分绩要高于80且没有挂科。 
 */
#include<stdio.h>
#define N 100
struct Student 
{
	int num;//学号 
	int c;//c语言成绩 
	int math;
	float aver;//学分绩 
};
int main()
{
	int n,i,sum1=0,sum2=0;
	float ave1=0,ave2=0;
	struct Student stu[N];
	printf("请输入学生人数:");
	scanf("%d",&n);
	printf("请输入学号,C和数学课的成绩:\n");
	for(i=0;i<n;i++)
	{
		scanf("%d %d %d",&stu[i].num,&stu[i].c,&stu[i].math);
		stu[i].aver=(stu[i].c*3+stu[i].math*4)/7;//学分绩 
		sum1+=stu[i].c;
		sum2+=stu[i].math;
		ave1=sum1/n;
		ave2=sum2/n;  
	}
	//输出成绩单
	printf("成绩单:\n");
	printf("学号\tC\t数学\t学分绩\n");
	for(i=0;i<n;i++)
	  printf("%d\t%d\t%d\t%.2lf\n",stu[i].num,stu[i].c,stu[i].math,stu[i].aver); 
	printf("科均分\t%.2lf\t%.2lf\n",ave1,ave2);
	//求学号
	printf("得奖学金的同学的学号是:\n");
	for(i=0;i<n;i++)
	{
		if(stu[i].aver>=80&&stu[i].c>=60&&stu[i].math>=60)
		printf("%d",stu[i].num);
	 } 
    
	return 0; 
}
运行结果

【项目3-点结构体】
/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目3-点结构体】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 9 月 17 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:下面定义了一个表示平面上一点的结构体类型:
 *(1)请编写程序,输入一点的横纵坐标,输出该点到原点的距离 
 *(2)请编写程序,输入两点p1和p2的坐标,输出两点之间的距离,以及p1关于x轴的对称点,p2关于原点的对称点,运行结果如下图所示: 
 */
#include<stdio.h>
#include<math.h>
struct Point
{
	float x;//横坐标 
	float y;//纵坐标 
};
int main() 
{
	struct Point p1,p2;
 	float distance,d1,d2;//自己开始还想一口气直接把距离求出来,其实再设两个变量更好 
	printf("请输入p1点的坐标:\n");
	scanf("%f %f",&p1.x,&p1.y);
	printf("请输入P2点的坐标:\n"); 
	scanf("%f %f",&p2.x,&p2.y);
	d1 = p1.x-p2.x;
	d2 = p1.y-p2.y;
	distance = sqrt(p1.x*p2.x+p1.y*p2.y);
	printf("两点间的距离是:%.2f\n",distance);
	printf("P1关于x轴的对称点是(%.1f,%.1f)\n",p1.x,-p1.y);
	printf("P1关于原点的对称点是(%.1f,%.1f)\n",-p2.x,-p2.y);
	
	return 0;
}

运行结果

【项目4-体重监测器】

/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目4-体重监测器】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 9 月 17 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:根据世界卫生组织推荐的体重标准,男性的标准体重=(身高cm-80)×70﹪,女性的标准体重=(身高cm-70)×60﹪。
 *标准体重正负10﹪为正常体重;标准体重正负10﹪~ 20﹪为体重过重或过轻;标准体重正负20﹪以上为肥胖或体重不足,其中超重计算公式为:超重(%)=[(实际体重-标准体重)/(标准体重)]×100%,体重的单位是kg。 
 *请编程序,输入一个人的姓名、性别、身高、体重,用一句人性味浓的话语输出其体重情况(正常、过重、过轻、肥胖或体重不足),这个程序可以用于体重计上为人们实时报告体重情况。 
 *要求使用下面的结构体类型表示人的相关信息。
 */
#include<stdio.h>
struct Person
{
	char name[20];
	char sex;
	double height;
	double weight;
 } ;
int main()
{
	struct Person p;
	float s;//标准体重 
	printf("请输入您的姓名,性别,身高,体重:");
	scanf("%s %s %lf %lf",&p.name,&p.sex,&p.height,&p.weight);
	if(p.sex=='F')
	{
		s=(p.height-70)*0.6; 
	}
	else if(p.sex=='M')
	{
		s=(p.height-80)*0.7;
	}
	else
	{
		printf("你输错了!!!\n");
	}
	//判断是否超重
	if(p.weight>=0.9*s&&p.weight<=1.1*s)
	{
		printf("ver well,恭喜恭喜,你的体重是正常水平!!!");
	 } 
	else if(p.weight>=0.8*s&&p.weight<=0.9*s)
	{
		printf("你这体重有点偏轻啊!咋回事?不会是撸多了肾虚了?"); 
	 }
	else if(p.weight>=1.1*s&&p.weight<=1.2*s) 
	{
		printf("你这体重有点偏胖啊!要注意!"); 
	}
	else if(p.weight<0.8*s)
	{
		printf("你要我怎么说你???你咋不上天呢?"); 
	}
	else if(p.weight>1.2*s)
	{
		printf("你可以把地压塌了,有潜质!"); 
	 } 
	return 0; 
}

运行结果



后面的我看了看都差不多,就不浪费时间了(其实是我懒,逃。。。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值