c语言问题:查找一个值不相同的二维整型数组中的最大值和最小值,并将最大值和最小值交换后输出

#include<stdio.h>
int main()
{
int i,j,a[3][2],max=0,min,x1,x2,y1,y2;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
{
scanf("%d",&a[i][j]);
}
for(i=0;i<3;i++)
for(j=0;j<2;j++)
{
if(a[i][j]>=max)
max=a[i][j];
x1=i;
y1=j;
}
min=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<2;j++)
{
if(a[i][j]<=min)
min=a[i][j];
x2=i;
y2=j;
}
a[x1][y1]=min;
a[x2][y2]=max;
printf("%3d%3d",a[i][j],min);

}
这个程序已经找出了最大值和最小值了,但是我之前定义a[x1][y1]=min;
了为什么我输出a[x1][y1]和min的时候两个值不一样?
上面printf那个是a[x1][y1]不是a[i][j]
1. 请编写程序实现以下功能:在字符串中所有数字字符前加一个$字符。例如,输入:A1B23CD45,则输出为:A$1B$2$3CD$4$5,不能在打印语句中直接加$。
2. 已有一个已排好的数组今输入一个数要求按原来排序的规律将它插入数组中。
这还有两个题不会做麻烦做一下

if(a[i][j]>=max)
max=a[i][j];
x1=i;
y1=j;

上面的漏了{}

#include<stdio.h>
int main()
{
int i,j,a[3][2],max=0,min,x1,x2,y1,y2;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
{
scanf("%d",&a[i][j]);
}
for(i=0;i<3;i++)
for(j=0;j<2;j++)
{
if(a[i][j]>=max)
{ // 加上
max=a[i][j];
x1=i;
y1=j;
} // 加上
}
min=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<2;j++)
{
if(a[i][j]<=min)
{ // 加上
min=a[i][j];
x2=i;
y2=j;
} // 加上
}
a[x1][y1]=min;
a[x2][y2]=max;
printf("%3d%3d",a[i][j],min);
}

1,

#include <stdio.h>

int main(void)
{
char str[128];
int count = 0, len = 0;
int i = 0;

gets(str);

while (str[i])
{
if (str[i] >= '0' && str[i] <= '9')
count++;
i++;
}

str[i + count] = '\0';
len = --i + count;
while (len >= 0)
{
str[len] = str[i];
if (str[i] >= '0' && str[i] <= '9')
str[--len] = '$';
len--;
i--;
}

puts(str);
return 0;
}

2,假设已知数组是升序排列
#include <stdio.h>
#define N 5

int main(void)
{
int a[N] = {3, 8, 12, 56};
int n, i = N - 1 - 1;

printf("输入一个数:");
scanf("%d", &n);

while (n < a[i] && i >= 0)
{
a[i + 1] = a[i];
i--;
}
a[i + 1] = n;

for (i = 0; i < N; i++)
printf("%d ", a[i]);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-25
你必须要把 x2= i 和 y2=j一起再在if(a[i][j]<=min)的花括号中,不然是不行的。
应该这样
if(a[i][j]<=min)
{
min=a[i][j];
x2=i;
y2=j;
}
不然的话每次都会执行下边的赋值语句,if语句不加花括号的范围的话,默认的是紧接着的下一条语句。
相似回答