定义union类型(整数、浮点数、长度为N的字符串),并使用typedef重定义union 类型,输入一组整数、浮点数、字符串。计算这组数据中,整数的平均值;浮点数 的最大值和最小值;所有字符串的总的字符数。
关于#c语言#的问题:定义union类型(整数、浮点数、长度为N的字符串),并使用typedef重定义union 类型,输入一组整数、浮点数、字符串
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 技术专家团-小桥流水 2023-01-01 09:05关注
需要写一个函数判断数据是什么类型。运行结果:
代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 100 union _MyUnion { int d1; float d2; char d3[N]; }; typedef union _MyUnion MyUnion; int isNmb(const char* p) { int i = 0; int cnt = 0; for (; p[i] != '\0'; i++) { if (p[i] == '.') cnt++; else if (p[i] >= '0' && p[i] <= '9') continue; else return 0;//非数字 } if (cnt == 0) return 1; //整数 else if (cnt == 1) return 2; //浮点数 else return 0; //非数字 } int main() { MyUnion u[10]; int i = 0; int t = 0; float maxv,minv; int flag = 0; //标记是否已经有浮点型 float ave = 0; int cnt = 0; //整数的个数 int nlen = 0; printf("请输入10个数字或者字符串:"); for (i = 0; i < 10; i++) scanf("%s", u[i].d3); for (i = 0; i < 10; i++) { t = isNmb(u[i].d3); if (t == 0) //字符串 nlen += strlen(u[i].d3); else if (t == 1) { ave += atoi(u[i].d3); cnt++; } else { if (flag == 0) { maxv = minv = atof(u[i].d3); flag = 1; } else { if (atof(u[i].d3) > maxv) maxv = atof(u[i].d3); if (atof(u[i].d3) < minv) minv = atof(u[i].d3); } } } printf("整数的平均值:%.2f\n", ave / cnt); //保留2位小数 printf("浮点数的最大值:%f,最小值:%f\n", maxv, minv); printf("所有字符串的总字符数:%d\n", nlen); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度
- ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
- ¥15 ETLCloud 处理json多层级问题
- ¥15 matlab中使用gurobi时报错
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么