Code tìm số lượng các chữ số từ 1 đến n không thấy có kết quả

mọi người ơi, em đc giao cho bài tập về c++ như thế này, yêu cầu tìm số lượng các chữ số phải viết từ 1 đến n khi nhập vào số nguyên n, em viết code vậy mà chạy nó chỉ ra hình cái bảng đen, không chạy được, mọi người góp ý cho em với ạ. em cảm ơn trước!

#include <iostream>
#include<bits/stdc++.h>
#include<math.h>

using namespace std;
int n,s,t;

int main()
{
    s=0;
    t=0;
    freopen("MCOWS.INP","r",stdin);
    freopen("MCOWS.OUT","w",stdout);
    while (cin>>n){

     if (n<1){break;}while(n<1);
     for (int i=1;i<=n;i++){
                    t=i%10;
                    s+=1;
                    i=i/10;}
                }
        cout<<s<<endl;
    return 0;
}

Màn hình đen là do bạn code sai ở trong vòng lặp ở chổ i=i/10 khiến nó lặp vô hạn
if (n<1){break;}while(n<1); mình không hiểu dòng này ?
Bạn nên code 1 hàm đếm số chữ số để khi chạy từ 1 -> n thì chỉ cần tỉnh tổng dựa vào hàm đã viết

#include<bits/stdc++.h>
using namespace std;

int f(int n){ //so chu so cua n
	int cnt= 0;
	while(n>0){
		n/=10;
		cnt++;	
	}
	return cnt;
}

int main(){

	//freopen(“MCOWS.INP”,“r”,stdin);
	//freopen(“MCOWS.OUT”,“w”,stdout);

	int n;	cin >> n;
	int s= 0;
	for(int i=1; i<=n; i++)
		s += f(i);
	cout << s;

}
4 Likes

em cảm ơn nhiều ạ, em đã xem lại và sửa chạy được rùi :smile: :heart:

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