| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 450 人关注过本帖
标题:求改进?
只看楼主 加入收藏
qq839431011
Rank: 4
来 自:河北
等 级:业余侠客
帖 子:105
专家分:296
注 册:2012-12-5
结帖率:100%
收藏
 问题点数:0 回复次数:7 
求改进?
程序代码:
/*输入若干大于零的数,用负数做为结束标志*/
# include <stdio.h>
# define M 100

 arrin(int *a)
    {
     int i,x;
      i=0;
      scanf("%d",&x);
     while(x>0)
      {
        *(a+i)=x;
         i++;
         scanf("%d",&x);
      }
     return i;
    }

void arrout(int *a,int n)
    {
       int i;
       for(i=0;i<n;i++)
           printf(((i+1)%5==0)?"%4d\n":"%4d",*(a+i));
       printf("\n");
    }

int main()

    { int s[M],k;

      arrin(s);

      arrout(s,k);

    }
2012-12-12 23:28
麦香
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:65
专家分:163
注 册:2011-10-18
收藏
得分:0 
程序代码:
# include <stdio.h>
# define M 100
arrin(int *a)  //函数没有返回值类型 int arrin(int * a)
    {
     int i,x;
      i=0;
      scanf("%d",&x);
     while(x>0)
      {
        *(a+i)=x;
         i++;
         scanf("%d",&x);
      }
     return i; 
    }

void arrout(int *a,int n)
    {
       int i;
       for(i=0;i<n;i++)
           printf(((i+1)%5==0)?"%4d\n":"%4d",*(a+i));
       printf("\n");
    }

int main()

    { int s[M],k;

      arrin(s); //这里,唉

      arrout(s,k);

    }


[ 本帖最后由 麦香 于 2012-12-13 12:32 编辑 ]

你们要进窄门,因为引向灭亡的门是宽的,路是大的,进去的人也多。
2012-12-13 12:29
麦香
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:65
专家分:163
注 册:2011-10-18
收藏
得分:0 
我改一半 我改不下去了,我给你重写一遍吧,等会儿啊

你们要进窄门,因为引向灭亡的门是宽的,路是大的,进去的人也多。
2012-12-13 12:30
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
没看出哪有毛病,就是主函数里k没有初始化就用了

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-13 12:37
麦香
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:65
专家分:163
注 册:2011-10-18
收藏
得分:0 
程序代码:
# include <stdio.h>
# define M 100
int arrin(int *a); 
void arrout(int *a,int n);
int main()
{ 
    int s[M],k;
    k = arrin(s);
    arrout(s,k);
    
    return 0;
}
int arrin(int *a)
{
    int i = 0,x;      
    while(scanf("%d",&x) == 1&& x > 0)
    {
        *(a+i)=x;
        i++;
    }    
return i;
}
void arrout(int *a,int n)
{
    int i;
    for(i=0;i<n;i++)
        printf(((i+1)%5==0)?"%4d\n":"%4d",*(a+i));
    printf("\n");
    
}


[ 本帖最后由 麦香 于 2012-12-13 12:43 编辑 ]

你们要进窄门,因为引向灭亡的门是宽的,路是大的,进去的人也多。
2012-12-13 12:41
qq839431011
Rank: 4
来 自:河北
等 级:业余侠客
帖 子:105
专家分:296
注 册:2012-12-5
收藏
得分:0 
程序的问题就是你输入一个负数以后按空格还可以输入别的数  按回车以后才结束    您们应该可以改一下吧

穷则变,变则通,通则久 寂寞平淡
2012-12-13 12:45
qq839431011
Rank: 4
来 自:河北
等 级:业余侠客
帖 子:105
专家分:296
注 册:2012-12-5
收藏
得分:0 
回复 5楼 麦香
是这个意思

穷则变,变则通,通则久 寂寞平淡
2012-12-13 12:48
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 
经修改,实现了你说的功能,如下:

/*输入若干大于零的数,用负数做为结束标志*/
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
# define M 100
int arrin(int *a)
{
    int i=0,num,len;
    char ch[100];
    while(1)
    {
        printf("请输入数字:\n");
        while(scanf("%d%*c",&num)&&num>=0)
            *(a+i++)=num;
        printf("此次输入结束!\n");
        while(1)
        {
            printf("按空格回车继续输入,按回车打印退出!");
            gets(ch);
            len=strlen(ch);
            if(ch[0]=='\0'&&len==0)    return i;
            else
            if(ch[0]==' '&&len==1)
            {
                printf("\n");
                    break;
            }   
        }
    }
}

int arrout(int *a,int n)
{
    int i=0;
    printf("打印结果如下:\n");
    while(i<n)
    {
        printf("%4d",*(a+i++));
        if(i%5==0)
        printf("\n");
    }
    printf("\n程序退出!\n");

    return 0;
}

int main()
{
    int s[M],k;
    k=arrin(s);
    arrout(s,k);

    return 0;
}
测试如下:
图片附件: 游客没有浏览图片的权限,请 登录注册

小小战士,战士中的战斗机!
2012-12-13 13:26
快速回复:求改进?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019608 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved