填空题

【说明】
下面的程序功能的功能是以行为单位对字符串按下面的条件进行排序。排序条件为:从字符串中间一分为二,右边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上
例如:位置:0 1 2 3 4 5 6 7
源字符串:h g f e a b c d
则处理后字符串:d c b a h g f e
函数ReadDat()实现从文件in.dat中读取数据(每行字符串长度均小于80),函数WriteDat()把结果dat输出到文件out.dat中。
#include<stdio.h>
#include<siring.h>  
#include<conio.h>
char dat[20] [80];
void jsSort()
int i,j,k,strl;
char ch;
for(i=0;i<20;i++)
strl=strlen(date[i]);
for(j= (1) ;j<strl;j++) /*对后半部分的字符串进行排序*/
for(k=j+1;k<strl;k++)
if( (2) )

ch=dat[i] [j];
dot[i] [j]=dat[i] [k];
dat[i] [k]=ch;

for(j=0; (3) j++) /*前后两部分进行交换*/

ch = date [i] [j];
dote [i] [j] = date [i] [(strl+1)/2+j];
dat [i] [(strl+1)/2+j]=ch;


void main()
reodDat();
isSort();
writeDot();
readDat ()
FILE * in;
int i=0;
char * p;
(4) ;
while(i<20 && fgets(dat[i],80,in)!=NULL)
p = strchr(date [i],"\n");
if(p) *p=0;
i++;
fclose (in);
writeDat()
FILE * out;
int i;
clrscr ();
out = fopen("out. dat" ,"W");
for(i=0;i<20;i++)

printf("%s\n",dar[i]);
printf ( (5) );

fclose (out);

【参考答案】

(strl+A)/B (B)dat[i][j]<dat[i][k]
(C)j<strl/B (D)in......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

填空题
【说明】 程序8用于计算某公司每个职工应缴纳的个人所得税额和全体职工缴纳的个人所得税总额,职工的当月收入(工资或薪金)通过键盘输入,每次输入一个职工的工号和工资(或薪金)。由于该公司的工资或薪金是不定时发放的,所以输入过程中每个职工的收入会出现多次输入,整个输入以工号小于等于0结束。 假设个人所得税法规定:个人收入所得,按月计税,以每月收入总额减除免税金额800元后的余额作为该月的月应纳税所得额。适用税率如表2所示。 表 2 级数 月应纳税所得额 适用税率(%) 1 2 3 4 5 6 7 8 9 不超过500元的部分 501元~2000元的部分 2001元~5000元的部分 5001元~2000元的部分 2001元~4000元的部分 4001元~6000元的部分 6001元~8000元的部分 8001元~100000元的部分 超过100000元的部分 5 10 15 20 25 30 35 40 45 上表表明,个人收入所得税是按照超额累进的税率来征收的。 设一个人的月应纳税所得额为K(元),用下面的公式计算其应缴纳的个人所得税额S (元); 若0<K≤500,则S=K×5%; 若500<K≤2000,则S=500×5%+(K-500)×10%; 若2000<K≤5000,则S=500×5%+1500×10%+(K-2000)×15%; 若5000<K≤20000,则S=500×5%+1500×10%+3000×15%+(K-5000)×20%; ... 例如,某人某月收入总额为4100元,减去800元后,应纳税所得额为3300元,其应缴纳的个人所得税额为500*5%+1500*10%+1300*15%=370元。 【程序】 #include<stdio.h> #define MaxNum 50 #define BASE 800 *免税金额基数* int paylevel[]=0,500,2000,5000,20000,40000,60000,80000,100000,1000001; int taxPrate[]=5,10,15,20,25,30,35,40,45; *税率表* typedef struct int ld; *职工的工号* long Salary; *职工的工资* Info; *查找工号为ld的职工在数组employee中的下标,返回值为0表示没有* int find (int ld ,Info employee[], int m) int j; employee[0]. Id=Id; for(j=m; (1) ;j--); return j; void main(void) Info employee[MaxNum+1]; long Wage; double sum=0, K,S; int i,j,N=0,Code; scanf( %d %Id ,&Code,&Wage); while(Code>0) i=find (Code, empolyee, N ); if(i>0)employee [i]. Salary+=Wage; else (2) ; employee[N]. Id=Code;employee[N]. Salary =Wage; scanf( %d %Id , &Code, &Wage); for(i=1;i<=N;i++) K= (3) ; *计算月应纳税所得额* S=0; *月应纳税额赋初值* if(K>0) for(j=1;j<=9;j++) if (4) *月应纳税所得额超过第j级* S=S+(paylevel[j]-paylevel[j-1])*taxPrate[j-1] 100; elseS =S+ (5) * taxPrate[j-1] 100; break; printf( 职工%d应缴纳的个人所得税额:%10.21f n ,employee[i].Id,S); sum+=S; printf( 全体职工个人所得税总额:%10.21f n ,sum);