30/09/2018, 16:03

Tính tổng các số

Nếu có 1 mảng kí tự toàn số ,làm sao để tính tổng các số trong mảng.Cụ thể:c=“1234”,lam sao de tinh duoc tong S=1+2+3+4.Mình dùng vòng lặp while để lấy từng kí tự ra rồi cộng lại với nhau nhưng không đúng… Nhờ mọi người giúp mình với.

Nguyễn Minh Dũng viết 18:11 ngày 30/09/2018

Bạn thử gửi code lên xem thử sao chạy không đúng?

BaoLe viết 18:05 ngày 30/09/2018
void main()
{
char c[]="1234";
int i=0,S=0;
for(int k=0;k<4;k++)
S=S+c[k];
printf("Tong:S=%d",S);
getch();
}
Nguyễn Minh Dũng viết 18:09 ngày 30/09/2018

Bài này dễ làm nhưng giải thích thì hơi khó một chút. Trước hết Đạt nói lỗi sai ở chỗ c[k] không phải là số, nó là chuỗi. Mà muốn chuyển chuỗi thành số thì phải dùng làm atoi

Vấn đề là hàm atoi chỉ nhận vào chuỗi, cho nên phải cắt cái c[4]="1234"; thành 4 chuỗi, mỗi chuỗi có một ký tự là số và một ký tự kết thúc chuỗi là '\0'.

Sau đó mình sẽ chuyển những chuỗi nhỏ đó thành số rồi cộng lại. Bài ở dưới thực hiện các bước Đạt mô tả ở trên.

#include <stdio.h>

int main()
{
    char chuoi_so[5]="1234";
    int Sum=0;
    for(int i=0; i<4; i++) {
        char mot_so[2] = {0}; // Chuỗi một số gồm 2 phần tử, đều là \0 sẵn
        mot_so[0] = chuoi_so[i]; // phần tử đầu - ký tự là số, phần tử 2 mặc định là \0
        Sum += atoi(mot_so); // chuyển đổi chuỗi mot_so thành số và cộng dồn vào sum
    }
    printf("Tong: Sum=%d", Sum);
    getchar();
    return 0;
}
BaoLe viết 18:18 ngày 30/09/2018

Cam on anh ve doan code.

BaoLe viết 18:08 ngày 30/09/2018

chuoi_so[5] moi dung chu anh neu chuoi_so[4] sao chu duoc chuoi’1234"

Nguyễn Minh Dũng viết 18:19 ngày 30/09/2018

À phải rồi, cái này không cẩn thận bị sai, cảm ơn @14520054 nhé, rất chuẩn

Tran Huan viết 18:08 ngày 30/09/2018

Cách anh Đạt làm hơi phức tạp rồi, nếu đổi 1 kí tự số ra số thì chỉ cần trừ cho 48 là xong.
Mã ASCII của các KÍ TỰ SỐ từ 0 đến 9
Binary Dec Hex Char
011 0000 48 30 0
011 0001 49 31 1
011 0010 50 32 2
011 0011 51 33 3
011 0100 52 34 4
011 0101 53 35 5
011 0110 54 36 6
011 0111 55 37 7
011 1000 56 38 8
011 1001 57 39 9

Nguyễn Minh Dũng viết 18:04 ngày 30/09/2018

À đúng là lẩm cẩm thiệt, nếu dùng cách của Huân thì nhanh hơn, vì bài toán này thật ra chỉ là để người học nắm các khái niệm cơ bản.

Chuẩn

Phương Lê viết 18:18 ngày 30/09/2018
 #include <stdio.h>
int main()
{
   char str[5];
   int i, s;
   printf ("Nhap vao 4 chu so : ");
   gets (str);
   i = s = 0;
   while (str[i])
   {
      s = s - '0' + str[i];
      str[i ++];
   }
   printf ("%d", s); // In gia tri
}

Bảng ASCII số 0 có thứ tự: 48, số 1: 49, số 2: 50 …
Tất cả thứ tự trên trừ cho 48, số 0 có thứ tự mới: 0 hay giá trị 0, số 1 giá trị 1, số 2 giá trị 2 …

Bài liên quan
0