求这道题用C语言循环语句怎么写?
两种方法:
一、字符串方法:用函数itoa把1到n的数字转换成字符串。然后用遍历字符串元素的方法取每个元素和x数字对应的字符比较,并累加结果。
二、整数按位比较:用求余再整除法,取出整数每一位数字和x比较,并累加结果。
下面代码用方法二写的:
#include <stdio.h>
int getCnt(int num,int x);
int main()
{
int i,n,x,cnt=0;
printf("计算1到n的所有整数中,数字x(0<=x<=9),共出现了多少次?\n");
printf("请输入数字n和数字x:");
scanf("%d%d",&n,&x);
for(i=1;i<=n;i++)
printf("%d ",i),cnt+=getCnt(i,x);
printf("\n共出现次数:%d\n",cnt);
return 0;
}
int getCnt(int num,int x)
{
int cnt=0;
while(num/10>0)
{
if(num%10==x) cnt++;
num=num/10;
}
if(num==x) cnt++;
return cnt;
}
我的算法是:
int check(int data,int n)
{
int count = 0;
while(data!=0){
if ((data%10)==n) count++;
data /= 10;}
return count;
}
2020-04-23
int main()
{
int n,x,i,j,count;
scanf("%d %d",&n,&x);
i=1;
while(i<=n)
{
j=i;
while(j>0)
{
if(j%10==x)
{
count++;
}
j/=10;
}
i++;
}
printf("%d",count);
return 0;
}