首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为什么这题运行不来?该如何解决

2012-02-15 
为什么这题运行不来?题目:利用命令行参数输出一月份到十二月份的英文名。#includestdio.h #includestdli

为什么这题运行不来?
题目:利用命令行参数输出一月份到十二月份的英文名。

#include   "stdio.h "
#include   "stdlib.h "
#include   "math.h "
int   getmonth(char   *str);
char   *month_str[]={ "jan ", "feb ", "mar ", "apr ", "may ", "jun ", "jul ",
                                      "aug ", "sep ", "oct ", "nov ", "dec "};
void   main(int   argc,char   *argv[])
{
  int   k;
  k=getmonth(argv[1]);
  printf( "%s\n ",month_str[k-1]);
}

int   getmonth(char   *str)
{int   k;
  k=atoi(str);
  return   k;
}




[解决办法]
12明显就不对了,顶多也是0-11
[解决办法]
有这么一句 month_str[k-1]
12肯定是可以的
还有我编译之后,程序运行时正常的
[root@AccessGrid Test]# more main.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int getmonth(char *str);
char *month_str[]={ "jan ", "feb ", "mar ", "apr ", "may ", "jun ", "jul ",
"aug ", "sep ", "oct ", "nov ", "dec "};
void main(int argc,char *argv[])
{
int k;
k=getmonth(argv[1]);
printf( "%s\n ",month_str[k-1]);
}
int getmonth(char *str)
{int k;
k=atoi(str);
return k;
}

[root@AccessGrid Test]# ./month 12
dec
[root@AccessGrid Test]# [root@AccessGrid Test]# more main.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int getmonth(char *str);
char *month_str[]={ "jan ", "feb ", "mar ", "apr ", "may ", "jun ", "jul ",
"aug ", "sep ", "oct ", "nov ", "dec "};
void main(int argc,char *argv[])
{
int k;
k=getmonth(argv[1]);
printf( "%s\n ",month_str[k-1]);
}
int getmonth(char *str)
{int k;
k=atoi(str);
return k;
}

[root@AccessGrid Test]# ./month 12
dec
[root@AccessGrid Test]# [root@AccessGrid Test]# more main.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int getmonth(char *str);
char *month_str[]={ "jan ", "feb ", "mar ", "apr ", "may ", "jun ", "jul ",
"aug ", "sep ", "oct ", "nov ", "dec "};
void main(int argc,char *argv[])
{
int k;
k=getmonth(argv[1]);
printf( "%s\n ",month_str[k-1]);
}
int getmonth(char *str)
{int k;
k=atoi(str);
return k;
}

[root@AccessGrid Test]# ./month 12
dec
[root@AccessGrid Test]# ./month 5
may

[解决办法]
因为这句k=getmonth(argv[1]);
所以你在Dos命令下输入 month 3的话,argv[1]中就是month
[解决办法]
都ok啊,我保存为main.exe。在dos下运行main 1,结果jan, main 12结果 dec...

热点排行