猿问

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

/*设有文件data.txt和text.txt(格式可参考实体提供的相关样例文档,也可以自行拟定文档内容格式),
分别保存了一批 数值型数据和若干行字符串。
请编写程序完成如下功能: 通过命令行参数传入一个整数值给主程序,

1. 如果该值为 1,则打开文件 data..txt,从文件中读取一批实数,并存入数组中,由于输入数据个数不定,
因此 采用如下结构描述输入数据对数组中的占用情况,计算这批数的平均值并输出。
Typedef struct darray
{
double * pdata;      //存贮数组的首地址
int len     //存贮数组的实际长度(本次计算由文件data.txt输入的数组元素个数)
int maxlen;     //存贮数组的最大长度(即最多可存储多少个元素)
}DARRAY
2
【设计要求】请同学们自行学习标准输入输出流及 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;
}


文子是我
浏览 1507回答 1
1回答
随时随地看视频慕课网APP
我要回答