iT邦幫忙

0

C語言:小寫字串轉成大寫字串

說明

連續輸入N個字串(-1結束不含-1),將字串中小寫英文字母轉成大寫後依輸入順序印出

Input Format

字串1(可含空白)
字串...(可含空白)
字串N(可含空白)
-1

Output Format

轉大寫後的字串1(換行)
轉大寫後的字串...(換行)
轉大寫後的字串N(換行)

用ASCII碼來轉換。
目前長這樣 但不能換行(按enter)連續多行
#include <stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
char str1[100];

gets(str1);

int i;
for(i=0;i,100;i++){
if(str1[i]>='a'&str1[i]<='z')
str1[i]-=32;
if(str1[i]=='\0')
break;
}
puts(str1);
return 0;
}
char str1[100], c;
int index = 0;
printf("Enter a value (press \"-1\" to end input) : ");
while ((c = getchar()) != 45) {
str1[index++] = c;
}
// ...
0
微甜的酸
iT邦新手 3 級 ‧ 2021-04-24 13:42:48

你需要更多的練習,不是答案。
僅供參考:

#include <stdio.h>
#include <queue>

int main() {
    std::queue<int> letters;
    unsigned char alp;
    while(true) {
        alp = getchar();
        getchar();
        if(alp == '-')
            break;
        letters.push(alp);
    }
    while(!letters.empty()) {
        printf("%c\n", letters.front() - 32);
        letters.pop();
    }
}
0
海綿寶寶
iT邦大神 1 級 ‧ 2021-04-24 14:34:52
#include"stdio.h"
#include"ctype.h"
#include"string.h"

int main(){
	char Name[4][20];
	int i,j,Len,Codeinteger;
	
	for(i=0;i<4;i++){
		gets(Name[i]);
		Codeinteger = atoi(Name[i]);
		if(Codeinteger == -1){
			break;
		}
		Len = strlen(Name[i]);
		for(j=0;j<Len;j++){
			if(islower(Name[i][j])){
				Name[i][j] = toupper(Name[i][j]);
			}
		}
		puts(Name[i]);
	}
	return 0;
} 

資料來源

0
君莫笑
iT邦新手 5 級 ‧ 2021-04-26 10:40:37

有幾個ASCII要記
對應十進位ASCII Code
0 -> 48
A -> 65
a -> 97

藉此就能反推大小寫轉換差32了

我要發表回答

立即登入回答