第十一次作业
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.数组与指针可以相互转化
遇到的问题与解决方法
在运算的时候忘记了只有相同类型的指针可以相互运算,通过翻书找到 相应知识点
遇到的问题与解决方法
 
                    
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号