gpt4 book ai didi

C 程序按值传递

转载 作者:行者123 更新时间:2023-11-30 20:12:26 25 4
gpt4 key购买 nike

我有一个完整的C程序,提示用户输入0到100000之间的数字。然后打印出该数字的每个数字。我的代码完成了任务,但它没有正确地通过理想的函数传递值。我需要一些关于如何利用我所拥有的东西并使其通过函数正确传递用户值并返回的建议。

    #include <stdio.h>


void print_1(int,int);
void print_10(int,int);
void print_100(int,int);
void print_1000(int,int);
void print_10000(int,int);

int main() {
int userInput;
printf("Please enter a positive number less than 100,000: \n");
scanf("%d", &userInput);
if (userInput > 0 && userInput < 100000)
{
printf("\nYou have entered: %d\n",userInput);;

}
else
{
printf("\nThe number you have entered is out of the specified range\n");
exit(0);
}
int lastDigit;
print_1(userInput,lastDigit);


} //End main


// ===========================================================================
// Function : Print_1
// Description : Prints out the 1st digit of user input
//
// Input :
// input userInput
// output userInput
// Return value :
// return value
//
// Notes: This function repeats several printing the lastDigit then slicing it
// off before passing on to a new function.
//============================================================================
void print_1(int userInput,int lastDigit)
{
lastDigit = userInput % 10;
printf("\n1\'s: %d \n", lastDigit);
userInput = (userInput - lastDigit) / 10;\
print_10(userInput,lastDigit);
} // end print_1

// ===========================================================================
// Function : Print_10
// Description : Prints out the 1st digit of user input
//
// Input :
// input userInput
// output userInput
// Return value :
// return value
//
// Notes: This function repeats several printing the lastDigit then slicing it
// off before passing on to a new function.
//============================================================================
void print_10(int userInput,int lastDigit)
{
lastDigit = userInput % 10;
printf("\n10\'s: %d \n", lastDigit);
userInput = (userInput - lastDigit) / 10;
print_100(userInput,lastDigit);
} // end print_10

// ===========================================================================
// Function : Print_100
// Description : Prints out the 1st digit of user input
//
// Input :
// input userInput
// output userInput
// Return value :
// return value
//
// Notes: This function repeats several printing the lastDigit then slicing it
// off before passing on to a new function.
//============================================================================
void print_100(int userInput,int lastDigit)
{
lastDigit = userInput % 10;
printf("\n100\'s: %d \n", lastDigit);
userInput = (userInput - lastDigit) / 10;
print_1000(userInput,lastDigit);
} //end print_100

// ===========================================================================
// Function : Print_1000
// Description : Prints out the 1st digit of user input
//
// Input :
// input userInput
// output userInput
// Return value :
// return value
//
// Notes: This function repeats several printing the lastDigit then slicing it
// off before passing on to a new function.
//============================================================================
void print_1000(int userInput,int lastDigit)
{
lastDigit = userInput % 10;
printf("\n1000\'s: %d \n", lastDigit);
userInput = (userInput - lastDigit) / 10;
print_10000(userInput,lastDigit);
} //end print_1000

// ===========================================================================
// Function : Print_10000
// Description : Prints out the 1st digit of user input
//
// Input :
// input userInput
// output userInput
// Return value :
// return value
//
// Notes: This function repeats several printing the lastDigit then slicing it
// off before passing on to a new function.
//============================================================================
void print_10000(int userInput,int lastDigit)
{
lastDigit = userInput % 10;
printf("\n10000\'s: %d \n", lastDigit);
userInput = (userInput - lastDigit) / 10;
return userInput;
}//end print_10000

//End Program

最佳答案

我不确定您想要实现该代码的目的是什么,但是您的每个参数都是按值传递的。在您的代码中:

int lastDigit;
print_1(userInput,lastDigit);

您正在传递一个未初始化的变量,lastDigit。您基本上是在向 print_ 函数发送“乱码”。虽然它对结果没有影响,因为您是在函数内部初始化它,但这是一种不好的做法,可能会给您带来以后的麻烦。您应该全部更改:删除 lastDigit 参数并在本地声明它,如下所示:

void print_1(int userInput)
{
int lastDigit = userInput % 10;

但是,如果您希望 lastDigit 保留函数内部设置的值,则需要按地址传递。

int lastDigit;
print_1(userInput, &lastDigit);

并像这样修改你的原型(prototype):

void print_1(int userInput, int *lastDigit)

并且您必须修改代码中该变量的每次使用。这些上限是一个警告,以防万一我们很容易改变这一论点。您需要先阅读指针。

http://www.cprogramming.com/tutorial/c/lesson6.html http://www.tutorialspoint.com/cprogramming/c_pointers.htm

关于C 程序按值传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35511298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com