C语言无数组统计num2在num1中出现次数及取对应末尾位数求助
实现方案
核心逻辑:要获取整数末尾的n位,只需对10的n次方取模即可,例如要取最后2位就对100取模,余数就是末尾2位的数值。
具体实现步骤
- 先修正基础语法错误:
scanf需要传入变量地址,将原有输入代码修改为:scanf("%d%d", &num1, &num2); - 统计完num2的位数
counter后,不要直接用counter做模运算,先通过整数循环计算模值(不要用pow函数,浮点数运算会有精度丢失问题):int mod = 1; for(int i = 0; i < counter; i++){ mod *= 10; } - 后续要获取num1当前末尾对应位数的数值,直接计算即可:
int last_digits = copy1 % mod;
额外注意点
你现有代码中交换num1和num2的逻辑不符合需求:如果num1本身的数值小于num2,说明num2不可能在num1中出现,直接返回0即可,不需要交换两个数的数值,否则会变成统计num1在num2中的出现次数。
内容的提问来源于stack exchange,提问作者itmemilan
相关产品推荐
相关产品推荐

