c语言中二维数组如何交换行?
如一矩阵nArry={{1,2,3,4}{2,3,4,5}{3,4,5,6}{4,5,6,7}};如何交换其中两行比如将第一行和第四行交换变为{{4,5,6,7}{2,3...
如一矩阵nArry= {{1,2,3,4}{2,3,4,5}{3,4,5,6}{4,5,6,7}}; 如何交换其中两行 比如将第一行和第四行交换变为 {{4,5,6,7}{2,3,4,5}{3,4,5,6}{1,2,3,4}}; 如何用C语言来实现,是否可以用交换地址的方法实现? 谢谢~~
展开
7个回答
展开全部
可以的,需要先定义相同类型的临时整型变量或地址指针变量!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-05-06
展开全部
/*
完成以下程序,实现学生的简单管理系统,
学生信息包括姓名,成绩,年龄,
学生信息录入,按照名字查询,
按照成绩从小到大排序,打印所有学生成绩,
要求不考虑非法输入情况,系统最多录入30个学生信息,每个学生名字长度不超过30.
void readInfo(char name[][30], float score[], int age[], int m);
void printStudentsArray(char name[][30], float score[], int age[], int m);
void sortByScore(char name[][30], float score[], int age[], int m);
void searchStudent(char name[][30], float score[], int age[], int m);
int main(int argc, char const *argv[])
{
char name[30][30];
float score[30];
int age[30];
int m;
//输入提示信息
"Input m:";
scanf("%d",);
readInfo(...);
printStudentsArray(...);
searchStudent(...);
sortByScore(...);
printStudentsArray(...);
return 0;
}
//学生信息的录入
void readInfo(...)
{
"请输入新增学生的名字\n"
scanf("%s");
"请输入新增学生的成绩\n");
scanf("%f");
"请输入新增学生的年龄\n";
scanf("%d",);
}
//打印学生的姓名,成绩,年龄
void printStudentsArray(...)
{
"学生系统中一共有%d位学生信息\n";
"姓名:%s,成绩:%f,年龄:%d\n";
}
//排序
void sortByScore(......)
{
}
//根据名字查询学生
void searchStudent(......)
{
"请输入要查询的学生姓名\n";
scanf("%s");
//如果没有找到输出格式为
"没有找到该学生信息\n"
//如果找到输出格式为
您要查询的学生信息是 姓名:%s,成绩:%f,年龄:%d\n
}
程序运行示例
Input m:3
请输入新增学生的名字
a
请输入新增学生的成绩
78
请输入新增学生的年龄
19
请输入新增学生的名字
b
请输入新增学生的成绩
90
请输入新增学生的年龄
20
请输入新增学生的名字
c
请输入新增学生的成绩
60
请输入新增学生的年龄
18
学生系统中一共有3位学生信息
姓名:a,成绩:78.000000,年龄:19
姓名:b,成绩:90.000000,年龄:20
姓名:c,成绩:60.000000,年龄:18
请输入要查询的学生姓名
c
您要查询的学生信息是 姓名:c,成绩:60.000000,年龄:18
学生系统中一共有3位学生信息
姓名:c,成绩:60.000000,年龄:18
姓名:a,成绩:78.000000,年龄:19
姓名:b,成绩:90.000000,年龄:20
*/
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
void readInfo(char name[][30], float score[], int age[], int m);
void printStudentsArray(char name[][30], float score[], int age[], int m);
void sortByScore(char name[][30], float score[], int age[], int m);
void searchStudent(char name[][30], float score[], int age[], int m);
int main(int argc, char const *argv[])
{
char name[30][30]; //名字
float score[30]; //成绩
int age[30]; //年纪
int m; //确定学生人数
printf("Input m:");
scanf("%d",&m);
readInfo(name,score,age,m);
printStudentsArray(name,score,age,m);
searchStudent(name,score,age,m);
sortByScore(name,score,age,m);
printStudentsArray(name,score,age,m);
return 0;
}
//学生信息的录入
void readInfo(char name[][30], float score[], int age[], int m)
{
int i;
for(i=0;i<m;i++)
{
printf("请输入新增学生的名字\n");
scanf("%s",&name[i]);
printf("请输入新增学生的成绩\n");
scanf("%f",&score[i]);
printf("请输入新增学生的年龄\n");
scanf("%d",&age[i]);
}
}
//打印学生的姓名,成绩,年龄
void printStudentsArray(char name[][30], float score[], int age[], int m)
{
int i;
printf("学生系统中一共有%d位学生信息\n",m);
for(i = 0; i < m; i++)
{
printf("姓名:%s,成绩:%f,年龄:%d\n",name[i],score[i],age[i]);
}
}
//根据名字查询学生
void searchStudent(char name[][30], float score[], int age[], int m)
{
int i;
char sear;
printf("请输入要查询的学生姓名\n");
scanf("%s",&sear);
for(i = 0;i<m;i++)
{
//如果没有找到输出格式为
if(sear != name[i] && i == m-1)
printf("没有找到该学生信息\n");
//如果找到输出格式为
if(sear == name[i])
{
printf("您要查询的学生信息是 姓名:%s,成绩:%f,年龄:%d\n",name[i],score[i],age[i]);
break;
}
}
}
//按成绩从小到大排序
void sortByScore(char name[][30], float score[], int age[], int m)
{
int i,j,k;
float temp2;
char temp1;
int temp3;
for(i = 0;i<m-1;i++)
{
k = i;
for(j = i+1;j<m;j++)
{
if(score[k]> score[j])
{
k = j;
}
}
if(k!= i)
{
//交换姓名
temp1 = name[k];
name[k] = name[i];
name[i] = temp1;
//交换成绩
temp2 = score[k];
score[k] = score[i];
score[i] = temp2;
//交换年纪
temp3 = age[k];
age[k] = age[i];
age[i] = temp3;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询