为了账号安全,请及时绑定邮箱和手机立即绑定

用命令行参数执行的C并有3种走向。

用命令行参数执行的C并有3种走向。

C
文子是我 2017-03-03 21:15:04
/*设有文件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
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号