C语言课程设计报告
一、课程设计目的及意义
高等职业教育的目标及侧重点不同于普通高等教育,其培养的学生在毕业后应能直接上岗,具有熟练的实践操作技能。教育部《关于以就业为导向深化高等职业教育改革的若干意见》中指出,高职教育应“坚持培养面向生产、建设、管理、服务第一线需要的下得去、留得住、用得上,实践能力强、具有良好职业道德的高技能人才”。因此,加强实践性课程教学,对保证人才培养质量显得尤为重要。我院为贯彻《关于全面提高高等职业教育教学质量的若干意见》(教高[20xx]16号文件)精神,针对区域经济发展的要求,灵活调整和设置专业课程,以就业为导向,加快专业课程对应的课程设计改革。目前,我院按照由浅入深、不断深化的教学规律,构建了实践教学三层次四环节的实践课程体系(图1)。实践教学三层次包括基本技能、专业拓展、综合创新,四环节包括实验、实习实训、设计和课外实践。
二、项目教学法简介
项目教学法“项目教学法”是基于建构主义教学理论的一种教和学的模式。著名的瑞士心理学家皮亚杰认为,知识不是通过教师传授得到的,而是学生在一定的情境下,借助他人的帮助,利用必要的学习资料,通过意义建构的方式而获得的。
三、课程设计目的及要求
《C语言课程设计》是我院信息类专业的必修专业基础课程设计,在“C语言程序设计”课程教学结束后的下一学期进行,历时2周,40学时。课程开设的目的在于培养学生分析问题和解决问题的能力,为学生提供一个动手、动脑、独立实践的机会。
四、课程设计题目及要求
1. 基础训练题目
基础1:写出下面程序的输出结果。
```#include
int main() { int a = 10, b = 20; int c = a + b; printf(\"a + b = %d\\", c); return 0;}```
基础2:请实现一个求和函数,输入两个整数,输出它们的和。
```#include
int sum(int a, int b) { return a + b;}
int main() { int a = 10, b = 20; int c = sum(a, b); printf(\"a + b = %d\\", c); return 0;}```
基础3:实现一个求最大值的函数,输入一组整数,输出最大值。
```#include
int max(int a, int b, int c) { return a > b ? a > c ? a : c;}
int main() { int a = 10, b = 20, c = 30; int max_value = max(a, b, c); printf(\"最大值为:%d\\", max_value); return 0;}```
基础4:实现一个求平均值的函数,输入一组整数,输出它们的平均值。
```#include
int avg(int a, int b, int c) { return (a + b + c) / 3;}
int main() { int a = 10, b = 20, c = 30; int avg_value = avg(a, b, c); printf(\"平均值为:%d\\", avg_value); return 0;}```
基础5:实现一个求和排序函数,输入一组整数,按从小到大排序后输出。
```#include
void sort(int a[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } }}
int main() { int a[] = {5, 3, 8, 1, 6}; int n = sizeof(a) / sizeof(a[0]); sort(a, n); printf(\"排序后的整数:\\"); for (int i = 0; i < n; i++) { printf(\"%d \", a[i]); } printf(\"\\"); return 0;}```
基础6:实现一个求最大子序和的函数,输入一个整数数组,输出最大子序和。
```#include
int max_sub_seq_sum(int a[], int n) { int max_sum = a[0]; int current_sum = a[0]; for (int i = 1; i < n; i++) { current_sum = max(a[i], current_sum + a[i]); max_sum = max(max_sum, current_sum); } return max_sum;}
int main() { int a[] = {1, 4, 2, 10, 2}; int n = sizeof(a) / sizeof(a[0]); printf(\"最大子序和:%d\\", max_sub_seq_sum(a, n)); return 0;}```
基础7:实现一个求最小子序和的函数,输入一个整数数组,输出最小子序和。
```#include
int min_sub_seq_sum(int a[], int n) { int min_sum = a[0]; int current_sum = a[0]; for (int i = 1; i < n; i++) { current_sum = min(a[i], current_sum + a[i]); min_sum = min(min_sum, current_sum); } return min_sum;}
int main() { int a[] = {1, 4, 2, 10, 2}; int n = sizeof(a) / sizeof(a[0]); printf(\"最小子序和:%d\\", min_sub_seq_sum(a, n)); return 0;}```
基础8:实现一个求数组中最大子序列和函数,输入一个整数数组,输出最大子序列和。
```#include
int max_sub_seq_sum(int a[], int n) { int max_sum = a[0]; int current_sum = a[0]; for (int i = 1; i < n; i++) { current_sum = max(a[i], current_sum + a[i]); max_sum = max(max_sum, current_sum); } return max_sum;}
int main() { int a[] = {1, 4, 2, 10, 2}; int n = sizeof(a) / sizeof(a[0]); printf(\"最大子序列和:%d\\", max_sub_seq_sum(a, n)); return 0;}```
基础9:实现一个求数组中最小子序列和函数,输入一个整数数组,输出最小子序列和。
```#include
int min_sub_seq_sum(int a[], int n) { int min_sum = a[0]; int current_sum = a[0]; for (int i = 1; i < n; i++) { current_sum = min(a[i], current_sum + a[i]); min_sum = min(min_sum, current_sum); } return min_sum;}
int main() { int a[] = {1, 4, 2, 10, 2}; int n = sizeof(a) / sizeof(a[0]); printf(\"最小子序列和:%d\\", min_sub_seq_sum(a, n)); return 0;}```
基础10:实现一个求和排序数组函数,输入一个整数数组,输出排序后的数组。
```#include
void sort_and_sum(int a[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } printf(\"排序后的数组:\\"); for (int i = 0; i < n; i++) { printf(\"%d \", a[i]); } printf(\"\\");}
int main() { int a[] = {5, 3, 8, 1, 6}; int n = sizeof(a) / sizeof(a[0]); sort_and_sum(a, n); return 0;}```
五、课程设计题目及要求
1. 实现一个求和排序函数,输入一个整数数组,输出排序后的数组。
```#include
void sort_and_sum(int a[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } printf(\"排序后的数组:\\"); for (int i = 0; i < n; i++) { printf(\"%d \", a[i]); } printf(\"\\");}
int main() { int a[] = {5, 3, 8, 1, 6}; int n = sizeof(a) / sizeof(a[0]); sort_and_sum(a, n); return 0;}```
2. 实现一个求最大子序和的函数,输入一个整数数组,输出最大子序列和。
```#include
int max_sub_seq_sum(int a[], int n) { int max_sum = a[0]; int current_sum = a[0]; for (int i = 1; i < n; i++) { current_sum = max(a[i], current_sum + a[i]); max_sum = max(max_sum, current_sum); } return max_sum;}
int main() { int a[] = {1, 4, 2, 10, 2}; int n = sizeof(a) / sizeof(a[0]); printf(\"最大子序列和:%d\\", max_sub_seq_sum(a, n)); return 0;}```
3. 实现一个求最小子序和的函数,输入一个整数数组,输出最小子序列和。
```#include
int min_sub_seq_sum(int a[], int n) { int min_sum = a[0]; int current_sum = a[0]; for (int i = 1; i < n; i++) { current_sum = min(a[i], current_sum + a[i]); min_sum = min(min_sum, current_sum); } return min_sum;}
int main() { int a[] = {1, 4, 2, 10, 2}; int n = sizeof(a) / sizeof(a[0]); printf(\"最小子序列和:%d\\", min_sub_seq_sum(a, n)); return 0;}```