3216:【例36.2】 计数问题
[例 36.2] 计数问题
C语言:
#include <stdio.h>
#include <string.h>
int main()
{
char s[10]; //用来存储下一个数
int n = 0;
int x = 0;
int count = 0; //用来计数
scanf("%d %d", &n, &x);
for (int i = 1; i <= n; i++)
{ //i就是小于等于n的每一个整数
int temp = i; // 由于不能改变i的值,这里用临时变量代替
int k = 0; //作为字符数组的下标
//接下来将数字的每位转换为字符后放入字符串数组中
while (temp)
{
s[k++] = temp % 10 + '0';
temp /= 10;
s[k] = '\0';
}
//接下来将字符数组中的每一位与待比对数字比较
for (int j = 0; j < strlen(s); j++) {
if (s[j] - '0' == x) count++; //需要转换为数字
}
}
printf("%d\n", count); //打印出来结果并换行
return 0;
}
C++源码:
#include <bits/stdc++.h>
using namespace std;
int n,x,ans=0;
inline int f(int a1){
int a=0;
while(a1>0){
a++;
a1/=10;
}
return a;
}
inline void f1(int a,int b){
for(int i=1;i<=a;i++){
if(b%10==x)ans++;
b/=10;
}
}
int main()
{
cin>>n>>x;
for(int i=1;i<=n;i++){
f1(f(i),i);
}
cout<<ans;
return 0;
}
#include<iostream>
using namespace std;
int main(){
int n,x,ans=0;
cin>>n>>x;
for(int i=1;i<=n;i++){
int m=i;
while(m){
if(m%10==x)ans++;
m/=10;
}
}
cout<<ans;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long ans,num,sum,abc=0;
cin>>ans>>num;
for(int i=1;i<=ans;i++)
{
sum=i;
while( sum )
{
if( sum%10==num )
{
abc++;
}
sum/=10;
}
}
cout<<abc<<endl;
return 0;
}
信息学奥赛一本通-----编程启蒙【例2.1】Hello World
C++版-----信息学奥赛一本通-----编程启蒙【例2.2】你好世界
C++版-----信息学奥赛一本通-----编程启蒙练2.1 春节快乐
C++版-----信息学奥赛一本通-----编程启蒙练2.1 春节快乐_c++输入"happy spring festival!-CSDN博客
C++版-----信息学奥赛一本通-----编程启蒙---练2.2 单句春晓
C++版-----信息学奥赛一本通-----编程启蒙【例3.1】 输出表达式的值
C++版-----信息学奥赛一本通-----编程启蒙【例3.1】 输出表达式的值_信息学奥赛ic++1234-CSDN博客
C++版-----信息学奥赛一本通-----编程启蒙---【例3.2】 打印长方形