定义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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 我要一个分身加定位两个功能的安卓app
- ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
- ¥15 IAR程序莫名变量多重定义
- ¥15 (标签-UDP|关键词-client)
- ¥15 关于库卡officelite无法与虚拟机通讯的问题
- ¥15 目标检测项目无法读取视频
- ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
- ¥100 求采集电商背景音乐的方法
- ¥15 数学建模竞赛求指导帮助
- ¥15 STM32控制MAX7219问题求解答