结构 体数组及指针的定义与使用
采用结构体数组编写程序,定义- -个含职工姓名、工作年限、工资总额的结构体类型,从键盘输入5名职工的信息,最后再对工作年限超过30年的职工加1000元工资,并输出工资变化后的所有职工的信息
解题思路:
(1) 定义职工结构体类型及结构体数组
(2) 从键盘输入职工的初始化信息
(3)循环判断每一名职工的年限是否大于等于30, 若符合条件,就将工资总额加1000(4)循环控制输出每名职工的信息
代码如下:
#include <stdio.h>
struct worker {
char name[20];
int years;
int total_salary;
};
int main() {
struct worker staff[5];
// 从键盘输入职工的初始化信息
for (int i = 0; i < 5; i++) {
printf("请输入第%d名职工的姓名、工作年限和工资总额:\n", i + 1);
scanf("%s %d %d", staff[i].name, staff[i].years, staff[i].total_salary);
}
// 循环判断每一名职工的年限是否大于等于30
for (int i = 0; i < 5; i++) {
if (staff[i].years >= 30) {
staff[i].total_salary += 1000;
}
}
// 输出工资变化后的所有职工的信息
for (int i = 0; i < 5; i++) {
printf("%s\t%d\t%d\n", staff[i].name, staff[i].years, staff[i].total_salary);
}
return 0;
}
该程序首先定义了一个名为worker的结构体类型,其中包含职工的姓名、工作年限和工资总额三个字段。然后在main函数中定义了一个名为staff的职工结构体数组,并通过循环从键盘输入了5名职工的初始化信息。接着,程序又使用循环遍历了每一个职工的工作年限,并对工作年限超过30年的职工加了1000元工资。最后,程序输出了工资变化后的所有职工的信息。
需要注意的是,输入职工姓名时可能出现带有空格的情况,因此需要使用scanf函数的%s格式化字符串来读取姓名。另外,需要使用\t制表符来格式化输出职工信息。
编程基础第六版 课后题
代码如下
#include <stdio.h>
#include <math.h>
int main()
{
int i,j,t;
int a[15];
int x,l,h,mid,n;
n=15;
l=0;
h=n-1;
printf("请输入15个不同数字,按一次输入一个,依次输入15次的方法输入数字:\n");
for(i=0;i<15;i++)
scanf("%d",&a[i]);
for(j=0;j<14;j++)
{
for(i=0;i<14-j;i++) //这里我第一次写也忽略了j要不断的去替换i,所以对于i来说它的循环条件应该是14-j,有好多人可能和我一样写成i<15啦
if( a[i]<a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
printf("按从大到小的排序结果:");
for( i=0;i<15;i++)
printf("%d\t",a[i]);
printf("\n");
for (l=0, h=14, printf("请输入一个数:"), scanf("%d", &x); l<=h;)//while也可以但是我很奇怪用while会提前退出循环哈哈哈
{
mid=(l+h)%2;
if (x>a[mid])h=mid-1;
else if (x<a[mid])l=mid+1;
else
{
printf("%d是第%d位数",x,mid+1);
break;
}
}
if(x!=a[mid])
printf("查无此数!");
return 0;
}