c语言一个简单的循环问题,涉及自定义函数

照抄这些代码,无法运行,怎么回事

img

img

img


看书也看不明白,有没有会的能给讲讲

第七行,是%d,不是gd
for (i = 1; i <= n; i++)这里多了分号
下面printf外侧的花括号没有必要写(虽然写了也没错)
另外你的fact函数的定义,下面没有写吧。

完整程序如下

#include <stdio.h>
double fact(int n);
int main()
{
    int i, n;
    double sum;
    printf("Enter n:");
    scanf("%d", &n);
    sum = 0;
    for (i = 1; i <= n; i++)
        sum = sum + fact(i);
    printf("1!+2!+3!+...+%d!=%.0lf\n", n, sum);
    return 0;
}
double fact(int n)
{
    int i;
    double result = 1;
    if (n < 0) return 0;
    for (i = 1; i <= n; i++)
        result = result * i;
    return result;
}

img

引用 皆我百晓生 小程序回复内容作答:
以上代码有两个问题:

  1. 在读取输入的n时,使用了错误的格式字符串。应该使用"%d"而不是"gd"。
  2. 在计算sum时,for循环后面多了一个分号,导致循环只执行了一次。

修改后的代码如下:

#include <stdio.h>

double fact(int n);

int main(void){
    int i,n;
    double sum;
    
    printf("Enter n: ");
    scanf("%d", &n);
    
    sum=0;
    for(i=1;i<=n;i++){
        sum=sum+fact(i);
    }
    
    printf("1! + 2! + ... + %d! = %.0f\n",n,sum);
    return 0;
}

double fact(int n){
    int i;
    double result = 1;
    for(i=1;i<=n;i++){
        result *= i;
    }
    return result;
}

修改后的代码可以正确运行,并计算出1! + 2! + ... + n!的结果。

你没抄完把:

img

#include <stdio.h>

/* 函数声明 */
double fact(int n);

int main(void)
{
    int i, n;
    double sum ;

    printf("Enter n: ");
    scanf("%d", &n);  /* 输入提示 */

    for(i = 1; i <= n; i++)
    {
        sum = sum+fact(i);  /* 调用 fact(i) 求 i!,共重复 n 次 */
    }

    printf("1! + 2! + ... + %d! = %.0f\n", n, sum);

    return 0;
}

/* 定义求 n! 的函数*/
double fact(int n)
{
    int i;
    double result;

    if(n < 0)  /* 如果 n 为负整数,阶乘为 0 */
        return 0;

    result = 1;

    for(i = 1; i <= n; i++)  /* 循环 n 次,计算 n! */
    {
        result = result*i;
    }

    return result;  /* 把结果回送主函数 */
}


fact函数没有函数体。

fact 函数都没有实现。

你这是没抄定义求n!的函数后的那段代码,既fact函数的实现,第二行那个只是函数原型的申明

遇到这样的问题,首先,是你要完全复制到书本上的代码,检查是否存在遗漏,然后再根据要求进行增删改查。

第七行错了

结合GPT给出回答如下请题主参考
可以提供更具体的问题和代码,这样才能更好地帮助您解决问题。以下是一些可能出现的问题和解决方法:

  1. 编译器错误:在编译代码时,可能会出现语法错误或其他类型的编译器错误。这些错误通常会在编译器输出中显示,并且可能包括有关错误位置和类型的信息。要解决此类错误,您需要检查代码并尝试找到错误,并进行修复。

  2. 逻辑错误:如果代码可以成功编译但无法正常运行,可能存在逻辑错误。这些错误通常会导致程序输出不正确的结果,或者根本没有输出。要解决此类错误,您需要检查代码并尝试找到逻辑错误所在,并进行修复。

  3. 函数调用问题:如果代码中涉及自定义函数并且调用了这些函数,可能会存在函数调用问题。这些问题可能包括函数签名与定义不匹配,函数参数不正确或没有正确调用函数。要解决此类问题,您需要检查代码并确保所有函数签名,参数和调用都正确。

  4. 变量声明和初始化问题:如果代码中涉及变量声明或初始化,可能会存在问题。这些问题可能包括变量类型不正确,变量未初始化或变量被多次声明。要解决此类问题,您需要检查代码并确保所有变量类型正确并进行正确的初始化。

希望这些信息可以帮助您解决问题。如果您需要更具体的帮助,请提供更多的信息和代码,我们会尽力帮助您解决问题。

1、第7行你在读取输入的n时,应该使用"%d"而不是"gd"。
2、你在计算sum时,for循环后面多了一个分号,所以会导致循环只执行了一次。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

第七行抄错了,是%d不是gd。
刚开始学习先不要着急,一个一个字符去对着敲

兄弟抄错了,百分号

第七行应该是%d
就九行大括号位置错误
fact函数没有实现
一堆问题

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

读取输入的n时,应该使用"%d"而不是"gd"。
在计算sum时,for循环后面多了一个分号

你代码有问题,初始敲代码经常会把代码抄错,最简单得可以拍照发电脑上,直接把代码复制出来在运行

img

首先,你的代码没抄完整,下面的fact函数的实现都没写;
其次,这段代码本身时间复杂度很高,输入的数较大时运行速度很慢,并可能会溢出;
还有scanf里的"gd"是啥玩意?

根据你的代码:
1、第7行你在读取输入的n时,应该使用"%d"而不是"gd"。
2、你在计算sum时,for循环后面多了一个分号,所以会导致循环只执行了一次。
3、代码照着抄写完整,多检查几遍。

代码直接抄写的有问题,那就是你抄错了呗。逐字逐句检查下每行代码,就可以找到问题,比如,比较明显的错误:输入n那个地方,应该使用"%d"

这对初学者来说是很常见的错误,首先是字母,其次是中英文符号,注意检查这两点就可以了

调试看看哪里报错了,对应修改

先测试下语言环境吧,试试我的代码

#include <stdio.h>

// 自定义函数,用于判断一个数字是奇数还是偶数
int isEven(int num) {
    if (num % 2 == 0) {
        return 1;  // 返回1表示偶数
    } else {
        return 0;  // 返回0表示奇数
    }
}

int main() {
    int i;

    // 使用循环调用自定义函数判断数字的奇偶性
    for (i = 0; i <= 10; i++) {
        if (isEven(i)) {
            printf("%d 是偶数\n", i);
        } else {
            printf("%d 是奇数\n", i);
        }
    }

    return 0;
}