C初学者编程问题 指针对应修改问题 求思路-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

C初学者编程问题 指针对应修改问题 求思路

2016-03-20 14:44:05 1638 1
#include 
#include 
//阅读程序,在读懂程序的基础上运行程序,
//观察运行结果,发现其中出现的问题,并解决:
//修改BubbleSort函数(函数头也可修改),使得
//在对成绩排序时,各成绩对应的人名也做相应调整
//typedef int INT;
//typedef char * PCHAR;
typedef char STR[10];
typedef STR * PSTR;
//输入成绩的函数
float* inputScore(int* n)
{
int m, i;
printf("请输入人数:");
scanf("%d", n);
float score =NULL;
m = *n;
score = (float *)malloc(
sizeof(float)*m);
for (i = 0; i < m; ++i)
{
scanf("%f", &score[i]);
}
return score;
}
STR inputNames(int n)
{
STR* s=NULL;
int i;
s=(STR* )malloc(sizeof(STR)*n);
while(getchar()!='\n');
printf("请输入%d个名字(一行一个):\n",n);
for(i=0;i<n;i++)
gets(s[i]);
return s; 
}
void printRecord(STR *s,float a[], int m)
{
int i;
for (i = 0; i < m; ++i)
printf("%s\t%-6.1f\n",s[i],a[i]);
putchar('\n');
}
void printNames(STR s[], int n)
{ int i;
for(i=0;i<n;i++)
puts(s[i]);
return;
}
//修改这个函数(函数头也可修改),使得
//在对成绩排序时,各成绩对应的人名也做相应调整
void BubbleSort(float a[], int n)
{
int i,j;
float t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]<a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1]=t;
}
}
}
}
int main()
{
int n;
float *p = inputScore(&n);
STR * names=NULL;
names = inputNames(n);
printRecord(names,p, n);
//printNames(names, n);
BubbleSort(p,n);
printRecord(names,p, n);
return 0;
}
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:09:43

    排序那个地方,就不说了啦,如果你真打算这么做,也可以,将两个数组都传过去,在交换分数的时候,也交换名字就可以了。
    值得一提的是,你这代码估计编译都不过

    1. 输入分数的函数 float score =NULL; 应该是 float score =NULL;
    2. 函数inputNames返回类型应该是PSTR
    3. 还是输入名字这个函数里,你知道这个s=(STR )malloc(sizeof(STR)n);是什么意思吗?申请一个10n这么大的连续空间。
      你想和分数一一对应没错,但是如果这样做的话,交换分数的时候,名字要来回拷贝的。

    倒不如这样做:
    s=(PSTR )malloc(sizeof(PSTR)n);首先生成这么大的一块指针,然后每个名字s[i]再申请sizeof(STR)的大小的地方
    到时候,你i交换分数的时候,将s也交换了,就行了。
    还有gets是一个很危险的函数,尽量做好长度判断,到时候越界就不好办了。

    0 0
相关问答

1

回答

编程思想上,Java的面向对象比C语言的面向过程好在哪里?又有何缺点?

2022-04-02 15:15:43 259浏览量 回答数 1

1

回答

vim有哪些方便编程的功能在程序员中被广泛使用?

2021-12-03 13:13:49 94浏览量 回答数 1

1

回答

在C中将指针传递给结构数组

2019-11-29 11:27:58 178浏览量 回答数 1

0

回答

Javascript异步编程

2018-07-30 23:02:51 806浏览量 回答数 0

1

回答

C语言基础的已经学了,然后也会像图书管理系统这种程度的编程,想要更进一步,之后应该看什么书??具体

2018-07-22 10:57:20 1480浏览量 回答数 1

5

回答

C和指针,C高级实用程序设计,数据结构与算法,适合初学C语言者吗?

2018-07-17 10:01:40 2407浏览量 回答数 5

1

回答

完全没有基础,想自学编程,有什么比较好的书或者方法

2018-07-17 12:12:05 1276浏览量 回答数 1

2

回答

编程之美适合什么人看,有c语言的基础可以看吗,没看api之类的

2018-07-17 18:17:13 1845浏览量 回答数 2

1

回答

初学者求指教进程通信问题

2016-07-15 14:59:42 1406浏览量 回答数 1

1

回答

把jna传递的指针转换为数组问题

2016-06-02 10:45:20 3767浏览量 回答数 1
+关注
0
文章
14879
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载