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 ",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); for(i=0;i<n;i++) scanf("%d",&list[i]); printf("需要找的x:"); scanf("%d",&x); if(search(list,n,x)==-1) printf("-1 "); else printf("脚标为%d ",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
",no,*p);
*p=0;
count=0;
}
p++;
if(p==num+n)
p=num;
}
p=num;
while(*p==0)
p++;
printf("最后一个人:%d
",*p);
}
知识点:
1.指针是以地址作为值的变量
2.数组名的值是一个特殊的固定地址,可以把它看成是常量指针
3.数组与指针可以相互转化
遇到的问题与解决方法
在运算的时候忘记了只有相同类型的指针可以相互运算,通过翻书找到 相应知识点
遇到的问题与解决方法