《C程序设计》实验报告【DOC精选】.docVIP

  • 8
  • 0
  • 约3.05千字
  • 约 6页
  • 2017-02-16 发布于江苏
  • 举报
《C程序设计》实验报告【DOC精选】

实验项目:数组(一) 实验内容: 实验1:约瑟夫生死者游戏:每30个乘客同乘一艘船,因为严重超载,加上风高浪大,危险万分,因此船长告诉乘客,只有将全船一半乘客投入海中,其余人才能幸免于难。无奈,大家只得同意这种办法,并议定30个人围成一圈,由第1个人数起,依次报数,数到第9人,便把他投入大海中,然后再从他的下一个人数起,数到第9人,再将他扔到大海中,如此循环地进行,直到剩下15个乘客为止。问哪些位置是将被扔下大海的位置。 实验6(1):用选择法对10个整数排序。10个整数用整数scanf函数输入。 实验6(2):有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果不存在该数中,则输出“无此数”。以15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。 实验6(4):找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。 程序实现: 约瑟夫生死环、选择排序法对数组中的元素进行排序主要是利用数组和for语句、if语句的嵌套实现程序;选择排序过程主要用到for语句;折半查找法,查找过程中主要要对二维数组进行初始化、while语句与for语句的循环;实验6(4)需要找一个二维数组的鞍点,主要应用for语句和if语句的循环嵌套实现。 程序: 实验1约瑟夫生死环: #includestdio.h void main() {int a[30]; int i,j=0,n=0; for(i=0;i30;i++)a[i]=1; for(i=0;i30n15;i++) {if (a[i]==1)j=j+a[i]; if(j==9) {printf(被扔下海的位置是:); a[i]=0; printf(%d ,i+1); printf(\n); j=0; n++;} if(i==29)i=-1;} printf(\n); } 实验6(1)选择排序: #includestdio.h void main() { int i,j,min,temp,a[11]; printf(输入数据:\n); for(i=1;i=10;i++) { printf(a[%d]=,i); scanf(%5d,a[i]); } printf(\n); printf(开始的数据:\n); for(i=1;i=10;i++) printf(%5d,a[i]); 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(\n排列后的数据:\n); for(i=1;i=10;i++) printf(%5d,a[i]); printf(\n); } 实验6(2)折半查找: #includestdio.h #define N 15 void main() { int i,number,top,bott,mid,loca,a[N],flag=1,sign; char c; printf(输入数据:\n); scanf(%d,a[0]); i=1; while(iN) {scanf(%d,a[i]); if(a[i]=a[i-1]) i++; else printf(再次输入数据:\n); } printf(\n); for(i=0;iN;i++) printf(%4d,a[i]); printf(\n); while(flag) {printf(要查找数:); scanf(%d,number); sign=0; top=0; bott=N-1; if((numbera[0])||(numbera[N-1])) loca=-1; while((!sign)(top=bott)) {mid=(bott+top)/2; if(number==a[mid]) {loca=mid; printf(发现 %d它的位置是 %d\n,number,loca+1); sign=1; } else if(numbera[mid]) bott=mid-1; else top=mid+1; } if(!sign||loca==-1) printf(无此数 %d\n,number); printf(是否继续 (Y/N)?); scanf( %c,c); if(c==N||c==n) flag=0; } } 实验6(4)二维数组的鞍点: #includestdio.h #defi

文档评论(0)

1亿VIP精品文档

相关文档