Day10_C语言基础
1.思维导图
2.2.argc和argv的问题
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{int ret=0;int num1=atoi(argv[1]);int num2=atoi(argv[3]);if(argc!=4){printf("输入的参数不符合标准%s\n",argv[0]);return 1;}if(strcmp((argv[2]),"+")==0){ret=num1+num2;printf("%d+%d=%d\n",num1,num2,ret);}else if(strcmp(argv[2],"*")==0){ret=num1*num2;printf("%d*%d=%d\n",num1,num2,ret);} else if(strcmp(argv[2],"/")==0){if(num2==0){printf("除数的不能是零\n");return 1;}ret=num1/num2;printf("%d/%d=%d\n",num1,num2,ret);}else if(strcmp(argv[2],"%")==0){if(num2==0){printf("被取模数不能是零\n");return 1;}ret=num1%num2;printf("%d%%%d=%d\n",num1,num2,ret);}else{printf("输入的参数不符合标准%s\n",argv[2]);return 1;}return 0;
}
方法二:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>int main(int argc, const char *argv[])
{int ret = 0;int num1 = atoi(argv[1]);int num2 = atoi(argv[3]);// 检查命令行参数数量是否符合要求if(argc != 4) {printf("输入的参数不符合标准%s\n", argv[0]);return 1;}// 使用 switch case 处理不同运算符switch (*(argv[2])) {case '+':ret = num1 + num2;printf("%d+%d=%d\n", num1, num2, ret); break;case '*':ret = num1 * num2;printf("%d*%d=%d\n", num1, num2, ret);break;case '/':if (num2 == 0) {printf("除数不能是零\n");return 1;}ret = num1 / num2;printf("%d/%d=%d\n", num1, num2, ret);break;case '%':if (num2 == 0) {printf("被取模数不能是零\n");return 1;}ret = num1 % num2;printf("%d%%%d=%d\n", num1, num2, ret);break;default:printf("输入的参数不符合标准%s\n", argv[2]);return 1;}return 0;
}