用c语言编写程序 输入一个正整数n,求1到n的数中1出现的个数

来源:百度知道 编辑:UC知道 时间:2024/05/24 17:53:49
用函数调用,那如果输入的是一个大于100或1000的数呢?

/*用c语言编写程序 输入一个正整数n,求1到n的数中1出现的个数*/
#include"stdio.h"
int count(int n)
{
int i,j,c=0;
for(i=1;i<=n;i++)
{
j=i;
while(j!=0)
{
if(i%10==1) /*判断位数中是否有1*/
{
c++;

}
j=j/10; /*让数除以十让他原来的高位变为低位,即原来的十位变成个位*/
}
}
return c;
}
main()
{
int c,n;
printf("input n:\n");
scanf("%d",&n);
c=count(n);
printf("%d\n",c);

}

这个题有点难搞

现在这里站个位置,我吃了饭跟你编好

#include <stdio.h>
#include <string.h>
int count_one(unsigned int n)
{
int cnt = 0;
char buf[100];
for (int i = 1; i <= n; i++){
sprintf(buf, "%d", i);
for(int j = 0;j < strlen(buf); j++)if(buf[j] == '1')cnt++;
}
return cnt;
}
int main()
{
printf("%d %d %d\n", count_one(1), count_one(100