|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
int main()
{
void fac(int **p,int n);
int str[20];
int i,k;
int *p1[20],**p2;
scanf("%d",&k); //输入有几个数
printf("请输入数字;");
for(i=0;i<k;i++)
{
p1[i]=&str[i]; //将指针数组指向str
}
for(i=0;i<k;i++) //给k-1个元素赋值
{
scanf("%d",str[i]);
}
p2=p1; //指向指针的指针p2指向 p1
fac(p2,k);
for(i=0;i<k;i++)
{
printf("%d ",*p1[i]);
}
return 0;
}
void fac(int **p,int n)
{
int *t,i,j;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(**(p+i)>**(p+j))
{
t=*(p+i); //将值进行交换
*(p+i)=*(p+j);
*(p+j)=t;
}
}
}
}
题目要求用指向指针的指针,输入n个数,将这n个数从小到大排序
我的结果如下
5
请输入数字5 6 4 7 9
然后后面就没有结果,不知道哪里错了
本帖最后由 bin554385863 于 2019-10-9 17:39 编辑
谁告诉你函数的声明和定义实在main函数里面进行的?
#include<stdio.h>
int main()
{
void fac(int **p,int n);
int str[20];
int i,k;
int *p1[20],**p2;
scanf("%d",& k); //输入有几个数
printf("请输入数字;");
for(i=0;i<k;i++)
{
p1[i.]=&str[i.]; //将指针数组指向str
}
......
如果输入的K > 20,你确定不会数组越界?
- #include <malloc.h>
- #include <stdio.h>
- void fuc(int **p, int n)
- {
- int **p = (int **)malloc(sizeof(int *) * n);
- for (size_t i = 0; i < n; i++)
- {
- *(p + i) = (int *)malloc(sizeof(int));
- scanf("%d", (*p + i));
- }
- for (size_t i = 0; i < n - 1; i++)
- {
- for (size_t j = i + 1; j < n; j++)
- {
- if (*(*p + i) >= *(*p + j))
- {
- int t = *(*p + i);
- *(*p + i) = *(*p + j);
- *(*p + j) = t;
- }
- }
- }
- for (size_t i = 0; i < n; i++)
- {
- printf("%d ", *(*p + i));
- }
- free(p)
- }
- int main(int argc, char const *argv[])
- {
- int **p = NULL;
- fuc(p, 5);
- return 0;
- }
复制代码
--------------------------------------------------------------------------------------------------
Microsoft Windows [版本 10.0.16299.1087]
(c) 2017 Microsoft Corporation。保留所有权利。
E:\Users\86184\Documents\Code>c:\Users\86184\.vscode\extensions\ms-vscode.cpptools-0.25.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-04gaq3lm.jte --stdout=Microsoft-MIEngine-Out-nppsv3hf.tln --stderr=Microsoft-MIEngine-Error-uhyqflbp.4ip --pid=Microsoft-MIEngine-Pid-wcrorhqu.nzb "--dbgExe=E:\My Program\MinGW\bin\gdb.exe" --interpreter=mi
100 100 2 300 0
0 2 100 100 300
E:\Users\86184\Documents\Code>
|
|