IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言学习之指针.day2 -> 正文阅读

[C++知识库]C语言学习之指针.day2

主要内容:指针在数组中的使用

1.用指针方法对10个整数按由大到小顺序排序。(选择排序法)

#include<stdio.h>
int main()
{
 //用指针方法对10个整数按由小到大排序
 void sort(int x[],int n);//函数声明
 int a[10],*p,i;
 p=a;//p指向a[0]
 printf("please input 10 integer numbers:\n");
 for(i=0;i<10;i++)
   scanf("%d",p++);//输入10个数
 p=a;//p重新指向a[0]
 sort(p,10);//函数调用 数组名作函数参数的体现
 printf("由小到大排序结果为:\n");
for(i=0;i<10;i++)
 {
    p=a+i;
    printf("%d",*p);//输出排序后结果
 }
   printf("\n");
   return 0;
 }
 void sort(int x[],int n)//函数定义 p=a[0] x[]=p
 {
    int i,j,t;
    for(i=0;i<n-1;i++)//控制比较轮数
    {
       for(j=0;j<n-1-i-1;j++)//控制每轮比较次数
        //前一个比后面小,交换位置
       if(x[j]<x[j+1])
       {
          t=x[j];
          x[j]=x[j+1];
          x[j+1]=t;
       }
    }

 }

2.输出二维数组的有关数据(地址和元素的值),?体会指针如何使用二维数组的值

#include <stdio.h>
int main()
{
   int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
   int *p;
   p=&a;//p指向a的地址 等价 *p=a;
	printf("%d\t%d\t%d\n",*(a[1]+2),*(*(a+1)+2),a[1][2]);
	//等价于取a[1][2]的值 13
	printf("%d\n",*(p+6));
	// 当成一维数组看待 取得第6个数的值 13
	printf("%d\t%d\t%d\n",(a[1]+2),*(a+1)+2,&a[1][2]);
	//取得a[1][2]的地址的三种方式
	printf("%d\t%d\t%d\n",a,p,*a);
	//a:0行起始位置 p:a[0][0]的值 *a:数组起始位置
	printf("%d\t%d\n",a[0],*(a+0));
	//0行0列起始位置

	return 0;
}

3.有一个3×4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值。

#include <stdio.h>
int main()
{
   int a[3][4]={{1,2,3,4},{5,6,7,8},{3,4,5,6}};//初始化
   int *p;
   for(p=a[0];p<a[0]+12;p++)//p依次指向下一个元素
   {
      if((p-a[0])%4==0)printf("\n");//每行打印4个
         printf("%4d",*p);
   }
	return 0;
}

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

#include <stdio.h>
int main()
{
   //输出二维数组任一行任一列元素的值。
   int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12,13};
   int (*p)[4],i,j;//p指向包含4个整型元素的一维数组
   p=a;//指向a数组的第0行
   printf("please enter row and colum:\n");
   scanf("%d%d",&i,&j);//输入要输出元素的行号和列号

   printf("a[%d][%d]=%d\n",i,j,*(p[i])+j);
   //等价
   printf("a[%d][%d]=%d\n",i,j,*(*(p+i)+j));

5.有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩。

#include <stdio.h>
int main()
{
  //有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩。
   void average(float *p,int n);
   void search(float (*p)[4],int n);//函数声明
   float score[3][4]={{65,67,70,60},{80,87,90,81},{90,97,98,95}};
   //定义二维数组并初始化

   average(*score,12);//函数调用
   search(score,2);//求序号为2的成绩
   return 0;
}

void average(float *p,int n)//函数定义
{
   float sum=0,*e=p+n-1;
   for(;p<e;p++)//p指针 从score数组起始位置变化到p+n-1
   {
      sum=sum+(*p);//累加
   }
   float aver=sum/n;
      printf("average=%5.2f\n",aver);

}

void search(float (*p)[4],int n)//函数定义
{
   printf("The score of No.%d are:\n",n);
   for(int i=0;i<4;i++)
      printf("%3.2f\t",*(*(p+n)+i));//打印第n个学生所有成绩
   printf("\n");
}

6.有一个班,3个学生,各学4门课,

查找有一门以上课程不及格的学生,输出他们的全部课程的成绩。

#include <stdio.h>
int main()
{
  //有一个班,3个学生,各学4门课,查找有一门以上课程不及格的学生,输出他们的全部课程的成绩
   void search(float (*p)[4],int n);//函数声明n为学生,*p指向一个学生所有成绩
   float score[3][4]={{79,57,70,60},{80,48,90,81},{80,67,68,95}};
   //定义二维数组并初始化
   search(score,3);//函数调用
   return 0;
}

void search(float (*p)[4],int n)//函数定义
{
   //形参p是指向包含4个float型元素的一维数组的指针变量
   int i,j,flag;

   for(j=0;j<n;j++)//控制二维数组的行
   {
      flag=0;

      for(i=0;i<4;i++)//控制二维数组的列
         if(*(*(p+j)+i)<60) flag=1;

    //如果有<60,通过flag记下此学生
    if(flag==1)
   {

      printf("No.%d fails,his scores are:\n",j+1);
      for(i=0;i<4;i++)
         printf("%3.f",*(*(p+j)+i));
      printf("\n");
   }

   }
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:19:21  更:2021-08-15 15:22:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 1:06:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码