#include<stdio.h>#include<math.h>intsum(int a);
intmain() {
int a = 0;
scanf("%d", &a);
printf("%d", sum(a));
return0;
}
intsum(int a) {
if (a < 10) {
return a;
}
return sum(a / 10) + a % 10;
}
2. 逆序输出
#include<stdio.h>#include<math.h>voidscan();
intmain() {
scan();
return0;
}
voidscan() {
int a = 0;
scanf("%d", &a);
if (a > 0) {
scan();
printf("%d ", a);
return;
}
return;
}
3. 十进制转二进制
#include<stdio.h>#include<math.h>voidprint(int a);
intmain() {
int a = 0;
scanf("%d", &a);
print(a);
return0;
}
voidprint(int a) {
if (a == 0){
return;
}
if (a > 0) {
print(a / 2);
printf("%d",a%2);
}
}
5. fibonacci函数
#include<stdio.h>#include<stdlib.h>intfibonacci(int a);
intmain(void) {
int a = 0;
scanf("%d", &a);
printf("%d", fibonacci(a));
return0;
}
intfibonacci(int a) {
if (a == 0 || a == 1) {
return a;
}
return fibonacci(a - 1) + fibonacci(a - 2);
}
6. *号构成的菱形图案
#include<stdio.h>#include<stdlib.h>voidprint(int a);
intmain(void) {
int n = 0, a = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &a);
print(a);
}
return0;
}
voidprint(int a) {
int b = a - 1;
int c = 1;
for (int i = 1; i <= a; i++) {
for (int j = 1; j <= b; j++) {
printf(" ");
}
b -= 1;
for (int j = 1; j <= c; j++) {
printf("* ");
}
c += 2;
printf("\n");
}
b = 1;
c = 2*a-3;;
for (int i = 1; i <= a - 1; i++) {
for (int j = 1; j <= b; j++) {
printf(" ");
}
b += 1;
for (int j = 1; j <= c; j++) {
printf("* ");
}
c -= 2;
printf("\n");
}
}
7. 函数调用中的平均值
#include<stdio.h>#include<stdlib.h>floatRunningAvg(float num);
intmain() {
float num;
while (1) {
scanf("%f", &num);
if (num > 0) {
printf("%.2f\n", RunningAvg(num));
} else {
break;
}
}
}
floatRunningAvg(float num) {
staticfloat sum = 0;
staticint counter = 0;
sum += num;
counter++;
return sum / counter;
}
8. 取模
#include<stdio.h>#include<math.h>intmod(int a);
intmain(void) {
int a = 0;
scanf("%d", &a);
printf("%d\n", mod(a));
return0;
}
intmod(int a) {
if (a == 0 || a == 1) {
return1;
}
return mod(a - 1) * a % 20181111;
}
日期间相隔的天数
#include<stdio.h>intsum(int y, int m, int d) {
int i, count = 0;
for (i = 0; i < y; ++i) {
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
count += 366;
} else {
count += 365;
}
}
int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
for (i = 1; i <= m - 1; ++i) {
if (i == 2) {
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
count += 29;
} else {
count += 28;
}
} else {
count += month[i];
}
}
count += d;
return count;
}
intmain() {
int y1, y2, m1, m2, d1, d2;
scanf("%d %d %d %d %d %d", &y1, &m1, &d1, &y2, &m2, &d2);
printf("采集时间为%d天\n", sum(y2, m2, d2) - sum(y1, m1, d1));
}
Lab08 数组的基础与应用
9. 长度最小的连续子数组
#include<stdio.h>intmin(int a, int b);
intmain() {
int n;
scanf("%d",&n);
int a[10];
for(int i = 0;i<n;i++){
scanf("%d",&a[i]);
}
int s = 7;
scanf("%d",&s);
int left = 0,right = 0, sum = 0, min_length = 10000;
while (right < n) {
sum += a[right];
while (sum >= s) {
min_length = min(min_length, right - left + 1);
sum -= a[left];
left++;
}
right++;
}
printf("%d", min_length<10000?min_length:0);
return0;
}
intmin(int a, int b) {
return a <= b ? a : b;
}
6. 删除数组元素
#include<stdio.h>intmain() {
int n;
scanf("%d", &n);
int data[n];
for (int i = 0; i < n; i++) {
scanf("%d", &data[i]);
}
int target;
scanf("%d", &target);
int index = -1;
for (int i = 0; i < n; i++) {
if (data[i] == target) {
index = i;
for (int j = i; j < n - 1; j++) {
data[j] = data[j + 1];
}
break;
}
}
if (index == -1) {
printf("ERROR");
} else {
for (int i = 0; i < n - 1; i++)
printf("%d ", data[i]);
}
}
10. 求最长平台
#include<stdio.h>intmax(int a, int b);
intmain(void) {
int n = 0;
scanf("%d", &n);
int a[n];
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int length = 0, max_length = 0;
for (int i = 0; i < n; i++) {
if (i == 0) {
length = 1;
} else {
if (a[i] == a[i - 1]) {
length++;
} else {
length = 1;
}
}
max_length = max(length, max_length);
}
printf("%d", max_length);
return0;
}
intmax(int a, int b) {
return a >= b ? a : b;
}
我的评分
#include<stdio.h>doublemax(double a, double b);
doublemin(double a, double b);
intmain() {
int n;
scanf("%d", &n);
double score, MIN=1000000001, MAX=-1, sum = 0;
for (int i = 0; i < n; i++) {
scanf("%lf", &score);
MAX = max(MAX, score);
MIN = min(MIN, score);
sum += score;
}
printf("%.2f", (sum - MIN - MAX) / (n - 2));
}
doublemax(double a, double b) {
return a >= b ? a : b;
}
doublemin(double a, double b) {
return a < b ? a : b;
}
三数之和
#include<stdio.h>#include<stdbool.h>boolnot_in(int d[10][3], int length, int a, int b, int c);
intmain(void) {
int t, a[10], d[10][3],
a_index = 0, d_length = 0;
while (scanf("%d", &t) == 1) {
a[a_index] = t;
a_index++;
}
for (int i = 0; i < a_index; i++) {
for (int j = i + 1; j < a_index; j++) {
for (int k = j + 1; k < a_index; k++) {
if (a[i] + a[j] + a[k] == 0 && not_in(d, d_length, a[i], a[j], a[k])) {
printf("%d %d %d\n", a[i], a[j], a[k]);
d[d_length][0] = a[i];
d[d_length][1] = a[j];
d[d_length][2] = a[k];
d_length++;
}
}
}
}
return0;
}
boolnot_in(int arr[10][3], int length, int a, int b, int c) {
for (int i = 0; i < length; i++) {
if ((arr[i][0] == a && arr[i][1] == b && arr[i][2] == c) ||
(arr[i][0] == a && arr[i][1] == c && arr[i][2] == b) ||
(arr[i][0] == b && arr[i][1] == a && arr[i][2] == c) ||
(arr[i][0] == b && arr[i][1] == c && arr[i][2] == a) ||
(arr[i][0] == c && arr[i][1] == a && arr[i][2] == b) ||
(arr[i][0] == c && arr[i][1] == b && arr[i][2] == a)) {
returnfalse;
}
}
returntrue;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义