《C语言及程序设计》实践项目——初练结构体

    xiaoxiao2025-11-07  15

    返回:贺老师课程教学链接

    【项目1-复数结构体】

    编写一个程序,首先定义一个复数数据类型,即结构类型。然后按照复数的运算规则进行计算,并按照复数表示的格式进行输出,请将程序补充完整。

    #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是复数xy的和 s.re=_______(1)_______; s.im=_______(2)_______; printf(" sum=]+]i\n",s.re,s.im); //复数p是复数xy的积 p.re=_______(3)_______; p.im=x.re*y.im+x.im*y.re; printf(" product=]+]i\n",p.re,p.im); return 0; }

    [参考解答]


    【项目2-学生成绩处理】

    (1)定义学生结构体,在结构体数组中,输入了学生学号和两门课的成绩,计算均分后,输出成绩单,请在下面的程序基础上,将程序补充完整。

    #include <stdio.h> #define N 100 /*N表示最多允许的学生人数*/ struct Student { int num; //学号 int c; //C语言成绩 int math; //数学成绩 float aver; //两科均分 }; int main( ) { int n; //定义结构体数组存放多名同学的成绩 struct Student stu[N]; printf("请输入学生人数: "); scanf("%d", &n); printf("请输入学号、C和数学课的成绩: \n"); //输入数据 //输出成绩单 return 0; }

    (2)请在上面的程序的基础上增加功能,使运行结果如下图: 其中,需要做出的改动是:

    计算每名学生的学分绩——各科成绩乘以学分的和,再除以总学分(本题中,C语言和数学课的学分分别是3和4); 计算各科的均分;输出得奖学金的同学学号清单——奖学金规则是,学分绩要高于80且没有挂科。 [参考解答]

    【项目3-点结构体】

    下面定义了一个表示平面上一点的结构体类型:

    struct Point { float x; //横坐标 float y; //纵坐标 };

    (1)请编写程序,输入一点的横纵坐标,输出该点到原点的距离 (2)请编写程序,输入两点p1和p2的坐标,输出两点之间的距离,以及p1关于x轴的对称点,p2关于原点的对称点,运行结果如下图所示: [参考解答]


    【项目4-体重监测器】

    根据世界卫生组织推荐的体重标准,男性的标准体重=(身高cm-80)×70﹪,女性的标准体重=(身高cm-70)×60﹪。标准体重正负10﹪为正常体重;标准体重正负10﹪~ 20﹪为体重过重或过轻;标准体重正负20﹪以上为肥胖或体重不足,其中超重计算公式为:超重(%)=[(实际体重-标准体重)/(标准体重)]×100%,体重的单位是kg。 请编程序,输入一个人的姓名、性别、身高、体重,用一句人性味浓的话语输出其体重情况(正常、过重、过轻、肥胖或体重不足),这个程序可以用于体重计上为人们实时报告体重情况。 要求使用下面的结构体类型表示人的相关信息。

    struct Person { char name[20]; char sex; //'F'-女,'M'-男 double height; //cm double weight; //kg };

    [参考解答]


    【项目5-个税计算器之码数分离】

    在学习分支结构时,我们做过一个个人所得税计算器if语句版,在其中,税率等数据直接写进了程序。这并不是一个好的方案。 下面定义了一个结构体数组,保存各个收入范围个税计算的基础数据,这样,一定程度上,将代码与数据分离,这是工程中常见的做法。 请先对照附后的个人所得税计算方法,理解下面的结构体数组:

    struct TaxNode { int payTax; double rate; int deducted; } taxNode[10]= { {0,0.03,0}, {1500,0.10,105}, {4500,0.20,555}, {9000,0.25,1005}, {35000,0.30,2755}, {55000,0.35,5505}, {80000,0.45,13505} };

    编写程序,利用这个结构体数组,输入个人月收入总额,计算并输出他本月应缴税款和税后收入。 附:关于个人所得税的有关背景知识 计算方法:个人所得税=(收入总额-3500)*税率-速算扣除数 从2011年9月1日起,我国个人所得税起征点基数为3500元,超出部分按以下7级计算。 计算。

    序号收入范围税率速算扣除数1超过0至15003超过1500元至4500元的部分1053超过4500元至9000元的部分20U54超过9,000元至35,000元的部分25055超过35,000元至55,000元的部分30'556超过55,000元至80,000元的部分35U057超过80,000以上45505

    例如:王某月收入总额3600元,个人所得税=(3600-3500)*3%=3元; 再例:李某月收入13500元,个人所得税=(13500-3500)*25%-1005=2500-1005=1495元。 更多了解速算扣除数,请找百度百科。 [参考解答]


    【项目6-日期结构体】

    (1)定义一个结构体变量(包括年、月、日),要求输入年、月、日,计算输出该日是该年的第几天。

    #include <stdio.h> struct Date { int year; int month; int day; }; int main() { struct Date date; printf("input year,month,day:"); scanf("%d %d %d", &date.year, &date.month, &date.day); int days; //计算days printf("%d%d日是%d年的第%d天.\n", date.month, date.day, date.year, days); return 0; }

    (2)输入两个人的生日,求出他们相差多少天。 [参考解答]


    【项目7-紧急救援】

    洪水突降,人们被困在各个屋顶上。如图所示: 救生船每次将从大本营出发,救了人之后将人送回大本营。已知救生船速度50米/分钟,逐个屋顶救人,每人上船1分钟,下船0.5分钟。以救援大本营为原点,输入每个屋顶的位置坐标和屋顶上的人数,求出所有人都到达大本营并登陆所用的时间。 要求使用结构体表示屋顶的坐标和人数。 [参考解答]

    相关资源:python入门教程(PDF版)
    最新回复(0)