广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 5354 个阅读者
 
<< 上页  1   2   3  下页 >>(共 3 页)
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
a86980
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x64 鲜花 x1308
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

你要的是数字
所以
复制程式
if(64<string[i]<91||96<string[i]<123)
条件请重设


献花 x0 回到顶端 [10 楼] From:台湾 | Posted:2007-06-02 22:21 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

为什么还没教的就不能用? 你猜的还是老师亲口说的?

看你写的程式, 只用到 stdio.h, 那我假设你们老师只教到 BIOS ( Basic Input and Output System ) 这个范围好了, 我们不用 isdigit(), 以 scanf 来实作:

复制程式
#include <stdio.h>

int main(void)
{
    int a, b, c, d;
    char e[168];
    c = 0;

    for (a = 1; a <= 10; a++)
    {
        b = 0;
        printf("请输入第%d个字串:\n", a);
        scanf("%s", &e);

        for (d = 0; d < strlen(e); d++)
        {
            if (e[d] > 47 && e[d] < 58)
            {b += (e[d] - 48);}
        }

        printf("这个字串的数字总和为: %d\n\n", b);
        c += b;
    }

    printf("这十个字串的数字总和为: %d", c);
    return 0;
}


变数 a 是用来计数第一个回圈的, 因为你们老师要十个, 所以就命令它执行十次.
变数 b 是用来计数单一字串中的数字总和.
变数 c 是用来计数十个字串中的数字总和.
变数 d 是用来计数第二个回圈的. 这个变数的值是每个字串的长度. 例如输入一个长度为五的字串, 那这个变数的值就是5!
变数 e 是用来储存字串用的一个字元阵列. 要特别注意的是: 我假设你们老师每次输入的字串长度皆不超过一佰六十八个字元! 若你认为你们老师可能会输入更长的字串, 你可以修改为大一个的阵列! 我之所以用一六八纯粹只是... 这个数字很吉利 ~~~   表情


[ 此文章被ety在2007-06-02 23:44重新编辑 ]


献花 x0 回到顶端 [11 楼] From:台湾和信超媒体宽带网 | Posted:2007-06-02 23:36 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

忘了说明其中的两行程式码:

    if (e[d] > 47 && e[d] < 58)
    {b += (e[d] - 48);}

第一行是以 ASCII 来判断字元是否是数字, 因为数字的 ASCII 是 48 ~ 57!
而第二行则是计算数字的总和, 我们不应该直接用 ASCII 来相加. 例如 0 的 ASCII 是 48, 而 1 的 ASCII 则是 49, ASCII 和真实数字相差为48, 所以要先减去 48 后才是真实数字, 然后才相加!


献花 x0 回到顶端 [12 楼] From:台湾和信超媒体宽带网 | Posted:2007-06-03 00:44 |
karen7710
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x9
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我把这一行 printf("这个字串的数字总和为: %d\n\n", b);删掉,
最后在印出总和,应该可以吧?

复制程式
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  int a, b, c, d;
  char e[168];
  c = 0;

  for (a = 1; a <= 10; a++)
  {
      b = 0;
      printf("请输入第%d个字串:\n", a);
      scanf("%s", &e);

      for (d = 0; d < strlen(e); d++)
      {
        if (e[d] > 47 && e[d] < 58)
        b += (e[d] - 48);
      }

      c += b;
  }

  printf("这十个字串的数字总和为: %d", c);
  system("pause"); 
  return 0;
}


献花 x0 回到顶端 [13 楼] From:欧洲 | Posted:2007-06-03 08:48 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

当然可以呀, 不过想想看, 要一次输入十个字串, 中间都没有什么讯息显示的话, 挺无趣的!
不过, 我也不知道你们老师的问题是如何说明的, 毕竟你是他的学生, 你应该猜得出来是不是十个字串算出数字总和还是一个十个字的字串!

附带一提, 我之前所写的程式码不够严谨, 你在 compile 的时候可能会出现 warning ...

如果你确定要用这个程式码交作业的话, 请写成这样:

复制程式
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
  int a, b, c, d;
  char e[256];
  c = 0;

  for (a = 1; a <= 10; a++)
  {
      b = 0;
      printf("请输入第%d个字串:\n", a);
      scanf("%s", e);

      for (d = 0; d < strlen(e); d++)
      {
        if (e[d] > 47 && e[d] < 58)
        {b += (e[d] - 48);}
      }

      printf("这个字串的数字总和为: %d\n\n", b);
      c += b;
  }

  printf("这十个字串的数字总和为: %d\n", c);
  system("pause");
  return 0;
}


注意, e 的前面不要加 &, 另外, 使用 strlen 时要 include <string.h>


献花 x1 回到顶端 [14 楼] From:台湾和信超媒体宽带网 | Posted:2007-06-03 14:38 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

如果你担心 string.h 并不包含于 BIOS (也就是 stdio 或 stdlib 的范围内), 那么你也可以不用 strlen, 自己写出一个副程式来替代:

复制程式
#include <stdio.h>
#include <stdlib.h>

int length(char string[])
{
    int index;
    for (index = 0; string[index] != '\0' index++)
        continue;
    return index;
}

int main(void)
{
  int a, b, c, d;
  char e[256];
  c = 0;

  for (a = 1; a <= 10; a++)
  {
      b = 0;
      printf("请输入第%d个字串:\n", a);
      scanf("%s", e);

      for (d = 0; d < length(e); d++)
      {
        if (e[d] > 47 && e[d] < 58)
        {b += (e[d] - 48);}
      }

      printf("这个字串的数字总和为: %d\n\n", b);
      c += b;
  }

  printf("这十个字串的数字总和为: %d\n", c);
  system("pause");
  return 0;
}


一次给了你两个版本, 希望对你的课业有所帮助!
有问题的话寄封信给我, 我不常来这儿的, 若你又有问题再发问, 我可能会没注意到! ^^


献花 x0 回到顶端 [15 楼] From:台湾和信超媒体宽带网 | Posted:2007-06-03 14:52 |
a86980
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x64 鲜花 x1308
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用ety于2007-06-02 23:36发表的 :
为什么还没教的就不能用?
.......
所谓由浅入深

老师出的题目
多半是希望同学会运用老师上课时教的指令

如一个苹果5元,2个要多少钱
请问你要用 5X2 还是 5+5 呢

个人看法 表情


献花 x0 回到顶端 [16 楼] From:台湾 | Posted:2007-06-03 15:20 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

想必 a86980 师兄也是学有心得之士, 在下领教了! ^^

有空或许你可以去课业研讨区, 那里有很多人也是再问程式问题的!
和这里的差别是, 这里是讨论程式, 那里是直接要答案的!
有空可以去解看看, 大部份都蛮简单的, 看了很爽 ~ XD


献花 x0 回到顶端 [17 楼] From:台湾和信超媒体宽带网 | Posted:2007-06-03 15:27 |
a86980
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x64 鲜花 x1308
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用ety于2007-06-03 15:27发表的 :
想必 a86980 师兄也是学有心得之士, 在下领教了! ^^

有空或许你可以去课业研讨区, 那里有很多人也是再问程式问题的!
和这里的差别是, 这里是讨论程式, 那里是直接要答案的!
有空可以去解看看, 大部份都蛮简单的, 看了很爽 ~ XD
您才是高手 表情

我只是算学过而已 表情


献花 x0 回到顶端 [18 楼] From:台湾 | Posted:2007-06-03 15:31 |
karen7710
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x9
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

输入的数字只能是0~9?
如果输入10以上的数字,好像加起来会出错!


献花 x0 回到顶端 [19 楼] From:欧洲 | Posted:2007-06-04 17:31 |

<< 上页  1   2   3  下页 >>(共 3 页)
首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.025446 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言