01/10/2018, 14:20

Mọi ng có thể chỉ cho e thuật toán này chạy ntn k sao lại sao sánh i++ trong while và phải i-- đi

#include <stdio.h>
#include <conio.h>

int main()

{
	float a[4],sum=0;
	int i=0;
	do
	  {
	  	 printf(" nhap vao phan tu thu %d:",i+1);
	  	 scanf("%f",&a[i]);
	  	 
	  } while (a[i++] > 0);
    i--;
    for (int j=0 ; j<i ; j++)
	    sum=sum+a[j];
	printf(" tong: %5.2f
",sum);
HK boy viết 16:30 ngày 01/10/2018

Nhập vào a[0] > 0 -> i++, lúc này i=1.
Nhập vào a[1] = 0 -> i++, lúc này i=2.
Nhưng ta không thể quan tâm đến a[1] được -> i–

Khánh Ngọc viết 16:27 ngày 01/10/2018

tks kiu <3 <3 <3 <3 <3

rogp10 viết 16:34 ngày 01/10/2018

Vế đầu thì nó ntn: nếu ++i viết riêng ngay sau câu scanf thì phải trừ lại 1 ở đk while, không hay; ngược lại nếu ++i ngay dòng 4 của main() thì câu sau lần lượt là i, a[i-1] và a[i-1]. Khi đã dùng size_t n thì cách sau (++ từ đầu) lại hay hơn vì không có -1 (số không âm mà :D) để so sánh, còn dùng int n thì nên chọn như code mẫu.

Bài liên quan
0