//某单位职工基本情况表如表所示。由于职工众多,现计划开发一款软件以提高管理效率,要求先输入职工原始信息,计算出各人实发工资(=基本工资+奖金),再按职工编号升序排序后输出以方便查看。
//请选择空白位置的全部正确答案
#include
#include
#define N 300000
int main()
{
struct info_type
{
int zgbh; //职工编号
char bm[11]; //部门
char xm[11]; //姓名
char xb[3]; //性别
char sfzh[19];//身份证号
char zc[11]; //职称
int jbgz; //基本工资
int jj; //奖金
int sfgz; //实发工资
};
int i,j,n;
struct info_type *p;
do//输入实际人数
{
printf("
请输入职工总数(1--%d):",N);
scanf("%d",&n);
}while((n<1)||(n>N));
//分配n+1份内存空间,每份大小为sizeof(struct info_type),多出的1份用于排序
p=(struct info_type *)malloc((n+1)*sizeof(struct info_type));
if(p==NULL)
printf("
内存空间的分配不成功!
");
else//内存分配成功,进行后续操作
{
printf("请逐个输入职工信息(职工编号 部门 姓名 性别 身份证号 职称 基本工资 奖金):
");
for(i=1;i<=n;i++)
{
printf("No.%d:",i);
scanf("%d%s%s%s%s%s%d%d",&p[i].zgbh,p[i].bm,p[i].xm,p[i].xb,p[i].sfzh,p[i].zc,&p[i].jbgz,&p[i].jj);
p[i].sfgz=p[i].jbgz+p[i].jj;
}
for(j=1;jp[i].zgbh)
{
________
}
printf("
职工基本信息表如下(按职工编号升序排列):
");
for(i=1;i<=n;i++)
printf("%10d%12s%12s%4s%20s%12s%6d%6d%6d
",p[i].zgbh,p[i].bm,p[i].xm,p[i].xb,p[i].sfzh,p[i].zc,p[i].jbgz,p[i].jj,p[i].sfgz);
free(p);
}
system("pause");
return 0;
}
举一反三
- 以下程序的输出结果为. main() {char *alpha[6]={"ab","cd","ef","gh","ij","kl"}; char **p; int i; p=alpha; for(i=0;i<4;i++) printf("%s",p[i]); printf("\n"); }
- 中国大学MOOC: 写出下面程序执行后的运行结果。#include <stdio.h>struct STU {char name[10];int num;int Score;};int main(){struct STU s[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},{"wangYin",20043,680},{"SunDan",20044,550},{"Penghua",20045,537}},*p[5],*t;int i,j;for(i=0;i<5;i++) p[i]=&s[i];for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(p[i]->Score>p[j]->Score){ t=p[i]; p[i]=p[j]; p[j]=t;}printf("%d %d",s[1].Score,p[1]->Score); return 0;}
- 递延期现值的计算公式包括( ) A: P=A[(P/A,i,N)-(P/A,i,s)] B: P=A[(P/A,i,N-s)*(P/F,i,s)] C: P=A[(P/A,i,N-s)-(P/A,i,s)] D: P=A[(P/A,i,N)*(P/A,i,s)]
- 求5!的程序段有()。 A: int i,p;for(i=1,p=1;i<=5;p*=i,i++); B: int i=1,p=1;for(;;){p*=i++;if (i==6) break;} C: int i=0,p=1;while(i++<=5) p*=i; D: int i=1,p=1;do p*=i;while(++i<=5);
- 以下程序的输出结果是________。 int main() { char ch[3][4]={"123","456","78"},*p[3]; int i; for(i=0; i<3; i++) p[i]=ch[i]; for(i=0; i<3; i++) printf("%s",p[i]); return 0; }
内容
- 0
以下程序的运行结果是 。 main() { char *str[]={"abc","def","ijk","mno"}; char **p; int i; p=str; for(i=0;i<4;i++) printf("%s",p[i]); }[/i]
- 1
下面程序段执行后,输出n的值是_____。</p></p><p><p>int i,j,n;</p></p><p><p>for (i=1;i<=10;i++)</p></p><p><p>{ n=0;</p></p><p><p> for (j=1;j<=10;j++)</p></p><p><p> n=n+j; </p></p><p><p>}</p></p><p><p>printf(“n=%d ”,n);</p></p> ______
- 2
递延年金现值是自若干期后开始每期款项的现值之和,其计算公式为()。 A: P=A·[(P/A,i,m+n)—(P/A,i,m)] B: P=A·(P/A,i,n)·(P/S,i,m) C: P=A·(P/A,i,n)·(S/P,i,m) D: P=A·(S/A,i,n)·(P/S,i,m)
- 3
中国大学MOOC: 以下函数的功能是( )。long f(int n){ int i; long p; for(i=1;i<=n;i++) p=p*i; return p;}
- 4
下列资金等值计算式中,正确的有()。 A: (A,P,i,n)×(P/A,i,n)=1 B: (A,F,i,n)=1/(P/A,i,n) C: (P,4,i,n)=(P/F,i,n)×(F/A,i,n) D: (PA,i,n)=(P/F,i,n)×(A/F,i,n) E: (A,P,i,n)=(F/P,i,n)×(F/A,i,n)