目前主要分为三个专栏,后续还会添加:
专栏如下: C语言刷题解析 C语言系列文章 我的成长经历
感谢阅读!
初来乍到,如有错误请指出,感谢!
描述
小乐乐最近接触了求和符号Σ,他想计算
的结果。但是小乐乐很笨,请你帮助他解答。
输入描述:
输入一个正整数n (1 ≤ n ≤ 109)
输出描述:
输出一个值,为求和结果。
思路 :
这题要先看懂要求的是什么
我就看错了
我看成要求阶乘了
想了半天没想出来
结果是要求一个数字加起来的和
读取输入:使用 scanf
函数读取用户输入的正整数 𝑛n。
计算求和:使用等差数列求和公式计算从 1 到 𝑛n 的整数和。
处理潜在的整数溢出:由于 𝑛n 可能非常大,我们使用 unsigned long long
类型来存储求和结果。
输出结果:使用 printf
函数输出计算得到的求和结果。
代码 1 :
# include <stdio.h>
int main (){long int n = 0;//数字很大的时候会溢出,所以把int改为长整型保证不会溢出long int sum =0;scanf("%ld",&n);for (int i = 0; i<=n; i++) {sum+=i;//sum=sum+i}printf("%ld",sum);return 0;
}
代码 2 :
// 总和太大,注意用长整型
long long sum(unsigned n)
{if(n<=1) // 注意给条件防止死循环,当n<=1时,开始层层往上返回结果{return 1;}return n + sum(n-1);// 递归实现
}int main()
{int n = 0;scanf("%d", &n);printf("%lld\n", sum(n)); return 0;
}
代码 3 :
AI给出的代码
#include <stdio.h>int main() {unsigned long long n, sum;// 读取输入的正整数 nscanf("%llu", &n);// 计算求和结果,注意使用 unsigned long long 避免溢出sum = n * (n + 1) / 2;// 输出求和结果printf("%llu\n", sum);return 0;
}
这段代码首先包含了 stdio.h
头文件,以便使用 scanf
和 printf
函数。然后在 main
函数中,定义了两个 unsigned long long
类型的变量 n
和 sum
分别用于存储输入的数值和求和结果。使用 scanf
读取输入的 n
,然后计算 sum
并使用 printf
输出结果。
注意:在C语言中,unsigned long long
类型的大小至少是 64 位,能够存储的数值范围远远大于 int
类型,这有助于处理大数的求和问题。同时,由于我们使用的是整数除法,所以不需要担心小数点后的部分。
知识点:
输入输出函数:
scanf
:用于从标准输入读取数据,常用于读取用户输入的值。
printf
:用于向标准输出打印格式化的字符串。
数据类型:
unsigned long long
:一种基本数据类型,用于存储大整数,其范围比 int
类型大,适合处理大数求和的问题。
算术运算符:
*
(乘法):用于计算两个数的乘积。
/
(除法):用于计算两个数的商。
变量声明和初始化:在C语言中,使用变量之前需要声明其数据类型。
控制流程:
main
函数:C语言程序的入口点,所有程序的执行都从这里开始。
函数返回值:
return
:在 main
函数中使用,用于结束程序并返回一个状态值给操作系统。通常返回 0
表示程序正常结束。
格式化输出:
%llu
:在 printf
函数中,用于格式化输出 unsigned long long
类型的数值。
整数溢出:在处理大整数时,需要注意整数溢出的问题,选择合适的数据类型以避免这种情况。
函数原型:在C语言中,使用到的库函数(如 scanf
和 printf
)需要包含相应的头文件。
头文件包含:
#include <stdio.h>
:包含了标准输入输出函数的声明,是进行输入输出操作时必须包含的头文件。