【无标题】

十个整数排序

#include<stdio.h>
float max=0,min=0;
int main()
{
    float average(float array[ ],int n);
    float ave,score[10];
    int i;
    printf("请输入10个数:");

    for(i=0;i<10;i++)
        scanf("%f",&score[i]);

    ave=average(score,10);
    printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",max,min,ave);
    return 0;
}
float average(float array[ ],int n)
{
    int i;
    float aver,sum=array[0];
    max=min=array[0];
    for(i=1;i<n;i++)
    {
        if(array[i]>max)max=array[i];
        else if(array[i]<min)min=array[i];
        sum=sum+array[i];
    }
    aver=sum/n;
    return(aver);
}

从小到大排序

#include<stdio.h>
int main()
{
    int a[10],temp;
    int i,j;
    printf("输入10个数字:\n");
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<10;i++)
    {
        for(j=i+1;j<10;j++)
        {
            if(a[i]>a[j])
            {
                temp=a[j];
                a[j]=a[i];
                a[i]=temp;
            }
        }
    }
    printf("从小到大排序为\n");
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
 } 

指针法从小到大排序

#include <stdio.h>  
int main()  
{  
    void sort(int x[],int n);  
    int i,a[10];  
    int *p=a;  
    printf("input 10 numbers:\n");  
    for(i=0;i<10;i++)  
    {  
        scanf("%d",&a[i]);//scanf("%d",p++);  
    }  
    sort(p,10);  
    printf("the sorted numbers:\n");  
    for(p=a;p<a+10;p++)  
    {  
        printf("%d ",*p);  
    }  
    printf("\n");  
    return 0;  
}  
void sort(int x[],int n)  
{  
    int i,j,k,t;  
    for(i=0;i<n-1;i++)//选择排序   
    {  
        k=i;  
        for(j=i+1;j<n;j++)  
          
            if(x[j]>x[k])  k=j;  
            if(k!=i)  
            {  
                t=x[i];  
                x[i]=x[k];  
                x[k]=t;  
            }  
          
    }  
}  

指针法从大到小排序

#include<stdio.h>
#include<conio.h>
int main(){
  void sort(int x[],int n);
  int i,*p,a[10];
  p=a;
  printf("输入10个整数:\n");
  for(i=0;i<10;i++)
    scanf("%d",p++);
  p=a;
  sort(p,10);
  printf("由大到小排序为:\n");
  for(p=a,i=0;i<10;i++){
    printf("%d ",*p);
    p++;
  }
  getch();

void sort(int x[],int n){
  int i,j,k,t;
  for(i=0;i<10;i++){
    k=i;
    for(j=i+1;j<n;j++)
      if(x[j]>x[k])
        k=j;
    if(k!=i){
      t=x[i];  x[i]=x[k];  x[k]=t;
}
  }

}

法二:

void sort(int *x,int n){
  int i,j,k,t;
  for(i=0;i<10;i++){
    k=i;
    for(j=i+1;j<n;j++)
      if(*(x+j)>*(x+k))
        k=j;
    if(k!=i){
      t=*(x+i);  *(x+i)=*(x+k);  *(x+k)=t;
}
  }
}

            

8.3.3 通过指针引用数组元素

  指向数组元素的指针变量也可以带下标。

  由于++*同优先级,结合方向为自右而左,因此它等价于* (p++)。先引用p的值,实现* p的运算,然后再使p自增1。

8.3.5通过指针引用多维数组

  ”int(*p)[4]“表示定义p为一个指针变量,它指向包含4个整型元素的一维数组。注意,*p两侧的括号不可缺少。

a[3][4]

行指针*(a+2)---->a[2]

              *(*(a+2))  a[2]+3  第三列第四个元素

行指针前加* 就变成了列指针*(a+i)

a[i]+j i行j列元素的地址

*(a[i]+j)  a[i][j]

  *(*(a+2))

指针指向多维数组事

1.指向数组元素的指针变量

int a[3][4]

int *p;

for

for

scanf("%d%d",&a[i][j])

p=a; 错误

p=*a

逐个访问个元素

for(p=a[0];p<a[0]+12;p++)                p++前加*

控制换行 {if((p-a[0]%4==0 printf("/n"));       &&p!!=a[0]

2.指向m个元素组成的一维数组

输出二维数组 任一行任一列元素的值

int a[10][20]

int(*p)[20]

p=a p在这里是行指针

*(*(a+i)+j)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值