簡體   English   中英

使用C進行小寫到大寫轉換

[英]Lower to Upper Case Conversion with C

問題陳述

我在解決編程競賽問題時遇到困難,其內容如下:

您會獲得英文字母的T名稱。 每個名稱將包含從A到Z的一些大寫字母,從a到z的一些小寫字母以及一些空格。 您必須將名稱從小寫轉換為大寫。 最初為大寫的字母將保持不變,並且空格也將保留在其位置。


樣本輸入輸出

如果我輸入...

5
Hasnain Heickal    Jami
Mir Wasi Ahmed
Tarif Ezaz
     Mahmud Ridwan
Md    Mahbubul Hasan

電腦應該輸出這個...

Case 1: HASNAIN HEICKAL    JAMI
Case 2: MIR WASI AHMED
Case 3: TARIF EZAZ
Case 4:      MAHMUD RIDWAN
Case 5: MD    MAHBUBUL HASAN
  • 請注意,分號和名稱的首字母之間僅需要一個空格。

我的編碼

這就是我用C編寫的代碼:

#include <stdio.h>
#include <conio.h>
#include <ctype.h>

int main(void)
{
    int T, i;
    char string [100];
    scanf("%d", &T);

    for (i=0; i<T; i++) 
    {
        gets(string);
        printf("Case %d: ", i);

        while (string[i])
        {
            putchar (toupper(string[i]));
            i++;
        }          

        printf("\n");
     }  

    getch();
    return 0;
}

現在,此代碼無法產生所需的輸出。 我在哪里做錯了? 我的語法有什么問題嗎? 有人可以指導我嗎? 請記住,我是一名中學生,只是C語言的初學者。

您需要一個一個地循環遍歷字符串的每個字母。

在下面的代碼中,我使用變量K進行了此操作,變量K從0到字符串的長度。

變量I跟蹤字符串的數量。

int main(void)
{
  int T, i, k;
  char string [100];

  scanf("%d", &T);

  for ( i = 0; i < T; ++i)
  {
     gets (string);

     for(k=0; k<strlen(string); ++k)
     {
         putchar (toupper(string[k]));
     }
  }  

  getch();
  return 0;
}

回答您的問題: IDEOne鏈接

#include <stdio.h>
#include <ctype.h>
#include <string.h>

int main(void)
{
  int T, i,k;
  char string [100];

  scanf("%d ", &T);

  for ( i = 0; i < T; ++i)
  {
     gets (string);
     printf("[%d] : %s\n", i, string);

     for(k=0; k<strlen(string); ++k)
     {
         putchar (toupper(string[k]));
     }
     putchar('\n');
  }  

  return 0;
}

請仔細閱讀代碼並根據您的要求實施測試用例場景。

#include <stdio.h>
#include<string.h>
int main(){
  char string[100];
  int i;
  scanf("%s",string);
  for(i=0;i<strlen(string);i++){
       string[i]=string[i]-32;
  }
  printf("%s",string);
  return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM