33,321
社区成员




#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int get_opt(void)
{
int ch = 1;
while (1) {
printf("简易计算 \n 1=加法运算 \n 2=减法运算 \n 3=乘法运算 \n 4=除法运算\n ");
printf("请输入序号选择运算符:");
scanf("%d", &ch);
if (ch > 0 && ch <= 4)
break;
else
printf("请输入范围内的序号 以便选择运算方式!....重新输入:") ;
}
return ch;
}
static int get_nums(void)
{
int n;
while (1) {
printf("请输入需要相加/相减/相乘/相除个数:");
scanf("%d", &n);
if (n > 1)
break;
else
printf("请输入正确的个数!重新输入:");
}
return n;
}
void add(void)
{
int n = 0, i = 0;
float sum = 0, num;
n = get_nums();
while (i < n) {
printf("请输入第%d一个数:", i+1);
scanf("%f",&num);
sum += num;
i++;
}
printf("求和 = %f\n\n", sum);
}
void sub(void)
{
int n = 0, i = 0;
float s, num;
n = get_nums();
printf("请输入被减数:");
scanf("%f", &s);
while (i < n) {
printf("请输入第%d一个数:", i+1);
scanf("%f", &num);
s -= num;
i++;
}
printf("求差 = %f\n\n", s);
}
void mul(void)
{
int n = 0, i = 0;
float sum = 1.0, num;
n = get_nums();
while (i < n) {
printf("请输入第%d一个数:", i+1);
scanf("%f", &num);
sum *= num;
i++;
}
printf("求积 = %f\n\n", sum);
}
void div(void)
{
int n = 0, i = 0;
float s, num;
n = get_nums();
printf("请输入被除数:");
scanf("%f", &s);
while (i < n) {
printf("请输入第%d一个数:", i+1);
scanf("%f", &num);
if (fabs(num - 0) < 1e-6)
continue;
s /= num;
i++;
}
printf("求商 = %f\n\n", s);
}
int main(int argc, char *argv[])
{
int ch;
while (1) {
ch = get_opt();
switch (ch) {
case 1:
add();
break;
case 2:
sub();
break;
case 3:
mul();
break;
case 4:
div();
break;
}
}
return 0;
}
代码的可读性是一个很重要的问题,建议将自己的代码不论是格式,风格都做好好一些,有条理一些;
不建议使用goto,尤其楼主这样的使用goto。其实可以用循环实现goto的功能的。
以上的代码是我的修改,可以参考一下。