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
相关产品推荐
相关产品推荐

