Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C แปลงตัวอักษรแรกของประโยคเป็นพิมพ์ใหญ่ (Capitalize First Letter)

ได้รับสตริงผสมพิมพ์เล็ก-ใหญ่ แปลงตัวอักษรแรกของแต่ละคำเป็นพิมพ์ใหญ่ ส่วนที่เหลือเป็นพิมพ์เล็ก

เช่น "hElLo world" → "Hello World"

ตัวอย่าง

Input: "heLlO wORLD"  Output: Hello World
Input: "sUNIDHi bAnSAL"  Output: Sunidhi Bansal

แนวทาง (ใช้ ASCII)

  • ASCII: 'A'-'Z' = 65-90, 'a'-'z' = 97-122
  • วนลูปทุกตัวอักษร
  • ถ้าเป็นตัวแรกของสตริง หรือ ตัวแรกหลัง space → ถ้าเป็นพิมพ์เล็ก (a-z) แปลงเป็นพิมพ์ใหญ่: char + ('A' - 'a')
  • มิฉะนั้น ถ้าเป็นพิมพ์ใหญ่ (A-Z) แปลงเป็นพิมพ์เล็ก: char + ('a' - 'A')

อัลกอริทึม

Start
ฟังก์ชัน firstupper(str[], n):
    for i = 0 ถึง n-1:
        if (i==0 && str[i]!=' ') || (str[i]!=' ' && str[i-1]==' '):
            if str[i] >= 'a' && str[i] <= 'z':
                str[i] = str[i] + ('A' - 'a')
        else if str[i] >= 'A' && str[i] <= 'Z':
            str[i] = str[i] + ('a' - 'A')

main():
    str[] = "sUNIDHi bAnSAL"
    n = sizeof(str)/sizeof(str[0])
    firstupper(str, n)
    printf("%s", str)
Stop

โค้ดตัวอย่าง

#include <stdio.h>

int firstupper(char str[], int n) {
    for (int i = 0; i < n; i++) {
        if (i == 0 && str[i] != ' ' || str[i] != ' ' && str[i-1] == ' ') {
            if (str[i] >= 'a' && str[i] <= 'z')
                str[i] = (char)(( 'A' - 'a') + str[i]);
        } else if (str[i] >= 'A' && str[i] <= 'Z') {
            str[i] = (char)(str[i] + ('a' - 'A'));
        }
    }
    return 0;
}

int main() {
    char str[] = "sUNIDHi bAnSAL";
    int n = sizeof(str) / sizeof(str[0]);
    firstupper(str, n);
    printf("%s\n", str);
    return 0;
}

ผลลัพธ์

Sunidhi Bansal