文档介绍:该【〖精选文档〗C语言程序设计第四版第七章答案 谭浩强 】是由【xiao小蒋】上传分享,文档一共【10】页,该文档可以免费在线阅读,需要了解更多关于【〖精选文档〗C语言程序设计第四版第七章答案 谭浩强 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。〖精选文档〗C语言程序设计第四版第七章答案谭浩强
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
1/10
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
第七章 函数
,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。
maxyueshu(m,n)
intm,n;
{inti=1,t;
for(;i<=m&&i<=n;i++)
{if(m%i==0&&n%i==0)
t=i;
}
return(t);
}
minbeishu(m,n)
intm,n;
{intj;
if(m>=n)j=m;
elsej=n;
for(;!(j%m==0&&j%n==0);j++);
returnj;
}
main()
{inta,b,max,min;
printf("entertwonumberis:");
scanf("%d,%d",&a,&b);
max=maxyueshu(a,b);
min=minbeishu(a,b);
printf("max=%d,min=%d\n",max,min);
}
,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。
#include""
floatyishigen(m,n,k)
floatm,n,k;
{floatx1,x2;
x1=(-n+sqrt(k))/(2*m);
x2=(-n-sqrt(k))/(2*m);
printf("twoshigenisx1=%.3fandx2=%.3f\n",x1,x2);
}
floatdenggen(m,n)
floatm,n;
{floatx;
x=-n/(2*m);
printf("denggenisx=%.3f\n",x);
}
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
2/10
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
floatxugen(m,n,k)
floatm,n,k;
{floatx,y;
x=-n/(2*m);
y=sqrt(-k)/(2*m);
printf("twoxugenisx1=%.3f+%.3fiandx2=%.3f-%.3fi\n",x,y,x,y);
}
main()
{floata,b,c,q;
printf("inputabcis");
scanf("%f,%f,%f",&a,&b,&c);
printf("\n");
q=b*b-4*a*c;
if(q>0)yishigen(a,b,q);
elseif(q==0)denggen(a,b);
elsexugen(a,b,q);
}
,在主函数输入一个整数,输出是否是素数的消息。
psushu(m)
intm;
{inti=2,t;
for(;i<=m;i++)
if(m%i==0&&i<m)break;
if(m-i==0)t=1;
elset=0;
returnm;
}
main()
{inta,s;
printf("entersushuis\n");
scanf("%d",&a);
s=psushu(a);
if(s==1)printf("aissushu\n");
elseprintf("sisnotsushu\n");
}
,使给定的一个二维数组(3×3)转置,即行列互换。
intzhuangzhi(b)
intb[3][3];
{inti,j,t;
for(i=0;i<3;i++)
for(j=0;j>=i&&j<3-i;j++)
{t=b[i][j];b[i][j]=b[j][i];b[j][i]=t;}
}
main()
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
3/10
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
{inta[3][3];inti,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%d",a[i][j]);
printf("\n");}
zhuangzhi(a);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%d",a[i][j]);
printf("\n");}
}
,使输入的一个字符串按反序存放,在主函数中输入输出字符串。
main()
{charstr0[100];
gets(str0);
fanxu(str0);
puts(str0);
}
fanxu(str1)
charstr1[100];
{inti,t,j;
charstr2[100];strcpy(str2,str1);
t=strlen(str1);
for(i=0,j=t-1;j>-1;i++,j--)
str1[i]=str2[j];
}
,将两个字符串连接。
lianjie(a,b)
chara[100],b[100];
{strcat(a,b);
}
main()
{charstr1[100],str2[100];
gets(str1);gets(str2);
lianjie(str1,str2);
puts(str1);
}
,将两个字符串中的元音字母复制到另一个字符串,然后输出。
fuzhi(a,b)
chara[100],b[100];
{inti,j=0;
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
4/10
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
for(i=0;a[i]!=’\0’;i++)
if(a[i]==97||a[i]==101||a[i]==105||a[i]==111||a[i]==117||a[i]==65||
a[i]==69||a[i]==73||a[i]==85){b[j]=a[i];j++;}
}
main()
{charstr1[100],str2[100];
gets(str1);
fuzhi(str1,str2);
puts(str2);
}
,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空格。如输入1990,应输出"1_9_9_0"。
charf(b)
charb[4];
{inti=0;
for(;i<4;i++)
{printf("");
printf("%c",b[i]);}
printf("\n");
}
main()
{inta,u,v,w,t;charc[4];
scanf("%4d",&a);
u=a*;v=*(a-1000*u);w=(a-1000*u-100*v)*;t=a-1000*u-100*v-10*w;
c[0]=u+48;
c[1]=v+48;
c[2]=w+48;
c[3]=t+48;
f(c);
}
,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。
chartongji(str0,b)
charstr0[100];
intb[4];
{inti;
for(i=0;str0[i]!=’\0’;i++)
{if(str0[i]>=65&&str0[i]<=90||str0[i]>=97&&str0[i]<=122)b[0]++;
elseif(str0[i]>=48&&str0[i]<=57)b[1]++;
elseif(str0[i]==32)b[2]++;
elseb[3]++;}
}
main()
{charstr1[100];staticinti,a[4];
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
5/10
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
gets(str1);
tongji(str1,a);
printf("zimuShuziKonggeQita\n");
for(i=0;i<4;i++)
printf("%-8d",a[i]);printf("\n");
}
,输入一行字符,将此字符串中最长的单词输出。
cechang(str1,word0)
charstr1[100],word0[15];
{inti=0,j=0,t=0;
staticcharword1[15];
for(;str1[i]!=’\0’;i++)
{if(!(str1[i]>=97&&str1[i]<=122||str1[i]>=65&&str1[i]<=90))
{t=j;j=0;continue;}
word1[j]=str1[i];j++;
if(j>=t)strcpy(word0,word1);}
}
main()
{charstr0[100],longword[15];
gets(str0);
cechang(str0,longword);
puts(longword);
}
。
intpaixu(x)
intx[];
{inti,j,t;
for(j=1;j<10;j++)
for(i=0;i<=9-j;i++)
if(x[i]>x[i+1]){t=x[i+1];x[i+1]=x[i];x[i]=t;}
}
main()
{inty[10];inti;
for(i=0;i<10;i++)
scanf("%d",&y[i]);
paixu(y);
for(i=0;i<10;i++)
printf("%5d",y[i]);
printf("\n");
}
。方程为:,系数a,b,c,d由主函数输入。求X在1附近的一个实根。求出后由主函数输出。
doubleqigen(s,t,u,v)
ints,t,u,v;
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
6/10
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
{doublex,y;x=1;
do{y=s*x*x*x+t*x*x+u*x+v;
x=x-y/(3*s*x*x+2*t*x+u);}
while(y!=0);
returnx;
}
main()
{inta,b,c,d;doublex;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
x=qigen(a,b,c,d);
printf("x=%.3f\n",x);
}
floatp(x0,n)
intn;floatx0;
{floaty;
if(n==0||n==1)if(n==1)y=x0;elsey=1;
elsey=((2*n-1)*x0*p(x0,n-1)-(n-1)*p(x0,n-2))/n;
return(y);
}
main()
{floatx,y0;inta,i;
scanf("%f,%d",&x,&a);
y0=p(x,a);
printf("y0=%.3f\n",y0);
}
,分别用函数求:①每个学生平均分;②每门课的平均分;③找出最高分所对应的学生和课程;④求平均分方差:δ=[SXi^2]/n-(SXi/n)^2,为一学生的平均分
floatx1[10],x2[5];
floatpp(),cc(),find(),xx();
main()
{charname[10][20],class[5][20];floatscore[10][5],o,k=0,max[5];inta[5],i,j;
for(i=0;i<10;i++)
gets(name[i]);
for(j=0;j<5;j++)gets(class[j]);
for(i=0;i<10;i++)
for(j=0;j<5;j++)
scanf("%f",&score[i][j]);
pp(score);
cc(score);
find(score,max,a);
o=xx(k);
for(i=0;i<10;i++)
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
7/10
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
{puts(name[i]);
printf("%.3f\n",x1[i]);}
for(j=0;j<5;j++)
{puts(class[j]);printf("%.3f\n",x2[j]);}
for(j=0;j<5;j++){printf("%.3f\n",max[j]);
puts(name[a[j]]);
puts(class[j]);}
printf("o=%.3f\n",o);
}
floatpp(f)
floatf[10][5];
{floatsum=0;inti,j;
for(i=0,sum=0;i<10;i++)
{for(j=0;j<5;j++)
sum=sum+f[i][j];
x1[i]=sum/5;}
}
floatcc(y)
floaty[10][5];
{floatsum=0;inti,j;
for(j=0;j<5;j++)
{for(i=0;i<10;i++)
sum=sum+y[i][j];
x1[j]=sum/10;}
}
floatfind(z,s,t)
floatz[10][5],s[5];intt[5];
{inti,j;
for(j=0,s[j]=z[0][j];j<5;j++)
for(i=0;i<10;i++)
if(s[j]<z[i][j]){s[j]=z[i][j];t[j]=i;}
}
floatxx(q)
floatq;
{floatf=0,e=0;inti;
for(i=0;i<10;i++)
{e=x1[i]*x1[i]+e;
f=f+x1[i];}
q=e/10-(f/10)*(f/10);
return(q);
}
:①输个职工的姓名和职工号;②按职工号由小到大顺序排序,姓名顺序也随之调整;③要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
8/10
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
#defineN10
find(a,b)
inta[],b[];
{inti,j,s,t,c[N][2];
for(i=0;i<N;i++)
{c[i][1]=a[i];c[i][1]=i;}
for(i=0;i<N;i++)
for(j=0;j<N-i-1;j++)
if(c[i][0]>c[i+1][0])
{t=c[i][0];c[i][0]=c[i+1][0];c[i+1][0]=t;
s=c[i][1];c[i][1]=c[i+1][1];c[i+1][1]=s;}
for(i=0;i<N;i++)
b[i]=c[i][1];
return;
}
lookfor(h,k)
inth[],k;
{inti,j;
for(i=0;i<N;i++)
if(h[i]-k==0)j=i;
returnj;
}
main()
{intnumber[N],x[N],i,j,u,p;charname[N][20];
for(i=0;i<N;i++)
{gets(name[i]);
scanf("%d",&number[i]);}
scanf("%d",&p);
find(number,x);
u=lookfor(number,p);
for(i=0;i<N;i++)
{printf("%d",number[i]);
puts(name[x[i]]);}
puts(name[x[u]]);
}
,输入一个十六进制数,输出相应的十进制数。
#include""
intx;
ff(shu)
charshu[];
{inti=strlen(shu)-1,sum=0;
for(;i>-1;i++)
{if{if(48<=shu[i]<=57)sum=sum+(shu[i]-48)*pow(16,(i-1));
elseif(65<=shu[i]<=90)sum=sum+(shu[i]-55)*pow(16,(i-1));
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
9/10
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
elseif(97<=shu[i]<=102)sum=sum+(shu[i]-87)*pow(16,(i-1));
x=1;}
elsex=0;
returnx;
}
main()
{charshufu[100];ints;
gets(shufu);s=ff(shufu);
if(x)printf("s(D)=%d\n",s);
elseprintf("Thenumberisnotox\n");
}
。例如,输入486,应输出字符串"486"。n的位数不确定,可以是任意位数的整数。
#include""
intx[10];
pf(m,n)
unsignedlongm;intn;
{inty;
if(n==0){y=(int)(m%10);x[0]=y;}
else{y=(unsignedlong)((m-pf(m,n-1))/pow(10,n))%10;x[n]=y;}
return(y);
}
main()
{unsignedlonga,b;inti,j,k;charc[11];
scanf("%ld",&a);
for(j=0,b=a;b>;j++,b/=10);
pf(a,j-1);
for(i=0,k=j-1;i<j;i++,k--)
c[i]=x[k]+48;c[10]=’\0’;
puts(c);}
或
#include""
charx[11];
pf(m,o)
unsignedlongm;into;
{intj,i;
for(i=o-1,j=0;i>-1;i--,j++)
x[i]=(int)((unsignedlong)(m/pow(10,j))%10)+48;
return;
}
main()
{unsignedlonga,b;intj,i;
scanf("%ld",&a);
for(j=0,b=a;b>;j++,b/=10);
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
10/10
〖精选文档〗C语言程序设计第四版第七章答案谭浩强
pf(a,j);
puts(x);printf("%d\n",j);}
或
#include""
intx[10];unsignedlongm;
pf(n)
intn;
{inty;
if(n==0){y=m%10;x[0]=y;}
else{y=(unsignedlong)((m-pf(n-1))/pow(10,n))%10;x[n]=y;}
return(y);
}
main()
{unsignedlonga;inti,j,k;charc[11];
scanf("%ld",&m);
for(j=0,a=m;a>;j++,a/=10);
pf(j-1);
for(i=0,k=j-1;i<j;i++,k--)
c[i]=x[k]+48;c[10]=’\0’;
puts(c);}
、月、日,计算该日是该年的第几天。
intfind(x,y,z)
intx,y,z;
{inti,t,s,days=0;
if(x%4==0)t=1;
elset=0;
for(i=1;i<y;i++)
{if(i==2)s=2-t;
elses=0;
days=days+30+i%2-s;
}
days=days+z;
return(days);
}
main()
{intyear,month,date,day;
scanf("%d%d%d",&year,&month,&date);
day=find(year,month,date);
printf("THEDATEISTHE%dthDAYS\n",day);
}