C 变量超出for循环中的指定限制
我已经编写了查找数字的单位和十位数的代码,但是当数字大于99时,我面临一个问题。在for循环中,I的值被设置为小于10,但是当我执行no=100的代码时,我发现I的值为10 为什么会这样C 变量超出for循环中的指定限制,c,C,我已经编写了查找数字的单位和十位数的代码,但是当数字大于99时,我面临一个问题。在for循环中,I的值被设置为小于10,但是当我执行no=100的代码时,我发现I的值为10 为什么会这样 #include <stdio.h> int unit(int x){ return x%10; } int ten(int x){ int temp=x-unit(x); if(temp==0){ return 0; } else{ for(int i=1;i
#include <stdio.h>
int unit(int x){
return x%10;
}
int ten(int x){
int temp=x-unit(x);
if(temp==0){
return 0;
}
else{
for(int i=1;i<10;i++){
if(temp%(i*10)==0 && temp/(i*10)==1){
return i;
}
}
}
}
int main(){
int no=100;
printf("%d",ten((no)));
return 0;
}
1在10的else块中,仅当满足某些条件时才返回值。如果条件不满足,您将不会返回任何内容。在这种情况下,可以打印垃圾值
2要得到第十位数字,这是一项艰巨的工作。只需将函数体更改为-
int ten(int x) {
return (x % 100) /10;
}
因为条件满足,所以最大为99的数字得到正确的结果。以99为例。减去单位数字后,你得到90。当i变为9时,临时%i*10变为0,临时/i*10变为1
当数字为100时,减去单位数字后,数字保持不变。100但是对于从1到9的i值,temp/i*10永远不会变为1,循环将退出,从而导致荒谬的行为。使用您的代码,所有大于99的数字都会得到相同的行为。想想当数字大于99时会发生什么。您将无法找到i b/w 1和9的值,从而使if中的表达式为真。你需要一个i>10的值,但是当然,它不是数字的十位数 您的方法仅适用于特定情况,即数字为b/w 1和10^2时。当然,你可以写更多的代码来处理数字b/W1和10^3,但那只是一个麻烦。即使如此,如果数字大于这个数字,你也必须写更多的代码 试着为一般情况想出一个解决方案。要做到这一点,两个事实将非常有用: 使用/除法只给出答案的整数部分。例:66/10=6 %此运算符将为您提供余数。例:59%10=9
不清楚你想做什么。例如,我不理解这个短语代码来查找单位和十位数。