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

C语言for循环输入直角三角形三边时如何输出不同提示?

实现方案

你只需要修改原有代码中读取输入的for循环,在每次调用scanf前输出对应边的输入提示即可,最简单的实现方式是利用ASCII码特性直接匹配边名:

核心修改片段

for (i = 0; i < 3; i++) 
{
    // 利用ASCII码偏移直接生成A/B/C边标识
    printf("输入边%c的数值:", 'A' + i);
    scanf("%f", &known[i]);
}

如果你需要更灵活的提示文本,也可以预定义提示字符串数组:

const char* side_prompts[] = {"A", "B", "C"};
for (i = 0; i < 3; i++) 
{
    printf("输入边%s的数值:", side_prompts[i]);
    scanf("%f", &known[i]);
}

完整修改后代码

#define _CRT_SECURE_NO_WARNINGS
#include <math.h>
#include <stdio.h>

float TriSideSolver(float side1, float side2, float side3, float* ptrA, float* ptrB, float* ptrC);
void main(void)
{
    float inputA, inputB, inputC;
    int success;
    int i;
    float known[3]; 
    float A, B, C;
    printf("输入直角三角形的已知边长,未知边请输入0\n");
    for (i = 0; i < 3; i++) 
    {
        printf("输入边%c的数值:", 'A' + i);
        scanf("%f", &known[i]);
    }
    A = known[0];
    B = known[1];
    C = known[2];

    success = TriSideSolver(A, B, C, &inputA, &inputB, &inputC);

    A = inputA;
    B = inputB;
    C = inputC;
    printf("计算结果如下:\n A= %f\n B= %f\n C= %f\n", A, B, C);

}

float TriSideSolver(float side1, float side2, float side3, float* ptrA, float* ptrB, float* ptrC)
{
    if (side1 == 0)
    {
        *ptrA = sqrt((pow(side3, 2)) - (pow(side2, 2)));
        *ptrB = side2;
        *ptrC = side3;
        return 1;
    }
    else if (side2 == 0)
    {
        *ptrB = sqrt((pow(side3, 2)) - (pow(side1, 2)));
        *ptrA = side1;
        *ptrC = side3;
        return 1;
    }
    else if (side3 == 0)
    {
        *ptrC = sqrt((pow(side1, 2)) + (pow(side2, 2)));
        *ptrA = side1;
        *ptrB = side2;
        return 1;
    }
    else
    {
        *ptrA = side1;
        *ptrB = side2;
        *ptrC = side3;
        return 1;
    }

}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:15:06