当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 10 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : C语言求教
帖子发表于 : 2007-11-18 16:02 

注册: 2007-10-17 10:18
帖子: 21
送出感谢: 0 次
接收感谢: 0 次
To all:
大家好,我是个Ubuntu的入门级菜鸟,发现这里真的是一个很好的学习地方,看到的帖都有人回,真是令人兴奋。
今天我来不是问关于Ubuntu的东西,因为我有一大堆关于这的书,我是来请教C问题的,哈哈!

题目:
[编写C程序,输入多个两位正整数(以回车键作为结束标志),并统计出其中小于等于40、大于40小于等于70、大于70的数据个数。]

因为C语言只学到循环这里,所以不能用后面的方法去解决,比如数组(因为还没学)!

我的解决办法是:
代码:
#include <stdio.h>
#include <conio.h>

int main(void)
{
  char c;
  int x=0,y=0,z=0,i=0,s;
  printf("please input a number list:\n");
  while((c=getchar())!='\n')
           {
              i=i+1;
              s=i%2;
              
              while(s!=0)
                    {
                       if(c>'1'&&c<='4')
                          x++;
                       if(c>'4'&&c<='7')
                          y++;
                       if(c>'7')
                          z++;
                       break;
                    }
                       
            }
  printf("There are %d numbers less than 40.\nThere are %d numbers more than 40 and less than 70.\nThere are %d numbers less than 70.",x,y,z);
  getch();
  return 0;
}


使用:连续输入几个两位数,不用任何符号隔开,且必须是双数(好像在讲废话)!
例如: 输入 5241639871[回车] 输出 There are 1 numbers less than 40.
There are 3 numbers more than 40 and less than 70.
There are 1 numbers less than 70.

不知道各位高手有没有更好的解决办法!
我看到我的同学有用[getchar()&&scanf(%d,&x)]这样的输入格式解决这个问题(具体代码我没记下来),但它的结果还有一个暂时未能解决的小错误。

衷心等待大家的回答!附件中为C原代码!


附件:
0.rar [380 Bytes]
被下载 17 次


最后由 lintix 编辑于 2007-11-19 11:23,总共编辑了 1 次
页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-11-18 18:53 

注册: 2006-03-01 11:07
帖子: 53
送出感谢: 0 次
接收感谢: 0 次
我觉得你的答案有问题,,如果我没有理解错的话。
52 41 63 98 71
小于40的没有
40-70:52 41 63
>70:98 71


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-11-18 19:03 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
代码:
#include <stdio.h>

int main(void)
{
    char c;
    int x=0,y=0,z=0,t;
    printf("please input a number list:\n");
    while((c=getchar())!='\n')
    {
        t = (c - '0')*10 ;
        c = getchar();
        t += c - '0' ;
        if (t <= 40)
            x++;
        else if (t <= 70)
            y++;
        else
            z++;
    }
    printf("There are %d numbers less than 40.\nThere are %d numbers more than 40 and less than 70.\nThere are %d numbers less than 70.\n",x,y,z);
    getchar();
    return 0;
}


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-11-18 22:49 

注册: 2007-10-17 10:18
帖子: 21
送出感谢: 0 次
接收感谢: 0 次
3楼强人,本人真的技术不到家!
但我还有问题,用两个getchar()是不是代表取了两个数啊?t+=c-'0';作用是什么?我总看不懂-'0'
还是解释一下吧,能力有限!才上了两个多月的课,哎!

嘿嘿,3楼概可唔可以加我QQ,我都系广州返学!
QQ:316690
加我请注明!


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-11-18 23:56 
头像

注册: 2007-07-12 16:30
帖子: 303
地址: 桂林
送出感谢: 0 次
接收感谢: 2
c 是字符ASCII值,如:‘5’的ASCII值是37,‘0’的是32,所以
c - ‘0’ = 5
相当于将c字符转换成整形(准确的应该是字节型byte)。


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-11-19 1:35 
头像

注册: 2006-05-03 0:39
帖子: 8273
地址: المريخ
送出感谢: 0 次
接收感谢: 1
lintix 写道:
3楼强人,本人真的技术不到家!
但我还有问题,用两个getchar()是不是代表取了两个数啊?t+=c-'0';作用是什么?我总看不懂-'0'
还是解释一下吧,能力有限!才上了两个多月的课,哎!

嘿嘿,3楼概可唔可以加我QQ,我都系广州返学!
QQ:316690
加我请注明!
终于见到一个QQ号码比我小的了


_________________
PHP是最好的语言!不服来战!


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-11-19 12:22 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
lintix 写道:
3楼强人,本人真的技术不到家!
但我还有问题,用两个getchar()是不是代表取了两个数啊?t+=c-'0';作用是什么?我总看不懂-'0'
还是解释一下吧,能力有限!才上了两个多月的课,哎!

嘿嘿,3楼概可唔可以加我QQ,我都系广州返学!
QQ:316690
加我请注明!


业余...


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-11-19 12:30 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
stlxv 写道:
lintix 写道:
3楼强人,本人真的技术不到家!
但我还有问题,用两个getchar()是不是代表取了两个数啊?t+=c-'0';作用是什么?我总看不懂-'0'
还是解释一下吧,能力有限!才上了两个多月的课,哎!

嘿嘿,3楼概可唔可以加我QQ,我都系广州返学!
QQ:316690
加我请注明!
终于见到一个QQ号码比我小的了


难道你没见到马化腾的QQ号码? :lol:


_________________
关注我的blog: ε==3


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-11-19 16:43 

注册: 2007-10-17 10:18
帖子: 21
送出感谢: 0 次
接收感谢: 0 次
感谢各位,问题解决! :)


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2007-11-19 16:46 

注册: 2007-10-17 10:18
帖子: 21
送出感谢: 0 次
接收感谢: 0 次
BigSnake.NET
别这样说,业余也可以很牛!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 10 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译