找回密碼
 註冊

[C語言]矩陣輸入英文轉大寫

来源: 2769212 2012-3-21 14:28 只看這個作者 |閱讀模式
5 5753
目前問題是:
輸入3*3的矩陣,都是英文字
可是沒辦法印出轉換大寫的英文

我寫的程是如下:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int a[3][3],c,d;
   
    printf("請輸入A陣列的值\n");
    {
    for(c=0;c<=3;c++)
    for(d=0;d<=3;d++)
    scanf("%c",&a[c][d]);
    }
    printf("改寫後\n");
    {
    if(a[d][c]>=65&&a[d][c]<=90)    這兩行這樣寫不知道對不對,讓它變成大寫
    a[d][c]+=a[d][c]+32;
    printf("%c",&a[c][d]);    還有這行,我不知道該怎麼讓他列印出變成大寫的答案
    }
      printf("\n");
        
           
    system("pause");
    return 0;
}
目前印出來答案都是錯的093.gif
不知道有沒有板有對這方面很懂得!
收藏
收藏0
不會有終點...

網友回覆5

跳到指定樓層
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
        char a[3][3],c,d;

        printf("請輸入A陣列的值\n");

        for(c=0; c<3; c++)
            for(d=0; d<3; d++)
            {
                    fflush(stdin);
                    scanf(" %c",&a[c][d]);
            }

        printf("改寫後\n");

        for(c=0; c<3; c++)
        {
                for(d=0; d<3;d++)
                {
                        if(a[c][d]>=97&&a[c][d]<=122)
                            a[c][d]-=32;

                        printf("%c, ",a[c][d]);
                }
                printf("\n");
        }

        return 0;
}
參與人數 1經驗值 +5 收起 理由
2769212 + 5 多謝教導。有問題想問,在4樓

瀏覽全部評分總評分 :  經驗值 +5

Brembo 13mm 側推總泵、紅字輻射對四
MSP MD-F2 & DDS四迴路
鯊魚工廠 鍛造前後框、後搖臂
#include <cstdio>
#include <cstdlib>       
#define n 3

int main()
{
         
        char a[n+1][n+1];
        int i,c,d;
        printf("請輸入A陣列的值\n");
   
    for (c = 0 ; c < n ; ++c)
    {
        for (d = 0 ; d < n; ++d)
        {
            scanf("%c",&a[c][d]);
        }
    }
   
           for (c = 0; c < n; ++c)
       {
             for (d = 0 ; d < n; ++d)
            {
                  a[c][d] = a[c][d] ^ ' ';
            }   
       }
      for (c = 0 ; c < n; ++c)
      {
           for (d = 0 ; d < n; ++d)
           {
                printf("%c\n",a[c][d]);
           }
      }

      system("pause");     
}

另一種寫法   參考看看

[ 本文章最後由 terry0991 於 2012-3-21 15:48 編輯 ]
4#
2769212 2012-3-21 16:21 只看這個作者
原文章由 evil720804 於 2012-3-21 15:35 發表 [C語言]矩陣輸入英文轉大寫5047
#include
#include
int main(void)
{
        char a[3][3],c,d;

        printf("請輸入A陣列的值\n");

        for(c=0; c


謝謝你,不過我想問一下 fflush(stdin)這個是在做什麼呢?
我按照原本程式執行,陣列會一直輸入,停不下來
後來我把這個刪掉,就正常了呢!
不知道是什麼問題[C語言]矩陣輸入英文轉大寫6157
原文章由 evil720804 於 2012-3-21 15:35 發表 [C語言]矩陣輸入英文轉大寫4953
#include
#include
int main(void)
{
        char a[3][3],c,d;

        printf("請輸入A陣列的值\n");

        for(c=0; c

不太對呢XD,我也看不太懂,可以解釋一下嗎?
甘溫!

[ 本文章最後由 2769212 於 2012-3-21 16:25 編輯 ]
不會有終點...
當你在使用scanf()函式讀取字元資料,特別是在同一個程式區塊中,用兩個或兩個以上的scanf()函式連續讀取字元資料時,就要特別小心了,因為在瑩冪上產生空白效果的空格鍵,Tab鍵,及Enter鍵的字元都是合法可被讀取的字元,也都會存放在做為緩衝區的記憶體中,特別是Enter鍵的按下,代表輸入的結束,所以在執行每一個scanf()函式時,電腦使用者在結束輸入時都會按下Enter鍵.而Enter鍵的按下會產生' \r '及' \n '這兩個控制字元, ' \r '被稱為歸位字元,它的ASCII碼是13, ' \n '被稱為換行字元,它的ASCII碼是10.




    我們用下列的程式片段(2)來說明會碰到的問題:



    (2)   char  ch1, ch2;        

         printf("請輸入任一個英文字母.\n");

         scanf("%c",&ch1);

         printf("請輸入任一個英文字母.\n");

         scanf("%c",&ch2);

         printf("第一個英文字母為%c \n",ch1);

         printf("第二個英文字母為%c \n",ch2);




    假設電腦使用者在第一個scanf()函式執行時,輸入了a,再按下Enter鍵,結果a的ASCII碼為97,存入了緩衝區中,而當電腦偵測到' \r '訊息,知道輸入結束,便會將緩衝區中的第一筆資料ASCII碼97存放到字元變數ch1所在的位址,而將代表\n的ASCII碼10仍留在緩衝區中,當執行到第二個scanf()函式時,因為緩衝區中仍有剩餘的資料,此資料就是代表\n的ASCII碼10,因此電腦不等待電腦使用者輸入第二個英文字,便直接從緩衝區中讀取代表\n的ASCII碼10,存放到字元變數ch2所在的位址,因為ASCII碼為10以字元形式在瑩冪上顯示時是空白,所以,在程式片段(2)的最後兩個printf()函式執行時的輸出會如下面所示:



          第一個英文字母為 a

          第二個英文字母為




    一個簡單而實用的解決之道,是將fflush()函式插入兩個scanf()函式之間,利用fflush()函式的執行來清除緩衝區中剩餘的資料,如下列的程式片段(3)所示,如此,程式便可按照程式設計者的需要來執行.

    (3)    scanf("%c",&ch1);

          printf("請輸入任一個英文字母.\n");

          fflush(stdin);

          scanf("%c",&ch2);

by網路上的資料

[ 本文章最後由 evil720804 於 2012-3-21 16:53 編輯 ]
Brembo 13mm 側推總泵、紅字輻射對四
MSP MD-F2 & DDS四迴路
鯊魚工廠 鍛造前後框、後搖臂
今天工數剛考完矩陣[C語言]矩陣輸入英文轉大寫9096
傾角 VS 路線的重要性