You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言程序无法读取输入值,始终返回2.5的问题求助

问题分析与修复方案

核心问题

程序无法读取输入数值、始终返回2.5,根源在于scanf的两处错误使用:

  • 读取double类型变量时,错误用了%f格式符(%f对应float,double需用%lf);
  • scanf要求传入变量的地址完成赋值,你直接传了num变量本身,导致内存访问异常,num始终是未初始化的随机值(通常为0),代入equ函数后算出(5+0)/2=2.5。

修复后的完整代码

#include <stdio.h>
double equ(double num);

int main()
{
        double num;
        double * pnum = &num;
        printf("Give me a number from 1-10: \n");
        scanf("%lf", &num); // 修复格式符与地址传递问题
        printf("%f \n%p \n", equ(num), pnum); // &pnum是指针自身的地址,若要打印num的地址,用&num或pnum即可
        char sign = ',';
        char characterName1[20];
        char characterName2[]="Alfred";
        printf("Give me a name: ");
        scanf("%s", characterName1);
        printf("-Good day %s\n", characterName1);
        printf("-Good day to you too%c %s", sign, characterName2);
        return 0;
}
double equ(double num){
        double result;
        if(num<5){
                result = (5 + num)/2;
                } else {
                    result = 5 + num;
                }
        return result;
}

额外说明

  • 修复后的scanf("%lf", &num)可正确读取输入数值到num变量;
  • 原代码中printf里的&pnum是指针变量自身的地址,若要打印num的内存地址,直接用pnum或&num更符合逻辑。

内容的提问来源于stack exchange,提问作者Nksho27

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 06:16:07