LSY_C语言编程题
1. 二维数组转置
#include <stdio.h>// 转置函数
void transpose(float arr[5][5]) {float temp;for (int i = 0; i < 5; i++) {for (int j = i + 1; j < 5; j++) {temp = arr[i][j];arr[i][j] = arr[j][i];arr[j][i] = temp;}}
}int main() {float arr[5][5] = { {1.1,2.2,3.3,4.4,5.5},{6.6,7.7,8.8,9.9,1.2},{2.3,3.4,4.5,5.6,6.7},{7.8,8.9,9.0,1.3,2.4},{3.5,4.6,5.7,6.8,7.9} };transpose(arr);for (int i = 0; i < 5; i++) {for (int j = 0; j < 5; j++) {printf("%.1f ", arr[i][j]);}printf("\n");}return 0;
}
2. 递归求斐波那契数列
#include <stdio.h>// 递归函数
int fibonacci(int n) {if (n == 1 || n == 2) return 1;return fibonacci(n - 1) + fibonacci(n - 2);
}int main() {int n;printf("输入 n:");scanf("%d", &n);printf("斐波那契第 %d 项:%d\n", n, fibonacci(n));return 0;
}
3. 选择排序字符数组
#include <stdio.h>// 选择排序函数
void selectSort(char arr[], int n) {char temp;for (int i = 0; i < n - 1; i++) {int min = i;for (int j = i + 1; j < n; j++) {if (arr[j] < arr[min]) min = j;}temp = arr[i];arr[i] = arr[min];arr[min] = temp;}
}int main() {char arr[10];printf("输入 10 个字符:");for (int i = 0; i < 10; i++) {scanf(" %c", &arr[i]); }selectSort(arr, 10);printf("排序后:");for (int i = 0; i < 10; i++) {printf("%c ", arr[i]);}return 0;
}
4. 指针实现从大到小输出
#include <stdio.h>// 交换并输出函数
void swapPrint(int *a, int *b) {if (*a < *b) {int temp = *a;*a = *b;*b = temp;}printf("%d %d\n", *a, *b);
}int main() {int x, y;printf("输入两个数:");scanf("%d %d", &x, &y);swapPrint(&x, &y);return 0;
}
5. 学生信息排序
#include <stdio.h>// 学生结构体
typedef struct {int id;char name[20];char gender;int age;char addr[50];float chinese, math, english;float avg;
} Student;// 排序函数(冒泡排序实现)
void sortStudents(Student students[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (students[j].avg > students[j + 1].avg || (students[j].avg == students[j + 1].avg && students[j].id > students[j + 1].id)) {Student temp = students[j];students[j] = students[j + 1];students[j + 1] = temp;}}}
}int main() {Student students[10];// 输入学生信息for (int i = 0; i < 10; i++) {printf("输入第 %d 个学生信息(学号 姓名 性别 年龄 家庭住址 语文 数学 英语):\n", i + 1);scanf("%d %s %c %d %s %f %f %f", &students[i].id, students[i].name, &students[i].gender, &students[i].age, students[i].addr, &students[i].chinese, &students[i].math, &students[i].english);students[i].avg = (students[i].chinese + students[i].math + students[i].english) / 3;}// 输出排序前printf("\n排序前:\n");for (int i = 0; i < 10; i++) {printf("学号:%d 姓名:%s 平均分:%.2f\n", students[i].id, students[i].name, students[i].avg);}// 排序sortStudents(students, 10);// 输出排序后printf("\n排序后:\n");for (int i = 0; i < 10; i++) {printf("学号:%d 姓名:%s 平均分:%.2f\n", students[i].id, students[i].name, students[i].avg);}return 0;
}
6. 字符写入文件
#include <stdio.h>int main() {char ch;FILE *fp = fopen("output.txt", "w"); if (fp == NULL) {printf("文件打开失败!\n");return 1;}printf("输入 20 个字符:");for (int i = 0; i < 20; i++) {scanf(" %c", &ch); fputc(ch, fp);}fclose(fp);printf("字符已写入文件 output.txt\n");return 0;
}