c - 我想找到一个给定模式的整数
问题描述
我想制作一个程序来计算给定范围内的数字,其中有给定的模式,只使用“for”函数、“if~else if”函数、“while”函数和函数调用。像这样(10、300、11)从用户那里获取起始编号、结束编号和模式编号。并且程序将计算有多少整数像 11,110,111,112,113,114,115,116,117,118,119,211 中有 11 个模式。
每个数字的范围是 (1<=pattern, start, end number<=9999)
我试图用一位数、两位数、三位数和四位数的模式分类来解决这个问题。(1<=模式号<=9、10<=模式号<=99这样的。)但我不'不知道如何将每个模式数字与范围数字匹配。以下是我的代码,请帮助我... #include <stdio.h> int main() {
int nums, numf, nump;
int i=0;
int a=0, b=0, c=0, d=0;
int count=0;
printf("Start: ");
scanf("%d", &nums);
printf("End: ");
scanf("%d", &numf);
printf("Pattern: ");
scanf("%d", &nump);
if(1<=nump<10){
for(i=nums; i<=numf; i++){
a=i/1000;
b=i/100%10;
c=i/10%10;
d=i%10;
if(nump==d || nump==c || nump==b || nump==a ){
count++;
}
}
printf("Result: %d", count);
}
else if(10<=nump<99){
for(i=nums; i<=numf; i++){
if(1<=i<10){
continue;
}
else if(10<=i<99){
if(i==nump){
count++;
}
else{
continue;
}
}
else if (100<=i<999){
a=i/10;
b=i%100;
if(nump==a || nump==b){
count++;
}
}
else{
a=i/100;
b=i/10%100;
c=i%100;
if(nump==c || nump==b || nump==a ){
count++;
}
}
}
printf("Result: %d", count);
}
else if(100<=nump<999){
for(i=nums; i<=numf; i++){
if(i/10==0){
continue;
}
else if(10<=i<99){
continue;
}
else if (100<=i<999){
if(i==nump){
count++;
}
}
else{
a=i/10;
b=i%1000;
if( nump==b || nump==a ) {
count++;
}
}
}
printf("Result: %d", count);
}
else{
for(i=nums; i<=numf; i++){
if(nump==i){
count++;
}
}
printf("Result: %d", count);
}
return 0;
}
解决方案
就像是 :
start = 10
end = 300
pattern = 11
# find number of digits for pattern
tenFactor = 10
while pattern > tenFactor:
tenFactor *= 10
found = []
# no number before pattern csn match pattern
num = max(start, pattern)
while num <= end:
subnum = num
# fin if last n digits of number == pattern
# do this from num and by dividing num by 10 each tine
while subnum >= pattern:
if subnum % tenFactor == pattern:
#print(num)
found.append(num)
subnum /= 10
num += 1
print( found)
输出 :
[11, 110, 111, 111, 112, 113, 114, 115, 116, 117, 118, 119, 211]
推荐阅读
- eclipse - Eclipse 安装失败 - Mac OS
- tensorflow - 在 TensorFlow 中实现自定义(排名)损失函数
- sql - 使用 SQL 结果作为另一个查询的过滤器
- azure - 带有 Web 应用和 SQL 数据库的 ARM 模板中的循环引用资源
- ruby-on-rails - APNS 沙箱/开发服务器在生产服务器上没有响应
- arrays - 在 Unity 2D 中创建对撞机或触发器的“链式反应”
- bash - 詹金斯中用于签署应用程序的 Bash 脚本行为错误
- vue.js - vue/nuxt-如何确保先获取模板中的值并传递给子元素?
- c++ - 请解释下面的代码(这是一个关于 C++ 中 for-loop 参数的问题):
- db2 - 使用 IBM Cloud Lite 帐户创建 DB2 服务(Lite 计划)的错误消息