C语言实验 结构体

结构体
实验目的
(1)掌握结构变量的基本使用方法
(2)掌握结构数组的基本使用方法
(3)掌握结构的简单嵌套应用
(4)掌握结构指针的概念、及结构指针作为函数参数的编程方法
实验条件:
PC 计算机,Windows7 或 Windows10 操作系统,Office2010 及以上版本,
Dev-C++5.11 及以上版本或 Code Blocks16.01 及以上版本。
实验内容

  1. 程序调试
    计算职工工资:输入一个整数 n(3≤n≤10),再输入 n 个职员的信息(如 表 11.1),要求输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资 -支出)。
    在这里插入图片描述

源程序(有错误)

#include<stdio.h> 
int main() 
{ 
	struct emp { 
	char name[10]; 
	float element_salary; 
	float performance_salary; 
	float deductions; 
	};
	emp s[10]; 
	int i,n; 
	printf("n= "); 
	scanf("%d", &n); 
	for (i=0; i<n;i++) 
	{ 
	scanf("%s %f %f %f", s[i].name, s[i].&element_salary 
		s[i].&performance_salary, s[i].&deductions); 
	}
	for (i=0; i<n;i++) 
	{ 
	printf("%s 实发工资%f\n", 
	s[i].name, s[i].element_salary+ 
	s[i].performance_salary- s[i].&deductions); 
	}
	return 0; 
}

程序清单如下:

#include<stdio.h> 
int main() 
{ 
	struct emp { 
	char name[10]; 
	float element_salary; 
	float performance_salary; 
	float deductions; 
};
struct emp s[10]; 
int i,n; 
printf("n= "); 
scanf("%d", &n); 
for (i=0; i<n;i++) 
{ 
	scanf("%s %f %f %f", s[i].name, &s[i].element_salary,//.的优先 级高于&
	&s[i].performance_salary, &s[i].deductions); 
}
for (i=0; i<n;i++) 
{ 
	printf("%s 实发工资%f\n", 
	s[i].name, s[i].element_salary+ 
	s[i].performance_salary- s[i].deductions); 
	}
return 0; 
}

该程序的运行结果如图一所示:
在这里插入图片描述
图一
2.基础编程
(1)计算两个复数之积:利用结构变量求解两个复数之积,输入复数的实
部与虚部都为整数。
样例输入:3+4i
5+6i
样例输出:-9+38i
程序清单如下:

#include<stdio.h> 
struct 
number 
{ 
	int a; 
	char b; 
	int c; 
	char d; 
};
void input(struct number *p,struct number *q); 
void outputresult(struct number *m,struct number *n,struct number *k); 
int main() 
{ 
	struct number x,y,z; 
	input(&x,&y); 
	outputresult(&x,&y,&z); 
	printf("%d%c%d%c",z.a,z.b,z.c,z.d); 
	return 0; 
}
void input(struct number *p,struct number *q) 
{ 
	printf("Please input frist complex:"); 
	scanf("%d%c%d%c",&p->a,&p->b,&p->c,&p->d);printf("Please input second complex:"); 
	scanf("%d%c%d%c",&q->a,&q->b,&q->c,&q->d); 
}
void outputresult(struct number *m,struct number *n,struct number *k) 
{ 
	k->a=(m->a)*(n->a)-(m->c)*(n->c); 
	k->c=(m->a)*(n->c)+(m->c)*(n->a); 
	k->d='i'; 
	if(m->b=='+'&&n->b=='+') 
	{ 
		k->b='+'; 
	}
	else if(m->b=='-'&&n->b=='-') 
	{ 
		k->b='+'; 
	}
	else if((m->b=='+'&&n->b=='-')||m->b=='-'&&n->b=='+') 
	{ 
		k->b='-'; 
	} 
}

该程序的运行结果如图二所示:
在这里插入图片描述

图二
(2)查找书籍:从键盘输入 n(n<10)本书的书名和定价存入结构数组中,
从中查找定价最高和定价最低的书的名称和定价,并输出。试编写相应的程序。
样例输入:3
programming
in
C 21.5
programming
in
Java 18.5
programming
in
Python
30.0
样例输出:30.00,
programming
in
Python
18.50,
programming
in
Java
程序清单如下:

#include<stdio.h>struct book 
{ 
char bookname[10]; 
float price; 
};
void output(struct book x[],int n,struct book temp); 
int main() 
{ 
	struct book x[10],temp; 
	int n,i; 
	scanf("%d",&n); 
	for(i=0;i<n;i++) 
	{ 
		printf("programming in "); 
		scanf(" %s",&x[i].bookname); 
		scanf(" %f",&x[i].price); 
	}
	output(x,n,temp); 
	return 0; 
}
void output(struct book x[],int n,struct book temp) 
{ 
	int i,j,k; 
	for(i=0;i<n-1;i++) 
	{ 
		k=i; 
		for(j=i+1;j<n;j++) 
		{ 
			if(x[j].price>x[i].price) 
			{ 
			k=j; 
			} 
		}
		if(k!=i) 
			{temp=x[k]; 
			x[k]=x[i]; 
			x[i]=temp; 
			} 
		}
	printf("%.2f,programming in %s \n",x[0].price,x[0].bookname); 
		while(getchar()!='\n'); 
			printf("%.2f,programming in %s \n",x[n-1].price,x[n-1].bookname); 
}

该程序的运行结果如图三所示:
在这里插入图片描述

图三

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xlorb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值