当前位置:首页 » 编程语言 » c语言n阶右下矩阵
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言n阶右下矩阵

发布时间: 2022-11-29 08:03:56

A. c语言中关于n阶矩阵输入的问题

用scanf输入的话就可以不管它了,你尽管回车,scanf在%d(或%f或%lf)格式下会自动放弃回车接着接收下一个有效数字。

B. C语言问题:编写程序完成对n阶矩阵(n为奇数)的变换,将原矩阵左下角n/2阶子块中的数据与右上角n

#include<stdio.h>

intmain(void)
{
inta[5][5]=
{
{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20},
{21,22,23,24,25}
};
inti,j,n;

for(i=0;i<5;i++)
{
for(j=0;j<=i;j++)
{
n=a[i][j];
a[i][j]=a[j][i];
a[j][i]=n;
}
}

for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%d",a[i][j]);
}
printf(" ");
}

return0;
}

C. C语言.键盘输入n阶的方阵,请输出该矩阵各列元素的和,以及两条对角线上各个元素之和。

#include <stdio.h>
int main()//矩阵对角线
{
int a[3][3]={1,2,55,4,5,6,20,8,17},i,j,tp=0;// 1 2 55
for(i=0;i<=2;i++) // 4 5 6
{ // 20 8 17 23 80

j=i;
tp+=a[i][j];

}
printf("%d\n",tp);
tp=0;
for(i=0;i<=2;i++)
{
j=2-i;
tp+=a[i][j];

}
printf("%d",tp);
/*再加个sum[i]的循环计算各列的和,应该简单的,自己思考一下。
那个N阶呢,只要那33改一个,下面的循环里的条件改一下就可以了*/

return 0;
}

D. 用c语言编写一个n阶矩阵

#include<stdio.h>
#include<stdlib.h>

int main()
{
int n,**p,i,j;
scanf("%d",&n);
p=new int*[n];
for(i=0;i<n;i++)
{
p[i]=new int[n];
for(j=0;j<n;j++) scanf("%d",&p[i][j]);
}

for(i=0;i<n;i++)
{
printf("%d",p[i][0]);
j=1;
while(j<n)
{
printf(" %d",p[i][j]);
j++;
}
printf("\n");
}
return 0;
}

E. 用c语言设计一n阶方阵!急!!

#include <stdio.h>
#include<malloc.h>
void matrix(int x,int y) //这里都是向一个方向发展的。
{
int **a;
a = (int **)malloc(x*sizeof(int)); //分配空间。
int num = x+y-1;
int k;
for(k=0;k<x;k++)
{
a[k] = (int *)malloc(y*sizeof(int));
}
int i;
int j;
int start=1; //从1开始的。元素的起始值。
for(k=0;k<num;k++)
{
for(i=0;i<y;i++) //这是列坐标,因为列是在行变后才变的。
{
for(j=0;j<x;j++) //这是行坐标。
{
if(i+j == k)
{
a[j][i] = start;
//printf("%d\n",a[j][i]);
start++;
}
}
}
//printf("k=%d\n",k);
}
for(i=0;i<x;i++) //输出矩阵。
{
for(j=0;j<y;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
for(k=0;k<x;k++) //释放空间。
{
free(a[k]);
}
free(a);
}
int main()
{
int n;
printf("please input (1-9):\n");
scanf("%d",&n);
matrix(n,n);
printf("\n");
matrix(3,5);
getchar();
getchar();
return 0;
}

F. C++中,怎么输出一个n阶矩阵呢

C++中,输出一个n阶矩阵步骤如下:

1、首先,定义8个整型变量,实现n阶矩阵的计算。

G. c语言给出一个N阶数字矩阵,求其边上数字的和。

这个样子你试一下:

#include "stdio.h"

int number[1000][1000];

int main()

{ int n;

scanf("%d",&n);

for(int i=0; i<n; ++i)

{ for(int j=0; j<n; ++j)

{ scanf("%d",&number[i][j]);

}

}

int sum=0;

for(int k=0; k<n; ++k)

{ if(n==1)

{ sum=sum+number[0][0];

}

else

{ sum=sum+number[0][k]+number[n-1][k];

}

}

for(int f=1; f<n-1; ++f)

{ sum=sum+number[f][0]+number[f][n-1];

}

printf("%d ",sum);

return 0;

}

H. c语言中的n阶方阵怎嘛做

C语言中int型的数值非常的小,最大的范围也只在[-2^31 , 2^31 -1],所以使用int类型最大只能表示13的阶乘而已,使用范围更大的double才是王道。

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int i,n,flg;
double num=1;
printf("please enter the times:");
//循环次数
scanf("%d",&flg);
printf("\n\n");
while(flg){
num=1;
printf("please enter the num:");
scanf("%d",&n);
for(i=1;i<=n;i++){
num *= i;
}
printf("factorial = %f\n\n",num);
flg--;
}
}

I. c语言怎么定义 一个动态n阶矩阵,n是一个变量

C语言以及绝大多数语言都不支持两维都不固定的数组,你只能定义一个含n个指针的指针数组,然后为每个指针再分配n块内存

J. 关于C语言的问题:如何用C语言实现n阶行列式和矩阵的值

输入:
3---7
2---1
得出错误结果。
而当输入n=3
0---1---3
3---0---2
5---2---0
时也会得出错误结果。
错误的原因有2:
1
是数据类型不对,匿名的程序是设定输入都是整数int,显然按照行列式的定义结果肯定是整数,但是他程序中使用了整型数的除法,结果是取整整数,虽然他使用了类型强制转换,但结果显然不同,有误差而且有时候这个误差很大形成错误。
2
是算法有点问题。小可很欣赏匿名的算法思路,简洁明快。不过有相当缺陷,这在程序中注明。
下面的程序是在匿名的程序思路上改写的。考虑到数据类型和精确度问题,程序中行列式数据使用double型。由于tc和win-tc是16位编辑器,对float型和double型数据支持不好,所以程序是在32位编辑器Dev-c++下调试并通过的。
本题的一个完整的c程序如下,程序在Dev-c++下都调试通过,结果正确。
/*
用C语言解决:求任意阶(n阶)矩阵的行列式值
*/
#include
<stdio.h>
#include
<math.h>
void
getarray(int
n);
void
showarray(int
n);
double
getresult(int
n);
double
array[10][10];/*设矩阵不超过10阶,可更改*/
int
main()
{
int
n;
double
result;
printf("\nPlease
input
the
Array
size
n:");
scanf("%d",&n);
getarray(n);
showarray(n);
result=getresult(n);
printf("\nResult=%f\n",result);
system("pause");
return
0;
}
void
getarray(int
n)
{
int
row,col;
for(row=0;row<n;row++)
{
printf("\nPlease
input
line
%d:",row+1);
for(col=0;col<n;col++)
scanf("%lf",&array[row][col]);
}
}
void
showarray(int
n)
{
int
row,col;
printf("\nA=");
for(row=0;row<n;row++)
{
for(col=0;col<n;col++)
printf("\t%f",array[row][col]);
printf("\n");
}
}
double
getresult(int
n)
{
double
temp,result=1.0;
int
switchtime=0,flag=0;
int
row,nextrow,col,stemp;
for(row=0;row<n-1;row++)
{
nextrow=row+1;
if(array[row][row]==0)/*
开始处理第一列,如果行列式第一行第一个数为零,要交换行
*/
{
while(array[nextrow][row]==0)
{
nextrow++;
/*
如果行列式第二行第一个数为零,行增加继续寻找非零数值的行
*/
if(nextrow==n)/*
如果遍历完行列式行列式第一列元素都为零,退出while循环
*/
{
flag=1;
break;
}
}
if(flag==1)
/*
退出while循环后回到for(row=0;row<n-1;row++)行加1?*/
continue;
/*
从array[row][row]==0知列也相应加1,开始处理第二列
*/
switchtime++;
/*
每交换一次行,行列式符号变化1次,统计变化次数
*/
for(col=0;col<n;col++)
/*
交换非零行到行列式顶部
*/
{
stemp=array[row][col];
array[row][col]=array[nextrow][col];
array[nextrow][col]=stemp;
}
}
for(nextrow=row+1;nextrow<n;nextrow++)
{
/*
类似高斯消去法,消第一行下各行第一列数值到零*/
temp=array[nextrow][row]/array[row][row];
for(col=0;col<n;col++)
array[nextrow][col]+=-temp*array[row][col];/*
化行列式为上三角行列式形式
*/
}
}
showarray(n);
for(row=0;row<n;row++)
result*=array[row][row];
if(switchtime%2)
return
-result;
else
return
result;
}