Viết một chương trình in ra chữ cái đầu tiên trong họ của bạn?

em mới học c nên còn gà lắm. mn có thể giúp em bài này được không ạ.
viết một chương trình in ra chữ cái đầu tiên trong họ của bạn, kích thước 9x9 bằng ký tự *. ví dụ như chữ V. vì em họ vũ.@@

2 Likes

Eo, đọc cái đề không hiểu lắm. Cái câu “kích thước 9x9 bằng ký tự *” có nghĩa là gì thế?

1 Like

cai nay minh dung 9 mang , moi mang gom 9 phan tu dc ko nhi :blush:

Bạn cần có 1 bảng mã bitmap cho từng kí tự

ví dụ chữ A

  **    
 ****   
**  **  
**  **  
******  
**  **  
**  **  

ta chuyển về 1 dòng là 1 số biểu diễn trạng thái bit của dòng đó

char font[][8]={
    {0b001100,
     0b011110,
     0b110011,
     0b110011,
     0b111111,
     0b110011,
     0b110011}
};

bây giờ để hiện lên bảng ta viết hàm print_font như sau:

void print_font(char *bitmap){
    int i,j;
    for(j=0;j<8;++j){
        for(i=7;i>=0;--i){
            putchar((bitmap[j]&(1<<i))?'*':' ' ); /* lay bit thứ i */
        }
        printf("\n");
    }
}

###=> chương trình đầy đủ: mình in bảng 8x8. 9x9 cũng tương tự thôi

#include <stdio.h>

/*
  **    
 ****   
**  **  
**  **  
******  
**  **  
**  **  

*/
char font[][8]={
    {0b001100,
     0b011110,
     0b110011,
     0b110011,
     0b111111,
     0b110011,
     0b110011}
};

void print_font(char *bitmap){
    int i,j;
    for(j=0;j<8;++j){
        for(i=7;i>=0;--i){
            putchar((bitmap[j]&(1<<i))?'*':' ' );/* lay bit thứ i */
        }
        printf("\n");
    }
}
int main(void) {
    print_font(font[0]);
    return 0;
}
2 Likes

Wow, ý tưởng rất hay @Gio ơi :+1:

1 Like

vay lam sao minh nhan biet dc chi nao la chu cai dau tien cua day ky tu ten cua minh a ? , e chua ro lam ve cai nay

1 Like

Cái này chắc dễ làm mà.

+giả sử chuỗi tên: Ten
+lay ki tự đầu tiên:
  i=0;
  while (!isalpha(Ten[i])) ++i;
+ in ten:
   - ta co bang font là biểu diễn tương ứng trạng thái của từng kí tự:
        VD: A->0,B->1...

chuong trinh day du

#include <stdio.h>

/*
  **    
 ****   
**  **  
**  **  
******  
**  **  
**  ** 

******  
 **  ** 
 **  ** 
 *****  
 **  ** 
 **  ** 
****** 

*/
char font[][8]={
    {
    0b001100,
    0b011110,
    0b110011,
    0b110011,
    0b111111,
    0b110011,
    0b110011
    },
    {
    0b111110,
    0b011011,
    0b011011,
    0b011110,
    0b011011,
    0b011011,
    0b111110
    }
/** bo sung cac ki tu vao day **/
};

void print_font(char *bitmap){
    int i,j;
    for(j=0;j<8;++j){
        for(i=7;i>=0;--i){
            putchar((bitmap[j]&(1<<i))?'*':' ' );
        }
        printf("\n");
    }
}
void first_char(char* ten){
    int i=0;
    while(!isalpha(ten[i]))i++;
    print_font(font[ten[i]-'A']);
}
int main(void) {
    char ten[100];
    int n=100;
    fgets(ten,n,stdin);
    first_char(ten);
    return 0;
}

2 Likes

mới đầu đọc tựa đề tưởng bài này đơn giản, vào xem ms thấy bài này thâm thúy thật,. :kissing_smiling_eyes:
À mà cho e hỏi cái hàm fgets(ten, n, stdin) là hàm gì thế ??

Ở đây có giải thích qua nè @Programmer_Riot

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?