我写了一个代码,用于添加三个数字并打印它们的总和.有没有一种方法可以更有效地编写此代码,如初始化和引入每个变量.
代码如下:
#include <stdio.h>
int main()
{
int firstNumber;
firstNumber = 0;
printf("Enter firstNumber");
scanf("%d", &firstNumber);
int secondNumber;
secondNumber = 0;
printf("Enter secondNumber");
scanf("%d", &secondNumber);
int thirdNumber;
thirdNumber = 0;
printf("Enter thirdNumber");
scanf("%d", &thirdNumber);
int sum;
sum = firstNumber + secondNumber + thirdNumber;
printf("%d", sum);
}
Run Code Online (Sandbox Code Playgroud)
可以更有效地编写此代码,例如初始化和引入每个变量.
使用数组:
int numbers[3] = {0};
Run Code Online (Sandbox Code Playgroud)
上面的行定义了三个ints并将它们全部初始化为0.
要获得第一次使用:
numbers[0]
Run Code Online (Sandbox Code Playgroud)
如果出于任何原因,您的代码需要引用" first "," second "和" third ",则创建一个枚举来访问数组的元素,如下所示:
enum Numbers
{
FirstNumber,
SecondNumber,
ThirdNumber
}
Run Code Online (Sandbox Code Playgroud)
然后访问第二个数字的源代码可能如下所示:
numbers[SecondNumber]
Run Code Online (Sandbox Code Playgroud)
如果你想要大小Numbers跟随enum Numbers修改上面的例子中的条目数,如下所示:
enum Numbers
{
FirstNumber,
SecondNumber,
ThirdNumber,
MaxNumbers
}
Run Code Online (Sandbox Code Playgroud)
然后定义数字
int Numbers[MaxNumbers] = {0};
Run Code Online (Sandbox Code Playgroud)
按照相同的概念,您现在可以为定义的数字定义用户提示:
const char * prompts[MaxNumbers] = {
"firstNumber",
"secondNumer",
"thirdNumber"
};
Run Code Online (Sandbox Code Playgroud)
现在一切都通过循环输入函数来显着减少源代码行(而不是为每个数字编码或多或少相同的东西):
读入:
for (enum Numbers n = 0; n < MaxNumbers; ++n)
{
printf("Please enter %s:\n", prompts[n]);
scanf("%d", &Numbers[n]);
}
Run Code Online (Sandbox Code Playgroud)
总结:
int sum = 0;
for (enum Numbers n = 0; n < MaxNumbers; ++n)
{
sum += Numbers[n];
}
printf("The sum is: %d\n", sum);
Run Code Online (Sandbox Code Playgroud)
然而,这两个循环可以合并为一个:
for (enum Numbers n = 0; n < MaxNumbers; ++n)
{
printf("Please enter %s:\n", prompts[n]);
scanf("%d", &Numbers[n]);
sum += Numbers[n];
}
Run Code Online (Sandbox Code Playgroud)
作为最后的注释,留给你的学习,请注意,scanf()很可能会失败.它通过返回值表示这一点.然后,代码可以读取,检测可能的故障并相应地采取行动.
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |