鱼C论坛

 找回密码
 立即注册
查看: 2350|回复: 2

数组和指针!!

[复制链接]
发表于 2012-6-16 20:22:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小甲鱼布置的一道题!要求输入的值超过了i 和j就重新输入
怎么我输入任何一个数字的时候都要重新出入,而当输入一个非数字字符时就弹出一大堆i=i=i=i=呢???
#include <stdio.h>

bujige(int (*p)[4],   int n,   int i,   int j)
{
     printf("the score is %d\n", *( p[i]+j) );
     
}



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);
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 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)函数,这个是用来清空输入缓存的问题的  
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-6-16 21:29:35 | 显示全部楼层
谢谢了 呵呵
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-13 18:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表