1. 平均数
c
#include <stdio.h>
int main()
{
int a,b;
printf("请输入两个整数,空格隔开: ");
scanf("%d %d",&a,&b);
//除以2.0,避免整数整除
double avg = (a+b) / 2.0;
printf("平均值: %f\n",avg);
return 0;
}
c
D:\cproject\cmake-build-debug\high.exe
璇疯緭鍏ヤ袱涓暣鏁帮紝绌烘牸闅斿紑:4 5
骞冲潎鍊? 4.500000
自定义 N 个数字求平均
c
#include <stdio.h>
int main()
{
int n;
int num;
double sum = 0;
printf("请输入要计算几个数字: ");
scanf("%d",&n);
for (int i = 0; i < n; ++i) {
printf("第%d个数字: ",i+1);
scanf("%d",&num);
sum += num;
}
double avg = sum / n;
printf("avg= %.2f\n ", avg);
return 0;
}
c
D:\cproject\cmake-build-debug\high.exe
璇疯緭鍏ヨ璁$畻鍑犱釜鏁板瓧:5
绗?涓暟瀛?1
绗?涓暟瀛?2
绗?涓暟瀛?3
绗?涓暟瀛?4
绗?涓暟瀛?5
avg= 3.00
持续输入,输入负数结束
c
#include <stdio.h>
int main(void)
{
int val;
double sum = 0;
int count = 0;
printf("不断输入整数,输入负数结束计算:\n");
while(1)
{
scanf("%d", &val);
if(val < 0)
break;
sum += val;
count++;
}
if(count == 0)
{
printf("未输入有效数据\n");
}
else
{
printf("平均值=%.2f", sum / count);
}
return 0;
}
知识点
c
/2.0 不能写成 /2:int/int 是整数除法丢小数;除以浮点自动提升为浮点运算
总和变量建议用 double,防止累加溢出
%.2f 保留 2 位小数输出,日常展示更美观
2. 整数求逆
思路
c
循环:每次 %10 拿到个位 → *10拼到新数 → /10砍掉原个位
c
#include <stdio.h>
int main(void)
{
int num;
int rev = 0;
printf("请输入一个正整数:");
scanf("%d", &num);
while(num != 0)
{
int tmp = num % 10; // 取出最后一位
rev = rev * 10 + tmp; // 拼接
num = num / 10; // 去掉最后一位
}
printf("逆序结果:%d\n", rev);
return 0;
}
c
输入:1234 → 4321
输入:7890 → 987
拓展:支持负数
c
#include <stdio.h>
int main(void)
{
int n, rev=0;
printf("输入整数:");
scanf("%d",&n);
int flag = 1;
if(n < 0)
{
flag = -1;
n = -n;
}
while(n)
{
rev = rev*10 + n%10;
n /= 10;
}
rev *= flag;
printf("逆置:%d",rev);
return 0;
}
3. 循环计算和
c
#include <stdio.h>
int main()
{
int num;
int sum = 0;
printf("不断输入整数,输入0停止,自动求和:\n");
while (1)
{
scanf("%d", &num);
if (num == 0)
{
break; // 遇到0跳出循环
}
sum += num; // 累加
}
printf("累加总和 = %d\n", sum);
return 0;
}
c
#include <stdio.h>
int main()
{
int n, sum = 0;
printf("请输入上限n:");
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
sum += i;
}
printf("1~%d总和:%d", n, sum);
return 0;
}
4. 前N项求和
c
#include <stdio.h>
int main()
{
int N, sum = 0;
printf("请输入N:");
scanf("%d", &N);
for(int i = 1; i <= N; i++)
{
sum = sum + i;
}
printf("1~%d累加和 = %d\n", N, sum);
return 0;
}
c
#include <stdio.h>
int main()
{
int N, sum = 0, i = 1;
printf("请输入N:");
scanf("%d", &N);
while(i <= N)
{
sum += i;
i++;
}
printf("和=%d",sum);
return 0;
}
5. 最大公约数
5.1 辗转相除法(欧几里得算法,推荐)
c
#include <stdio.h>
int main()
{
int a,b,temp;
printf("输入两个整数:");
scanf("%d%d",&a,&b);
while(b != 0)
{
temp = a % b;
a = b;
b = temp;
}
printf("最大公约数:%d",a);
return 0;
}
c
示例:
输入 24 18
循环:
a=24,b=18 → temp=6,a=18,b=6
a=18,b=6 → temp=0,a=6,b=0 退出,结果6
5.2 暴力从两数较小值往下枚举
c
#include <stdio.h>
int main()
{
int a,b,i;
scanf("%d%d",&a,&b);
// 取较小值
int min = a < b ? a : b;
for(i = min; i >= 1; i--)
{
if(a%i==0 && b%i==0)
{
printf("最大公约数:%d",i);
break;
}
}
return 0;
}