c语言程序设计及实验指导练习及习题参考答案,C语言程序设计及实验指导练习及习题参考答案(8--10)...

return 0; }

5.写出下面程序的运行结果 23, wang, 98.5, wang 。 struct abc{ int a; float b; char *c; }; int main(void) {

struct abc x = {23,98.5,\struct abc *px = &x;

printf(\return 0; }

三、程序设计题

1.职工工资项目包括编号、姓名、基本工资、奖金、保险、实发工资,其中:实发工资 = 基

本工资 + 奖金 - 保险。输入10 个职工的前5 项信息,计算并输出其实发工资。 解答:

#include

struct employee{ /* 定义结构类型employee */ int num;

char name[20];

float jbgz, jj, bx, sfgz; };

int main(void) { int i;

struct employee e; /* 定义结构类型变量 e */ for(i = 1; i <= n; i++){

printf(\请输入第%d个职工的信息: \scanf(\

scanf(\e.sfgz = e.jbgz + e.jj - e.bx;

printf(\编号:%d 姓名:%s实发工资:%.2f\\n\}

return 0; }

2.中国有句俗话:“三天打鱼,两天晒网”。某人从1990 年1 月1 日起开始“三天打鱼, 两天晒网”,问这个人在以后的某一天(输入1 个天数)中是在“打鱼”,还是在“晒网”。 要求用结构形式定义日期(年、月、日)。 解答:

提示:先计算出输入的日期与1990 年1 月1 日相差的天数,然后求除5 后的余数,再 将余数对照“三天打鱼,两天晒网”,得出最后结论(注:若余数为0,则为“晒网”)。

#includestruct date{

int year, month, day; };

int day_tab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31}}; int main(void) {

struct date today;

int year, i, lp, count=0;

scanf(“%d%d%d”,&today.year, &today.month, &today.day); /*输入日期*/ /*计算相差天数*/

for(year=1990; yearlp= year%4==0&& year0!=0|| year@0==0; for(i=1; i<13; i++) count+=day_tab[lp][i]; }

lp= today.year%4==0&& today.year0!=0|| today.year@0==0; for(i=1; i/*求除5 后的余数,再将余数对照“三天打鱼,两天晒网”,得出最后结论 */ count=count%5;

if(count>=1&&count<=3) printf(“这一天是打鱼\\n”); else

printf(“这一天是晒网\\n”); return 0; }

3.利用结构变量求解两个复数之积: (3+4i) × (5+6i)。

提示:求解(a1+a2i)×(b1+b2i),乘积的实部为:a1×b1 - a2×b2,虚部为:a1×b2 + a2×b1。 解答:

#includestruct complex { int real, im; };

struct complex cmult(struct complex , struct complex); void main() {

struct complex a={3,4}, b={5,6}, c; c=cmult(a, b);

printf(“(%d+%di)×(%d+%di) =%d+%di\\n”, a.real, a.im, b.real, b.im, c.real, c.im); }

struct complex cmult(struct complex a , struct complex b) {

struct complex w;

w.real=a.real*b.real – a.im*b.im; w.im=a.real*b.im + a.im*b.real; return w; }

4.编写程序,从键盘输入10 本书的名称和定价并存入结构数组中,从中查找定价最高和最

低的书的名称和定价,并输出。 解答:

#include#define NUMBER 10 struct book

{ char name[10]; float price; };

int main() {

int i,maxl,minl;

struct book test[NUMBER];

printf(“Input 10 book?s name and price\\n”); for(i=0; iscanf(“%s%f”, test[i].name, &test[i].price); maxl=minl=0;

for(i=1; i{ if(test[maxl].pricetest[i].price) minl=i; }

printf(“Max Price: %f, %s\\n”, test[maxl].price, test[maxl].name); printf(“Min Price: %f, %s\\n”, test[minl].price, test[minl].name); return 0; }

5.建立一个通讯录结构,包括姓名、生日、电话号码以及住址。编写程序,输入n(n≤10) 个联系人信息,按照年龄从大到小依次显示他们的信息。 解答:

#includestruct friends_list{

char name[10]; /* 姓名 */ int birthday; /* 生日 */

char phone[15]; /* 电话号码 */ char address[50]; /* 住址 */ };

void sort(struct friends_list s[], int n) /*按生日日期从小到大排序*/

{ int i, j;

struct friends_list temp; for(i=1; iif(s[j].birthday > s[j+1].birthday)

{temp=s[j]; s[j]=s[j+1]; s[j+1]=temp; } }

int main(void) { int i, n;

struct friends_list friends[10]; scanf(“%d”, &n);

for(i=0; iscanf(\friends[i].address);

/*按年龄从大到小排序*/ sort(friends, n);

for(i=0;iprintf(\friends[i].address); return 0; }

6.输入10 个学生的学号、姓名和成绩,输出学生的成绩等级和不及格人数。每个学生的记

录包括学号、姓名、成绩和等级,要求定义和调用函数set_grade()根据学生成绩设置其等 级,并统计不及格人数,等级设置:85-100 为A,70-84 为B,60-69 为C,0-59 为D。 解答:

/* 设置学生成绩等级并统计不及格人数(结构指针作为函数参数) */ #include#define N 10 struct student{ int num;

char name[20]; int score; char grade; };

int set_grade(struct student *p); int main(void)

{ struct student stu[N], *ptr; int i, count; ptr = stu;

printf(\for(i = 0; i < N; i++){

printf(\提示输入第i 个同学的信息 */

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值