第三周main参数传递-1 课堂测试

课堂测试

main参数传递-1 测试

参考 http://www.cnblogs.com/rocedu/p/6766748.html#SECCLA 在Linux下完成“求命令行传入整数参数的和”

注意C中main: int main(int argc, char *argv[]), 字符串“12” 转为12,可以调用atoi()

求和函数 int sum(int N)放入sum.c中, main中调用sum(),main放入main.c中

测试代码传入自己的8位学号

上方提交代码

附件提交运行测试截图

main.c代码

1249685-20171109204549731-1609569647.png

#include<stdio.h>
#include<stdlib.h>               //定义此头文件,里面包含一些宏和通用工具函数,包含atoi()函数
int sum(int N,int arr[]);        //声明sum函数
int main(int argc,char *argv[])  //定义一个命令行总的参数个数,一个字符串数组
{
int result;                     
int ch[argc];                    //定义一个数组
printf("%d\n",argc-1);
for (int i=0;i<argc;i++)
{
ch[i]=atoi(argv[i]);            //调用atoi,将字符串转为整数,用ch[]来接受这个整数
result=sum(argc,ch);             
}
printf("the result is %d\n",result);
return 0;
}

sum.c代码

1249685-20171109204506731-115715152.png

然后通过gcc执行,结果如下:

1249685-20171109204620122-2669198.png

问题与思考:

中间想了一个问题,main.c函数里的for循环中,i能不能从1开始,然后范围变成i<=argc,输出的字符长度变由argc-1变为argc。将sum和main做了一点改动:
1249685-20171109212634153-1036860887.png
1249685-20171109212655575-741326550.png

结果运行如下,出现段错误。

1249685-20171109213512731-533771804.png

反思了一下,数组必须要从第0个开始,不能只能直接定义i=1。第一个测试没做出来,原因是自己对C语言数组和指针部分太薄弱了,课下要加强学习。

转载于:https://www.cnblogs.com/wyz-1995/p/7811604.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值