gpt4 book ai didi

c - 通过多个函数传递一个变量,没有得到想要的结果

转载 作者:太空宇宙 更新时间:2023-11-04 00:36:38 25 4
gpt4 key购买 nike

在将它拆分为函数之前,我已经开始工作了。我确定它只是一个 & 或 * 我在某处丢失了,但我似乎无法弄清楚。用户输入一个数字,然后他们在菜单上选择 F 以让它打印 0 数字。我在 display() 函数中遇到了垃圾。

#include <stdio.h>

char menu();
int read_int(int number);
void display(int number);

int main(int argc, char ** argv) {
int number = 0;
char choice = 'O';
while (choice != 'X'){


choice = menu();

if (choice != 'N' && choice != 'F' && choice != 'X'){
printf("Invalid Input. Enter N, F, or X\n");
}

else if (choice == 'N'){
number = read_int(number);

}

else if (choice == 'F'){
display(number);
}




}

}


char menu ()
{
char i;
printf("\nEnter N to enter an integer from 0 to 20\nEnter F to display the first N+1 numbers (beginning with zero) on the console \nEnter X to quit the program \n");

printf("Your Choice: ");
scanf("%s", &i);
return i;
}

int read_int(number)
{
//int number = 0;
printf("\nEnter an integer 0-20: ");
scanf("%d", &number);
if (number >=0 && number <=20)
return number;
else{
printf("Enter a valid number between 0 and 20");
read_int(number);
}
}

void display(answer)
{
int count = 0;
printf("\nNumber equals: ");
printf("%d", answer);
//while (count <= number){
// printf("%d",count);
// printf(" , ");
// count++;
//}
}

它似乎正在使用这段代码:

#include <stdio.h>

char menu();
int read_int(int number);
void display(int answer);

int main(int argc, char ** argv) {
int number = 0;
char choice = 'O';
while (choice != 'X'){


choice = menu();

if (choice != 'N' && choice != 'F' && choice != 'X'){
printf("Invalid Input. Enter N, F, or X\n");
}

else if (choice == 'N'){
number = read_int(number);
printf("\nNumber equals: ");
printf("%d", number);

}

else if (choice == 'F'){
//printf("\nNumber equals: ");
//printf("%d", number);
display(number);
}




}

}


char menu ()
{
char i;
printf("\nEnter N to enter an integer from 0 to 20\nEnter F to display the first N+1 numbers (beginning with zero) on the console \nEnter X to quit the program \n");

printf("Your Choice: ");
scanf("%s", &i);
return i;
}

int read_int(int number)
{
number = 0;
printf("\nEnter an integer 0-20: ");
scanf("%d", &number);
if (number >=0 && number <=20)
return number;
else{
printf("Enter a valid number between 0 and 20");
return read_int(number);
}
}

void display(int answer)
{
int count = 0;
//printf("\nNumber equals: ");
//printf("%d", answer);
//int toprint = answer;
while (count <= answer){
printf("%d",count);
printf(" , ");
count=count+1;
}
}

现在将其转换为汇编!天哪!

最佳答案

你的 scanf() 调用是错误的:

 scanf("%s",  &i);

您只读了一个字符。应该是:

 scanf(" %c",  &i);

我添加的前导空格(或任何空白字符)字符将确保丢弃输入流中留下的任何空白字符。

关于c - 通过多个函数传递一个变量,没有得到想要的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31248374/

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