回 帖 发 新 帖 刷新版面

主题:[讨论]请大家都来讨论这个c程序问题哟

#include <stdio.h>
#define ROWS 4
#define COLS 4
int nums[ROWS][COLS]={{1000,1000,1000,1000},
                 {900,500,400,100},
                 {90,50,40,10},
                 {9,5,4,1}};
char *roms[ROWS][COLS]={{"m","m","m","m"},
                      {"cm","d","cd","c"},
                      {"xc","l","xl","x"},
                      {"ix","v","iv","i"}};

main(int argc,char *argv[ ])
{
    int low,high;
    char roman[25];

    if(argc<2)
    {    printf("Usage:roman decimal_number\n");/*运行程序需带整数参数*/
         exit(0);
    }
    high=low=atoi(argv[1]);/*将第一个参数转换成整数*/
    checknum(low);
    if(argc>2)
    {/*带两个参数*/
    high=atoi(argv[2]);
    checknum(high);
    if(low>high)
        {
            low=high;
            high=atoi(argv[1]);
        }
    }
    else
        low=1;
    for(;low<=high;low++)
    {
        to_roman(low,roman);
        printf("%d\t%s\n",low,roman);
    }
}

checknum(int val)/*检查参数合理性*/
{
    if(val<1||val>9999)
    {
        printf("The number must be in range 1..9999.\n");
        exit(0);
    }
}
to_roman(int decimal,char roman[ ])/*将整数转换成罗马数字表示*/
{
    int power,index;
    roman[0]='\0';
    for(power=0;power<ROWS;power++)
        for(index=0;index<COLS;index++)
            while(decimal>=nums[power][index])
            {
                strcat(roman,roms[power][index]);
                decimal-=nums[power][index];
            }
}

其中主函数的两个参数int argc,char *argv[ ]的作用是什么?代表什么意思啊!
请大家回复这个问题!

回复列表 (共5个回复)

沙发

strcat(roman,roms[power][index])这个函数是什么意思?实现什么功能!

板凳

书上都有,先看书,后问问题

3 楼

进入许愿:[url=http://w75042.s70.ufhost.com/index.asp]http://w75042.s70.ufhost.com/index.asp[/url]

4 楼

对于编程的人来说,最不陌生的就应该是main()函数了,真的不陌生吗?呵呵,至少我对它还不是很熟悉,我还是了解老婆多一点...
 
   最常见的main(){}形式在标准c++中已经销声匿迹了,使用int main(){return 0;}好象已经成为标准c++的一个典型代言,大家都知道main()函数是程序执行的入口地址也许大家还知道main()有一个亲戚长的这个样子:int main(int argc,char* argv[]){return 0;}
至于他和main()到底是什么关系呢?下面来说一下:函数带有两个参数分别是整型和指向字符型指针的数组;其中,整型记录了用户在运行程序的命令行中输入的参数的个数,参数 char* []指向的字符指针数组指向命令行中输入的各个参数,既然他们是main()的两个参数,所以参数名是可以改变的...
 
   另外,参数argc至少等于1,土改命令行中用户输入了参数,它就比1大,argv 指向的树组中也至少有一个字符型指针 argv[0];它通常指向程序可执行文件的文件名...
来自我的博客:http://blog.chinaunix.net/u/21933/

5 楼

[quote]对于编程的人来说,最不陌生的就应该是main()函数了,真的不陌生吗?呵呵,至少我对它还不是很熟悉,我还是了解老婆多一点...
 
   最常见的main(){}形式在标准c++中已经销声匿迹了,使用int main(){return 0;}好象已经成为标准c++的一个典型代言,大家都知道main()函数是程序执行的入口地址也许大家还知道main()有一个亲戚长的这个样子:int main(int argc,char* argv[]){return 0;}
至于他和main()到底是什么关系呢?下面来说一下:函数带有两个参数分别是整型和指向字符型指针的数组;其中,整型记录了用户在运行程序的命令行中输入的参数的个数,参数 char* []指向的字符指针数组指向命令行中输入的各个参数,既然他们是main()的两个参数,所以参数名是可以改变的...
 
   另外,参数argc至少等于1,土改命令行中用户输入了参数,它就比1大,argv 指向的树组中也至少有一个字符型指针 argv[0];它通常指向程序可执行文件的文件名...
来自我的博客:http://blog.chinaunix.net/u/21933/[/quote]

我可是愿搬过来了,累...

我来回复

您尚未登录,请登录后再回复。点此登录或注册