/*设有文件data.txt和text.txt(格式可参考实体提供的相关样例文档,也可以自行拟定文档内容格式),分别保存了一批 数值型数据和若干行字符串。请编写程序完成如下功能: 通过命令行参数传入一个整数值给主程序,1. 如果该值为 1,则打开文件 data..txt,从文件中读取一批实数,并存入数组中,由于输入数据个数不定,因此 采用如下结构描述输入数据对数组中的占用情况,计算这批数的平均值并输出。Typedef struct darray{double * pdata; //存贮数组的首地址int len //存贮数组的实际长度(本次计算由文件data.txt输入的数组元素个数)int maxlen; //存贮数组的最大长度(即最多可存储多少个元素)}DARRAY2【设计要求】请同学们自行学习标准输入输出流及 freopen 函数相关知识,使用输入输出重定向的方式实现本 功能。2. 如果值为2,打开文件text.txt,统计这批字符串中字母a-z分别出现的次数(不区分大小写),并将统计结果 输出到文件result.txt中,格式如下(设A出现10次,B出现13次,……):3. 如果值为其它值,则退出程序。4. 如果命令行无参数,则从键盘输入一批大于零的整数(设个数为n,事先未知,输入0表示本次输入结束),由于x=0, 1, 2,…n-1做为横坐标,由这批数做为纵坐标,并将这批点在坐标柚上连成拆线后与x轴及y轴围成 的图形,计算该图形的面积,并将结果输出到控制台上。【设计要求】要求在程序实现过程中必须采用如下的程序框架:int x;……while(scanf(“%d”,&x) == 1){……3}5. 请完成上述功能,并编写提示菜单进行测试。*/#include<stdio.h> #include<stdlib.h>struct darray{ double * pdata; //存贮数组的首地址 int len; //存贮数组的实际长度(本次计算由文件data.txt输入的数组元素个数) int maxlen; //存贮数组的最大长度(即最多可存储多少个元素) }Darray;int main(int argc, char *argv[]){ int a,b=0,ave; char op; int num[26], i; int shuzi[1000]; if (*argv[1] = 1) { freopen("data.txt", "r", stdin); Darray.len = 0; while (scanf("%d", &a) != EOF) b = b + a; Darray.len++; ave = b / Darray.len; printf("%d\n", ave); fclose(stdin); } if (*argv[1] = 2) { freopen("text.txt", "r", stdin); freopen("result.txt", "w", stdout); while (scanf("%c", &op) != EOF) switch (op) { case 'A':num[0]++; break; case 'B':num[1]++; break; case 'C':num[2]++; break; case 'D':num[3]++; break; case 'E':num[4]++; break; case 'F':num[5]++; break; case 'G':num[6]++; break; case 'H':num[7]++; break; case 'I':num[8]++; break; case 'J':num[9]++; break; case 'K':num[10]++; break; case 'L':num[11]++; break; case 'M':num[12]++; break; case 'N':num[13]++; break; case 'O':num[14]++; break; case 'P':num[15]++; break; case 'Q':num[16]++; break; case 'R':num[17]++; break; case 'S':num[18]++; break; case 'T':num[19]++; break; case 'U':num[20]++; break; case 'V':num[21]++; break; case 'W':num[22]++; break; case 'X':num[23]++; break; case 'Y':num[24]++; break; case 'Z':num[25]++; break; case 'a':num[0]++; break; case 'b':num[1]++; break; case 'c':num[2]++; break; case 'd':num[3]++; break; case 'e':num[4]++; break; case 'f':num[5]++; break; case 'g':num[6]++; break; case 'h':num[7]++; break; case 'i':num[8]++; break; case 'j':num[9]++; break; case 'k':num[10]++; break; case 'l':num[11]++; break; case 'm':num[12]++; break; case 'n':num[13]++; break; case 'o':num[14]++; break; case 'p':num[15]++; break; case 'q':num[16]++; break; case 'r':num[17]++; break; case 's':num[18]++; break; case 't':num[19]++; break; case 'u':num[20]++; break; case 'v':num[21]++; break; case 'w':num[22]++; break; case 'x':num[23]++; break; case 'y':num[24]++; break; case 'z':num[25]++; break; } for (i = 0; i <= 25; i++) printf("%d\n", num[i]); fclose(stdin); fclose(stdout); } if (argc = 0) { int i, c = 0; double s; printf("Please input some numbers,and 0 is the symbel of the end"); for (i = 0; i <= 999; i++) { scanf("%d", &shuzi[i]); c = c + shuzi[i]; if (shuzi[i] = 0)break; } s = c - shuzi[0] / 2 - shuzi[i] / 2; } return 0;}
1 回答
- 1 回答
- 1 关注
- 1505 浏览
添加回答
举报
0/150
提交
取消