首页 > 试题广场 >

int main(int argc ,char** argv

[单选题]

int main(int argc ,char** argv)

{

int n = 9, i;

for (i = 1; i<argc; i++)

n = n * 10 + *argv[i] - '0';

printf("%d\n", n);

return 0;

}

经编译连接生成的可执行文件 tt.exe 。若执行输入以下命令行 tt 12 345 678 ,则程序运行的输出结果是()

  • 9136
  • 12345
  • 12345678
  • 12
argc根据传入参数个数来定,为4 argv就是传入的参数内容,{"tt","12","345","678"}
发表于 2018-04-27 08:15:04 回复(0)
输入tt 12 345 678时,
argc == 4
argv == {“tt”, "12", "345", "678"}
*argv[i]分别取了 1, 3,6
for循环后,得到9136
发表于 2016-12-14 10:56:32 回复(9)
最朴素的想法,首位肯定是9嘛,一看选项都不用看了
发表于 2017-02-25 13:49:53 回复(1)
A
argc值为4,argv共4项分别是tt 12 345 678
for循环对argv后三项进行处理
每次取出第一个进行运算
第一次n=9*10+'1'-'0'=91
第二次n=91*10+'3'-'0'=913
第三次n=913*10+'6'-'0'=9136
发表于 2017-02-22 15:09:48 回复(3)
char** argv为二维数组首地址,argv[i]代表字符串首地址,argv[i][j]代表第i个字符串中的第j个变量。
发表于 2017-07-29 10:10:07 回复(0)
这题主要是对C标准主函数main的理解:
参数:argc : 表示输入参数的个数, argv:字符指针数组,本题的参数为:argv == {“tt”, "12", "345", "678"}
对程序n = n * 10 + *argv[i] - '0' 的理解, *argv[i]是指向每一个指针数据参数的首地址,是字符char类型格式,则就是字符串的一个字符值。*argv[i] - '0' 将命令行参数中的数字字符串转换为整数,例如参数为5,字符 '5' 的 ASCII 值减去字符 '0' 的 ASCII 值等于数字 5。
所以最后结果就是将9和每个参数的一个字符拼接在一起
发表于 2024-10-24 13:00:14 回复(0)
二维数组定义,main函数中argc计算方法
发表于 2025-06-13 09:41:46 回复(0)
*argv[i] 取参数首地址的值
发表于 2019-03-20 23:01:43 回复(0)
argv[i]取首地址,argc是输入参数为4,argv[1]=1 argv[2]=3 argv[3]=6
发表于 2019-03-13 19:01:37 回复(0)
char **argv,可以看出首先是一个二维数组,argv[i],则是第i个字符串的首元素的地址,取*则是取首元素的值,所以依次为是1,3,6,最后算出是9,1,3,6
发表于 2018-12-06 10:27:32 回复(0)
这是我跑的程序,argc为5,argv[0]表示的是程序名,然后i为5的时候,argv[5]越界了呀,就是未定义的了呀,求解答

发表于 2017-09-12 23:51:07 回复(0)
argc是根据传入的参数推断出来的参数个数,argv是参数
发表于 2017-08-02 17:44:26 回复(0)
这个不用考虑取出的数组值是字符型吗?
发表于 2017-04-06 11:31:01 回复(1)