第十一次作业

1.冒泡法进行排序。

#include<stdio.h>
void sort(int a[],int n);
int main()
{
    int n,a[8];
    int i;
    printf("请输入一个数n(n<=8):");
    scanf("%d",&n);
    printf("请输入一组数[%d]:",n);
    for(i=0;i<n;i++)
     scanf("%d",&a[i]);
     sort(a,n);
     printf("a[%d]=",n);
    for(i=0;i<n;i++)
     printf("%d\n",a[i]);
    return 0;    
}
void sort(int a[],int n)
{
    int i,j,t;
    for(i=1;i<n;i++)
        for(j=0;j<n-i;j++)
         if(a[j]>a[j+1]){
             t=a[j];a[j]=a[j+1];a[j+1]=t;
        }
}

 

 

 

 

 

2.在数组中查找指定元素

#include <stdio.h>
int search(int list[],int n,int x);
int main()
{
    int list[10],n,x,i;
    printf("请输入n(1<=n<=10):");
    scanf("%d",&n);
    printf("请输入%d个数:\n",n);
    for(i=0;i<n;i++)
        scanf("%d",&list[i]);
    printf("需要找的x:");
    scanf("%d",&x);
    if(search(list,n,x)==-1)
        printf("-1\n");
    else
        printf("脚标为%d\n",search(list,n,x));
}


int search(int list[],int n,int x)
{
    int i;
    for(i=0;i<n;i++)
        if(list[i]==x)
        return i;
        return -1;
}

 

 

 

3.报数游戏:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(<n)的人退出圈子;下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。输入整数n和m,并按退出顺序输出退出圈子的人的编号 。

 

 

#include<stdio.h>
int main()
{
int count,i,m,n,no;
int num[50];
int *p;
printf("请输入n:");
scanf("%d",&n);
printf("请输入m:");
scanf("%d",&m);
for(i=0;i<n;i++)
num[i]=i+1;
p=num;
count=no=0;
while(no<n-1)
{
if(*p!=0)count++;
if(count==m)
{
no++;
printf("退出的人%d:%d\n",no,*p);
*p=0;
count=0;
}
p++;
if(p==num+n)
p=num;
}
p=num;
while(*p==0)
p++;
printf("最后一个人:%d\n",*p);


}

 

 

知识点:

1.指针是以地址作为值的变量

2.数组名的值是一个特殊的固定地址,可以把它看成是常量指针

3.数组与指针可以相互转化

遇到的问题与解决方法

在运算的时候忘记了只有相同类型的指针可以相互运算,通过翻书找到 相应知识点

遇到的问题与解决方法

posted @ 2016-12-07 00:24  BGD160809403  阅读(261)  评论(1编辑  收藏  举报