课后编程题部分答案_第1页
课后编程题部分答案_第2页
课后编程题部分答案_第3页
课后编程题部分答案_第4页
课后编程题部分答案_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Sun课后编程题部分答案 1课后编程题部分答案Sun课后编程题部分答案 2第一章第一章(1)仿例)仿例1-2编写一编写一C程序,输入程序,输入2个数整数,输出它们的和、积。个数整数,输出它们的和、积。 #include main() int a, b, s; float t; scanf(%d%d, &a, &b); s=a+b; t=a*b; printf(s=%d, t=%fn, s, t);Sun课后编程题部分答案 3第一章第一章(2 2)编写程序打印输入如下形式的信息)编写程序打印输入如下形式的信息 * * * * * * * * * * * * * * * * * * * * You

2、 Are Good! You Are Good! * #include main() printf(*n); printf( You Are Good! n); printf(*n); Sun课后编程题部分答案 4第二章第二章1. 1. 编一个程序,输入一个三位数据,在窗体打印输出其个位数,编一个程序,输入一个三位数据,在窗体打印输出其个位数,1010位数和位数和100100数。数。 void main() int x,a,b,c; scanf(%d,&x); a=x/100; b=x%100/10; c=x%10; printf(%d %d %d,c,b,a);Sun课后编程题部分答案 5第

3、二章第二章2.2.编写程序,从键盘上输入两个无符号整数,求它们按位求与、编写程序,从键盘上输入两个无符号整数,求它们按位求与、或和异或的值,输出其结果。或和异或的值,输出其结果。 void main() int x,y; scanf(%u%u,&x,&y); printf(%u %u %u,x&y,x|y,xy);Sun课后编程题部分答案 6第二章第二章3 3. . 编写程序,从键盘输入梯形的上下底边长度和高,计算梯形的编写程序,从键盘输入梯形的上下底边长度和高,计算梯形的面积。面积。void main() int a,b,h; float s; scanf(%d%d%d,&a,&b,&h);

4、 s=0.5*(a+b)*h; printf(s=%f,s);Sun课后编程题部分答案 7第三章第三章(1 1)编写程序,从键盘上输入两个电阻的值,求它们并联和串联)编写程序,从键盘上输入两个电阻的值,求它们并联和串联的电阻值,输出结果保留两位小数。的电阻值,输出结果保留两位小数。 void main() float r1,r2,rs,rp; scanf(%f%f,&r1,&r2); rp=(r1+r2)/(r1*r2); rs=r1+r2; printf(rp=%f rs=%f,rp,rs); Sun课后编程题部分答案 8第三章第三章(2 2)编一个华氏温度与摄氏温度之间的转换程序,转公式如

5、下:)编一个华氏温度与摄氏温度之间的转换程序,转公式如下: 摄氏温度转换为华氏温度,摄氏温度转换为华氏温度,F F为华氏度。为华氏度。 void main() float c,f; scanf(%f,&c); f=9.0/5*c+32; printf(华氏温度华氏温度=%f,f);3259CFSun课后编程题部分答案 9第三章第三章(3 3)编一个程序,从键盘输入学生的三门课成绩,求其总成绩)编一个程序,从键盘输入学生的三门课成绩,求其总成绩及平均成绩及平均成绩。#include stdio.hmain()float a1,a2,a3,ave; scanf(%f%f%f,&a1,&a2,&a3

6、); ave=(a1+a2+a3)/3; printf(ave=%f,ave);Sun课后编程题部分答案 10第四章第四章 输入一公元年号,判断是否是闰年。闰年的条件是:年号输入一公元年号,判断是否是闰年。闰年的条件是:年号能被能被4 4整除但不能被整除但不能被100100整除,或者能被整除,或者能被400400整除。整除。 void main() int y; scanf(%d, &y); if (y%4=0 & y %100 !=0 | y%400=0) printf(YES!n); else printf(NO!n);Sun课后编程题部分答案 11第四章第四章(2 2)输入三个数据,如果

7、这三个数据能够构成三角形,计算并)输入三个数据,如果这三个数据能够构成三角形,计算并输出三角形的面积。输出三角形的面积。#include void main() float a,b,c,x,s; scanf(%f%f%f,&a,&b,&c); if (a+bc & a+cb & b+ca) x=0.5*(a+b+c); s=sqrt(x*(x-a)*(x-b)*(x-c); printf(s=%f,s);Sun课后编程题部分答案 12第四章第四章(3 3)编制一个就算个人所得税的程序。)编制一个就算个人所得税的程序。void main() float salary, tax; int ntax

8、; printf(nPlease enter a salary=); scanf(%f,&salary); ntax=salary/500; if (ntax=10) ntax=10; switch(ntax) case 0: case 1: tax=0;break; case 2: tax=(salary-1000)*0.05;break; Sun课后编程题部分答案 13case 3:case 4: tax=500*0.05+(salary-1500)*0.1;break;case 5:case 6: tax=500*0.05+1000*0.1+(salary-2500)*0.15;brea

9、k;case 7:case 8:case 9: tax=500*0.05+1000*0.1+1000*0.15+(salary-3500)*0.20;break; case 10: tax=500*0.05+1000*0.1+1000*0.15+1500*0.20+(salary-5000)*0.30; printf(nThe tax=%10.2fn,tax); 第四章第四章Sun课后编程题部分答案 14#include main() int i=1; float t= -1, s=0; do t= -t/i; s=s+t; i=i+1; while(fabs(t)1e-6); printf(

10、s=%fn, s);第四章第四章(4 4)编程计算多项式的和,精度为)编程计算多项式的和,精度为0.0000010.000001。Sun课后编程题部分答案 15void main() int i, a, b, c; for(i=100; i=999; i+) a=i /100; b=i/10%10; c=i%10; if(i=a*a*a+b*b*b+c*c*c) printf(%dn, i); 第四章第四章(5 5)编程显示所有的水仙花数。)编程显示所有的水仙花数。Sun课后编程题部分答案 16main() int i, j; for(i=1; i=4; i+) for(j=1; j=6-i;

11、 j+) putchar( ); for(j=1; j=1; i-) for(j=1; j=6-i; j+) putchar( ); for(j=1; j=i*2-1; j+) printf(%c, 65+i-1); printf(n); 第四章第四章(6 6)打印由数字组成的金字塔图案。)打印由数字组成的金字塔图案。Sun课后编程题部分答案 17#include main() int a, b, c; for(a=0; a=20; a+) for(b=0; b=33; b+) c=100-a-b; if(a*5+b*3+c/3.0=100) printf(%d, %d, %dn, a, b,

12、 c); 第四章第四章(7 7)编程解决百钱百鸡问题。)编程解决百钱百鸡问题。Sun课后编程题部分答案 18#include main() float x, x0, a; scanf(%f, &a); x=a; do x0=x; x=2/3.0*x0+a/(3*x0*x0); while(fabs(x-x0)1e-6); printf(x=%fn, x);第四章第四章(8 8)迭代法求)迭代法求a a的立方根。的立方根。Sun课后编程题部分答案 19#include #include main() float pi, pi0; int i=1; pi=2; do pi0=pi; pi=pi*(

13、2.0*i/(2.0*i-1)*(2.0*i/(2.0*i+1); i=i+1; while(fabs(pi-pi0)1e-6); printf(pi=%fn, pi);第四章第四章(9 9)计算)计算的近似值。的近似值。Sun课后编程题部分答案 20#include stdio.hmain() int i,j,sum; for(i=6;i=1000;i+) sum=0; for(j=1;j=i-1;j+) if(i%j=0) sum+=j; if (sum=i) printf(%d ,i); 第四章第四章(1010)打印输出)打印输出6 610001000之间的所有合数。之间的所有合数。Su

14、n课后编程题部分答案 21#include stdio.h#include math.hmain() int x,y,z; for(x=-sqrt(2000);x=sqrt(2000);x+) for(y=-sqrt(2000);y=sqrt(2000);y+) for(z=-sqrt(2000);z=sqrt(2000);z+) if(x*x+y*y+z*z=2000) printf(x=%d,y=%d,z=%dn,x,y,z);第四章第四章(1111)编程求方程)编程求方程x x2 2+y+y2 2+z+z2 2=2000=2000的所有整数解。的所有整数解。Sun课后编程题部分答案 22

15、main() int i, j, t, n, a11=0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10; for(i=0;i10;i+) printf(%d , ai); printf( n Enter the Move n=?); scanf(%d, &n); for(i=1; i=0;j-) aj+1=aj; a0=t; for(i=0; i=10; i+) printf(%d , ai); 第五章第五章(2 2)编程将一维数组中的元素向右循环移位)编程将一维数组中的元素向右循环移位N N次。次。Sun课后编程题部分答案 23#include main()int a100,

16、 b100, i, j, p, count=0,n=0,t; while(count=10 & t100) ai=t; count+; if(ai%2=0) bn+=ai; 第五章第五章(3 3)使用随机函数)使用随机函数randomrandom产生产生100100个个2 2位整数放入数组位整数放入数组a a,将其中将其中的偶数放入数组的偶数放入数组b b,然后运用选择法将数组然后运用选择法将数组b b升序排列,输出。升序排列,输出。Sun课后编程题部分答案 24for(i=0; in-1; i+) p=i; for(j=i+1; jn; j+) if(bjbp) p=j; t=bp; bp=

17、bi; bi=t; for(i=0; in; i+) printf(%d , bi); if(i%10=9) printf(n); 第五章第五章Sun课后编程题部分答案 25#include main() int a50, count=0,t,i,n=0 ; a0=random(99); while(count50) t=random(99); for(i=0;icount) a+count=t; for(i=0; i50; i+) printf(%2d , ai); if(i%10=9) printf(n); 第五章第五章(4 4)使用随机函数)使用随机函数randomrandom产生产生5

18、050个个0-1000-100互不相等的整数,并以互不相等的整数,并以一行一行1010个数据的形式输出。个数据的形式输出。Sun课后编程题部分答案 26void main() int i,j,sum,a104,max,p; for(i=0;i10;i+) /*i代表学生序号代表学生序号*/ sum=0; /*每位学生成绩输入前每位学生成绩输入前,其总成绩赋初值其总成绩赋初值0*/ for(j=0;j3;j+) /*j代表课程代号代表课程代号*/ scanf(%d,&aij); /*输入第输入第i号学生第号学生第j门课程的成绩门课程的成绩*/ sum=sum+aij; /*累加求总成绩累加求总成

19、绩*/ ai3=sum; /*求第求第i个学生的总成绩放到个学生的总成绩放到aiM*/ max=a03; p=0; for(i=1;imax) p=i; printf(No.%d Total score:%dn,p+1,ap3); 第五章第五章(6 6)输入)输入1010个学生的学号和三门课成绩,统计并输出三门课总个学生的学号和三门课成绩,统计并输出三门课总分最高的学生的学号和总分分最高的学生的学号和总分。Sun课后编程题部分答案 27#include void main() char st15,str2015; int i,j,p; for(i=0;i20;i+) gets(stri); f

20、or(i=0;i20-1;i+) /* 选择法排序选择法排序 */ p=i; for(j=i+1;j20;j+) if(strcmp(strj,strp)0) p=j; if(p!=i) strcpy(st,stri); strcpy(stri,strp); strcpy(strp,st); for(i=0;i20;i+) printf(%sn,stri); 第五章第五章(9 9)输入)输入2020个英文单词,存入到数组个英文单词,存入到数组strstr20152015中,将它们按中,将它们按升序打印出来。升序打印出来。Sun课后编程题部分答案 28#include main() int a1

21、0, b10, t; int n=0, m=0, i, j, f; printf(Input Array a, end with 1:); scanf(%d, &t); while(n10 & t!=-1) an+=t; scanf(%d, &t); printf(Input Array b, end with 1:); scanf(%d, &t); while(m10 & t!=-1) bm+=t; scanf(%d, &t); 第五章第五章(1010)输入两个数组,每个数组不超过)输入两个数组,每个数组不超过1010个元素。个元素。Sun课后编程题部分答案 29for(i=0; in; i

22、+) /* 打印只在数组打印只在数组a中出现的元素中出现的元素 */ f=1; for(j=0; jm; j+) if(ai=bj) f=0; break; if(f) printf(%d, ai); for(i=0; im; i+) /* 打印只在数组打印只在数组b中出现的元素中出现的元素 */ f=1; for(j=0; jn; j+) if(bi=aj) f=0; break; if(f) printf(%d, bi); 第五章第五章Sun课后编程题部分答案 30#include main() char str81; int i=-1; printf(Input:); scanf(%s,

23、 str); while(+i80 & stri!= 0)if(stri= $) stri= S; puts(str);第五章第五章(1 11 1)输入一行不超过)输入一行不超过8080个字符串,将所有的字符个字符串,将所有的字符$ $改作改作S S。Sun课后编程题部分答案 31#include void main() char x80,y26; int i,j,ny=0; gets(x); for(i=0;xi!=0;i+) if(xi=A&xi=Z) for(j=0;jny;j+) if(yj=xi) break; if(j=ny) yny=xi; ny+; for(i=0;iny;i+

24、) printf(%c ,yi); printf(n); 第五章第五章(1212)输入一行不超过)输入一行不超过8080个字符串,输出所有出现过的大写个字符串,输出所有出现过的大写英文字符英文字符。Sun课后编程题部分答案 32#include #include #include void main() char s80;int i=0;gets(s); while(si!=0) if(isdigit(si) strcpy (s+i,s+i+1); else i+; puts(s);第五章第五章(1 14 4)输入一行字符串,将其中所有的数字字符删除。)输入一行字符串,将其中所有的数字字符删除

25、。Sun课后编程题部分答案 33void main() char st80,ss20,sp20,*a=st,*b=ss,*t=sp; int i,n,m,p=-1; gets(a);gets(b); n=strlen(a); m=strlen(b); for(i=0;i=n-m+1;i+) a=st+i; strncpy(t,a,m); /*将字符指针将字符指针a指向的字符串取前指向的字符串取前m个字符复个字符复制到制到t所指的字符串中所指的字符串中*/ if(strcmp(b,t)=0) p=i; break; if(p=-1) printf(%d,p); else printf(%d,p+

26、1); /*因数组下标从因数组下标从0开始,所以输出开始,所以输出p+1*/第五章第五章(1 16 6)输入一行字符串,将其中所有的数字字符删除。)输入一行字符串,将其中所有的数字字符删除。Sun课后编程题部分答案 34float fe (int n, float x) float e,t; int i; e=1; t=1; for(i=1;iap&pp; i-) ai=ai-1; ap=y;void main() int a11; int x,p,i; for(i=0;i10;i+) scanf(%d,&ai); scanf(%d,&x); fun(a,10,x); for(i=0;i=10

27、;i+) printf(%d ,ai);第五章第五章(5 5)编写函数)编写函数void fun(void fun(intint * *a,a,intint n, n,intint y) y)。Sun课后编程题部分答案 36int fun(int s,int n) int i,sum=0,count=0,aver; for(i=0; in; i+) sum+=si; aver=sum/n; for(i=0; iaver) count+; return count;void main() int a50; int x,p,i=0; do scanf(%d,&ai+); while(ai-1!=-

28、1); printf(%d ,fun(a,i-1);第五章第五章(6 6)编写函数)编写函数intint fun(float s, fun(float s,intint n) n)。Sun课后编程题部分答案 37int gcd(int m,int n) if (m%n=0) return n; else return gcd(n,m%n);void main() int x,y,t; if(xy) t=x; x=y; y=t; scanf(%d,%d,&x,&y); printf(%d,gcd(x,y);第五章第五章(7 7)编写递归函数计算两个整数的最大公约数。)编写递归函数计算两个整数的最

29、大公约数。Sun课后编程题部分答案 38#define PI 3.14159#define V(r) 3.0/4*PI*r*r*rvoid main() float r1; scanf(%f, &r1); printf(v=%fn, V(r1); 第六章第六章(1 1)编写一个计算球体积的带参数的宏。)编写一个计算球体积的带参数的宏。Sun课后编程题部分答案 39#define INPUTARRAY(a, n) for(i=0;in;i+)scanf(%d,&ai)#define SUMARRAY(a,n,sum) for(i=0;i*p2) t=p1,p1=p2,p2=t; if(*p1*p

30、3) t=p1,p1=p3,p3=t; if(*p2*p3) t=p2,p2=p3,p3=t; printf(new ordr:n); printf(%d,%d,%d,*p1,*p2,*p3); getch();第七章第七章(1 1)使用指针法,实现输入三个整数,按由小到大的顺序输出。)使用指针法,实现输入三个整数,按由小到大的顺序输出。Sun课后编程题部分答案 41#define STUDENT 4#define COURSE 5float ave_stu(float (*p)COURSE,int n);/*计算第计算第n个学生的平均成绩个学生的平均成绩*/float ave_cou(flo

31、at (*p)COURSE,int n); /*计算第计算第n门课程的平均成绩门课程的平均成绩*/float ave_tot(float *p,int n); /*计算计算n个分数的总平均成绩个分数的总平均成绩*/void search(float (*p)COURSE,int n); /*输出有输出有2门及以上课程不及格学生门及以上课程不及格学生的成绩的成绩*/main() float scoreSTUDENTCOURSE; int i,j; printf(nInput scores:n); for(i=0;iSTUDENT;i+) for(j=0;jCOURSE;j+) scanf(%f,

32、&scoreij); printf(nNO. C1 C2 C3 C4 C5n); 第七章第七章(4 4)编写一个成绩管理程序来处理)编写一个成绩管理程序来处理4 4个学生、个学生、5 5门课程的成绩门课程的成绩。Sun课后编程题部分答案 42for(i=0;iSTUDENT;i+) printf(%3d ,i+1); for(j=0;jCOURSE;j+) printf(%4.1f ,scoreij); printf(n); printf(nAverage score of student:n); for(i=0;iSTUDENT;i+) printf(NO.%d %4.1fn,i+1,ave

33、_stu(score,i); printf(nAverage score of course:n); for(j=0;jCOURSE;j+) printf(C%d %4.1fn,j+1,ave_cou(score,j); printf(nAverage score of total:%4.1fn,ave_tot(*score,STUDENT*COURSE); search(score,STUDENT);第七章第七章Sun课后编程题部分答案 43第七章第七章float ave_stu(float (*p)COURSE,int n) float s; int i; s=0; for(i=0;iCO

34、URSE;i+) s+=*(*(p+n)+i); s=s/COURSE; return(s);float ave_cou(float (*p)COURSE,int n) int i; float s; s=0; for(i=0;iSTUDENT;i+) s+=*(*(p+i)+n); s=s/STUDENT; return(s);Sun课后编程题部分答案 44float ave_tot(float *p,int n) float s; int i; for(i=0;in;i+) s+=*(p+i); s=s/n; return(s);void search(float (*p)COURSE,i

35、nt n) int i,j,s; printf(nNO. C1 C2 C3 C4 C5n); for(i=0;in;i+) s=0; for(j=0;jCOURSE;j+) if(*(*(p+i)+j)=2) printf(%3d ,i+1); for(j=0;jCOURSE;j+) printf(%4.1f ,*(*(p+i)+j); printf(n); 第七章第七章Sun课后编程题部分答案 45第七章第七章#include#include#define MAX 100main() char *s,*t; int c; s=(char *)malloc(MAX*sizeof(char);

36、gets(s); t=s; c=0; while(*t!=0) if(*t=$)c+; t+; printf(nThere are %d $ in %sn,c,s); getch();(5 5)输入一行文本,统计其中)输入一行文本,统计其中$ $字符出现的次数字符出现的次数。Sun课后编程题部分答案 46第七章第七章#include#includevoid del_char(char *a,char ch) while(*a!=ch) a+; strcpy(a,a+1);main() char *s,del; del=getchar(); gets(s); del_char(s,del); p

37、uts(s); (8 8)编制函数,删除字符串中指定的字符)编制函数,删除字符串中指定的字符。Sun课后编程题部分答案 47第八章第八章(1 1)编制程序,处理学生信息)编制程序,处理学生信息。#include #include#define N 10struct student long num; char name10; float score3; float ave;Sun课后编程题部分答案 48第八章第八章main() void input(struct student s,int n); /*输入输入n个学生数据个学生数据*/ float average(struct student

38、 s,int n);/*计算第计算第n个学生的平均成绩个学生的平均成绩*/ int max(struct student s,int n); /*计算学生中哪个的平均成绩最高计算学生中哪个的平均成绩最高*/ struct student sN; int i,m; float a=0; /*总平均成绩总平均成绩*/ input(s,N); for(i=0;iN;i+) si.ave=average(s,i); a=a+si.ave; a=a/N; printf(Number Name Score-1 Score-2 Score-3 Averagen);Sun课后编程题部分答案 49第八章第八章f

39、or(i=0;iN;i+) printf(%ld%10s%f%f%f%fn,si.num,,si.score0,si.score1,si.score2,si.ave); printf(The total average score is %fn,a); m=max(s,N); printf(The max score student:n); printf(Number:%ldnName:%snScore 1:%fnScore 2:%fnScore 3:%fnAverage Score:%fn,sm.num,,sm.score0,sm.score1,sm.score2

40、,sm.ave);Sun课后编程题部分答案 50第八章第八章void input(struct student s,int n) int i; for(i=0;in;i+) printf(Please input student number:); scanf(%ld,&si.num); printf(Please input student name:); scanf(%s,); printf(Please input student score 1:); scanf(%f,&si.score0); printf(Please input student score 2:); scanf(%f,&si.score1); printf(Please input student score 3:); scanf(%f,&si.score2); Sun课后编程题部分答案 51第八章第八章float average(struct student s,int n) int i; float a=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论