鱼C论坛

 找回密码
 立即注册
查看: 2529|回复: 10

老师说:不懂要多问。。我又来了, 请您来说说您的解法。谢谢。

[复制链接]
发表于 2011-11-10 21:31:56 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 zjxy2545 于 2011-11-10 21:40 编辑

#define M 10
#include <stdio.h>
void main()
{
static int a[M] = {-12,0,6,16,23,56,80,100,110,115};
int n, low, mid, high, found;
low = 0;
high = M - 1;
found = 0;
printf("input a number to be searched");
scanf("%d", &n);
if( n < a[0] || n > a[M-1] )
{
  printf("there is no %d....",n);
}
for(; low <= high;)
{
  mid = (low + high) / 2;
  if(a[mid] == n)
  {
   found = 1;
   break;
  }
  else if(n > a[mid])
   low = mid + 1;
  else
   high = mid - 1;
}
if(found == 1)
  printf("the index of %d is %d", n, mid);
else
  printf("there is not %d",n);
}


这个程序比数组中大的数可以输出没有这个数。
那么我如果输入字母呢。我该怎么写才会显示错误??
请各位写出你的填充语句。。谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-10 21:38:39 | 显示全部楼层
字符和整形输出的格式控制不一样的 一个是%c 一个是%d
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-11-10 21:41:32 | 显示全部楼层

是啊 。。  那我输入字符, 就显示乱码。。 有什么办法可以不显示乱码吗???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-10 21:43:40 | 显示全部楼层
char ch;
scanf("%c",&ch);
printf("%c\n",ch);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-11-10 21:46:33 | 显示全部楼层
wangyexin 发表于 2011-11-10 21:43
char ch;
scanf("%c",&ch);
printf("%c\n",ch);

好朋友,  我是需要输入字符,然后打印错误。。不是输入字符,打印字符哦。。 谢谢你的回答。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-10 22:07:12 | 显示全部楼层
  1. #define M 10
  2. #include <stdio.h>
  3. #include <stdlib.h>

  4. int main()
  5. {
  6.     static int a[M] = {-12,0,6,16,23,56,80,100,110,115};
  7.     int n, low, mid, high, found,re;
  8.     low = 0;
  9.     high = M - 1;
  10.     found = 0;
  11.     printf("input a number to be searched:");
  12.     re=scanf("%d", &n);
  13.     if( n < a[0] || n > a[M-1] )
  14.     {
  15.         printf("there is no %d....",n);
  16.     }
  17.     for(; low <= high;)
  18.     {
  19.         mid = (low + high) / 2;
  20.         if(a[mid] == n)
  21.         {
  22.             found = 1;
  23.             break;
  24.         }
  25.         else if(n > a[mid])
  26.             low = mid + 1;
  27.         else
  28.             high = mid - 1;
  29.     }
  30.     if(found == 1)
  31.         printf("the index of %d is %d", n, mid);
  32.     else if(re==1)
  33.         printf("there is not %d",n);
  34.     if(re!=1) printf("Wrong number!");
  35.     system("PAUSE");
  36.     return 0;
  37. }
复制代码
帮你写了下,大概可以……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-10 22:16:33 | 显示全部楼层
不懂、
我 刚完IF语句
其他的都不还不会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-10 23:21:38 | 显示全部楼层
呵呵~~我也来看卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-11 07:15:27 | 显示全部楼层
这是二分法吧,六楼说的行吗?n已经是整形了,当你输入字符后不会将其转为对应的ASCAII码吗?求解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-11 07:25:04 | 显示全部楼层
zjxy2545 发表于 2011-11-10 21:46
好朋友,  我是需要输入字符,然后打印错误。。不是输入字符,打印字符哦。。 谢谢你的回答。。

上面这个代码能输入字符?整篇都每一个输入字符的语句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-11-11 11:39:42 | 显示全部楼层
可以,但是需要另外的函数和头文件。。。  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-27 00:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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