c语言程序设计实验报告9

时间:2022-07-13 19:18:14 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
第四题: 解题思路:

定义一个move函数,运用循环构造,设定m等于几就将每个数挪动几次,这样就能将最后m个数依次挪动到最前面。 程序设计代码: #include void main() {

int a[10]={1,3,5,7,9,11,13,15,17,19}; int m,i;

void move(int *a,int m);

printf("原来的数组为:"); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n");

printf("要向后挪动几个位置:",m); scanf("%d",&m); move(a,m);

printf("挪动后的结果为:"); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); }

void move(int *a,int m) {

int k, i, p;

for(i=0;i {

p=a[0];

for(k=0;k<9;k++) {

a[k]=a[k+1]; }

a[9]=p; } }

程序运行结果:




第五题: 解题思路:

通过指针引用数组元素,定义指针变量p设定出局的人数m和计数器k,判断指针所指向的元素的序号是否出局,如假设出局了,计数器加1.假设计数器为3,该序号的人就出局,将出局的这个人标记使计数器置零,以便后面的人报数,出局人数m就加1,循环反复,最后判断所要找的号的前面一个号是否出局了,从而找出最后留下的那个人原来的序号。

程序设计代码: #include void main() { int i,k,m,n,a[50],*p;

printf("input number of person: n="); scanf("%d",&n); p=a; for(i=0;i *(p+i)=i+1; i=0;k=0;m=0; while(m { if(*(p+i)!=0) k++; if(k==3) { *(p+i)=0; k=0; m++; } i++; if(i==n) i=0; } while(*p==0)


p++;

printf("最后留下的是原来第N0.%d号的\n",*p); }

程序运行结果:






本文来源:https://www.wddqw.com/doc/129faa01bfd126fff705cc1755270722192e5962.html