前言
存档。困扰了我很久的题目
感觉现在思路还不是很清晰。
指针好难哦!
有什么还不清楚的地方将来补上!
以下是本篇文章正文内容,下面案例可供参考
题目描述
用指向指针的指针的方法对n个整数排序并输出
要求将排序单独写一个函数,n和整数在主函数中输入,最后在主函数中输出
#include <stdio.h>
int main()
{
_____(1)__________
int i,n,digit[20],**p,*pstr[20];
scanf("%d",&n);
for(i=0;i<n;i++)
_______(2)_______
for(i=0;i<n;i++)
scanf("%d",pstr[i]);
______(3)________
sort(p,n);
for(i=0;i<n;i++)
printf("%4d",*pstr[i]);
}
void sort(int** p, int n)//指针排序
{
int i,j,*temp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(______(4)_______)
{
temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
}
填空
#include <iostream>
using namespace std;
int main()
{
void sort(int** , int );
int i,n,digit[20],**p,*pstr[20];
scanf("%d",&n);
for(i=0;i<n;i++)
pstr[i]=&digit[i];//pstr的元素为指针指向的地址
//挖坑:像一维指针一样只赋予第一个元素地址,无法继续
for(i=0;i<n;i++)
scanf("%d",pstr[i]);
p=pstr;//把pstr的地址赋予p
sort(p,n);
for(i=0;i<n;i++)
printf("%4d",*pstr[i]);
}
void sort(int** p, int n)//指针排序
{
int i,j,*temp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(*(*(p+i))>*(*(p+j)))
//取出p+i个元素储存的地址,再到该地址取值
/*如果写成*(*p+i)也是一样的结果(数组里的地址是连续的?)
挖坑:将两个不同的数组的地址分别赋予pstr的各一半元素,结果不变
输出两个数组的地址发现跟实际pstr得到的地址并不相同
{
temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
}
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。