返回:贺老师课程教学链接
【项目3 - 命令行加法器】
建立项目add,设计一个用命令行能运行的加法器,其中加数的个数不定:
输入:add 1 3
输出 4
输入:add 1 3.1 2 6
输出 12.1
输入:add 1 3 a 6
输出:命令行中出现非法运算量!
[参考解答]
#include <stdio.h> #include <stdlib.h> #include <ctype.h> double string_to_double(char *str); int main(int argc,char *argv[]) { int n; double s=0; if (argc<3) //对于命令行中参数个数有要求的程序,常用argc检查参数是否够用 { printf("参数不足,失败...\n"); } else { for (n=1; n<argc; n++) //对命令行中提供的多个参数循环 { s+=string_to_double(argv[n]); //argv中是字符串,为相加需要转换数据 } printf("%f\n", s); } return 0; } /* 将字符串转换为数字。 标准库中有类似的转换函数strtod或strtof,可以通过搜索了解 */ double string_to_double(char *str) { double ans; double k; int sign=1; ans=0; if(*str=='-') { sign = -1; str++; } else if(*str=='+') str++; while (isdigit(*str)) { ans=ans*10+*str-'0'; str++; } if (*str=='.') { *str++; k=0.1; while (isdigit(*str)) { ans+=(*str-'0')*k; k/=10; str++; } } if(*str!='\0') { printf("命令行中出现非法运算量!\n"); exit(0); } return sign*ans; }
时间: 2024-08-26 02:17:10