='a'&&c1elseif(c1>='A'&&c1elsec2=c1;printf("=>%c\n",c2);}5-2#include"stdio.h"voidmain(){charc;printf("c:");c=getchar();if(c>='A'&&cif(c=='A" />

大学c语言课本课后习题相应答案及详细解答

大学c语言课本课后习题相应答案及详细解答
大学c语言课本课后习题相应答案及详细解答

5-1

#include"stdio.h" void main()

{

char c1,c2;

printf("c1:");

c1=getchar();

if(c1>='a'&&c1<='z') c2=c1-32;

else if(c1>='A'&&c1<='Z') c2=c1+32;

else c2=c1;

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

}

5-2

#include"stdio.h"

void main()

{

char c;

printf("c:");

c=getchar();

if(c>='A'&&c<='Z')

if(c=='A') printf("没有前面的字母!");

else if(c=='Z') printf("没有后面的字母!!");

else printf("前面的字母=%c,后面的字母=%c",c-1,c+1);

printf("\n");

} 5-3

#include"stdio.h"

void main()

{

int s;

char g;

printf("s:");

scanf("%d",&s);

if(s>=0&&s<=100){

switch(s/10){

case 9:

case 10: g='A';break;

case 8: g='B';break;

case 7: g='C';break;

case 6: g='D';break;

default: g='E';

}

printf("g=%c\n",g);

}

else printf("成绩不在百分制范围内!\n"); }

5-4

#include"stdio.h"

void main()

{

int y,m,d,dok;

int yy,mm,dd;

printf("y,m,d:");

scanf("%d,%d,%d",&y,&m,&d);

switch(m){

case 1: case 3: case 5: case 7: case 8: case 10: case 12:

if(d>0&&d<=31) dok=4;

else dok=0;

break;

case 4: case 6: case 9: case 11:

if(d>0&&d<=30) dok=3;

else dok=0;

break;

case 2: if(y%4==0&&y%100!=0||y%400==0)

if(d>0&&d<=29)

dok=2;

else dok=0;

else

if(d>0&&d<=28)

dok=1;

else dok=0;

break;

default: dok=0;

}

if(dok==0) printf("月份或日期不对!\n");

else{

switch(dok){

case 1: if(d==28){yy=y;dd=1;mm=m+1;}

else{yy=y;dd=d+1;mm=m;}

break;

case

2:if(d==29){yy=y;dd=1;mm=m+1;}

else{yy=y;dd=d+1;mm=m;}

break;

case

3:if(d==30){yy=y;dd=1;mm=m+1;}

else{yy=y;dd=d+1;mm=m;}

break;

case 4:if(d==31)

if(m==12){yy=y+1;dd=1;mm=1;}

else

{yy=y;dd=1;mm=m+1;}

else{yy=y;dd=d+1;mm=m;}

break;

}

printf("Tomorrow:%d年%d月%d日\n",yy,mm,dd);

}

}

5-5

#include"stdio.h"

void main()

{

int a,b,c,t;

printf("a,b,c:");

scanf("%d,%d,%d",&a,&b,&c);

if(a+b>c&&b+c>a&&a+c>b){

if(a>b){t=a;a=b;b=t;}

if(a>c){t=a;a=c;c=t;}

if(b>c){t=b;b=c;c=t;}

if(a==b&&b==c) printf("等边三角形.");

else if(a==b||b==c||a==c) printf("等腰角形.");

else if(c*c==a*a+b*b) printf("直角三角形.");

else printf("任意三角形.");

printf("\n");

}

else printf("不能构成三角形!\n");

}

6-1

#include"stdio.h"

void main()

{

int a,b,m,n,k;

printf("m,n:");

scanf("%d,%d",&m,&n);

a=m;

b=n;

k=a%b;

while(k){

a=b;

b=k;

k=a%b;

}

printf("%d\n",(m*n/b));

}

6-2

#include"stdio.h"

void main()

{

int n;

int i,j,s;

printf("n=");

scanf("%d",&n);

for(i=1;i<=n;i++){

s=0;

for(j=1;j

if(i%j==0) s=s+j;

if(s==i) {

printf("%d:",i);

for(j=1;j

if(i%j==0) printf("%d ",j);

printf("\n");

}

}

} 6-3

#include"stdio.h"

#include"math.h"

void main()

{

double x,y,zd,zx,x1,x2;

zd=zx=50;

for(x=0;x<=2;x=x+0.2){

y=2*pow(x,3)-3*pow(x,4)+6*pow(x,5)-4*x+50;

if(y>zd){ zd=y;x1=x;}

if(y

}

printf("x=%f,max=%f\n",x1,zd);

printf("x=%f,min=%f\n",x2,zx);

}

6-4

#include"stdio.h"

void main()

{

double x,sum=0,a,b,c;

int i;

printf("x=");

scanf("%lf",&x);

a=x;

b=1.0;

c=1.0;

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

sum=sum+a/(b*c);

a=a*x*x;

b=b+2;

c=c*i;

}

printf("y(%.2lf)=%lf\n",x,sum);

}

7-1

/*选择排序*/

#include"stdio.h"

void main()

{

int i,j,n,k,temp;

int a[10];

printf("n(<10):");

scanf("%d",&n);

printf("Original:");

for(i=0;i

for(i=0;i

k=i;

for(j=i+1;j

if(a[j]?*/

if(k!=i){

temp=a[i];

a[i]=a[k];

a[k]=temp;

}

}

printf("Ordered:");

for(i=0;i

printf("\n");

}

7-2

#include"stdio.h"

void main()

{

int a[3][3];

int i,j,s=1;

printf("Input:\n");

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

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

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

if(i==j) s=s*a[i][j];

}

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

} 7-3

/*杨辉三角*/

#include"stdio.h"

void main()

{

int x[7][7];

int i,j;

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

x[i][0]=1;

x[i][i]=1;

}

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

for(j=1;j

x[i][j]=x[i-1][j]+x[i-1][j-1];

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

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

printf("%3d",x[i][j]);

printf("\n");

}

}

7-4

#include

#include

void main()

{

char str[21];

int i,j;

printf("str:");

gets(str);

for(i=0,j=strlen(str)-1;i<=j;i++,j--)

if(str[i]!=str[j]) break;

if(i>j) printf("%s是回文\n",str);

else printf("%s不是回文\n",str);

}

7-5

/*输入一维数组的10个元素,并将最小值与第1个数交换,最大值与最后一个数交换,然后输出交换后的结果*/

#include

void main()

{

int a[10],i,zx,zd;

printf("Input:\n");

zx=zd=0;

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

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

if(a[i]

if(a[i]>a[zd]) zd=i;

}

if(zx!=0){

int t;

t=a[0];

a[0]=a[zx];

a[zx]=t;

}

if(zd!=9){

int t;

t=a[9];

a[9]=a[zd];

a[zd]=t;

}

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

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

printf("\n");

} 8-2

#include"stdio.h"

double xexp(double x,int n)

{

double c;

if(n==0) c=1.0;

else c=x*xexp(x,n-1);

return c;

}

void main()

{

int n;

double x;

printf("x:");

scanf("%lf",&x);

printf("n:");

scanf("%d",&n);

printf("Result=%g\n",xexp(x,n));

}

8-3

#include"stdio.h"

int find(int x[],int n,int y)

{

int i,pos=-1;

for(i=0;i

if(x[i]==y) pos=i;

return pos;

}

void main()

{

int a[10]={11,1,13,15,18,7,19,27,3,8};

int i,y,pos;

for(i=0;i<10;i++) printf("%d ",a[i]);

printf("\ny:");

scanf("%d",&y);

pos=find(a,10,y);

if(pos==-1) printf("Not found!\n");

else printf("Position=%d\n",pos);

}

8-1

#include"stdio.h"

#include"conio.h" //getch()

#include"stdlib.h" //srand(),rand(),system("cls") #include"time.h" //time()

void main()

{

void init(int a[][5],int m,int n);

void input(int a[][5],int m,int n);

void output(int a[][5],int m,int n);

int min(int b[][5],int m,int n);

int a[5][5],ch='0';

while(1){

system("cls"); //清屏

printf("1.初始化 2.键盘输入0.结束程序:");

ch=getch(); //头文件conio.h

printf("\n");

if(ch=='0') break;

else if(ch=='1'){

init(a,5,5);

output(a,5,5);

}

else if(ch=='2'){

input(a,5,5);

output(a,5,5);

}

else printf("Error!\n");

printf("Min element:%d\n",min(a,5,5));

printf("按任意键继续!\n");

getch();

}

}

void init(int a[][5],int m,int n)

{

int i,j;

srand(time(0)); //time(0)表示以当前的时间做种子,增加每次运行的随机性

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

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

a[i][j]=rand()%100; //随机数范围:0~32767,将它控制在0~99的范围}

void input(int a[][5],int m,int n)

{

int i,j;

printf("Input Array 5X5:\n");

for(i=0;i

for(j=0;j

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

}

void output(int a[][5],int m,int n)

{

int i,j;

printf("Output Array 5X5:\n");

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

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

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

printf("\n");

}

}

int min(int b[][5],int m,int n)

{

int i,j,zx;

zx=b[0][0];

for(i=0;i

for(j=0;j

if(i==j&&b[i][j]

return zx;

}

8-4

#include"stdio.h"

float pave,nave;

void saver(float a[],int n)

{

int i,z,f;

float psum,nsum;

psum=nsum=0.0;

z=f=0;

for(i=0;i

if(a[i]<0) {nsum=nsum+a[i];z++;}

else if(a[i]>0) {psum=psum+a[i];f++;}

else continue;

pave=(z!=0?psum/z:0.0);

nave=(f!=0?nsum/f:0.0);

}

void main()

{

float a[10]={1.0,11.0,3.0,-1.5,-5.5,-2};

saver(a,10);

printf("pave=%.1f,nave=%.2f\n",pave,nave); } 8-5

#include"stdio.h"

#include"math.h"

void p1(int a,int b)

{

printf("has two equal roots:%8.4f\n",-b/(2*a));

}

void p2(int a,int b, int disc)

{

float x1,x2;

x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a);

printf("Has distant real roots:%8.4f and %8.4f\n",x1,x2);

}

void p3(int a,int b, int disc)

{

float real,image;

real=-b/(2*a);

image=sqrt(-disc)/(2*a);

printf("Has complex roots:\n");

printf("%8.4f+%8.4fi\n",real,image);

printf("%8.4f-%8.4fi\n",real,image);

}

void main()

{ int a,b,c,disc;

printf("a,b,c:");

scanf("%d,%d,%d",&a,&b,&c);

disc=b*b-4*a*c;

if(fabs(disc)<=1e-6) p1(a,b);

else if(disc>1e-6) p2(a,b,disc);

else p3(a,b,disc);

}

8-6

#include"stdio.h"

#include"stdlib.h"

#include"conio.h"

#include"time.h"

void main()

{

void printaverage(int score[][5],int m,int n);

void printname(int score[][5],int m,int n);

int score[10][5];

int i,j;

srand(time(0));

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

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

score[i][j]=50+rand()%50+1;

printf("Output Students' score:\n");

printf("Course 1 2 3 4 5\n");

printf("-------------------------\n");

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

printf("No.%2d:",i+1);

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

printf("%3d ",score[i][j]);

printf("\n");

}

printaverage(score,10,5);

printname(score,10,5);

}

void printaverage(int score[][5],int m,int n) {

int i,j,sum;

printf("\nAverage score:\n");

for(i=0;i

sum=0;

for(j=0;j

sum=sum+score[i][j];

printf("No.%d:%.1f\n",i+1,sum/5.0);

}

}

void printname(int score[][5],int m,int n) {

int i,j,max0,row0;

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

max0=score[0][j];

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

if(score[i][j]>max0){

max0=score[i][j];

row0=i;

}

printf("Course %d,max score=%d,student:No.%d\n",j+1,max0,row0+1);

}

}

相关主题
相关文档
最新文档