求c语言大神解答!!在线等!!谢谢了!!!有一个由整数组成的n行m列矩阵,请对矩阵中的元素重新进行

作者&投稿:汉蚀 (若有异议请与网页底部的电邮联系)
c语言 有一个由整数组成的n行m列矩阵,请对矩阵中的元素重新进行排列~

那你直接排序好了。
比如
1 2 3
4 5 6

就满足你的那个条件了。

如果数据不多,直接用冒泡排序好了

参考代码如下:
#include
#define M 10
#define N 10
void main(){
int a[M][N],i,j,sum;
printf("input 2D array values:");
for(i=0;i<M;i++){
for(j=0;j<N;j++){
scanf("%d",&a[i][j])
}
}
// output 2D array
for(i=0;i<M;i++){
for(j=0;j<N;j++){
printf("%4d",a[i][j]);
printf("
");
}
}
}

#include<stdio.h>
void BubbleSort(int a[],int n)

int i,j,r;
for(i=0;i<n;i++)
{
for(j=i;j>=1;j--)
{
if(a[j]<a[j-1])
{
r=a[j];
a[j]=a[j-1];
a[j-1]=r;
}
else break; 
}
}}
int main()
{
const int n=4;
const int m=5;
int a[n][m],i,j,temp[m*n];
for(i=0;i<n;++i)
for(j=0;j<m;++j)
{
scanf("%d",&a[i][j]);//从键盘输入矩阵各个元素
temp[5*i+j]=a[i][j];//二维数组一维化
}
BubbleSort(temp,m*n);//对一维数组排序
for(i=0;i<n;++i)
{
for(j=0;j<m-1;++j)
{
a[i][j]=temp[5*i+j];//归还给二维数组
printf("%d ",a[i][j]);//打印出来
}
a[i][j]=temp[5*i+j];
printf("%d
",a[i][j]);
}
return 0;
}


按一维数组从小到大排序即可。

#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#define N 4
#define M 5
int main(int argc,char *argv[]){
int m[N][M],i,j,k,*p,t;
srand((unsigned)time(NULL));
printf("Sorting before:
");
for(i=0;i<N;i++){
for(j=0;j<M;printf("%3d",m[i][j++]=rand()%100));
printf("
");
}
printf("
After ordering:
");
for(p=(int *)m,t=M*N,i=0;i<t;i++){
for(k=i,j=k+1;j<t;j++)
if(p[k]>p[j])
k=j;
if(k-i)
j=p[i],p[i]=p[k],p[k]=j;
printf((i+1)%M ? "%3d" : "%3d
",p[i]);
}

printf("
");
return 0;
}

运行结果如下:



#include<stdio.h>
#define max(a,b) (a>b?a:b)
int size_heng,size_shu;
int read() {
int temp;
scanf("%d",&temp);
return temp;
}
void swap(int *a,int *b) {
int temp=*a;
*a=*b,*b=temp;
}
void qsort(int l,int r,int a[]) {
int i=l,j=r,mid=a[(l+r)>>1];
while(i<=j) {
while(a[i]<mid)i++;
while(a[j]>mid)j--;
if(i<=j)swap(&a[i],&a[j]),i++,j--;
}
if(l<j)qsort(l,j,a);
if(i<r)qsort(i,r,a);
}
void swaparr(int a[],int b[]) {
int temp[size_heng+1];
for(int i=1; i<=size_heng; i++)
temp[i]=a[i];
for(int i=1; i<=size_heng; i++)
a[i]=b[i];
for(int i=1; i<=size_heng; i++)
b[i]=temp[i];
}
int map[32767][32767];
int main() {
puts("请输入矩阵的长");
size_heng=read();
puts("请输入矩阵的宽");
size_shu=read();
puts("请输入这个矩阵");
for(int i=1; i<=size_shu; i++) {
for(int j=1; j<=size_heng; j++)
map[i][j]=read();
qsort(1,size_heng,map[i]);
}
for(int i=1;i<=size_shu;i++)
for(int j=i+1;j<=size_shu;j++)
if(map[i][1]>map[j][1])
swaparr(map[i],map[j]);
puts("排序完成!!");
puts("现在的矩阵:");
for(int i=1; i<=size_shu; i++,puts(""))
for(int j=1; j<=size_heng; j++)
printf("%d ",map[i][j]);
return 0;
}


把冒泡排序改下 升序改降序 再在前面加一个for循环

这个完全看不懂的啊


我是C语言新手。求大神解释一下这一道题,书里没解析的额
首先main函数里定义个结构体类型 struct cmplx该结构体包含两个成员变量x和y。cnum是结构体类型的数组,数组中有2个数组元素cnum[0]和cnum[1],每个数组元素都是结构体类型的变量。所以 cnum[0].x=1,cnum[0].y=3;cnum[1].x=2,cnum[1].y=7;则cnum[0].y\/cnum[0].x*cnum[1]....

c语言,求大神解答
include <stdio.h>void fun(char *a,int n){int ii,i=0;while(a[i]!=0) i++; \/\/获取字符串长度 ii=i=i-1;while(a[i]=='*') i--; \/\/获取最后一个字母的位置if(ii-i>n) a[i+n+1]=0; }int main(){char s[81]="***A*BC*DEF*G***"; int n;printf("Enter...

求大神给我解答一下这道C语言题
首先你需要明白前缀自增运算符和最后自增运算符,前缀是先加后用,后缀是先用后加。然后就是执行while里面的语句的条件是只要不为0即可。现在开始分析程序:a=-2,条件为真,a++,a=-1;++b,b=1,条件为真。执行;语句之后开始下一次:a=-1,条件为真,a++,a=0;++b,b=2,条件为真。执行...

请擅长C语言的大神帮我解答一道关于字符串的计算题!请把每一部计算步 ...
include<stdio.h>main(){char s[]="123456789",*p=s;\/\/p指向s的第一个字符 int i=0;while(*p)\/\/循环判断字符 { if(i%2==0) *p=' *';\/\/i%2==0 123456789(010101010)所以改变的是偶数位置的数 p++;\/\/p本来指向第一个字符1,加1,指向第二个字符,以此类推 i++;}printf("%...

小弟初学C语言 求大神解答一下!
在c语言的解释是:for:循环语句。作用:循环。它的一般形式为: for(<初始化>;<条件表达式>;<增量>) { 语句;} 语句 初始化:总是一个赋值语句,它用来给循环控制变量赋初值;条件表达式:是一个关系表达式,它决定什么时候退出循环;增量:定义循环控制变量每循环一次后按什么方式变化。这三个部分...

C语言两道题!!求大神解答
第一个字符是转义字符'\\t',制表符也就是TAB健,占用4个字节,所以总共就是4+1=5个字节啦。33、考察点:do while循环体;C语言使用0代表逻辑假,非0代表逻辑假;x++是x自增前的结果,++x是x子增后的结果。int x=5;do{ printf("%2d\\n",x--); \/\/先打印x自减前的结果,就是 5,...

求c语言大神解答,详细点谢谢
输出7和9 x++先取x值然后+1 第一次循环 x=2,z=3,z++为4,y=0,++y为1,x+y+z=7;第二次训话 static定义的z,改变了z的范围,第二次循环的时候z初始就为4 x=3,z=4,z++为5,y=0,++y为1,x+y+z=9。在第8行加上printf("%d,%d", z,y);调试一下就明白了,调程多...

C语言求大神解答
参考:C语言工资管理系统源代码-andy --- include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define N 100struct Salary_Info{ int Card_No; \/\/工资卡号 char name[20]; \/\/姓名int month; \/\/月份float Init_Salary; \/\/应发工资float Water_Rate; \/\/...

简单的c语言程序,为什么错了 ,我看不懂啊,急需大神指导!
include <stdio.h> const double PI=3.1415926;void main(void){ double r, area;scanf("%lf", &r);area=PI*r*r;printf("r=%lf, area=%lf\\n", r, area);} 1、函数定义的语法结构是 返回值 函数名(参数表){函数体} 对应你的main函数 如果你在参数表和函数体之间插入一句话(const...

C语言,求大神解答。字符串大小的比较可以用关系表达式吗?还是说只 ...
字符串的比较不能用关系表达式,因为关系表达式比较的是内存中数值的大小,如果字符串a和字符串b用关系表达式a< b比较,比较的是a和b字符串第一个元素的,地址的大小,因为数组名即为第一个元素的地址。所以只能够用strcmp,或者自己写一个比较的函数。sizeof()用于求类型的大小,是一个关键字,如...

饶阳县17559582561: 求c语言大神解答!!在线等!!谢谢了!!!有n(n<=20)个学生,每人考m(m<=5)门课,求每 -
衡典乳糖: #include<stdio.h> int main() {int n,m,i,j,flag,good;double sum1,sum2,b[20],c[5],a[20][5];while(scanf("%d%d",&n,&m)!=EOF)//学生数 课程数{for(i=0;i<n;i++)for(j=0;j<m;j++)scanf("%lf",&a[i][j]);for(i=0;i<n;i++){sum1=0;for(j=0;j<m;j++)...

饶阳县17559582561: c语言! 求大神详解!!!!!! -
衡典乳糖: 本题选B!字符串包含以下八个字符:a \041--》)#041 \\--》\ b

饶阳县17559582561: 求c语言大神解答!!!在线等!急!!谢谢谢谢! 编写一个程序,对给定的一维整形数组a,数字元素个数 -
衡典乳糖: #includeint main() {int i,j=0,t,a[20]; for(i=0;i<20;i++) {scanf("%d",&a[i]); if(a[i]>a[j])j=i; } t=a[j];a[j]=a[0];a[0]=t; for(i=0;i<20;i++) printf("%d ",a[i]); printf("\n"); return 0; }

饶阳县17559582561: 求c语言大神解答!!在线等!!急!谢谢了! 编写一个函数int invert(char str[] -
衡典乳糖: #include <stdio.h>#include <string.h> void invert(char str[]); int main(void) { char str[100],*p=str; printf("输入字符串:"); gets(p); printf("逆序字符串:"); invert(p); printf("\n"); return 0; } void invert(char str[]) { int i,length=strlen(str); for(i=length-1;i>=0;i--) printf("%c",str[i]); }

饶阳县17559582561: 求c语言大神解答!!在线等!!急!谢谢了! 编写函数,删除字符串中,从指定位置m开始的n个字符.删 -
衡典乳糖: #include <stdio.h> char *delete(char *p, int i); char a; int main() { char a[40], *b; int i; printf("请输入字符串\n"); scanf("%s", a); printf("请输入你要删除第几个字符\n"); scanf("%d", &i); b = delete( a, i); if(b == NULL) { printf(" 删除失...

饶阳县17559582561: 求C语言大神解一道题,在线等,谢谢啦~ -
衡典乳糖: #include int main(){ int i,j; for(i=0;i<5;i++){ //输出空格 for(j=0;j<5;j+...

饶阳县17559582561: C语言大神们 求帮忙在线等 -
衡典乳糖: #include int main() { int i, j; char str[100], begin[2], end[2]; scanf("%s %s %s", str, begin, end); for(i = 0; str[i] != begin[0] && str[i] != '\0'; i++); if(str[i] == 0) { printf("字符串%s中没找到字符%s\n", str, begin); return 0; } for(j=i++ ;str[i] != end[0] &&...

饶阳县17559582561: 求c语言大神解答 -
衡典乳糖: 首先你printf后面的是打错了吧.是选择B,没错. 因为p数组没有结束符,用strlen测长度会出错,而q数组,虽然后面没有结束符,但是,q数组指定了它的长度为10,那么后面就还有7个0,那么就也相当于有了结束符,所以q数组是不会出错的,而且会有输出结果,是3

饶阳县17559582561: 急求 C语言大神解答 -
衡典乳糖: s = 0;.....if (str[i]>='0' && str[i] s=s*10+str[i]-'0'; /*请修改此处*/

饶阳县17559582561: C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因 -
衡典乳糖: 已修改,看注释#include int main() { char a[20],b[20],c[50],*p1,*p2,*p3; p1=a,p2=b,p3=c; gets(a); while(*p1) { *p2 = (*p1)+3; //对字符串中的每个字符用加3的方法加密并存入数组b p1++; p2++; }*p2='\0'; //串结束符 p2=b ; //p2重新指向b的开始位置 while(*p2) { *p3 = (*p2)-3; //对b中的字符串解密存入数组c p3++; p2++; }*p3='\0'; puts(a); //puts是输出一个串 puts(b); puts(c); return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网