gpt4 book ai didi

C 程序 - Do-while-Functions 错误

转载 作者:行者123 更新时间:2023-11-30 19:06:15 25 4
gpt4 key购买 nike

期望的输出:
输入值来查找因子? 10
数字10有1,2,5,10作为因数
数字 10 有 4 个因数
再试一次是/否?

电流输出:
输入值来查找 ? 的因子10
数字 10 有 1 和 10 作为它的因数
数字 10 有 2 和 10 作为它的因数
数字 10 有 5 和 10 作为它的因数
数字 10 有 10 和 10 作为它的因数
数字 10 有 -1 和 10 作为它的因数
数字 10 有 -2 和 10 作为它的因数
数字 10 有 -5 和 10 作为它的因数
数字 10 有 -10 和 10 作为它的因数

我当前的代码

#include <stdio.h> // printf, scanf, getchar
#include <stdlib.h> // system

int list_mult(int value);
int main()
{
int input_value;
char again;
do {
printf("Input value to find factors for ? ");
scanf("%d", &input_value);
list_mult(input_value);
printf("\nTry again y/n ? ");
scanf(" %c", &again);
} while (again == 'y');
}

int list_mult(value) {
int i;
int count = 0;
printf("\nThe number %d has", value);
for (i = 1; i <= (value / 2); i++)
{
if (value%i == 0)
{
printf(" %d,", i);
count++;
}
}
printf(" and %d as it factors", value);
printf("\nThe number %d has %d factors", value, count);
return(count + 1);
}

问题:
第一个:do-while循环(再次)不起作用
第二:“数字10有1、2、5和10作为它的因数”。不知道如何显示用逗号分隔的“i”。
第三:最后一个打印语句(计数)不起作用

编辑:以上问题均已解决。并且上面的代码在CodeBlock上完美运行

我现在遇到的问题是我使用 CodeBlock 并且我的代码运行良好。但是当我在学校使用Microsoft Studio时(我只允许在学校使用MS),MS显示错误如下

C2065“值”:未声明的标识符 - 第 29 行
C2365 'list_mult':重新定义;之前的定义是“函数” - 第 29 行
C2448“list_mult”:函数式初始值设定项似乎是函数定义

Edit2:编译器错误已解决。现在一切都运转良好。谢谢

最佳答案

在第一次 scanf for &again 后,您可以输入另一行。我必须在系统上捕获回车符。

if (again == '\n') scanf("%c", &again);

对于第二个问题,您可以像这样显示逗号:

printf("\nThe number %d has ", value);

for (i=1; i<=(value/2); i++) {

if(value%i==0) {

printf("%d", i);
putchar(',');

count++;
}
}

printf(" and %d as its factors.", value);

进行逗号格式化的另一种方法是创建一个值数组

int factors[1000];

并预填充所有内容,然后迭代这些值以获得所需的格式化输出。例如,您会知道不要打印最后的逗号,因为您已经计算了此时的因子数,以及预填充数组中的所有因子。

The number 10 has 1,2,5, and 10 as its factors. The number 10 has 3 factorsTry again y/n ?

关于C 程序 - Do-while-Functions 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48435466/

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