104科技
当前位置: 首页 电脑基础

操作系统原理与实训教程第三版课后答案(谭浩强 C程序设计第三版 课后习题答案)

时间:2024-04-15 作者: 小编 阅读量: 1 栏目名: 电脑基础

0

操作系统这门课一共有多少章节?

这门课一共有11个章节。包括:第一章操作系统概览,第二章进程描述和控制,第三章线程,第四章并发性:互斥和同步,第五章并发:死锁和饥饿,第六章内存管理,第七章虚拟内存,第八章单处理器调度,第九章多处理器和实时调度,第十章I/O管理和磁盘调度,第十一章文件管理,。

谭浩强 C程序设计第三版 课后习题答案

6.7完数
main()
#include M 1000/*定义寻找范围*/
main()
{
int k0,k1,k2,k3,k4,k5,k6,k7,k8,k9;
int i,j,n,s;
for(j=2;j<=M;j++)
{
n=0;
s=j;
for(i=1;i{ if((j%i)==0) { if((j%i)==0) { n++; s=s-i; switch(n)/*将每个因子赋给k0,k1…k9*/ { case 1: k0=i; break; case 2: k1=i; break; case 3: k2=i; break; case 4: k3=i; break; case 5: k4=i; break; case 6: k5=i; break; case 7: k6=i; break; case 8: k7=i; break; case 9: k8=i; break; case 10: k9=i; break; } } } if(s==0) { printf("%d是一个‘完数’,它的因子是",j); if(n>1) printf("%d,%d",k0,k1); if(n>2) printf(",%d",k2); if(n>3) printf(",%d",k3); if(n>4) printf(",%d",k4); if(n>5) printf(",%d",k5); if(n>6) printf(",%d",k6); if(n>7) printf(",%d",k7); if(n>8) printf(",%d",k8); if(n>9) printf(",%d",k9); printf("\n"); } } 方法二:此题用数组方法更为简单. main() { static int k[10]; int i,j,n,s; for(j=2;j<=1000;j++) { n=-1; s=j; for(i=1;i { if((j%i)==0) { n++; s=s-i; k[n]=i;/*将每个因子赋给k0,k1...k9*/ } } if(s==0) { printf("%d是一个完数,它的因子是:",j); for(i=0;i printf("%d,",k[i]); printf("%d\n",k[n]); } } 5.8 有一个分数序列:2/1,3/2,5/3,8/5……求出这个数列的前20项之和. 解: main() { int n,t,number=20; float a=2,b=1,s=0; for(n=1;n<=number;n++) { s=s+a/b; t=a,a=a+b,b=t; } printf("总和=%9.6f\n",s); } 6.9球反弹问题 main() { float sn=100.0,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); } 6.10猴子吃桃 main() { int day,x1,x2; day=9; x2=1; while(day>0) { x1=(x2+1)*2; x2=x1; day--; } printf("桃子总数=%d\n",x1); } 6.14打印图案 main() { int i,j,k; for(i=0;i<=3;i++) { for(j=0;j<=2-1;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"); } 6.15乒乓比赛 main() { char i,j,k;/*i是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("顺序为:\na-%c\tb--%c\tc--%c\n",i,j,k); } } } } 7.1用筛选法求100之内的素数. /*用筛选法求100之内的素数*/ #include #define N 101 main() {int i,j,line,a[N]; for(i=2;i 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,line=0;i { if(a[i]!=0) {printf("%5d",a[i]); line++; if(line==10) {printf("\n"); line=0;} } } 7.2用选择法对10个数排序. /*选择法排序.*/ #define N 10 main() { int i,j,min,temp,a[N]; /*输入数据*/ printf("请输入十个数:\n"); for (i=0;i { printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); for(i=0;i printf("%5d",a[i]); printf("\n"); /*排序*/ for (i=0;i { min=i; for(j=i+1;j if(a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } /*输出*/ printf("\n排序结果如下:\n"); for(i=0;i printf("%5d",a[i]); } 7.3对角线和: /*计算矩阵对角线元素之和*/ main() { float a[3][3],sum=0; int i,j; printf("请输入矩阵元素:\n"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%f",&a[i][j]); for(i=0;i<3;i++) sum=sum+a[i][i]; printf("对角元素之和=6.2f",sum); } 7.4插入数据到数组 /*插入数据到数组*/ main() {int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number,end,i,j; printf("初始数组如下:"); for (i=0;i<10;i++) printf("%5d",a[i]); printf("\n"); printf("输入插入数据:"); 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; } } } for(i=0;j<11;i++) printf("a%6d",a[i]); } 7.5将一个数组逆序存放。 /*数组逆序存放*/ #define N 5 main() { int a[N]={8,6,5,4,1},i,temp; printf("\n 初始数组:\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("\n 交换后的数组:\n"); for(i=0;i printf("%4d",a[i]); } 7.6杨辉三角 /*打印杨辉三角形*/ #define N 11 main() { int i,j,a[N][N]; for(i=1;i {a[i][i]=1; a[i][1]=1; } for(i=3;i for(j=2;j<=i-1;j++) a[i][j]=a[i01][j-1]+a[i-1][j]; for(i=1;i { for(j=1;j<=i;j++) printf("%6d",a[i][j]; printf("\n"); } printf("\n"); } 7.8鞍点 /*查找鞍点*/ #define N 10 #define M 10 main() { int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj; printf("\n输入行数n:"); scanf("%d",&n); printf("\n输入列数m:"); scanf("%d",&m); for(i=0;i { printf("第%d行?\n",i); for(j=0;j scanf("%d",&a[i][j]; } for(i=0;i { for(j=0;j printf("%5d",a[i][j]); pritf("\n"); } flag2=0; for(i=0;i { max=a[i][0]; for(j=0;j if(a[i][j]>max) { max=a[i][j]; maxj=j; } for (k=0,flag1=1;kif(max>a[k][max]) flag1=0; if(flag1) { printf("\n第%d行,第%d列的%d是鞍点\n",i,maxj,max); flag2=1; } } if(!flag2) printf("\n 矩阵中无鞍点! \n"); } 7.9变量说明:top,bott:查找区间两端点的下标;loca:查找成功与否的开关变量. /*折半查找*/ #include #define N 15 main() { int i,j,number,top,bott,min,loca,a[N],flag; char c; printf("输入15个数(a[i]>[i-1])\n); scanf("%d",&a[0]); i=1; while(i { scanf("%d",&a[i]); if(a[i]>=a[i-1]) i++; esle {printf("请重输入a[i]"); printf("必须大于%d\n",a[i-1]); } } printf("\n"); for(i=0;i printf("%4d",a[i]); printf("\n"); flag=1; while(flag) { printf("请输入查找数据:"); scanf("%d",&number); loca=0; top=0; bott=N-1; if((numbera[N-1])) loca=-1; while((loca==0)&&(top<=bott)) { min=(bott+top)/2; if(number==a[min]) { loca=min; printf("%d位于表中第%d个数\n",number,loca+1); } else if(number bott=min-1; else top=min+1; } if(loca==0||loca==-1) printf("%d不在表中\n",number); printf("是否继续查找?Y/N!\n"); c=getchar(); if(c=='N'||c=='n') flag=0; } } 7.10/*统计字符数*/ main() { int i,j,uppn,lown,dign,span,othn; char text[3][80]; uppn=lown=dign=span=othn=0; for(i=0;i<3;i++) { printf("\n请输入第%d行:\n",i); gets(text[i]); for(j=0;j<80 && text[i][j]!='\0';j++) {if(text[i][j]>='A' && text[i][j]<='Z') uppn+=1; else if(text[i][j]>='a' && text[i][j]<='z') lown+=1; else if(text[i][j]>='1' && text[i][j]<='9') dign+=1; else if(text[i][j]=' ') span+=1; else othn+=1; } } for(i=0;i<3;i++) printf("%s=n",text[i]); printf("大写字母数:%d\n",uppn); printf("小写字母数:%d\n",lown); printf("数字个数:%d\n",dign); printf("空格个数:%d\n",span); printf("其它字符:%d\n",othn); } 7.11/*打印图案*/ main() {static char a[5]={'*','*','*','*','*'}; int i,j,k; char space=' '; for(i=0;i<=5;i++) {printf("\n"); for(j=1;j<=3*i;j++) printf("%lc",space); for(k=0;k<=5;k++) printf("%3c",a[k]; } } 7.12/*译电文*/ #include main() {int i,n; char ch[80],tran[80]; printf("请输入字符:"); gets(ch); printf("\n密码是%c",ch); i=0; while(ch[i]!='\0') {if((ch[i]>='A')&&(ch[i]<='Z')) tran[i]=26+64-ch[i]+1+64; else if((ch[i]>='a')&&(ch[i]<='z')) tran[i]=26+96-ch[i]+1+96; else tran[i]=ch[i]; i++; } n=i; printf("\n原文是:"); for(i=0;i putchar(tran[i]); } 7.13/*连接两个字符串(不用'stract')*/ main() { char s1[80],s2[40]; int i=0,j=0; printf("\n请输入字符串1:"); scanf("%s",s1); printf("\n请输入字符串2:"); scanf("%s",s2); while(s1[i]!='\0') i++; while(s2[j]!='\0') s1[i++]=s2[j++]; s1[i]='\0'; printf("\n连接后字符串为:%s",s1); } 7.14/*字符串比较*/ #include main() {int i,resu; char s1[100],s2[100]; printf("请输入字符串1:\n"); gets(s1); printf("\n 请输入字符串2:\n"); 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(" %s与%s比较结果是%d",s1,s2,resu); } 7.15/*字符串复制*/ #include main() { char from[80],to[80]; int i; printf("请输入字符串"); scanf("%s",from); for(i=0;i<=strlen(from);i++) to[i]=from[i]; printf("复制字符串为:%s\n",to); } 第八章 函数 8.1(最小公倍数=u*v/最大公约数.) hcf(u,v) int u,v; (int a,b,t,r; if(u>v) {t=u;u=v;v=t;} a=u;b=v; while((r=b%a)!=0) {b=a;a=r;} return(a); } lcd(u,v,h) int u,v,h; {int u,v,h,l; scanf("%d,%d",&u,&v); h=hcf(u,v); printf("H.C.F=%d\n",h); l=lcd(u,v,h); printf("L.C.d=%d\n",l); } {return(u*v/h);} main() {int u,v,h,l; scanf("%d,%d",&u,&v); h=hcf(u,v); printf("H.C.F=%d\n",h); l=lcd(u,v,h); printf("L.C.D=%d\n",l); } 8.2求方程根 #include float x1,x2,disc,p,q; greater_than_zero(a,b) float a,b; { x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); } equal_to_zero(a,b) float a,b; {x1=x2=(-b)/(2*a);} smaller_than_zero(a,b) float a,b; {p=-b/(2*a);
    推荐阅读
  • 电脑无法开机充不进电(电脑因电用完关机,为什么充电后却不可以开机呢?)

    具体步骤如下:1、找到电源图标,首先单机鼠标右键,即会出现电源选项图标。可按照如下方法进行排查。轻轻将内存条取下来,稍等片刻再装上。去BIOS中校验一下锂电池,也可能是电池的寿命到了。

  • 电脑基础知识视频教程(有没有电脑基础知识之类的学习视频,或者免费学习)

    如果还不行就要求助专业人员了。这里再次强调,正确的关机方式是:鼠标点击电脑桌面左下角的“开始”,然后点击关闭计算机即可关机,最后再考虑关闭插板开关。在各行各业中都离不开信息的处理,这正是计算机被广泛应用于信息管理系统的环境原因。使用计算机进行信息处理,不仅提高了工作效率,而且大大提高了其安全性。

  • 电脑基础知识全面解析打造你的电脑技能图谱

    电脑基础知识是指关于计算机硬件、软件以及网络等方面的基本知识,掌握这些知识可以帮助我们更好地理解和使用电脑。

  • 轻松掌握的电脑基础知识打造智能生活新标杆

    了解文件夹的概念及其使用方法,并学会对文件和文件夹进行重命名和排序。了解如何搜索信息、访问网页和收藏网页等基本操作。学习如何安装和更新防病毒软件,以保护计算机和个人信息的安全。参加相关的培训课程、在线教育平台或加入电脑技术社群,与其他志同道合的人交流经验和知识。记住,多实践、多应用,只有不断尝试才能真正掌握技能。

  • 操作系统的分类如何列举常用操作名称(计算机的操作系统分为哪几类?)

    第一台电脑是1946年2月15日在美国宾夕法尼亚大学诞生的ENIAC通用电子计算机。人们把没有安装任何软件的计算机称为裸机。在输入输出设备中,有两类很值得注意:第一类是二级存储设备,如硬盘,光碟或其他速度缓慢但拥有很高容量的设备。第二个是计算机网络访问设备,通过他们而实现的计算机间直接数据传送极大地提升了计算机的价值。今天,国际互联网成就了数以千万计的计算机彼此间传送各种类型的数据。

  • 电脑基础知识了解计算机输入和输出的基本原理

    计算机的输入和输出是指将外部信息传递给计算机系统,或将计算机处理的数据和结果传递给外部设备的过程。常见的输入设备包括键盘、鼠标、扫描仪、触摸屏等。常见的输出设备包括显示器、打印机、投影仪、音频喇叭等。需要注意的是,计算机输入和输出的过程并非一次性完成的,而是通过多次的输入输出操作实现的。同时,输入输出控制器在计算机系统中扮演关键角色,负责调度和管理输入输出设备的操作。

  • 提升电脑使用技能从掌握基础知识开始

    除了以上建议,还可以通过参加电脑培训课程、观看在线教程和阅读相关书籍等方式来提升电脑使用技能。

  • 安装杜比音效驱动没效果怎么回事? 杜比音效驱动安装好后没效果

    如果安装了杜比音效驱动后仍然没有效果,可能有以下几个原因:1.硬件不支持:首先,确保您的设备支持杜比音效技术。在Windows中,您可以在控制面板或音频管理器中找到杜比音效设置选项。如果您仍然无法解决问题,建议咨询杜比音效的官方支持或与设备制造商联系,以获取进一步的帮助和支持。

  • 电脑基础知识学习常用的操作系统技巧

    但需要注意的是,不同的操作系统可能有不同的操作方法和快捷键,因此要根据自己使用的操作系统进行学习和实践。

  • 学习计算机的操作技巧快捷键和命令提示符

    学习计算机操作技巧时,掌握快捷键和命令提示符是非常重要的。下面是一些常用的快捷键和命令提示符:1.快捷键:-Ctrl+C:中断当前运行的程序或命令。-Ctrl+V:粘贴剪切板中的内容。-Ctrl+Z:撤销上一步操作。-Ctrl+B:将选中的文字加粗。-Ctrl+R:替换当前文件中的关键字。请注意,具体的快捷键和命令提示符可能会因操作系统和软件的不同而有所不同。