|
|
发表于 2012-6-16 20:55:39
|
显示全部楼层
#include "stdafx.h"
void bujige(int (*p)[4], int n, int i, int j)
{
printf("the score is %d\n", *( p[i]+j) );
}
void main()
{
int a[3][4]={{88,86,88,97},{56,75,89,87},{99,76,43,88}};
int i, j;
do
{
printf("i = ");
scanf("%d", &i);
}
while( i<48 || i>50 );
do
{
printf("j = ");
scanf("%d", &j);
}
while( j<48 ||j>51 );
bujige(a, 3, i, j);
}
这是我帮你改的代码,我没看你的逻辑,不晓得你想实现什么功能,你错误的原因是你while('i'<48||'i>50') 后面的j 也是同样 。为什么要写成'i' 和 'j' 呢 ,小甲鱼不可能这么教的吧,这样写就成了字符常量了,你写成'i'<48|'j'>50这是等于是用i跟j的ASCII码在跟那个比较,常量的比较,所以永远是真的,所以永远不会退出循环。所以你无论这么输入都不会退出。。。
不过楼主。你制造了一个很神奇的事情,就是你说的输入一个字符的时候,会整个控制台都打印i= 这号那个情况,是C的清空缓存问题,你第一次输入的时候输入了一个字符,这个字符占据了输入缓存,然后还没有清空,就第二次输入,所以它直接把缓存里面的你输入的那个字符拿过去用了,没有给你输入的机会,然后你的循环是个死循环,就一直打印一直打印 i=。。。。。
完了,回去了,楼主加油。另外解决输入缓存问题的话就是在 scanf函数下面加一个fflush(stdin)函数,这个是用来清空输入缓存的问题的 |
|