C语言程序设计(谭浩强)第四版_课后答案精讲由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c程序设计谭浩强答案”。
第一章 程序设计和C语言 【第15页】 1-5
#include int main(){ printf(“**************************nn”);
printf(“
Very Good!nn”);
printf(“**************************n”);
return 0;} 1-6 #include int main(){int a,b,c,max;printf(“please input a,b,c:n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(max
max=b;if(max
max=c;printf(“The largest number is %dn”,max);return 0;} 第2章算法——程序的灵魂 【第36页】暂无答案
第3章最简单的C程序设计——顺序程序设计 【第82页】 3-1
#include #include int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);
printf(“p=%fn”,p);return 0;} 3-2-1 #include #include int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5);
// 一次存5年期
p2=p*(1+2*r2)*(1+3*r3);
// 先存2年期,到期后将本息再存3年期
p3=p*(1+3*r3)*(1+2*r2);
// 先存3年期,到期后将本息再存2年期
p4=p*pow(1+r1,5);
// 存1年期,到期后将本息存再存1年期,连续存5次
p5=p*pow(1+r0/4,4*5);
// 存活期存款。活期利息每一季度结算一次
printf(“p1=%fn”,p1);
// 输出按第1方案得到的本息和
printf(“p2=%fn”,p2);
// 输出按第2方案得到的本息和
printf(“p3=%fn”,p3);
// 输出按第3方案得到的本息和
printf(“p4=%fn”,p4);
// 输出按第4方案得到的本息和
printf(“p5=%fn”,p5);
// 输出按第5方案得到的本息和
return 0;} 3-2-2 #include #include int main(){double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5);
// 一次存5年期
p2=p*(1+2*r2)*(1+3*r3);
// 先存2年期,到期后将本息再存3年期
p3=p*(1+3*r3)*(1+2*r2);
// 先存3年期,到期后将本息再存2年期
p4=p*pow(1+r1,5);
// 存1年期,到期后将本息存再存1年期,连续存5次
p5=p*pow(1+r0/4,4*5);
// 存活期存款。活期利息每一季度结算一次
printf(“p1=%fn”,p1);
// 输出按第1方案得到的本息和
printf(“p2=%fn”,p2);
// 输出按第2方案得到的本息和
printf(“p3=%fn”,p3);
// 输出按第3方案得到的本息和
printf(“p4=%fn”,p4);
// 输出按第4方案得到的本息和
printf(“p5=%fn”,p5);
// 输出按第5方案得到的本息和
return 0;} 3-2-3 #include #include int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5);
// 一次存5年期
p2=p*(1+2*r2)*(1+3*r3);
// 先存2年期,到期后将本息再存3年期
p3=p*(1+3*r3)*(1+2*r2);
// 先存3年期,到期后将本息再存2年期
p4=p*pow(1+r1,5);
// 存1年期,到期后将本息存再存1年期,连续存5次
p5=p*pow(1+r0/4,4*5);
// 存活期存款。活期利息每一季度结算一次
printf(“p1=%10.2fn”,p1);
// 输出按第1方案得到的本息和
printf(“p2=%10.2fn”,p2);
// 输出按第2方案得到的本息和
printf(“p3=%10.2fn”,p3);
// 输出按第3方案得到的本息和
printf(“p4=%10.2fn”,p4);
// 输出按第4方案得到的本息和
printf(“p5=%10.2fn”,p5);
// 输出按第5方案得到的本息和
return 0;} 3-3.#include #include int main(){float d=300000,p=6000,r=0.01,m;m=log10(p/(p-d*r))/log10(1+r);printf(“m=%6.2fn”,m);return 0;} 3-4 #include int main(){int c1,c2;c1=197;c2=198;printf(“c1=%c,c2=%cn”,c1,c2);printf(“c1=%d,c2=%dn”,c1,c2);return 0;} 3-5 #include int main(){int a,b;float x,y;char c1,c2;scanf(“a=%d b=%d”,&a,&b);scanf(“%f %e”,&x,&y);scanf(“%c%c”,&c1,&c2);printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn”,a,b,x,y,c1,c2);return 0;} 3-6 #include int main(){char c1='C',c2='h',c3='i',c4='n',c5='a';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf(“pawor is %c%c%c%c%cn”,c1,c2,c3,c4,c5);return 0;} 3-7 #include int main(){float h,r,l,s,sq,vq,vz;float pi=3.141526;printf(“请输入圆半径r,圆柱高h∶”);scanf(“%f,%f”,&r,&h);
//要求输入圆半径r和圆柱高h
l=2*pi*r;
//计算圆周长l s=r*r*pi;
//计算圆面积s sq=4*pi*r*r;
//计算圆球表面积sq vq=3.0/4.0*pi*r*r*r;
//计算圆球体积vq vz=pi*r*r*h;
//计算圆柱体积vz printf(“圆周长为:
l=%6.2fn”,l);printf(“圆面积为:
s=%6.2fn”,s);
printf(“圆球表面积为:
sq=%6.2fn”,sq);printf(“圆球体积为:
v=%6.2fn”,vq);printf(“圆柱体积为:
vz=%6.2fn”,vz);return 0;} 3-8-1 #include int main(){
int c1,c2;
//整型定义
printf(“请输入两个整数c1,c2:”);
scanf(“%d,%d”,&c1,&c2);
printf(“按字符输出结果:n”);
printf(“%c,%cn”,c1,c2);
printf(“按ASCII码输出结果为:n”);
printf(“%d,%dn”,c1,c2);
return 0;} 3-8-2 #include int main(){
char c1,c2;
//定义字符型变量
int i1,i2;
printf(“请输入两个字符c1,c2:”);
scanf(“%c,%c”,&c1,&c2);
i1=c1;
i2=c2;
printf(“按字符输出结果:n”);
printf(“%c,%cn”,i1,i2);
printf(“按整数输出结果:n”);
printf(“%d,%dn”,c1,c2);
return 0;} 3-8-3 #include int main(){
char c1,c2;
int i1,i2;
printf(“请输入两个整数i1,i2:”);
scanf(“%d,%d”,&i1,&i2);
c1=i1;
c2=i2;
printf(“按字符输出结果:n”);
printf(“%c,%cn”,c1,c2);
printf(“按整数输出结果:n”);
printf(“%d,%dn”,c1,c2);
return 0;} 3-8 #include int main(){ char c1,c2;printf(“请输入两个字符c1,c2:”);c1=getchar();c2=getchar();
//定义整型变量
//赋值给整型变量
//定义为字符型
//定义为整型
//将整数赋值给字符变量
printf(“用putchar语句输出结果为:”);putchar(c1);putchar(c2);printf(“n”);printf(“用printf语句输出结果为:”);printf(“%c %cn”,c1,c2);return 0;} 第4章选择结构程序设计【第111页】 4-4-1 #include int main(){
int a,b,c;
printf(“请输入三个整数:”);
scanf(“%d,%d,%d”,&a,&b,&c);
if(a
if(b
printf(“max=%dn”,c);
else
printf(“max=%dn”,b);
else if(a
printf(“max=%dn”,c);
else
printf(“max=%dn”,a);
return 0;} 4-4-2 #include int main(){ int a,b,c,temp,max;
printf(“请输入三个整数:”);
scanf(“%d,%d,%d”,&a,&b,&c);
temp=(a>b)?a:b;
/*将a和b中的大者存入temp中*/
max=(temp>c)?temp:c;
/*将a和b中的大者与c比较,取最大者*/
printf(“三个整数的最大数是%dn”,max);
return 0;} 4-5-2 #include #include #define M 1000 int main(){
int i,k;
printf(“请输入一个小于%d的整数i:”,M);
scanf(“%d”,&i);
while(i>M)
{printf(“输入的数不符合要求,请重新输入一个小于%d的整数i:”,M);
scanf(“%d”,&i);
}
k=sqrt(i);
printf(“%d的平方根的整数部分是:%dn”,i,k);
return 0;} 4-5 #include #include #define M 1000 int main(){
int i,k;
printf(“请输入一个小于%d的整数i:”,M);
scanf(“%d”,&i);
if(i>M)
{printf(“输入的数不符合要求,请重新输入一个小于%d的整数i:”,M);
scanf(“%d”,&i);
}
k=sqrt(i);
printf(“%d的平方根的整数部分是:%dn”,i,k);
return 0;} 4-6.#include int main(){ int x,y;
printf(“输入x:”);
scanf(“%d”,&x);
if(x
/* x
{ y=x;
printf(“x=%3d,y=x=%dn” ,x,y);
}
else if(x
/* 1=
printf(“x=%d, y=2*x-1=%dn”,x,y);} else
/* x>=10 */ { y=3*x-11;
printf(“x=%d, y=3*x-11=%dn”,x,y);}
return 0;} 4-7-1 #include int main(){
int x,y;
printf(“enter x:”);
scanf(“%d”,&x);
y=-1;
if(x!=0)
if(x>0)
y=1;
else
y=0;
printf(“x=%d,y=%dn”,x,y);return 0;} 4-7-2 #include int main(){
int x,y;
printf(“please enter x:”);
scanf(“%d”,&x);
y=0;
if(x>=0)
if(x>0)y=1;
else y=-1;
printf(“x=%d,y=%dn”,x,y);return 0;} 4-8 #include int main()
{ float score;
char grade;
printf(“请输入学生成绩:”);
scanf(“%f”,&score);
while(score>100||score
switch((int)(score/10))
{case 10: case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;case 5: case 4: case 3: case 2: case 1: case 0: grade='E';}
printf(“成绩是 %5.1f,相应的等级是%cn ”,score,grade);return 0;} 4-9 #include #include int main(){
int num,indiv,ten,hundred,thousand,ten_thousand,place;
//分别代表个位,十位,百位,千位,万位和位数
printf(“请输入一个整数(0-99999):”);
scanf(“%d”,&num);
if(num>9999)
place=5;
else if(num>999)
place=4;
else if(num>99)
place=3;
else if(num>9)
place=2;
else place=1;
printf(“位数:%dn”,place);
printf(“每位数字为:”);
ten_thousand=num/10000;
thousand=(int)(num-ten_thousand*10000)/1000;
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;
ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
switch(place)
{case 5:printf(“%d,%d,%d,%d,%d”,ten_thousand,thousand,hundred,ten,indiv);
printf(“n反序数字为:”);
printf(“%d%d%d%d%dn”,indiv,ten,hundred,thousand,ten_thousand);
break;
case 4:printf(“%d,%d,%d,%d”,thousand,hundred,ten,indiv);
printf(“n反序数字为:”);
printf(“%d%d%d%dn”,indiv,ten,hundred,thousand);
break;
case 3:printf(“%d,%d,%d”,hundred,ten,indiv);
printf(“n反序数字为:”);
printf(“%d%d%dn”,indiv,ten,hundred);
break;
case 2:printf(“%d,%d”,ten,indiv);
printf(“n反序数字为:”);
printf(“%d%dn”,indiv,ten);
break;
case 1:printf(“%d”,indiv);
printf(“n反序数字为:”);
printf(“%dn”,indiv);
break;
}
return 0;} 4-10-1 #include int main(){
int i;
double bonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+100000*0.05;
bon6=bon4+100000*0.03;
bon10=bon6+400000*0.015;
printf(“请输入利润i:”);
scanf(“%d”,&i);
if(i
bonus=i*0.1;
else if(i
bonus=bon1+(i-100000)*0.075;
else if(i
bonus=bon2+(i-200000)*0.05;
else if(i
bonus=bon4+(i-400000)*0.03;
else if(i
bonus=bon6+(i-600000)*0.015;
else
bonus=bon10+(i-1000000)*0.01;
printf(“奖金是: %10.2fn”,bonus);
return 0;} 4-10-2 #include int main(){
int i;
double bonus,bon1,bon2,bon4,bon6,bon10;
int branch;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
printf(“请输入利润i:”);
scanf(“%d”,&i);
branch=i/100000;
if(branch>10)branch=10;
switch(branch)
{ case 0:bonus=i*0.1;break;
case 1:bonus=bon1+(i-100000)*0.075;break;
case 2:
case 3: bonus=bon2+(i-200000)*0.05;break;
case 4:
case 5: bonus=bon4+(i-400000)*0.03;break;
case 6:
case 7:
case 8:
case 9: bonus=bon6+(i-600000)*0.015;break;
case 10: bonus=bon10+(i-1000000)*0.01;
}
printf(“奖金是 %10.2fn”,bonus);
return 0;} 4-11 #include int main(){int t,a,b,c,d;
printf(“请输入四个数:”);
scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);
printf(“a=%d,b=%d,c=%d,d=%dn”,a,b,c,d);
if(a>b)
{ t=a;a=b;b=t;}
if(a>c)
{ t=a;a=c;c=t;}
if(a>d)
{ t=a;a=d;d=t;}
if(b>c)
{ t=b;b=c;c=t;}
if(b>d)
{ t=b;b=d;d=t;}
if(c>d)
{ t=c;c=d;d=t;}
printf(“排序结果如下: n”);
printf(“%d %d %d %d n”,a,b,c,d);
return 0;} 4-12 #include int main(){
int h=10;
float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;
printf(“请输入一个点(x,y):”);
scanf(“%f,%f”,&x,&y);
d1=(x-x4)*(x-x4)+(y-y4)*(y-y4);
/*求该点到各中心点距离*/
d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);
d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);
d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);
if(d1>1 && d2>1 && d3>1 && d4>1)
h=0;/*判断该点是否在塔外*/
printf(“该点高度为 %dn”,h);
return 0;} 第5章循环结构程序设计【第140页】 5-2 #include #include
// 程序中用到数学函数fabs,应包含头文件math.n int main(){
int sign=1,count=0;
// sign用来表示数值的符号,count用来统计循环次数
double pi=0.0,n=1.0,term=1.0;
// pi开始代表多项式的值,最后代表π的值, n代表分母,term代表当前项的值
while(fabs(term)>=1e-8)
// 检查当前项term的绝对值是否大于或等于10的(-6)次方
{
pi=pi+term;
// 把当前项term累加到pi中
n=n+2;
// n+2是下一项的分母
sign=-sign;
// sign代表符号,下一项的符号与上一项符号相反
term=sign/n;
// 求出下一项的值term
count++;
// count累加1
}
pi=pi*4;
// 多项式的和pi乘以4,才是π的近似值
printf(“pi=%10.8fn”,pi);
// 输出π的近似值
printf(“count=%dn”,count);
// 输出循环次数
return 0;} 5-3 #include int main(){
int p,r,n,m,temp;
printf(“请输入两个正整数n,m:”);
scanf(“%d,%d,”,&n,&m);
if(n
{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
printf(“它们的最大公约数为:%dn”,n);
printf(“它们的最小公约数为:%dn”,p/n);
return 0;} 5-4 #include int main(){
char c;
int letters=0,space=0,digit=0,other=0;
printf(“请输入一行字符:n”);
while((c=getchar())!='n')
{
if(c>='a' && c='A' && c
letters++;
else if(c==' ')
space++;
else if(c>='0' && c
digit++;
else
other++;
}
printf(“字母数:%dn空格数:%dn数字数:%dn其它字符数:%dn”,letters,space,digit,other);
return 0;
} 5-5 #include int main(){
int a,n,i=1,sn=0,tn=0;
printf(“a,n=:”);
scanf(“%d,%d”,&a,&n);
while(i
{
tn=tn+a;/*赋值后的tn为i个 a组成数的值*/
sn=sn+tn;/*赋值后的sn为多项式前i项之和*/
a=a*10;
++i;
}
printf(“a+aa+aaa+...=%dn”,sn);
return 0;
} 5-6 #include int main()
{double s=0,t=1;
int n;
for(n=1;n
{
t=t*n;
s=s+t;
}
printf(“1!+2!+...+20!=%22.15en”,s);
return 0;} 5-7 #include int main(){
int n1=100,n2=50,n3=10;
double k,s1=0,s2=0,s3=0;
for(k=1;k
{s1=s1+k;}
for(k=1;k
{s2=s2+k*k;}
for(k=1;k
{s3=s3+1/k;}
printf(“sum=%15.6fn”,s1+s2+s3);
return 0;} 5-8 #include int main(){
int i,j,k,n;
printf(“parcius numbers are ”);
for(n=100;n
{
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i + j*j*j + k*k*k)
printf(“%d ”,n);
}
printf(“n”);
return 0;
} 5-9-1 #define M 1000
/*定义寻找范围*/ #include int main(){
int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;
int i,a,n,s;
for(a=2;a
/* a是2-1000之间的整数,检查它是否完数 */
{n=0;
/* n用来累计a的因子的个数 */
s=a;
/* s用来存放尚未求出的因子之和,开始时等于a */
for(i=1;i
/* 检查i是否a的因子 */
if(a%i==0)
/* 如果i是a的因子 */ {n++;
/* n加1,表示新找到一个因子 */
s=s-i;
/* s减去已找到的因子,s的新值是尚未求出的因子之和 */
switch(n)
/* 将找到的因子赋给k1...k9,或k10 */
{case 1:
k1=i;break;
/* 找出的笫1个因子赋给k1 */
case 2:
k2=i;break;
/* 找出的笫2个因子赋给k2 */
case 3:
k3=i;break;
/* 找出的笫3个因子赋给k3 */
case 4:
k4=i;break;
/* 找出的笫4个因子赋给k4 */
case 5:
k5=i;break;
/* 找出的笫5个因子赋给k5 */
case 6:
k6=i;break;
/* 找出的笫6个因子赋给k6 */
case 7:
k7=i;break;
/* 找出的笫7个因子赋给k7 */
case 8:
k8=i;break;
/* 找出的笫8个因子赋给k8 */
case 9:
k9=i;break;
/*找出的笫9个因子赋给k9 */
case 10:
k10=i;break;
/* 找出的笫10个因子赋给k10 */
} }
if(s==0)
{
printf(“%d ,Its factors are ”,a);
if(n>1)printf(“%d,%d”,k1,k2);
/* n>1表示a至少有2个因子 */
if(n>2)printf(“,%d”,k3);
/* n>2表示至少有3个因子,故应再输出一个因子 */
if(n>3)printf(“,%d”,k4);
/* n>3表示至少有4个因子,故应再输出一个因子 */
if(n>4)printf(“,%d”,k5);
/* 以下类似 */
if(n>5)printf(“,%d”,k6);
if(n>6)printf(“,%d”,k7);
if(n>7)printf(“,%d”,k8);
if(n>8)printf(“,%d”,k9);
if(n>9)printf(“,%d”,k10);
printf(“n”);}
}
return 0;} 5-9-2 #include int main(){int m,s,i;
for(m=2;m
{s=0;
for(i=1;i
if((m%i)==0)s=s+i;
if(s==m)
{printf(“%d,its factors are ”,m);
for(i=1;i
if(m%i==0)printf(“%d ”,i);
printf(“n”);
}
}
return 0;} 5-10 #include int main(){
int i,n=20;
double a=2,b=1,s=0,t;
for(i=1;i
{
s=s+a/b;
t=a, a=a+b, b=t;
}
printf(“sum=%16.10fn”,s);
return 0;
} 5-11 #include int main(){
double sn=100,hn=sn/2;
int n;
for(n=2;n
{
sn=sn+2*hn;
/*第n次落地时共经过的米数*/
hn=hn/2;
/*第n次反跳高度*/
}
printf(“第10次落地时共经过%f米n”,sn);
printf(“第10次反弹%f米n”,hn);
return 0;
} 5-12 #include int main(){
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;
/*第1天的桃子数是第2天桃子数加1后的2倍.*/
x2=x1;
day--;
}
printf(“total=%dn”,x1);
return 0;} 5-13 #include #include int main(){
float a,x0,x1;
printf(“enter a positive number:”);
scanf(“%f”,&a);
x0=a/2;
x1=(x0+a/x0)/2;
do
{x0=x1;
x1=(x0+a/x0)/2;
}while(fabs(x0-x1)>=1e-5);
printf(“The square root of %5.2f is %8.5fn”,a,x1);
return 0;} 5-14 #include #include int main(){double x1,x0,f,f1;
x1=1.5;
do
{x0=x1;
f=((2*x0-4)*x0+3)*x0-6;
f1=(6*x0-8)*x0+3;
x1=x0-f/f1;
}while(fabs(x1-x0)>=1e-5);
printf(“The root of equation is %5.2fn”,x1);
return 0;} 5-15 #include #include int main(){float x0,x1,x2,fx0,fx1,fx2;
do
{printf(“enter x1 & x2:”);
scanf(“%f,%f”,&x1,&x2);
fx1=x1*((2*x1-4)*x1+3)-6;
fx2=x2*((2*x2-4)*x2+3)-6;
}while(fx1*fx2>0);
do
{x0=(x1+x2)/2;
fx0=x0*((2*x0-4)*x0+3)-6;
if((fx0*fx1)
{x2=x0;
fx2=fx0;
}
else
{x1=x0;
fx1=fx0;
}
}while(fabs(fx0)>=1e-5);
printf(“x=%6.2fn”,x0);
return 0;} 5-16 #include int main(){int i,j,k;
for(i=0;i
{for(j=0;j
printf(“ ”);
for(k=0;k
printf(“*”);
printf(“n”);
}
for(i=0;i
{for(j=0;j
printf(“ ”);
for(k=0;k
printf(“*”);
printf(“n”);
}
return 0;
} 5-17 #include
int main(){
char i,j,k;
/*是a的对手;j是b的对手;k是c的对手*/
for(i='x';i
for(j='x';j
if(i!=j)
for(k='x';k
if(i!='x' && k!='x' && k!='z')
printf(“A--%cnB--%cnC--%cn”,i,j,k);
return 0;
} 第6章利用数组处理批量数据 【第168页】 6-1 #include #include int main(){int i,j,n,a[101];
for(i=1;i
a[i]=i;
a[1]=0;
for(i=2;i
for(j=i+1;j
{if(a[i]!=0 && a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;
}
printf(“n”);
for(i=2,n=0;i
{ if(a[i]!=0)
{printf(“%5d”,a[i]);
n++;
}
if(n==10)
{printf(“n”);
n=0;
}
}
printf(“n”);
return 0;} 6-2 #include int main(){int i,j,min,temp,a[11];
printf(“enter data:n”);
for(i=1;i
{printf(“a[%d]=”,i);
scanf(“%d”,&a[i]);
}
printf(“n”);
printf(“The orginal numbers:n”);
for(i=1;i
printf(“%5d”,a[i]);
printf(“n”);
for(i=1;i
{min=i;
for(j=i+1;ja[j])min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
printf(“nThe sorted numbers:n”);
for(i=1;i
printf(“%5d”,a[i]);
printf(“n”);
return 0;} 6-3 #include int main(){ int a[3][3],sum=0;int i,j;
printf(“enter data:n”);
for(i=0;i
for(j=0;j
scanf(“%3d”,&a[i][j]);
for(i=0;i
sum=sum+a[i][i];
printf(“sum=%6dn”,sum);
return 0;} 6-4 #include int main(){ int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf(“array a:n”);
for(i=0;i
printf(“%5d”,a[i]);
printf(“n”);
printf(“insert data:”);
scanf(“%d”,&number);
end=a[9];
if(number>end)
a[10]=number;
else
{for(i=0;i
{if(a[i]>number)
{temp1=a[i];a[i]=number;for(j=i+1;j
{temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
printf(“Now array a:n”);
for(i=0;i
printf(“%5d”,a[i]);
printf(“n”);
return 0;} 6-5 #include #define N 5 int main(){ int a[N],i,temp;
printf(“enter array a:n”);
for(i=0;i
scanf(“%d”,&a[i]);
printf(“array a:n”);
for(i=0;i
printf(“%4d”,a[i]);
for(i=0;i
//循环的作用是将对称的元素的值互换
{ temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
printf(“nNow,array a:n”);
for(i=0;i
printf(“%4d”,a[i]);
printf(“n”);
return 0;}
6-6 #include #define N 10 int main(){ int i,j,a[N][N];
for(i=0;i
{a[i][i]=1;
a[i][0]=1;
}
for(i=2;i
for(j=1;j
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i
{for(j=0;j
printf(“%6d”,a[i][j]);
printf(“n”);
}
printf(“n”);
return 0;} 6-7 #include int main(){ int a[15][15],i,j,k,p,n;
p=1;
while(p==1)
{printf(“enter n(n=1--15):”);
scanf(“%d”,&n);
if((n!=0)&&(n
p=0;
}
for(i=1;i
for(j=1;j
a[i][j]=0;
j=n/2+1;
a[1][j]=1;
for(k=2;k
{i=i-1;
j=j+1;
if((in))
{i=i+2;
j=j-1;
}
else
{if(i
if(j>n)j=1;
}
if(a[i][j]==0)
a[i][j]=k;
else
{i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=1;i
{for(j=1;j
printf(“%5d”,a[i][j]);
printf(“n”);
}
return 0;} 6-8 #include #define N 4 #define M 5
/* 数组为4行5列 */ int main(){
int i,j,k,a[N][M],max,maxj,flag;
printf(“please input matrix:n”);
for(i=0;i
/* 输入数组 */
for(j=0;j
scanf(“%d”,&a[i][j]);
for(i=0;i
{max=a[i][0];
/* 开始时假设a[i][0]最大 */
maxj=0;
/* 将列号0赋给maxj保存 */
for(j=0;j
/* 找出第i行中的最大数 */
if(a[i][j]>max)
{max=a[i][j];
/* 将本行的最大数存放在max中 */
maxj=j;
/* 将最大数所在的列号存放在maxj中 */
}
flag=1;
/* 先假设是鞍点,以flag为1代表 */
for(k=0;k
if(max>a[k][maxj])
/* 将最大数和其同列元素相比 */
{flag=0;
/* 如果max不是同列最小,表示不是鞍点令flag1为0 */
continue;}
if(flag)
/* 如果flag1为1表示是鞍点 */ {printf(“a[%d][%d]=%dn”,i,maxj,max);
/* 输出鞍点的值和所在行列号 */
break;}
}
if(!flag)
/* 如果flag为0表示鞍点不存在 */
printf(“It is not exist!n”);
return 0;} 6-9 #include #define N 15 int main(){ int i,number,top,bott,mid,loca,a[N],flag=1,sign;
char c;
printf(“enter data:n”);
scanf(“%d”,&a[0]);
i=1;
while(i
{scanf(“%d”,&a[i]);
if(a[i]>=a[i-1])
i++;
else
printf(“enter this data again:n”);
}
printf(“n”);
for(i=0;i
printf(“%5d”,a[i]);
printf(“n”);
while(flag)
{printf(“input number to look for:”);
scanf(“%d”,&number);
sign=0;
top=0;
//top是查找区间的起始位置
bott=N-1;
//bott是查找区间的最末位置
if((numbera[N-1]))//要查的数不在查找区间内
loca=-1;
// 表示找不到
while((!sign)&&(top
{mid=(bott+top)/2;
if(number==a[mid])
{loca=mid;
printf(“Has found %d, its position is %dn”,number,loca+1);
sign=1;
}
else if(number
bott=mid-1;
else
top=mid+1;
}
if(!sign||loca==-1)
printf(“cannot find %d.n”,number);;
printf(“continu or not(Y/N)?”);
scanf(“ %c”,&c);
if(c=='N'||c=='n')
flag=0;
}
return 0;
} 6-10 #include int main(){int i,j,upp,low,dig,spa,oth;
char text[3][80];
upp=low=dig=spa=oth=0;
for(i=0;i
{ printf(“please input line %d:n”,i+1);
gets(text[i]);
for(j=0;j
{if(text[i][j]>='A'&& text[i][j]
upp++;
else if(text[i][j]>='a' && text[i][j]
low++;
else if(text[i][j]>='0' && text[i][j]
dig++;
else if(text[i][j]==' ')
spa++;
else
oth++;
}
}
printf(“nupper case: %dn”,upp);
printf(“lower case: %dn”,low);
printf(“digit
: %dn”,dig);
printf(“space
: %dn”,spa);
printf(“other
: %dn”,oth);return 0;} 6-11 #include int main(){ char a[5]={'*','*','*','*','*'};
int i,j,k;
char space=' ';
for(i=0;i
{ printf(“n”);
printf(“
”);
for(j=1;j
printf(“%c”,space);
for(k=0;k
printf(“%c”,a[k]);
}
printf(“n”);
return 0;} 6-12a-c #include int main(){ int j,n;
char ch[80],tran[80];
printf(“input cipher code:”);
gets(ch);
printf(“ncipher code :%s”,ch);
j=0;
while(ch[j]!=' ')
{ if((ch[j]>='A')&&(ch[j]
tran[j]=155-ch[j];
else if((ch[j]>='a')&&(ch[j]
tran[j]=219-ch[j];
else
tran[j]=ch[j];
j++;
}
n=j;
printf(“noriginal text:”);
for(j=0;j
putchar(tran[j]);
printf(“n”);
return 0;} 6-12b #include int main(){int j,n;
char ch[80];
printf(“input cipher code:n”);
gets(ch);
printf(“ncipher code:%sn”,ch);
j=0;
while(ch[j]!=' ')
{ if((ch[j]>='A')&&(ch[j]
ch[j]=155-ch[j];
else if((ch[j]>='a')&&(ch[j]
ch[j]=219-ch[j];
else
ch[j]=ch[j];
j++;
}
n=j;
printf(“original text:”);
for(j=0;j
putchar(ch[j]);
printf(“n”);
return 0;} 6-13 #include int main(){ char s1[80],s2[40];
int i=0,j=0;
printf(“input string1:”);
scanf(“%s”,s1);
printf(“input string2:”);
scanf(“%s”,s2);
while(s1[i]!=' ')
i++;
while(s2[j]!=' ')
s1[i++]=s2[j++];
s1[i]=' ';
printf(“nThe new string is:%sn”,s1);
return 0;} 6-14 #include int main(){ int i,resu;
char s1[100],s2[100];
printf(“input string1:”);
gets(s1);
printf(“ninput string2:”);
gets(s2);
i=0;
while((s1[i]==s2[i])&&(s1[i]!=' '))i++;
if(s1[i]==' ' && s2[i]==' ')
resu=0;
else
resu=s1[i]-s2[i];
printf(“nresult:%d.n”,resu);
return 0;} 6-15 #include #include int main(){ char s1[80],s2[80];
int i;
printf(“input s2:”);
scanf(“%s”,s2);
for(i=0;i
s1[i]=s2[i];
printf(“s1:%sn”,s1);
return 0;} 第7章用函数实现模块化程序设计 【第218页】 7-1-1 #include int main(){int hcf(int,int);
int lcd(int,int,int);
int u,v,h,l;
scanf(“%d,%d”,&u,&v);
h=hcf(u,v);
printf(“H.C.F=%dn”,h);
l=lcd(u,v,h);
printf(“L.C.D=%dn”,l);
return 0;} int hcf(int u,int v){int t,r;if(v>u)
{t=u;u=v;v=t;} while((r=u%v)!=0)
{u=v;
v=r;} return(v);} int lcd(int u,int v,int h)
{
return(u*v/h);
} 7-1-2 #include int Hcf,Lcd;int main(){void hcf(int,int);
void lcd(int,int);
int u,v;
scanf(“%d,%d”,&u,&v);
hcf(u,v);
lcd(u,v);
printf(“H.C.F=%dn”,Hcf);
printf(“L.C.D=%dn”,Lcd);
return 0;} void hcf(int u,int v){int t,r;if(v>u)
{t=u;u=v;v=t;} while((r=u%v)!=0)
{u=v;
v=r;
} Hcf=v;} void lcd(int u,int v)
{
Lcd=u*v/Hcf;
} 7-2 #include #include float x1,x2,disc,p,q;int main(){void greater_than_zero(float,float);void equal_to_zero(float,float);void smaller_than_zero(float,float);float a,b,c;printf(“input a,b,c:”);scanf(“%f,%f,%f”,&a,&b,&c);printf(“equation: %5.2f*x*x+%5.2f*x+%5.2f=0n”,a,b,c);disc=b*b-4*a*c;printf(“root:n”);if(disc>0)
{
greater_than_zero(a,b);
printf(“x1=%fttx2=%fn”,x1,x2);
} else if(disc==0)
{equal_to_zero(a,b);
printf(“x1=%fttx2=%fn”,x1,x2);
} else
{smaller_than_zero(a,b);
printf(“x1=%f+%fitx2=%f-%fin”,p,q,p,q);
} return 0;} void greater_than_zero(float a,float b){x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);} void equal_to_zero(float a,float b){
x1=x2=(-b)/(2*a);} void smaller_than_zero(float a,float b){
p=-b/(2*a);
q=sqrt(-disc)/(2*a);} 7-3 #include int main(){int prime(int);
int n;
printf(“input an integer:”);
scanf(“%d”,&n);
if(prime(n))
printf(“%d is a prime.n”,n);
else
printf(“%d is not a prime.n”,n);
return 0;} int prime(int n)
{int flag=1,i;
for(i=2;i
if(n%i==0)
flag=0;
return(flag);
} 7-4 #include #define N 3 int array[N][N];int main(){ void convert(int array[][3]);int i,j;printf(“input array:n”);for(i=0;i
for(j=0;j
scanf(“%d”,&array[i][j]);printf(“noriginal array :n”);for(i=0;i
{for(j=0;j
printf(“%5d”,array[i][j]);
printf(“n”);
} convert(array);printf(“convert array:n”);for(i=0;i
{for(j=0;j
printf(“%5d”,array[i][j]);
printf(“n”);
} return 0;} void convert(int array[][3]){int i,j,t;for(i=0;i
for(j=i+1;j
{t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
} } #include #include int main(){void inverse(char str[]);char str[100];printf(“input string:”);scanf(“%s”,str);inverse(str);printf(“inverse string:%sn”,str);return 0;} void inverse(char str[]){char t;
int i,j;
for(i=0,j=strlen(str);i
{t=str[i];
str[i]=str[j-1];
str[j-1]=t;
} } 7-6 #include int main(){void concatenate(char string1[],char string2[],char string[]);char s1[100],s2[100],s[100];printf(“input string1:”);scanf(“%s”,s1);printf(“input string2:”);scanf(“%s”,s2);concatenate(s1,s2,s);printf(“nThe new string is %sn”,s);return 0;} void concatenate(char string1[],char string2[],char string[]){int i,j;for(i=0;string1[i]!=' ';i++)
string[i]=string1[i];for(j=0;string2[j]!=' ';j++)
string[i+j]=string2[j];string[i+j]=' ';} 7-7 #include int main(){void cpy(char [],char []);char str[80],c[80];printf(“input string:”);gets(str);cpy(str,c);printf(“The vowel letters are:%sn”,c);return 0;} void cpy(char s[],char c[]){ int i,j;
for(i=0,j=0;s[i]!=' ';i++)
if(s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'||
s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U')
{c[j]=s[i];
j++;
}
c[j]=' ';} 7-8 #include #include int main(){char str[80];void insert(char []);printf(“input four digits:”);scanf(“%s”,str);insert(str);return 0;} void insert(char str[]){int i;for(i=strlen(str);i>0;i--)
{str[2*i]=str[i];
str[2*i-1]=' ';
} printf(“output:n%sn”,str);} 7-9 #include int letter,digit,space,others;int main(){void count(char []);char text[80];printf(“input string:n”);gets(text);printf(“string:”);puts(text);letter=0;digit=0;space=0;others=0;count(text);printf(“nletter:%dndigit:%dnspace:%dnothers:%dn”,letter,digit,space,others);return 0;} void count(char str[]){int i;for(i=0;str[i]!=' ';i++)if((str[i]>='a'&& str[i]='A' && str[i]
letter++;else if(str[i]>='0' && str [i]
digit++;else if(str[i]==32)
space++;else
others++;} 7-10 #include #include int main(){int alphabetic(char);int longest(char []);int i;char line[100];printf(“input one line:n”);gets(line);printf(“The longest word is :”);for(i=longest(line);alphabetic(line[i]);i++)
printf(“%c”,line[i]);printf(“n”);return 0;} int alphabetic(char c){if((c>='a' && c='A'&&c
return(1);else
return(0);} int longest(char string[]){int len=0,i,length=0,flag=1,place=0,point;for(i=0;i
if(alphabetic(string[i]))
if(flag)
{point=i;
flag=0;
}
else
len++;
else
{flag=1;
if(len>=length){length=len;
place=point;
len=0;}
} return(place);} 7-11 #include #include #define N 10 char str[N];int main(){void sort(char []);int i,flag;for(flag=1;flag==1;)
{printf(“input string:n”);
scanf(“%s”,&str);
if(strlen(str)>N)
printf(“string too long,input again!”);
else
flag=0;
} sort(str);printf(“string sorted:n”);for(i=0;i
printf(“%c”,str[i]);printf(“n”);return 0;} void sort(char str[]){int i,j;char t;for(j=1;j
for(i=0;(i
if(str[i]>str[i+1])
{t=str[i];
str[i]=str[i+1];
str[i+1]=t;
} } 7-12 #include #include int main(){float solut(float a,float b,float c,float d);float a,b,c,d;printf(“input a,b,c,d:”);scanf(“%f,%f,%f,%f”,&a,&b,&c,&d);printf(“x=%10.7fn”,solut(a,b,c,d));return 0;}
float solut(float a,float b,float c,float d){float x=1,x0,f,f1;do
{x0=x;
f=((a*x0+b)*x0+c)*x0+d;
f1=(3*a*x0+2*b)*x0+c;
x=x0-f/f1;
} while(fabs(x-x0)>=1e-3);return(x);} 7-13 #include #define N 10 #define M 5 float score[N][M];float a_stu[N],a_cour[M];int r,c;int main(){ int i,j;
float h;
float s_var(void);
float highest();
void input_stu(void);
void aver_stu(void);
void aver_cour(void);
input_stu();
aver_stu();
aver_cour();
printf(“n NO.cour1
cour2
for(i=0;i
{printf(”n NO %2d “,i+1);
for(j=0;j
printf(”%8.2f“,score[i][j]);
printf(”%8.2fn“,a_stu[i]);
}
printf(”naverage:“);
for(j=0;j
printf(”%8.2f“,a_cour[j]);
cour3
cour4 cour5
avern”);
printf(“n”);
h=highest();
printf(“highest:%7.2f
NO.%2d
course %2dn”,h,r,c);
printf(“variance %8.2fn”,s_var());
return 0;} void input_stu(void){int i,j;
for(i=0;i
{printf(“ninput score of student%2d:n”,i+1);
for(j=0;j
scanf(“%f”,&score[i][j]);
} } void aver_stu(void){int i,j;
float s;
for(i=0;i
{for(j=0,s=0;j
s+=score[i][j];
a_stu[i]=s/5.0;
} } void aver_cour(void){int i,j;
float s;
for(j=0;j
{s=0;
for(i=0;i
s+=score[i][j];
a_cour[j]=s/(float)N;
} } float highest(){float high;
int i,j;
high=score[0][0];
for(i=0;i
for(j=0;j
if(score[i][j]>high){high=score[i][j];
r=i+1;
c=j+1;}
return(high);} float s_var(void){int i;
float sumx,sumxn;
sumx=0.0;
sumxn=0.0;
for(i=0;i
{sumx+=a_stu[i]*a_stu[i];
sumxn+=a_stu[i];
}
return(sumx/N-(sumxn/N)*(sumxn/N));} 7-14 #include #define N 10 #define M 5 float score[N][M];float a_stu[N],a_cour[M];int r,c;int main(){ int i,j;
float h;
float s_var(void);
float highest();
void input_stu(void);
void aver_stu(void);
void aver_cour(void);
input_stu();
aver_stu();
aver_cour();
printf(“n NO.cour1
cour2
cour3
cour4
cour5
for(i=0;i
{printf(”n NO %2d “,i+1);
for(j=0;j
printf(”%8.2f“,score[i][j]);
printf(”%8.2fn“,a_stu[i]);
}
printf(”naverage:“);
for(j=0;j
printf(”%8.2f“,a_cour[j]);
printf(”n“);
h=highest();
printf(”highest:%7.2f
NO.%2d
course %2dn“,h,r,c);
avern”);
printf(“variance %8.2fn”,s_var());
return 0;} void input_stu(void){int i,j;
for(i=0;i
{printf(“ninput score of student%2d:n”,i+1);
for(j=0;j
scanf(“%f”,&score[i][j]);
} } void aver_stu(void){int i,j;
float s;
for(i=0;i
{for(j=0,s=0;j
s+=score[i][j];
a_stu[i]=s/5.0;
} } void aver_cour(void){int i,j;
float s;
for(j=0;j
{s=0;
for(i=0;i
s+=score[i][j];
a_cour[j]=s/(float)N;
} } float highest(){float high;
int i,j;
high=score[0][0];
for(i=0;i
for(j=0;j
if(score[i][j]>high){high=score[i][j];
r=i+1;
c=j+1;}
return(high);} float s_var(void){int i;
float sumx,sumxn;
sumx=0.0;
sumxn=0.0;
for(i=0;i
{sumx+=a_stu[i]*a_stu[i];
sumxn+=a_stu[i];
}
return(sumx/N-(sumxn/N)*(sumxn/N));} 7-15 #include #include #define N 10 int main()
{void input(int [],char name[][8]);
void sort(int [],char name[][8]);void search(int ,int [],char name[][8]);int num[N],number,flag=1,c;
char name[N][8];
input(num,name);
sort(num,name);
while(flag==1)
{printf(“ninput number to look for:”);
scanf(“%d”,&number);
search(number,num,name);
printf(“continue ot not(Y/N)?”);
getchar();
c=getchar();
if(c=='N'||c=='n')
flag=0;
} return 0;
} void input(int num[],char name[N][8]){int i;
for(i=0;i
{printf(“input NO.: ”);
scanf(“%d”,&num[i]);
printf(“input name: ”);
getchar();
gets(name[i]);
} }
void sort(int num[],char name[N][8]){ int i,j,min,templ;
char temp2[8];
for(i=0;i
{min=i;
for(j=i;j
if(num[min]>num[j])min=j;
templ=num[i];
strcpy(temp2,name[i]);
num[i]=num[min];
strcpy(name[i],name[min]);
num[min]=templ;
strcpy(name[min],temp2);
}
printf(“n result:n”);
for(i=0;i
printf(“n %5d%10s”,num[i],name[i]);} void search(int n,int num[],char name[N][8])
{int top,bott,mid,loca,sign;
top=0;
bott=N-1;
loca=0;
sign=1;
if((nnum[N-1]))
loca=-1;
while((sign==1)&&(top
if(n==num[mid])
{loca=mid;
printf(“NO.%d , his name is %s.n”,n,name[loca]);
sign=-1;
}
else if(n
bott=mid-1;
else
top=mid+1;}
if(sign==1 || loca==-1)
printf(“%d not been found.n”,n);
}
7-16 #include #define MAX 1000 int main(){ int htoi(char s[]);
int c,i,flag,flag1;
char t[MAX];
i=0;
flag=0;
flag1=1;
printf(“input a HEX number:”);
while((c=getchar())!=' ' && i
{if(c>='0' && c='a' && c='A' && c
{flag=1;
t[i++]=c;
}
else if(flag)
{t[i]=' ';
printf(“decimal number %dn”,htoi(t));
printf(“continue or not?”);
c=getchar();
if(c=='N'||c=='n')
flag1=0;
else
{flag=0;
i=0;
printf(“ninput a HEX number:”);
}
}
}
return 0;
}
int htoi(char s[])
{ int i,n;
n=0;
for(i=0;s[i]!=' ';i++)
{if(s[i]>='0'&& s[i]
n=n*16+s[i]-'0';
if(s[i]>='a' && s[i]
n=n*16+s[i]-'a'+10;
if(s[i]>='A' && s[i]
n=n*16+s[i]-'A'+10;
}
return(n);
} 7-17 #include int main(){ void convert(int n);
int number;
printf(“input an integer: ”);
scanf(“%d”,&number);
printf(“output: ”);
if(number
{putchar('-');putchar(' ');
/* 先输出一个‘-’号和空格 */
number=-number;
}
convert(number);
printf(“n”);
return 0;} void convert(int n){ int i;
if((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
putchar(32);} 7-18 #include int main(){int sum_day(int month,int day);int leap(int year);int year,month,day,days;printf(“input date(year,month,day):”);scanf(“%d,%d,%d”,&year,&month,&day);printf(“%d/%d/%d ”,year,month,day);days=sum_day(month,day);
/* 调用函数sum_day */ if(leap(year)&&month>=3)
/* 调用函数leap */
days=days+1;printf(“is the %dth day in this year.n”,days);return 0;} int sum_day(int month,int day)
/* 函数sum_day:计算日期 */
{int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i;
for(i=1;i
day+=day_tab[i];
/* 累加所在月之前天数 */
return(day);
}
/* 函数leap:判断是否为闰年 */ int leap(int year){int leap;
leap=year%4==0&&year%100!=0||year%400==0;
return(leap);} 第8章善于利用指针 【第291页】 8-1 #include int main(){ void swap(int *p1,int *p2);int n1,n2,n3;int *p1,*p2,*p3;printf(“input three integer n1,n2,n3:”);scanf(“%d,%d,%d”,&n1,&n2,&n3);p1=&n1;p2=&n2;p3=&n3;if(n1>n2)swap(p1,p2);if(n1>n3)swap(p1,p3);if(n2>n3)swap(p2,p3);printf(“Now,the order is:%d,%d,%dn”,n1,n2,n3);return 0;} void swap(int *p1,int *p2)
{int p;
p=*p1;*p1=*p2;*p2=p;
} #include #include int main(){void swap(char *,char *);char str1[20],str2[20],str3[20];printf(“input three line:n”);gets(str1);gets(str2);gets(str3);if(strcmp(str1,str2)>0)swap(str1,str2);if(strcmp(str1,str3)>0)swap(str1,str3);if(strcmp(str2,str3)>0)swap(str2,str3);printf(“Now,the order is:n”);printf(“%sn%sn%sn”,str1,str2,str3);return 0;} void swap(char *p1,char *p2){char p[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);} 8-3 #include int main(){ void input(int *);
void max_min_value(int *);
void output(int *);
int number[10];
input(number);
max_min_value(number);
output(number);
return 0;} void input(int *number)
{int i;
printf(“input 10 numbers:”);
for(i=0;i
scanf(“%d”,&number[i]);
} void max_min_value(int *number)
{ int *max,*min,*p,temp;
max=min=number;
for(p=number+1;p
if(*p>*max)max=p;
else if(*p
temp=number[0];number[0]=*min;*min=temp;
if(max==number)max=min;
temp=number[9];number[9]=*max;*max=temp;
} void output(int *number)
{int *p;
printf(“Now,they are:
”);
for(p=number;p
printf(“%d ”,*p);
printf(“n”);
}
8-4 #include int main()
{void move(int [20],int,int);
int number[20],n,m,i;printf(“how many numbers?”);scanf(“%d”,&n);printf(“input %d numbers:n”,n);for(i=0;i
scanf(“%d”,&number[i]);printf(“how many place you want move?”);scanf(“%d”,&m);move(number,n,m);printf(“Now,they are:n”);for(i=0;i
printf(“%d ”,number[i]);printf(“n”);return 0;} void move(int array[20],int n,int m)
{int *p,array_end;
array_end=*(array+n-1);
for(p=array+n-1;p>array;p--)
*p=*(p-1);
*array=array_end;
m--;
if(m>0)move(array,n,m);
} 8-5 #include int main(){int i,k,m,n,num[50],*p;printf(“ninput number of person: n=”);scanf(“%d”,&n);p=num;for(i=0;i
*(p+i)=i+1;
i=0;
k=0;
m=0;
while(m
{if(*(p+i)!=0)k++;
if(k==3)
{*(p+i)=0;
k=0;
m++;
}
i++;
if(i==n)i=0;
} while(*p==0)p++;printf(“The last one is NO.%dn”,*p);return 0;} 8-6 #include int main(){int length(char *p);int len;char str[20];printf(“input string: ”);scanf(“%s”,str);len=length(str);printf(“The length of string is %d.n”,len);return 0;}
int length(char *p)
{int n;n=0;while(*p!=' ')
{n++;
p++;
} return(n);} 8-7 #include #include int main(){void copystr(char *,char *,int);
int m;char str1[20],str2[20];printf(“input string:”);gets(str1);printf(“which character that begin to copy?”);scanf(“%d”,&m);if(strlen(str1)
printf(“input error!”);else
{copystr(str1,str2,m);
printf(“result:%sn”,str2);
} return 0;} void copystr(char *p1,char *p2,int m)
{int n;n=0;while(n
{n++;
p1++;
} while(*p1!=' ')
{*p2=*p1;
p1++;
p2++;
} *p2=' ';} 8-8 #include int main(){int upper=0,lower=0,digit=0,space=0,other=0,i=0;char *p,s[20];printf(“input string: ”);while((s[i]=getchar())!='n')i++;p=&s[0];while(*p!='n')
{if(('A'
++upper;
else if(('a'
++lower;
else if(*p==' ')
++space;
else if((*p='0'))
++digit;
else
++other;
p++;
} printf(“upper case:%d
lower case:%d”,upper,lower);printf(“
space:%d
digit:%d
other:%dn”,space,digit,other);
C语言设计 学习笔记早晨: 06:40起床 07:20——08:20 上午: 08:30——10:30 10:50——11:30 中午: 12:00——02:00 下午: 02:30——04:30 晚上: 05:30——08:00 08:00——09:00......
C语言设计谭浩强第三版的课后习题答案1.5请参照本章例题,编写一个C程序,输出以下信息: main() { printf("************ \n"); printf("\n"); printf("Very Good! \n")......
汇编语言程序设计第四版【课后习题答案】--囮裑為檤第2章 8086的指令系统〔习题2.1〕已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12 34 56 78H,[21200H]......
《C语言程序设计教程》课后题答案第一章一选择题1.A 2.B 3.C 4.D 5.B 6.C 二.填空题 1.程序 2.算法3.main或主 4.编译 5.编译 6..obj 7.库函数8.文本或ASCII码三、编程......
C语言程序设计教程课后习题答案第一章 C语言程序设计概述 -习题答案1 算法的描述有哪些基本方法?答1、自然语言2、专用工具2 C语言程序的基本结构是怎样的?举一个例子说明。答1......