C语言程序设计第四版-课后答案解析

C语言程序设计第四版-课后答案解析
C语言程序设计第四版-课后答案解析

第一章程序设计和C语言【第15页】

1-5

#include <>

int main ( )

{ printf ("**************************\n\n");

printf(" Very Good!\n\n");

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 %d\n",max);

return 0;

}

第2章算法——程序的灵魂【第36页】暂无答案

第3章最简单的C程序设计——顺序程序设计【第82页】

3-1

#include <>

#include <>

int main()

{float p,r,n;

r=;

n=10;

p=pow(1+r,n);

printf("p=%f\n",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=;

r3=;

r2=;

r1=;

r0=;

p1=p*((1+r5)*5); #include <> #include <>

int main()

{float d=300000,p=6000,r=,m;

m=log10(p/(p-d*r))/log10(1+r);

printf("m=%\n",m);

return 0;

}

3-4

#include <>

int main()

{int c1,c2;

c1=197;

c2=198;

printf("c1=%c,c2=%c\n",c1,c2);

printf("c1=%d,c2=%d\n",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=%c\n",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("passwor is %c%c%c%c%c\n",c1,c2,c3,c4,c5);

return 0;

}

3-7

#include <>

int main ()

{float h,r,l,s,sq,vq,vz;

float pi=;

printf("请输入圆半径r,圆柱高h∶");

scanf("%f,%f",&r,&h); #include <>

int main()

{ int x,y;

printf("输入x:");

scanf("%d",&x);

if(x<1) /* x<1 */

{ y=x;

printf("x=%3d, y=x=%d\n" ,x,y);

}

else if(x<10) /* 1=

{ y=2*x-1;

printf("x=%d, y=2*x-1=%d\n",x,y);

}

else /* x>=10 */

{ y=3*x-11;

printf("x=%d, y=3*x-11=%d\n",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=%d\n",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=%d\n",x,y);

return 0;

}

4-8

#include <>

int main()

{ float score;

char grade;

printf("请输入学生成绩:");

scanf("%f",&score);

while (score>100||score<0)

{printf("\n 输入有误,请重输");

scanf("%f",&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("成绩是 %,相应的等级是%c\n ",score,grade);

return 0;

}

4-9

#include <>

#include <>

int main()

{

int num,indiv,ten,hundred,thousand,ten_thousand,place; .=%d\n",sn); return 0;

}

5-6

#include <>

int main()

{double s=0,t=1;

int n;

for (n=1;n<=20;n++)

{

t=t*n;

s=s+t;

}

printf("1!+2!+...+20!=%\n",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<=n1;k++) /*计算1到100的和*/

{s1=s1+k;}

for (k=1;k<=n2;k++) /*计算1到50各数的平方和*/ {s2=s2+k*k;}

for (k=1;k<=n3;k++) /*计算1到10的各倒数和*/ {s3=s3+1/k;}

printf("sum=%\n",s1+s2+s3);

return 0;

}

5-8

#include <>

int main()

{

int i,j,k,n;

printf("parcissus numbers are ");

for (n=100;n<1000;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<=M;a++) /* a是2-1000之间的整数,检查它是否完数 */

{n=0; /* n用来累计a的因子的个数 */

s=a; /* s用来存放尚未求出的因子之和,开始时等于a */

for (i=1;i

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<1000;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<=n;i++)

{

s=s+a/b;

t=a,

a=a+b,

b=t;

}

printf("sum=%\n",s);

return 0;

}

5-11

#include <>

int main()

{

double sn=100,hn=sn/2;

int n;

for (n=2;n<=10;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=%d\n",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 % is %\n",a,x1); return 0;

}

5-14

#include <>

#include <>

int main()

{double x1,x0,f,f1;

x1=;

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 %\n",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)<0)

{x2=x0;

fx2=fx0;

}

else

{x1=x0;

fx1=fx0;

}

}while(fabs (fx0)>=1e-5);

printf("x=%\n",x0);

return 0;

}

5-16

#include <>

int main()

{int i,j,k;

for (i=0;i<=3;i++)

{for (j=0;j<=2-i;j++)

printf(" ");

for (k=0;k<=2*i;k++)

printf("*");

printf("\n");

}

for (i=0;i<=2;i++)

{for (j=0;j<=i;j++)

printf(" ");

for (k=0;k<=4-2*i;k++)

printf("*");

printf("\n");

}

return 0;

}

5-17

#include <>

int main()

{

char i,j,k; /*是a的对手;j是b的对手;k是c的对手*/ for (i='x';i<='z';i++)

for (j='x';j<='z';j++)

if (i!=j)

for (k='x';k<='z';k++)

if (i!=k && j!=k)

if (i!='x' && k!='x' && k!='z')

printf("A--%c\nB--%c\nC--%c\n",i,j,k);

return 0;

}

第6章利用数组处理批量数据【第168页】6-1

#include <>

#include <>

int main()

{int i,j,n,a[101];

for (i=1;i<=100;i++)

a[i]=i;

a[1]=0;

for (i=2;i

for (j=i+1;j<=100;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<=100;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<=10;i++)

{printf("a[%d]=",i);

scanf("%d",&a[i]);

}

printf("\n");

printf("The orginal numbers:\n");

for (i=1;i<=10;i++)

printf("%5d",a[i]);

printf("\n");

for (i=1;i<=9;i++)

{min=i;

for (j=i+1;j<=10;j++)

if (a[min]>a[j]) min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

printf("\nThe sorted numbers:\n");

for (i=1;i<=10;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<3;i++)

for (j=0;j<3;j++)

scanf("%3d",&a[i][j]);

for (i=0;i<3;i++)

sum=sum+a[i][i];

printf("sum=%6d\n",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<10;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<10;i++)

{if (a[i]>number)

{temp1=a[i];

a[i]=number;

for (j=i+1;j<11;j++)

{temp2=a[j];

a[j]=temp1;

temp1=temp2;

}

break;

}

}

}

printf("Now array a:\n");

for (i=0;i<11;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

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<3;i++)

{ printf("please input line %d:\n",i+1);

gets(text[i]);

for (j=0;j<80 && text[i][j]!='\0';j++)

{if (text[i][j]>='A'&& text[i][j]<='Z') upp++;

else if (text[i][j]>='a' && text[i][j]<='z') low++;

else if (text[i][j]>='0' && text[i][j]<='9') dig++;

else if (text[i][j]==' ')

spa++;

else

oth++;

}

}

printf("\nupper case: %d\n",upp);

printf("lower case: %d\n",low);

printf("digit : %d\n",dig);

printf("space : %d\n",spa);

printf("other : %d\n",oth);

return 0;

}

6-11

#include <>

int main()

{ char a[5]={'*','*','*','*','*'};

int i,j,k;

char space=' ';

for (i=0;i<5;i++)

{ printf("\n");

printf(" ");

for (j=1;j<=i;j++)

printf("%c",space);

for (k=0;k<5;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]!='\0')

{ if ((ch[j]>='A') && (ch[j]<='Z'))

tran[j]=155-ch[j];

else if ((ch[j]>='a') && (ch[j]<='z')) 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:%s\n",ch);

j=0;

while (ch[j]!='\0')

{ if ((ch[j]>='A') && (ch[j]<='Z'))

ch[j]=155-ch[j];

else if ((ch[j]>='a') && (ch[j]<='z')) 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]!='\0')

i++;

while(s2[j]!='\0')

s1[i++]=s2[j++];

s1[i]='\0';

printf("\nThe new string is:%s\n",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]!='\0'))i++; if (s1[i]=='\0' && s2[i]=='\0')

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<=strlen(s2);i++)

s1[i]=s2[i];

printf("s1:%s\n",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);

l=lcd(u,v,h);

printf("",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("",Hcf);

printf("",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: %*x*x+%*x+%=0\n",a,b,c); disc=b*b-4*a*c;

printf("root:\n");

if (disc>0)

{

greater_than_zero(a,b);

printf("x1=%f\t\tx2=%f\n",x1,x2);

}

else if (disc==0)

{equal_to_zero(a,b);

printf("x1=%f\t\tx2=%f\n",x1,x2);

}

else

{smaller_than_zero(a,b);

printf("x1=%f+%fi\tx2=%f-%fi\n",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);

C语言程序设计第四版第六章答案_谭浩强

1、用筛选法求100之内的素数。解: #include #include int main() {int i,j,n,a[101]; for (i=1;i<=100;i++) a[i]=i; a[1]=0; for (i=2;i int main() {int i,j,min,temp,a[11]; printf("enter data:\n"); for (i=1;i<=10;i++)

{printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); printf("The orginal numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for (i=1;i<=9;i++) {min=i; for (j=i+1;j<=10;j++) if (a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThe sorted numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); return 0; } 3、求一个3×3的整型矩阵对角线元素之和。解: #include int main() { int a[3][3],sum=0; int i,j; printf("enter data:\n"); for (i=0;i<3;i++) for (j=0;j<3;j++) scanf("%3d",&a[i][j]); for (i=0;i<3;i++) sum=sum+a[i][i]; printf("sum=%6d\n",sum);

C语言程序设计(谭浩强)第四版-课后答案

第一章程序设计和C语言【第15页】 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); 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 #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",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=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",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次

《C语言程序设计》课后习题答案(第四版)谭浩强

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); 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

2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67 3.4.3用printf函数输出数据68 3.4.4用scanf函数输入数据75 3.4.5字符数据的输入输出78 习题82 3-1 #include #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; } 3-2-1 #include #include int main() {float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000;

C语言程序设计第四版第七章答案-谭浩强

第七章函数 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 maxyueshu(m,n) int m,n; { int i=1,t; for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) t=i; } return(t); } minbeishu(m,n) int m,n; {int j; if(m>=n) j=m; else j=n; for(;!(j%m==0&&j%n==0);j++); return j; } main() {int a,b,max,min; printf("enter two number is: "); scanf("%d,%d",&a,&b); max=maxyueshu(a,b); min=minbeishu(a,b); printf("max=%d,min=%d\n",max,min); } 7.2求方程的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。 #include"math.h" float yishigen(m,n,k) float m,n,k; {float x1,x2; x1=(-n+sqrt(k))/(2*m); x2=(-n-sqrt(k))/(2*m); printf("two shigen is x1=%.3f and x2=%.3f\n",x1,x2); } float denggen(m,n) float m,n; {float x; x=-n/(2*m); printf("denggen is x=%.3f\n",x); }

大学生C语言程序设计(第四版 谭洪强)实验5答案

实验四参考答案(参考答案) (1) 设计程序sy5-1.c,从键盘上输入一个3行3列矩阵各个元素的值,输出其主对角线元素和反向对角线元素之和。 算法分析: 对角线上的元素,1维和2维下标相同,反对角线元素,如果行下标为i,列下标就为2-i; 参考答案: #include int main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int i,j,sum=0; for(i=0;i<3;i++) sum=sum+a[i][i]+a[i][2-i]; //a[i][i]当前行的主对角线元素 //a[i][2-i]当前行的反对角线元素printf("矩阵的正、反对角线元素之和为:%d\n",sum); return 0; } 运行结果: (2) 设计程序sy5-2.c,找出一个3×4的矩阵中的最小值及其位置。 算法分析: 首先把二维数组中的第一个数即a[0][0]看成最小值,然后逐行逐列的去遍历每个元素,逐一判断每一个元素是否比最小值还好小,如果是,就改写最小值,并记录他的下标。 参考答案: #include #include int main() { int a[3][4]={{10,21,41,5},{12,15,46,35},{40,21,26,30}}; int i,j,row,colum,min; printf("数组a:\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%5d",a[i][j]);

printf("\n"); } min=a[0][0];row=0;colum=0; //首先把第一个数a[0][0]看成最小数 for(i=0;i<3;i++) //双重循环逐一遍历每个元素a[i][j] for(j=0;j<4;j++) if(min>a[i][j]) //如果当前值a[i][j]比最小值还要小 {min=a[i][j];row=i;colum=j;} //用a[i][j]改写最小值,并记下他们的下标printf("矩阵中最小元素是:%d,行下标是:%d,列下标是%d\n",min,row,colum); return 0; } 运行结果: (3) 设计程序sy5-3.c,定义一个3×3的二维数组,通过随机函数自动赋值。然后输入一个整数n,使数组左下三角(含对角线元素)元素中的值乘以n 。例如:若n的值为3,a 数组中的值为 | 1 9 7 |则程序运行后a数组中的值应为| 3 9 7 | | 2 3 8 | | 6 9 8 | | 4 5 6 | | 12 15 18 | 算法分析: 主要理解到对角线即以下元素包含哪些元素,即他们的下标变化。对每一行i来说,对角线以下的元素,他们的列下标是0,1,2,---,i;所以用外循环i遍历行,内循环j(从0到i),逐一遍历每一个a[i][j],并给a[i][j]赋值为他的n倍。最后输出矩阵。 参考答案: #include #include int main() { int a[3][3]; int i,j,n; printf("原来a的值:"); for(i=0;i<3;i++) //生成数组元素,并按矩阵形式输出 { for(j=0;j<3;j++) {a[i][j]=rand()%20; //rand()参看教材385页 //rand()%20 产生一个20以内的整数

《C语言程序设计》_谭浩强版教案

《C 语言程序设计》教案 职称: 助教 ____________ 单 位:湖南理工职业技术学院 学院(教研室):风能工程学院 工业机器人专业 授课教师: 周常欣

教 学 重 占 八、、 和 难 占 八、、 一、 程序设计和 C 语言 重点:计算机程序、计算机语言、 C 语言编译软件的安装、最简单的 C 语言程序 二、 算法:程序的灵魂 重点:简单的算法举例、算法的特性、用流程图表示算法。 三、 顺序结构程序设计 重点:C 语言的数据类型、C 语句的种类、赋值语句、数据的输入输出及输入输出 中最常用的 控制格式。 四、 选择结构程序设计 重点:关系运算符与逻辑运算符及其组成的具有逻辑值的表达式、 二条分支语句的格 式及基本应用、多分支的选择语句。 五、 循环结构程序设计 重点:C 构成循环的四种方法,尤其是后三种方法、 break 与continue 语句的基本作 用。 难点:while 语句;do-while 语句;for 语句;循环的嵌套; break 与continue 语句。 六、 数组 重点:一维数组、二维数组的定义与引用;字符数组的定义与引用、常用字符串处 理函数及字符处理函数;数组的应用 难点:二维数组的定义与引用;字符数组;数组的应用 七、 函数 重点:函数的定义;函数的参数和函数的值;函数的调用;函数的嵌套调用;函数的 递归调 用;数组作为函数参数;变量作用域;量存储类别; 难点:函数定义、函数调用、函数声明等基本基本概念;函数的嵌套调用与递归调 用;数组作 为函数的参数、变量的存储类别与作用域。 八、 指针 重点和难点:指针与地址的基本概念、指针与变量的关系;指针与数组;指针与字 符串、指针 数组与二级指针;指针的应用 九、 建立自己的数据类型 重点和难点:定义和使用结构体变量、用指针处理链表、共用体类型 十、文件 重点:文件的基本知识、 fopen 、fclose 函数打开与关闭文件、顺序读与数据文件、 随机读写数据文件 难点:用二进制方式向文件读写一组数据。 十一、常见错误分析 重点和难点:文件的基本概念;文件的打开、关闭、常用读写方法。 十二、数组高级应用 重点:不定长数组与二维数组的应用 难点:不定长数组与二维数组的应用 十三、综合应用 重点:数组、if 语句、循环语句、函数知识的综合应用 难点:二维数组、指针 教材、 参 考书 教材:《C 程序设计》(第四版) 谭浩强著 清华大学出版社2010年6月 参考书:《C 程序设计语言》 Kernighan&Ritchie 机械工业出版社 《C 语言程序设计》教案 第1-2课时

《C语言程序设计》课后习题答案(第四版)谭浩强

第1章程序设计和C语言1 什么是计算机程序1 什么是计算机语言1 语言的发展及其特点3 最简单的C语言程序5 最简单的C语言程序举例6 语言程序的结构10 运行C程序的步骤与方法12 程序设计的任务14 1-5 #include <> int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); 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

数据类型42 整型数据44 字符型数据47 浮点型数据49 怎样确定常量的类型51 运算符和表达式52 语句57 语句的作用和分类57 最基本的语句——赋值语句59 数据的输入输出65 输入输出举例65 有关数据输入输出的概念67 用printf函数输出数据68 用scanf函数输入数据75 字符数据的输入输出78 习题82 3-1 #include <> #include <> int main() {float p,r,n; r=; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0;

C语言程序设计第四版 谭浩强 课后习题答案完整版

第三章 3.6写出以下程序运行的结果。 main() {char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’; printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3); printf(“\t\b%c %c”,c4,c5); } 解: aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc AㄩN 3.6 要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译为"Glmre"。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。 解: #include main() { char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是Glmre 3.9求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7 (2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5 (1)2.5 (2)3.5 3.10写出程序运行的结果。 main() {int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n);

《C语言程序设计》课后习题答案(第四版)谭浩强

1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); 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 int main() { int a,b,c; printf("请输入三个整数:"); scanf("%d,%d,%d",&a,&b,&c); if (a int main() { int x,y; printf("输入x:"); scanf("%d",&x);

if(x<1) /* x<1 */ { y=x; printf("x=%3d, y=x=%d\n" ,x,y); } else if(x<10) /* 1==10 */ { y=3*x-11; printf("x=%d, y=3*x-11=%d\n",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=%d\n",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=%d\n",x,y);

大学生C语言程序设计方案(第四版谭洪强)实验7答案

实验七参考答案(参考答案) (1) (sy7-1.c )请编写函数fun ,它的功能是:计算并输出 n (包括n )以内能被5或9整除的 所有自然数的倒数之和。例如,若主函数从键盘给 n 输入20后,则输出为s=0.583333。 注意:n 的值要求不大于100。 算法分析: 使用for 循环i ,遍历n 包含n 以内的所有整数,逐一判断每个i,是否满足条件(能 被5或9整除),如果满足,则把它的倒数累加到累加器里。注意: i 的倒数要表示成: 1.0/i ;版权文档,请勿用做商业用途 参考子函数如下: double fun (i nt n) { double sum=0; int i; for(i=5;i<=n ;i++) if(i%5==0||i%9==0) sum=sum+1.0/i; return sum; } (2) ( sy7-2.c )请编写函数fun ,其功能是:根据以下公式计算 s ,并计算结果作为函数值返 回,n 通过形参传入。 版权文档,请勿用做商业用途 例如:若n 的值为11时,函数的值为1.83333 算法分析: 等式右边从第二项(i=2)开始,其分母等于前一项的分母加上 出每项 的分母,然后把每项进行累加。 版权文档,请勿用做商业用途 参考子函数如下: float fun (i nt n) { float sum=1; //sum 中已经累加了第一项的值 int i,m=1; //m 表示每项的分母; for(i=2;i<=n ;i++) { m=m+i; sum=sum+1.0/m; } return sum; 1 12 3 i ; 一共有 n 项;求

相关文档
最新文档