【发布时间】:2018-08-23 00:22:59
【问题描述】:
我是 C 的初学者,下面是一个查找给定数字位置的程序。我的第一个函数有效,但我不能说第二个(digitPos2)从指针返回值。我不确定哪里出了问题以及为什么。
#include <stdio.h>
int digitPos1(int num, int digit);
void digitPos2(int num, int digit, int *result);
int main()
{
int number, digit, result=0;
printf("Enter the number: \n");
scanf("%d", &number);
printf("Enter the digit: \n");
scanf("%d", &digit);
printf("digitPos1(): %d\n", digitPos1(number, digit));
digitPos2(number, digit, &result);
printf("digitPos2(): %d\n", result);
main();//return 0;
}
int digitPos1(int num, int digit)
{
int pos=0;
while(num)
{
if(num%10 == digit)
{
return pos = pos + 1;
}
else
{
pos++;
num = num/10;
}
}
}
void digitPos2(int num, int digit, int *result)
{
int pos=0;
while(num)
{
if(num%10 == digit)
{
pos = pos + 1;
*result = pos;
}
else
{
pos++;
num = num/10;
}
}
*result = 0;
}
【问题讨论】:
-
breakwhile在if的情况下没有循环-> 无限循环 -
return pos = pos + 1;->return pos + 1;会更好 -
digitPos1-> 可以不使用return退出这个函数 -
@Ley Clo 你是从数字的右侧从数字的左侧看位置吗?
标签: c algorithm function while-loop do-while