当前位置: 代码迷 >> C语言 >> [求助]矩阵,猜数和对称数问题
  详细解决方案

[求助]矩阵,猜数和对称数问题

热度:975   发布时间:2007-05-08 21:06:56.0
[求助]矩阵,猜数和对称数问题

1、 如果矩阵A中存在这样的一个元素A[i][j]满足下列条件:A[i][j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。编写一个程序计算出矩阵A的所有马鞍点,以及其位置。

2、一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上又出现了一个新的对称数。编写一个程序求该车的速度以及这新的对称数。

3、编写一个人机猜数游戏,游戏玩法如下:

由计算机“想”一个四位数,请人猜这个四位数是多少。人输入四位数字后,计算机首先判断这四位数字中有几位是猜对了,并且在对的数字中又有几位位置也是对的,将结果显示出来,给人以提示,请人再猜,直到人猜出计算机所想的四位数是多少为止。
例如:计算机“想”了一个“1234”请人猜,可能的提示如下:
人猜的整数 计算机判断有几个数字正确 有几个位置正确
1122 2 1
3344 2 1
3312 3 0
4123 4 0
1243 4 2
1234 4 4
游戏结束

搜索更多相关的解决方案: 矩阵  left  align  中值  元素  

----------------解决方案--------------------------------------------------------
2.95859--->95959--->96069(这个数已经不太可能了,时速已经100多了.)
----------------解决方案--------------------------------------------------------
以下是引用nuciewth在2007-5-8 21:42:04的发言:
2.95859--->95959--->96069(这个数已经不太可能了,时速已经100多了.)

想起一句话:"纯是为了出题而出题"


----------------解决方案--------------------------------------------------------
这时速怎么看啊95859单位是多少
----------------解决方案--------------------------------------------------------
没看过记程车.
----------------解决方案--------------------------------------------------------
第一题挺简单的,用循环吧可以实现的
先找到每一行中最小的元素a[i][j],在判断它在这个j列是否是最大元素。
如果是就输出i,j和a[i][j],
其他的明天再说
----------------解决方案--------------------------------------------------------
回复:(vvex)[求助]矩阵,猜数和对称数问题
你怎么知道时速的?
我很想知道啊!



----------------解决方案--------------------------------------------------------
回复:(vvex)[求助]矩阵,猜数和对称数问题

这个是我做的第三题
本人是新手
做的可能复杂了
不过也因此我有了个问题
rand()得出的数并不是真正意义上的随机,每次得的数都一样,有什么函数可以真正随机的吗
问题解决了 谢谢feng1256的帮助
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#define N 5
void getnum(char *);
void input(char *);
void output(char *,int,int);
void main()
{
char a[N]={0};
getnum(a);
input(a);

}

void getnum(char *a)
{
int i;
srand((unsigned)time(NULL));
for(i=0;i<N-1;i++)a[i]=rand()%10+48;
a[i]='\0';
puts(a);

}
void input(char *a)
{
char b[N]={0};

int i,j,m,n;
do
{
i=0,n=0,m=0;
int d[10]={'\0'};

printf("input the numeber x:");
gets(b);
if(b[0]=='E')exit(0);
for(j=0;j<N-1;j++)
{
if(a[j]==b[j])m++;
switch(b[j])
{
case '0': d[0]++;break;
case '1': d[1]++;break;
case '2': d[2]++;break;
case '3': d[3]++;break;
case '4': d[4]++;break;
case '5': d[5]++;break;
case '6': d[6]++;break;
case '7': d[7]++;break;
case '8': d[8]++;break;
case '9': d[9]++;break;
}
}
for(j=0;j<10;j++)if(d[j]!=0)for(i=0;i<N-1;i++)if((j+48)==a[i])n++;

output(b,n,m);
}while(n<4||m<4);
getch();

}


void output(char *b,int n,int m)
{
printf("\n");
printf("-------------------------------------------------------\n");
printf("inputnumeber numbercorrect positioncorrect\n");

printf(" %s %d %d\n",b,n,m);
}

[此贴子已经被作者于2007-5-9 15:59:42编辑过]


----------------解决方案--------------------------------------------------------
以下是引用YOGIOH在2007-5-9 14:33:25的发言:
rand()得出的数并不是真正意义上的随机,每次得的数都一样,有什么函数可以真正随机的吗

可以初始化种子或者用另一函数 可以保证每次运行产生的随机数不同而已

真正的随机数不存在


----------------解决方案--------------------------------------------------------
马鞍数应该不难啊固定J猛+I看是不是最小,是了以后固定I猛增J看是不是最大

随机数可以用系统时间做种最好取到毫秒然后平方取中,我在C#块发的就是这样做的
----------------解决方案--------------------------------------------------------
  相关解决方案