利用仓颉语言实现一个正整数中数字出现的频次统计
利用仓颉编程语言实现如何统计一个正整数中各个数字出现的次数的小应用。目前看仓颉可供参考的资料还是偏少,只能看官方的开发指南或sdk,详见华为官方文档,目前用各类搜索引擎或者deepseek等大模型搜索,回复基本都将其认为是一种输入法,查找内容都不理想。因此,本次就参考官网sdk进行了实现,其实实现原理很简单,如果用python、java等语言实现非常容易,整体思路就是采用除法取余方式计算每一位的
·
自上次搭建好基于vscode的仓颉语言编程环境后,基于仓颉语言也做了一些应用实践,具体环境搭建详见之前文章。昨天应粉丝的需求,利用仓颉编程语言实现如何统计一个正整数中各个数字出现的次数的小应用。目前看仓颉可供参考的资料还是偏少,只能看官方的开发指南或sdk,详见华为官方文档,目前用各类搜索引擎或者deepseek等大模型搜索,回复基本都将其认为是一种输入法,查找内容都不理想。因此,本次就参考官网sdk进行了实现,其实实现原理很简单,如果用python、java等语言实现非常容易,整体思路就是采用除法取余方式计算每一位的数字是几并进行对应十个位置的存储记录和累积,最后输出即可。具体实现代码如下。供大家参考。
一、核心代码
import std.collection.*
import std.format.*
main(): Int64 {
// 输出文本字符串
println("hello cangjie");
var result = searchNum(123019912);
println(result);
return 0;
}
func searchNum(number: Int64): String {
var digit_count = Array<Int64>(10, item: 0);
// 需要转存一下,不能直接使用参数变量
var number2 = number;
// 使用循环处理每个数字
while (number2 > 0) {
// 取出当前最低位的数字
let digit2 = number2 % 10;
// 增加该数字的计数
digit_count[digit2] += 1;
// 去掉当前最低位的数字
number2 = number2 / 10;
}
// 用于存放for循环中的序号
var i=0
for (item in digit_count) {
if (item == 0) {
i = i+1;
continue;
}
print("The digital ${i} 's count is:");
println(item);
i = i+1;
}
return "success";
}
二、应用效果
利用vscode执行上述程序后,对于整数为:123019912,实现效果见下图。

更多推荐
所有评论(0)