廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 5357 個閱讀者
 
<< 上頁  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.020471 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言