《計(jì)算機(jī)基礎(chǔ)與程序設(shè)計(jì)》習(xí)題題解_第1頁(yè)
《計(jì)算機(jī)基礎(chǔ)與程序設(shè)計(jì)》習(xí)題題解_第2頁(yè)
《計(jì)算機(jī)基礎(chǔ)與程序設(shè)計(jì)》習(xí)題題解_第3頁(yè)
《計(jì)算機(jī)基礎(chǔ)與程序設(shè)計(jì)》習(xí)題題解_第4頁(yè)
《計(jì)算機(jī)基礎(chǔ)與程序設(shè)計(jì)》習(xí)題題解_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、計(jì)算機(jī)基礎(chǔ)與程序設(shè)計(jì)習(xí)題題解說(shuō)明:本次只補(bǔ)充了自學(xué)指導(dǎo)書(shū)中“上機(jī)實(shí)驗(yàn)的程序設(shè)計(jì)部分”與“匯編習(xí)題”的題解。教科書(shū)中的習(xí)題解答在自學(xué)指導(dǎo)書(shū)中已編寫(xiě) 實(shí)驗(yàn)二:簡(jiǎn)單c程序的設(shè)計(jì) (1) main() float f,c; printf(請(qǐng)輸入一個(gè)華氏溫度:); scanf(%f,&f); c=5.0/9*(f-32); printf(華氏溫度=%6.1f,攝氏溫度=%6.1fn,f,c); (2) #include main() char c1,c2; printf(請(qǐng)輸入兩個(gè)字符:);c1=getchar();c2=getchar(); printf(兩個(gè)字符是:);putchar(c1);put

2、char(c2); printf(n); printf(兩個(gè)字符的ascii碼是:%d,%dn,c1,c2); (3) #include main() float a=5,b=4,c=-1,d,x1,x2; d=sqrt(b*b-4*a*c); x1=(-b+d)/(2*a); x2=(-b-d)/(2*a); printf(x1=%6.1f,x2=%6.1fn,x1,x2); 實(shí)驗(yàn)三:具有選擇結(jié)構(gòu)的程序設(shè)計(jì)(1) #include main() float a,b,c,s; double area; printf(“請(qǐng)輸入三個(gè)實(shí)數(shù):”);scanf(“%f,%f,%f”,&a,&b,&c);

3、 if(a+b=c|b+c=a|a+c=b)printf(“該數(shù)據(jù)不能構(gòu)成三角形n”); else s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“三角形的面積=%lfn”,area); (2) main() int x,y; printf(“請(qǐng)輸入一個(gè)整數(shù):”);scanf(“%d”,&x); if(x-5)y=x+2; else if(x5)y=-x+9; else if(x20)y=x-4; else y=x*x; printf(“x=%d,y=%dn”,x,y); 實(shí)驗(yàn)四:具有循環(huán)結(jié)構(gòu)的程序設(shè)計(jì) (1) /*用do_while循

4、環(huán)*/ main() int x,y,a,b,r; printf(請(qǐng)輸入兩個(gè)整數(shù):); scanf(%d,%d,&x,&y); a=x;b=y; do r=x%y; x=y;y=r;while(r); printf(最大公約數(shù)=%d,最小公倍數(shù)=%ldn,x,(long)(a*b)/x);/*用while循環(huán)*/ main() int x,y,a,b,r; printf(input two integer:); scanf(%d,%d,&x,&y); a=x;b=y; r=x%y; while(r) x=y;y=r;r=x%y; printf(最大公約數(shù)=%d,最小公倍數(shù)=%ldn,y,(lo

5、ng)(a*b)/y); /*用for循環(huán)*/ main() int x,y,a,b,r; printf(請(qǐng)輸入兩個(gè)整數(shù):); scanf(%d,%d,&x,&y); a=x;b=y; for(r=x%y;r;) x=y;y=r;r=x%y; printf(最大公約數(shù)=%d, 最小公倍數(shù)=%ldn,y,(long)(a*b)/y); (2) #include main() int x,x1=0,x2=0,x3=0,x4=0;char c; printf(請(qǐng)輸入一串字符:); while(c=getchar()!=n) if(c=a & c=a & c=0 & c=9)x3+; else x4+

6、; x=x1+x2+x3+x4; printf(小寫(xiě)字母的個(gè)數(shù)=%d,大寫(xiě)字母的個(gè)數(shù)=%d,數(shù)字字符的個(gè)數(shù)=%d, 其它字符的個(gè)數(shù)=%d,字符的總數(shù)=%dn,x1,x2,x3,x4,x); (3) main() int x,i=0; printf(字符 ascii碼n); for(x=65;x=1.0e-6) n+; sum+=1.0/fact; fact=fact*n; printf(sum=%lfn,sum); 實(shí)驗(yàn)五:使用數(shù)組的程序設(shè)計(jì)(1)/*用第1個(gè)數(shù)作初值*/ #define m 10 main() float xm,i,max,min; printf(請(qǐng)輸入%d個(gè)整數(shù):n,m);

7、 for(i=0;i10;i+) scanf(%f,&xi); max=min=x0; for(i=1;i10;i+) if(maxxi)min=xi; printf(最大值=%f,最小值=%fn,max,min); /*用最后1個(gè)數(shù)作初值*/ #define m 10 main() float xm,i,max,min; printf(請(qǐng)輸入%d個(gè)整數(shù):n,m); for(i=0;i10;i+) scanf(%f,&xi); max=min=x9; for(i=0;i9;i+) if(maxxi)min=xi; printf(最大值=%f,最小值=%fn,max,min); (2)/*比較法

8、*/ #define m 10 main() int xm,i,j,t; printf(請(qǐng)輸入10個(gè)整數(shù)); for(i=0;im;i+) scanf(%d,&xi); for(i=0;im-1;i+) for(j=i+1;jm;j+) if(xixj)t=xi;xi=xj;xj=t; printf(從大到小排序?yàn)閚); for(i=0;im;i+) printf(%5d,xi); printf(n); /*冒泡法*/ #define m 10 main() int xm,i,j,t; printf(請(qǐng)輸10個(gè)整數(shù):); for(i=0;im;i+) scanf(%d,&xi); for(i=

9、0;im-1;i+) for(j=i+1;jm;j+) if(xixj)t=xi;xi=xj;xj=t; printf(從大到小排序?yàn)?n); for(i=0;im;i+) printf(%5d,xi); printf(n); /*選擇法*/ #define m 10 main() int xm,i,j,t,max; printf(請(qǐng)輸入10個(gè)整數(shù):); for(i=0;im;i+) scanf(%d,&xi); for(i=0;im-1;i+) max=i; for(j=i+1;jm;j+) if(xmaxxj)max=j; t=xmax;xmax=xi;xi=t; printf(從大到小排

10、序?yàn)?n); for(i=0;im;i+) printf(%5d,xi); printf(n); (3) #include main() char str=acegik,c;int i=0,j; printf(輸入一個(gè)待刪除的字符:);scanf(%c,&c); printf(原字符串為:%sn,str); while(stri!=0) if(c=stri) for(j=i;j=strlen(str);j+)strj=strj+1;break; i+; printf(刪除后的結(jié)果為:%sn,str); (4) #define m 4 #define n 3 main() float xmn,s

11、umm,saverm,cavern; int i,j; printf(請(qǐng)輸入%d個(gè)學(xué)生,%d門(mén)功課的成績(jī):n,m,n); for(i=0;im;i+) for(j=0;jn;j+)scanf(%f,x0+i*n+j); for(i=0;im;i+) sumi=0; for(j=0;jn;j+)sumi+=xij; saveri=sumi/n; for(j=0;jn;j+) caverj=0; for(i=0;im;i+)caverj+=xij; caverj=caverj/m; printf(“成績(jī)表:n”); for(i=0;im;i+) for(j=0;jn;j+) printf(%6.1

12、f,xij); printf(%6.1f%6.1f,sumi,saveri); printf(n); for(i=0;i(ab?b:a)?c:(ab?b:a); int min(int a,int b,int c) return cb?b:a)?c:(ab?b:a); float aver(int a,int b,int c) return (a+b+c)/3; main() int x,y,z; printf(請(qǐng)輸入x,y,z=); scanf(%d,%d,%d,&x,&y,&z); printf(max=%d,min=%d,aver=%fn,max(x,y,z),min(x,y,z),av

13、er(x,y,z); /*最大值、最小值用全局變量*/ int max,min; float aver(int a,int b,int c) max=c(ab?b:a)?c:(ab?b:a); min=cb?b:a)?c:(ab?b:a); return (a+b+c)/3; main() int x,y,z; printf(請(qǐng)輸入x,y,z=); scanf(%d,%d,%d,&x,&y,&z); printf(max=%d,min=%d,aver=%fn,max,min,aver(x,y,z); (3) int ack(int m,int n) if(m=0)return n+1; els

14、e if(n=0)return ack(m-1,1); else return ack(m-1,ack(m,n-1); main() int m,n; printf(請(qǐng)輸入m,n=); scanf(%d,%d,&m,&n); printf(%dn,ack(m,n); 實(shí)驗(yàn)七:使用指針的程序設(shè)計(jì) (1) void convert(int *p,int n) int i,j,t; for(i=0,j=n-1;ij;i+,j-) t=*(p+i);*(p+i)=*(p+j);*(p+j)=t; main() int x10,i; printf(請(qǐng)輸入10個(gè)整數(shù):); for(i=0;i10;i+)s

15、canf(%d,x+i); convert(x,10); printf(“它們的逆序?yàn)椋骸?; for(i=0;i10;i+) printf(%5d,xi); printf(n); (2) #define m 4 #define n 5 void func1(long *xh,float (*p)n+2) int i,j; for(i=0;im;i+) *(*(p+i)+n)=0; for(j=0;jn;j+)*(*(p+i)+n)+=*(*(p+i)+j); *(*(p+i)+n+1)=*(*(p+i)+n)/n; for(i=0;im;i+) printf(%7ld%7.1f%7.1fn,

16、*(xh+i),*(*(p+i)+n),*(*(p+i)+n+1); printf(n); void func2(long *xh,float *p) int i,j,k; for(i=0;im;i+) for(j=0;jn;j+) if(*(p+i*(n+2)+j)60) printf(%7ld,*(xh+i); for(k=0;kn;k+) printf(%7.1f,*(p+i*(n+2)+k);printf(n); break; main() float xmn+2;long xhm;int i,j; printf(請(qǐng)輸入學(xué)號(hào)和成績(jī):n); for(i=0;im;i+) scanf(%l

17、d,&xhi); for(j=0;jn;j+) scanf(%f,x0+i*(n+2)+j); printf(nn); func1(xh,x); func2(xh,*x); (3) #include void strlink(char *str1, char *str2) int n=0,m=0,i; while(str1n+); while(str2m+); for(i=0;im;i+)str1n-1+i=str2i; main() char c1160,c280; printf(請(qǐng)輸入兩個(gè)字符串:n); gets(c1);gets(c2); strlink(c1,c2); printf(連

18、接后的結(jié)果為:n); puts(c1); (4) #include main() char str580,c80,*p5;int i,j,max; printf(請(qǐng)輸入5個(gè)字符串:n); for(i=0;i5;i+) pi=stri;gets(pi); for(i=0;i4;i+) max=i; for(j=i+1;j5;j+) if(strcmp(pmax,pj)0)max=j; strcpy(c,pmax);strcpy(pmax,pi);strcpy(pi,c); printf(從大到小的順序?yàn)椋簄); for(i=0;i5;i+)puts(pi); 實(shí)驗(yàn)八:使用結(jié)構(gòu)體的程序設(shè)計(jì) (1)

19、 #define std struct ss #include #include #include std char name7; float score3;std *next;*head=null; /*建立鏈表*/ void creat() std *p1;char c7;float x3; void insr(std *); p1=(std *)malloc(sizeof(std); printf(請(qǐng)輸入姓名、數(shù)學(xué)、物理、外語(yǔ):); scanf(%s%f%f%f,c,&x0,&x1,&x2); while(strcmp(c,#) strcpy(p1-name,c); p1-score0=

20、x0; p1-score1=x1; p1-score2=x2; insr(p1); p1=(std *)malloc(sizeof(std); printf(請(qǐng)輸入姓名、數(shù)學(xué)、物理、外語(yǔ):); scanf(%s%f%f%f,c,&x0,&x1,&x2); /*顯示鏈表*/ void disp() std *p; p=head; if(head=null)printf(鏈表為空);return; printf(姓名 數(shù)學(xué) 物理 外語(yǔ)n); while(p) printf(%-8s%-6.1f%-6.1f%-6.1fn,p-name,p-score0, p-score1,p-score2); p=

21、p-next; /*刪除結(jié)點(diǎn)*/ void del(char *xm) std *p1,*p2; p1=head; if(head=null)printf(鏈表為空);return; while(strcmp(p1-name,xm)!=0 & p1-next!=null) p2=p1;p1=p1-next; if(strcmp(p1-name,xm)!=0 & p1-next=null) printf(該學(xué)生不存在);return; if(p1=head)head=p1-next;return;/*刪除第1個(gè)結(jié)點(diǎn)*/ if(strcmp(p1-name,xm)=0 & p1-next=null

22、) p2-next=null;return; /*刪除尾結(jié)點(diǎn)*/ else p2-next=p1-next;return; /*刪除中間結(jié)點(diǎn)*/ /*插入新結(jié)點(diǎn)(插在鏈表的末尾)*/ void insr(std *newstu) std *p1; p1=head; if(head=null)head=newstu; newstu-next=null; return; while(p1-next)p1=p1-next; p1-next=newstu; newstu-next=null; /*查找結(jié)點(diǎn)*/ void find(char *xm) std *p1; p1=head; if(head=

23、null)printf(鏈表為空);return; while(strcmp(p1-name,xm)!=0 & p1-next!=null)p1=p1-next; if(strcmp(p1-name,xm)!=0 & p1-next=null) printf(該學(xué)生不存在n);return; printf(該學(xué)生的成績(jī)?yōu)椋?f %f %fn,p1-score0, p1-score1, p1-score2); /*主函數(shù)*/ main() std *newstu; char xsxm7; creat(); disp(); printf(輸入刪除學(xué)生的姓名:); scanf(%s,xsxm); d

24、el(xsxm); disp(); printf(輸入插入學(xué)生的姓名、數(shù)學(xué)、物理、外語(yǔ):); newstu=(std *)malloc(sizeof(std); scanf(%s%f%f%f,newstu-name,&newstu-score0, &newstu-score1, &newstu-score2); insr(newstu); disp(); printf(輸入查找學(xué)生的姓名:); scanf(%s,xsxm); find(xsxm); (2) #define std struct ss #include #include #include std char name7; floa

25、t score3;std *next;*head=null; /*建立鏈表*/ void creat() std *p1;char c7;float x3; void insr(std *); p1=(std *)malloc(sizeof(std); printf(請(qǐng)輸入姓名、數(shù)學(xué)、物理、外語(yǔ):); scanf(%s%f%f%f,c,&x0,&x1,&x2); while(strcmp(c,#) strcpy(p1-name,c); p1-score0=x0; p1-score1=x1; p1-score2=x2; insr(p1); p1=(std *)malloc(sizeof(std)

26、; printf(請(qǐng)輸入姓名、數(shù)學(xué)、物理、外語(yǔ):); scanf(%s%f%f%f,c,&x0,&x1,&x2); /*顯示鏈表*/ void disp() std *p; p=head; if(head=null)printf(鏈表為空);return; printf(姓名 數(shù)學(xué) 物理 外語(yǔ)n); while(p) printf(%-8s%-6.1f%-6.1f%-6.1fn,p-name,p-score0, p-score1,p-score2); p=p-next; /*刪除結(jié)點(diǎn)*/ void del(char *xm) std *p1,*p2; p1=head; if(head=null

27、)printf(鏈表為空);return; while(strcmp(p1-name,xm)!=0 & p1-next!=null) p2=p1;p1=p1-next; if(strcmp(p1-name,xm)!=0 & p1-next=null) printf(該學(xué)生不存在);return; if(p1=head)head=p1-next;return;/*刪除第1個(gè)結(jié)點(diǎn)*/ if(strcmp(p1-name,xm)=0 & p1-next=null) p2-next=null;return; /*刪除尾結(jié)點(diǎn)*/ else p2-next=p1-next;return; /*刪除中間結(jié)點(diǎn)

28、*/ /*插入新結(jié)點(diǎn)(插在鏈表的末尾)*/ void insr(std *newstu) std *p1,*p2; p1=head; if(head=null)head=newstu; newstu-next=null; return; while(strcmp(newstu-name,p1-name)next) p2=p1;p1=p1-next; if(strcmp(newstu-name,head-name)0 & head=p1) head=newstu;newstu-next=p1; else if(p1-next=null & strcmp(newstu-name,p1-name)0

29、) p1-next=newstu; newstu-next=null; else p2-next=newstu;newstu-next=p1; /*查找結(jié)點(diǎn)*/ void find(char *xm) std *p1; p1=head; if(head=null)printf(鏈表為空);return; while(strcmp(p1-name,xm)!=0 & p1-next!=null)p1=p1-next; if(strcmp(p1-name,xm)!=0 & p1-next=null) printf(該學(xué)生不存在);return; printf(該學(xué)生的成績(jī)?yōu)椋?f %f %fn,p1

30、-score0, p1-score1, p1-score2); /*主函數(shù)*/ main() std *newstu; char xsxm7; creat(); disp(); printf(輸入刪除學(xué)生的姓名:); scanf(%s,xsxm); del(xsxm); disp(); printf(輸入插入學(xué)生的姓名、數(shù)學(xué)、物理、外語(yǔ):); newstu=(std *)malloc(sizeof(std); scanf(%s%f%f%f,newstu-name,&newstu-score0, &newstu-score1, &newstu-score2); insr(newstu); dis

31、p(); printf(輸入查找學(xué)生的姓名:); scanf(%s,xsxm); find(xsxm); (3) #define std struct ss #include #include #include std char name7; float score3;std *next;*head=null; /*建立鏈表*/ void creat() std *p1;int n=0;char c7;float x3; void insr(std *); p1=(std *)malloc(sizeof(std); head=p1; p1-next=null; strcpy(c,a); whi

32、le(strcmp(c,#) n+; if(n!=1) strcpy(p1-name,c); p1-score0=x0; p1-score1=x1; p1-score2=x2; insr(p1); p1=(std *)malloc(sizeof(std); printf(請(qǐng)輸入姓名、數(shù)學(xué)、物理、外語(yǔ):); scanf(%s%f%f%f,c,&x0,&x1,&x2); /*顯示鏈表*/ void disp() std *p; p=head-next; if(head-next=null)printf(鏈表為空);return; printf(姓名 數(shù)學(xué) 物理 外語(yǔ)n); while(p) pri

33、ntf(%-8s%-6.1f%-6.1f%-6.1fn,p-name,p-score0, p-score1,p-score2); p=p-next; /*刪除結(jié)點(diǎn)*/ void del(char *xm) std *p1,*p2; p1=head-next; if(head-next=null)printf(鏈表為空);return; while(strcmp(p1-name,xm)!=0 & p1-next!=null) p2=p1;p1=p1-next; if(strcmp(p1-name,xm)!=0 & p1-next=null) printf(該學(xué)生不存在);return; if(p

34、1=head-next)head-next=p1-next;return;/*刪除第1個(gè)結(jié)點(diǎn)*/ if(strcmp(p1-name,xm)=0 & p1-next=null) p2-next=null;return; /*刪除尾結(jié)點(diǎn)*/ else p2-next=p1-next;return; /*刪除中間結(jié)點(diǎn)*/ /*插入新結(jié)點(diǎn)(插在鏈表的末尾)*/ void insr(std *newstu) std *p1,*p2; p1=head-next; if(head-next=null)head-next=newstu; newstu-next=null; return; while(str

35、cmp(newstu-name,p1-name)next) p2=p1;p1=p1-next; if(strcmp(newstu-name,head-next-name)0 & head-next=p1) head-next=newstu;newstu-next=p1; else if(p1-next=null & strcmp(newstu-name,p1-name)0) p1-next=newstu; newstu-next=null; else p2-next=newstu;newstu-next=p1; /*查找結(jié)點(diǎn)*/ void find(char *xm) std *p1; p1=

36、head-next; if(head-next=null)printf(鏈表為空);return; while(strcmp(p1-name,xm)!=0 & p1-next!=null)p1=p1-next; if(strcmp(p1-name,xm)!=0 & p1-next=null) printf(該學(xué)生不存在);return; printf(該學(xué)生的成績(jī)?yōu)椋?f %f %fn,p1-score0, p1-score1, p1-score2); /*主函數(shù)*/ main() std *newstu; char xsxm7; creat(); disp(); printf(輸入刪除學(xué)生的

37、姓名:); scanf(%s,xsxm); del(xsxm); disp(); printf(輸入插入學(xué)生的姓名、數(shù)學(xué)、物理、外語(yǔ):); newstu=(std *)malloc(sizeof(std); scanf(%s%f%f%f,newstu-name,&newstu-score0, &newstu-score1, &newstu-score2); insr(newstu); disp(); printf(輸入查找學(xué)生的姓名:); scanf(%s,xsxm); find(xsxm); (4) #define std struct work #include #include std

38、int bh; float gz;std *next;*head=null; /*建立鏈表*/ void creat() std *p1,*p2;float x; p1=p2=(std *)malloc(sizeof(std); printf(請(qǐng)輸入姓名、數(shù)學(xué)、物理、外語(yǔ):); scanf(%d%f,&p1-bh,&x); while(p1-bh!=0) p1-gz=x; if(head=null)head=p1; else p2-next=p1; p2=p1; p1=(std *)malloc(sizeof(std); printf(請(qǐng)輸入姓名、數(shù)學(xué)、物理、外語(yǔ):); scanf(%d%f,&p1-bh,&p1-gz); p2-next=null; /*顯示鏈表*/ void disp() std *p; p=head; if(head=null)printf(鏈表為空);return; printf(姓名

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論