幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2389|回复: 3

[通用编程] 符号问题(应该是这么说吧)

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2007-4-21 20:24:13 | 显示全部楼层 |阅读模式
#include<stdio.h>


void main()
{
    void abc(int arr[],int n);
    int i;
    int array[20];
    printf("please enter the twenty number:\n");
    for(i=0;i<20;i++)
        scanf("%d",&array);
    abc(array,20);
   
    printf("\n");
}
void  abc(int arr[],int n)
{
    int count,b,i;
     count=0,b=0;
    while(b<n)
    {
        for(i=0;i<n;i++)
        if(arr!=0)
        {    count++;
            if(count==5)        
                 printf("%3d",arr);-------->printf("%3d",arr中括号i);这里是这样的怎么显示不出来
                 arr=0;------------------->arr中括号i=0;
                 count=0;
                  b++;
        
        }
        
    }
   
}

为什么在if(count==5)   这个语句中,不用{}括起下面那四句,程序会无答案输出呢? [s:5]
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

88

主题

5419

帖子

214748万

积分

版主

S素世上最伟大最华丽

Rank: 7Rank: 7Rank: 7

积分
2147483647
QQ
发表于 2007-4-21 20:47:39 | 显示全部楼层
如果不加{},if语句只控制下面一句...
  1. if(count==5)     
  2.           printf("%3d",arr[i]);
复制代码
每次循环,你都让count = 0,count再怎么++也不会==5丫


PS.下次贴代码时..请用[#code]  这里是代码[#/code]...使用时去掉"#"
回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2007-4-21 21:13:46 | 显示全部楼层
同一的程序换一种写法:
  1. #include<stdio.h>
  2. main()
  3. {
  4.     void left(int *p,int n);
  5.     int num[100],n,i;
  6.     printf("how many people?\\n");
  7.     scanf("%d",&n);
  8.     for(i=0;i<n;i++)
  9.         num[i]=i+1;
  10.     left(num,n);
  11.     for(i=0;i<n;i++)
  12.         if(num[i]!=0)
  13.             printf("no.which left last is %d",num[i]);
  14. }
  15. void left(int *p,int n)
  16. {
  17.     int i,out,count;
  18.     i=0;
  19.     out=0;
  20.     count=0;
  21.     while(out<n-1)
  22.     {
  23.         if(*(p+i)!=0)
  24.             count++;
  25.         if(count==5)
  26.         {
  27.             *(p+i)=0;
  28.             count=0;
  29.             out++;
  30.         }
  31.         i++;
  32.         if(i==n) i=0;
  33.     }
  34. }
复制代码

为什么最后要加上if(i==n) i=0; 呢?不加就无法正确运行。为什么会这样?而且不加的时候还会使主函数最后一个for中的printf语句打印数次,但通过函数中的操作,不是已经将最后一个以外的都置零了吗?
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
发表于 2007-5-2 00:39:30 | 显示全部楼层
没有这一句的话,在最后的取数循环中(*(p+i)!=0将不在N的范围之类
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-4 00:14 , Processed in 0.027792 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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