所在位置:论坛首页 -> 计算机科学与技术 -> 程序设计 -> c语言习题答案(第7章,新版第8章)(潭浩强,清华出版社) |
补充第7章 函数
7.13
main()
{int x,n;
float p();
scanf("%d,%d",&n,&x);
printf("P%d(%d)=%10.2f\n",n,x,p(n,x));
}
float p(tn,tx)
int tn,tx;
{if(tn==0)
return(1);
else if(tn==1)
return(tx);
else
return(((2*tn-1)*tx*p((tn-1),tx)-(tn-1)*p((tn-2),tx))/tn);
}
7.14
#define N 10
#define M 5
float score[N][M];
float a_stu[N],a_cor[M];
main()
{int i,j,r,c;
float h;
float s_diff();
float highest();
r=0;
c=1;
input_stu();
avr_stu();
avr_cor();
printf("\n number class 1 2 3 4 5 avr");
for(i=0;i<N;i++)
{printf("\nNO%2d",i+1);
for(j=0;j<M;j++)
printf("%8.2f",score[i][j]);
printf("%8.2f",a_stu[i]);
}
printf("\nclassavr");
for(j=0;j<M;j++)
printf("%8.2f",a_cor[j]);
h=highest(&r,&c);
printf("\n\n%8.2f %d %d\n",h,r,c);
printf("\n %8.2f\n",s_diff());
}
input_stu()
{int i,j;
float x;
for(i=0;i<N;i++)
{for(j=0;j<M;j++)
{scanf("%f",&x);
score[i][j]=x;
}
}
}
avr_stu()
{int i,j;
float s;
for(i=0;i<N;i++)
{for(j=0,s=0;j<M;j++)
s+=score[i][j];
a_stu[i]=s/5.0;
}
}
avr_cor()
{int i,j;
float s;
for(j=0;j<M;j++)
{for(i=0,s=0;i<N;i++)
s+=score[i][j];
a_cor[j]=s/(float)N;
}
}
float highest(r,c)
int *r,*c;
{float high;
int i,j;
high=score[0][0];
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(score[i][j]>high)
{high=score[i][j];
*r=i+1;
*c=j+1;
}
return(high);
}
float s_diff()
{int i,j;
float sumx=0.0,sumxn=0.0;
for(i=0;i<N;i++)
{sumx+=a_stu[i]*a_stu[i];
sumxn+=a_stu[i];
}
return(sumx/N-(sumxn/N)*(sumxn/N));
}
7.15
#include<stdio.h>
#define N 10
void input_e(num,name)
int num[];
char name[N][8];
{int i;
for(i=0;i<N;i++)
{scanf("%d",&num[i]);
gets(name[i]);
}
}
void sort(num,name)
int num[];
char name[N][8];
{int i,j,min,temp1;
char temp2[8];
for(i=0;i<N-1;i++)
{min=i;
for(j=i;j<N;j++)
if(num[min]>num[j])min=j;
temp1=num[i];
num[i]=num[min];
num[min]=temp1;
strcpy(temp2,name[i]);
strcpy(name[i],name[min]);
strcpy(name[min],temp2);
}
for(i=0;i<N;i++)
printf("\n%5d%10s",num[i],name[i]);
}
void search(n,num,name)
int n,num[];
char name[N][8];
{int top,bott,min,loca;
loca=0;
top=0;
bott=N-1;
if((n<num[0])||(n>num[N-1]))
loca=-1;
while((loca==0)&&(top<=bott))
{min=(bott+top)/2;
if(n==num[min])
{loca=min;
printf("number=%d,name=%s\n",n,name[loca]);
}
else if(n<num[min])
bott=min-1;
else
top=min+1;
}
if(loca==0||loca==-1)
printf("number=%d is not in table\n",n);
}
main()
{int num[N],number,flag,c,n;
char name[N][8];
input_e(num,name);
sort(num,name);
for(flag=1;flag;)
{scanf("%d",&number);
search(number,num,name);
printf("continue?Y/N!");
c=getchar();
if(c=='N'||c=='n')
flag=0;
}
}
7.16
#include<stdio.h>
#define MAX 1000
main()
{int c,i,flag,flag1;
char t[MAX];
i=0;
flag=0;
flag1=1;
while((c=getchar())!='\0'&&i<MAX&&flag1)
{if(c>='0'&&c<='9'||c>='A'&&c<='F'||c>='a'&&c<='f')
{flag=1;
t[i++]=c;
}
else if(flag)
{t[i]='\0';
printf("\nnumber=%d\n",htoi(t));
printf("continue?");
c=getchar();
if(c=='n'||c=='N')
flag1=0;
else
{flag=0;
i=0;
}
}
}
}
htoi(s)
char s[];
{int i,n;
n=0;
for(i=0;s[i]!='\0';i++)
{if(s[i]>='0'&&s[i]<='9')
n=n*16+s[i]-'0';
if(s[i]>='a'&&s[i]<='f')
n=n*16+s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='F')
n=n*16+s[i]-'A'+10;
}
return(n);
}
7.17
#include<stdio.h>
void convert(n)
int n;
{int i;
if((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
}
main()
{int number;
scanf("%d",&number);
if(number<0)
{putchar('-');
number=-number;
}
convert(number);
}
操作选项: 评分 加精 解精 奖惩 设专题 设公告 解公告 固顶 总固顶 解固顶 结帖 解结帖 锁帖 解锁 移帖 删帖 |
|