30/09/2018, 19:02
Thắc mắc về 1 đoạn trong code tính tổng các chữ số trong chuỗi
> #include <stdio.h>
> #include <conio.h>
> #include<string.h>
> int main()
> {
> char str[50];
> int i=0,j,tong=0,n;
> printf("Nhap 1 xau: ");
> gets(str);
> while(i<=strlen(str)-1)
> if(str[i]<='9' && str[i]>='0')
> {
> j=i;
> n=0;
> while(j<=strlen(str)-1 && (str[j]<='9' && str[j]>='0'))
> {
> n=10*n+(int)str[j]-48;
> j++;
> }
> printf("+ %d ",n);
> tong+=n;
> i=j;
> }
> else i++;
> printf("= %d",tong);
> getch();
> }
Bài liên quan
Ai giải thích giúp em đọan vòng while
> while(j<=strlen(str)-1 && (str[j]<=‘9’ && str[j]>=‘0’))
> {
> n=10n+(int)str[j]-48;
> j++;
> }
Tại sao cái if trên không tính đk tổng ngay mà phải thêm vòng while nữa và cái đọan n=10n+(int)str(j)-48 là sao ạ?
Cái trên ý tác giả muốn là
cho chạy code trong vòng lặp khi j<=strlen(str)-1;
và nếu kí tự thứ j là 1 chữ số.
Và cái (int)str[j] - 48; là phép toán đổi ký tự số thành số
Do đau thì trong bảng ASCII số 0 có mã ASCII = 48.
-> ‘0’ = 48.
‘0’ - 48 = 0
‘1’ - 48 = 1
v.v
Nói chung bạn tìm hiểu lại ký tự trong C là hiểu.
ak mk hiểu rồi . thank bạn yeeee