C语言程序设计(谭浩强)第四版_课后答案精讲_c程序设计谭浩强答案

其他范文 时间:2020-02-28 08:33:17 收藏本文下载本文
【www.daodoc.com - 其他范文】

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语言程序设计谭浩强重点笔记

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语言设计谭浩强第三版的课后习题答案

C语言设计谭浩强第三版的课后习题答案1.5请参照本章例题,编写一个C程序,输出以下信息: main() { printf("************ \n"); printf("\n"); printf("Very Good! \n")......

语言程序设计(第四版)第2章【课后答案】

汇编语言程序设计第四版【课后习题答案】--囮裑為檤第2章 8086的指令系统〔习题2.1〕已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12 34 56 78H,[21200H]......

《C语言程序设计教程》课后题答案

《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语言程序设计教程课后习题答案第一章 C语言程序设计概述 -习题答案1 算法的描述有哪些基本方法?答1、自然语言2、专用工具2 C语言程序的基本结构是怎样的?举一个例子说明。答1......

下载C语言程序设计(谭浩强)第四版_课后答案精讲word格式文档
下载C语言程序设计(谭浩强)第四版_课后答案精讲.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文