C 矩阵第5列上所有数字的倒数
我有一个C问题,我需要反转2x5矩阵第5列上的所有数字 所以如果我有C 矩阵第5列上所有数字的倒数,c,C,我有一个C问题,我需要反转2x5矩阵第5列上的所有数字 所以如果我有 1 2 3 4 89 3 8 6 8 91 这将成为 1 2 3 4 98 3 8 6 8 19 到目前为止,我编写的代码是: #include <stdio.h> void inverse() { int reversedNumber = 0, remainder, mat[10][10], i, j; for (i = 0; i < 2; i++) for (j =
1 2 3 4 89
3 8 6 8 91
这将成为
1 2 3 4 98
3 8 6 8 19
到目前为止,我编写的代码是:
#include <stdio.h>
void inverse() {
int reversedNumber = 0, remainder, mat[10][10], i, j;
for (i = 0; i < 2; i++)
for (j = 0; j < 5; j++) {
while (mat[i][j] != 0) {
remainder = mat[i][j] % 10;
reversedNumber = reversedNumber * 10 + remainder;
mat[i][j] /= 10;
}
}
printf("Reversed Number = %d", reversedNumber);
}
void main()
{
int mat[10][10], i, j;
printf("Enter your matrix\n");
for (i = 0; i < 2; i++)
for (j = 0; j < 5; j++) {
scanf("%d", &mat[i][j]);
}
printf("\nHere is your matrix:\n");
for (i = 0; i < 2; i++) {
for (j = 0; j < 5; j++) {
printf("%d ", mat[i][j]);
}
printf("\n");
}
inverse(mat[1][5]);
}
#包括
void逆(){
int reversedNumber=0,余数,mat[10][10],i,j;
对于(i=0;i<2;i++)
对于(j=0;j<5;j++){
while(mat[i][j]!=0){
余数=材料[i][j]%10;
反向编号=反向编号*10+余数;
mat[i][j]/=10;
}
}
printf(“反向编号=%d”,反向编号);
}
void main()
{
int mat[10][10],i,j;
printf(“输入矩阵\n”);
对于(i=0;i<2;i++)
对于(j=0;j<5;j++){
scanf(“%d”、&mat[i][j]);
}
printf(“\n这是您的矩阵:\n”);
对于(i=0;i<2;i++){
对于(j=0;j<5;j++){
printf(“%d”,mat[i][j]);
}
printf(“\n”);
}
逆(mat[1][5]);
}
运行这个之后,我得到了一个可笑的大数字!我应该修改什么?代码中有许多地方可以改进
#include<stdio.h>
int inverse(int num) {
int reversednum = 0;
while(num){
reversednum = reversednum*10 + num%10;
num /= 10;
}
return reversednum;
}
void main(){
int mat[10][10],i,j;
printf("Enter your matrix\n");
for(i=0;i<2;i++)
for(j=0;j<5;j++){
scanf("%d",&mat[i][j]);
}
printf("\nHere is your matrix:\n");
for(i=0;i<2;i++){
for(j=0;j<5;j++){
printf("%d ",mat[i][j]);
if(j == 4) mat[i][j] = inverse(mat[i][j]);
}
printf("\n");
}
}
#包括
int逆(int num){
int reversednum=0;
while(num){
reversednum=reversednum*10+num%10;
num/=10;
}
返回反向数;
}
void main(){
int mat[10][10],i,j;
printf(“输入矩阵\n”);
对于程序中的(i=0;i错误:
-您的函数不需要任何东西,例如空参数,但您将矩阵作为参数发送
当您的矩阵为2*5时,不要不必要地使用[10][10]大小的矩阵
将“mat”作为参数(即矩阵地址)发送到函数反转
#include <stdio.h>
int main() {
//code
int mat[10][10], i, j;
printf("Enter your matrix\n");
for (i = 0; i < 2; i++)
for (j = 0; j < 5; j++) {
scanf("%d", &mat[i][j]);
}
printf("\nHere is your matrix:\n");
for (i = 0; i < 2; i++) {
for (j = 0; j < 5; j++) {
if(j==4) //only for 5th column
{
// int temp=mat[i][j]; // can use temporary variable instead of changing actual value matrix (better option)
int remainder, reverse =0;
while(mat[i][j]>0)
{
remainder=mat[i][j]%10;
reverse=reverse*10 + remainder;
mat[i][j]=mat[i][j]/10;
}
mat[i][j]=reverse;
}
printf("%d ", mat[i][j]);
}
printf("\n");
}
return 0;
}
#包括
int main(){
//代码
int mat[10][10],i,j;
printf(“输入矩阵\n”);
对于(i=0;i<2;i++)
对于(j=0;j<5;j++){
scanf(“%d”、&mat[i][j]);
}
printf(“\n这是您的矩阵:\n”);
对于(i=0;i<2;i++){
对于(j=0;j<5;j++){
如果(j==4)//仅适用于第5列
{
//int temp=mat[i][j];//可以使用临时变量而不是更改实际值矩阵(更好的选项)
整数余数,反向=0;
while(mat[i][j]>0)
{
余数=材料[i][j]%10;
反向=反向*10+余数;
mat[i][j]=mat[i][j]/10;
}
mat[i][j]=反向;
}
printf(“%d”,mat[i][j]);
}
printf(“\n”);
}
返回0;
}
已编辑:已修改问题中的代码
#include <stdio.h>
void inverse(int mat1[2][5]) {
int i, j;
for (i = 0; i < 2; i++){
int j=4;
int reversedNumber = 0, remainder=0;
while (mat1[i][j] > 0) {
remainder = mat1[i][j] % 10;
reversedNumber = reversedNumber * 10 + remainder;
mat1[i][j] /= 10;
}
printf("Reversed Number = %d\n",reversedNumber);
}
}
void main()
{
int mat[2][5], i, j;
printf("Enter your matrix\n");
for (i = 0; i < 2; i++)
for (j = 0; j < 5; j++) {
scanf("%d", &mat[i][j]);
}
printf("\nHere is your matrix:\n");
for (i = 0; i < 2; i++) {
for (j = 0; j < 5; j++) {
printf("%d ", mat[i][j]);
}
printf("\n");
}
inverse(mat);
}
#包括
无效逆(int mat1[2][5]){
int i,j;
对于(i=0;i<2;i++){
int j=4;
int reversedNumber=0,余数=0;
而(mat1[i][j]>0){
余数=mat1[i][j]%10;
反向编号=反向编号*10+余数;
mat1[i][j]/=10;
}
printf(“反向编号=%d\n”,反向编号);
}
}
void main()
{
int mat[2][5],i,j;
printf(“输入矩阵\n”);
对于(i=0;i<2;i++)
对于(j=0;j<5;j++){
scanf(“%d”、&mat[i][j]);
}
printf(“\n这是您的矩阵:\n”);
对于(i=0;i<2;i++){
对于(j=0;j<5;j++){
printf(“%d”,mat[i][j]);
}
printf(“\n”);
}
逆(mat);
}
希望这有帮助。您必须将矩阵传递给逆函数,以便矩阵(mat
)可以修改。如果在逆
中声明一个单独的mat
数组,则这是一个不同的范围。您还必须计算数字中有多少位。您可以使用
函数,或者下面的示例使用基本计算
void inverse(int mat[2][5])
{
for(int i = 0; i < 2; i++)
for(int j = 0; j < 5; j++)
{
int n = mat[i][j];
int digits = 0;
while(n > 0)
{
digits++;
n /= 10;
}
n = mat[i][j];
int rev = 0;
while(digits > 0)
{
int x = n % 10;
for(int c = 0; c < digits - 1; c++)
x *= 10;
rev += x;
n /= 10;
digits--;
}
mat[i][j] = rev;
}
}
int main(void)
{
int mat[2][5] = {
1, 2, 3, 4, 89,
3, 8, 6, 8, 91 };
inverse(mat);
for(int i = 0; i < 2; i++)
{
for(int j = 0; j < 5; j++)
printf("%d ", mat[i][j]);
printf("\n");
}
return 0;
}
void逆(int mat[2][5])
{
对于(int i=0;i<2;i++)
对于(int j=0;j<5;j++)
{
int n=材料[i][j];
整数位数=0;
而(n>0)
{
数字++;
n/=10;
}
n=材料[i][j];
int rev=0;
while(数字>0)
{
int x=n%10;
对于(int c=0;c
检查您的inverse
函数定义,例如,inverse
声明为不带参数,但您正在传递一个参数。在该函数中,您使用的是一个局部的、不确定的mat
,从未填充任何确定的数据。因此,行为当然是未定义的(因此不可预测的)参数不匹配通常会导致致命错误。std::stringstream f;std::string k;fk;std::reverse(&k[0],&k[0]+k.length());f.str(k);f>>intarr[5][7];
我提供的答案特定于提问者编写的问题和代码。假设答案只有2*5