真是苺良鑫呀 2021-06-26 14:28 采纳率: 92.3%
浏览 118
已采纳

要怎么改指针和代码才能运行成功?

【题目描述】

输入学生人数n,再输入n个学生姓名,然后将学生姓名升序排序,要求使用指针数组和动态内存分配函数malloc来存放多个字符串。

【输入形式】

第一行输入学生人数n(2≤n≤20)。

接下来n行,每行一个字符串,表示学生的姓名,学生的姓名长度不超过30,并且学生姓名不包含空格。

【输出形式】

n行,每行一个字符串,表示升序排序后学生的姓名。

【样例输入】

4

Huangcaiyan

Maihaidong

Luye

Lifugao

【样例输出】

Huangcaiyan

Lifugao

Luye

Maihaidong

#include<stdio.h>
#include<iostream>
#include<cstring>
#include<malloc.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int *p=NULL;
	p=(int *)malloc(n*sizeof(int));//动态数组 
	if(p=NULL) {
		cout<<"no enough mrmory"<<endl;
		exit(0);
	}
	for(int i=0;i<=n;i++)//输入n个名字 
	{
		cin>>*(p+i);
	}
	for(int i=0;i<n;i++)//按照字典升序排序 
	{
		for(int j=0;j<n-1;j++)
		{
			if(strcmp (*(p+i),*(p+i+1))>0) 
		   {
			 int t=*(p+i);
			*(p+i)=*(p+i+1);
			*(p+i+1)=t;
		   }
		} 
		
	}
	for(int i=0;i<n;i++)//输出排序后的名字 
	{
		cout<<*(p+i)<<endl;
	}
	free(p);//释放空间 
    return 0;
	
} 

  • 写回答

2条回答 默认 最新

  • 浪客 2021-06-26 15:49
    关注

    int *p=NULL;就不合适,名字需要字符类型,

    c++用string类型更方便。

    
    #include <cstring>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	int n;
    	cin >> n;
    	//int* p = NULL;
    	string * p = new string[n]();//p = (int*)malloc(n * sizeof(int));//动态数组 
    	if(p==NULL)//if (p = NULL) {
    	{
    		cout << "no enough mrmory" << endl;
    		return 1;	//exit(0);	//一般返回值0表示正常返回,其他表示出错返回
    	}
    
    	for (int i = 0; i < n; i++)//for (int i = 0; i <= n; i++)//输入n个名字 
    	{
    		cin >> *(p + i);
    	}
    
    	for (int i = 0; i < n; i++)//按照字典升序排序 
    	{
    		for (int j = 0; j < n-1; j++)
    		{
    			if((*(p + i)).compare(*(p + j))<0)//if (strcmp(*(p + i), *(p + i + 1)) > 0)
    			{
    				(*(p + i)).swap(*(p + j));    //直接使用string的交换函数
    				//int t = *(p + i);
    				//*(p + i) = *(p + i + 1);
    				//*(p + i + 1) = t;
    			}
    		}
    
    	}
    
    	for (int i = 0; i < n; i++)//输出排序后的名字 
    	{
    		cout << *(p + i) << endl;
    	}
    	delete[] p; //free(p);//释放空间 
    
    	return 0;
    
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Excel发现不可读取的内容
  • ¥15 UE5#if WITH_EDITOR导致打包的功能不可用
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面
  • ¥15 算法题:数的划分,用记忆化DFS做WA求调
  • ¥15 chatglm-6b应用到django项目中,模型加载失败
  • ¥15 CreateBitmapFromWicBitmap内存释放问题。