《C语言程序设计二次作业》
一、作业目的
本次作业旨在巩固和加深学生对C语言程序设计基础知识的理解和应用,提高学生的编程能力和问题解决能力。通过本次作业,使学生能够熟练运用C语言实现简单的算法,掌握函数的定义与调用,以及数组、指针等高级特性。
二、作业内容
作业题目
(1)编写一个C语言程序,实现以下功能:
输入10个整数,存储在数组中;
对数组中的元素进行排序(从小到大);
输出排序后的数组。
(2)编写一个C语言程序,实现以下功能:
输入一个字符串,长度不超过100;
将字符串中的小写字母转换为大写字母;
输出转换后的字符串。
(3)编写一个C语言程序,实现以下功能:
输入一个整数n(n≥2),计算并输出斐波那契数列的前n项;
斐波那契数列定义如下:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2)。
(4)编写一个C语言程序,实现以下功能:
输入一个整数m(m≥1),计算并输出1到m之间所有素数的和;
素数定义:一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。
(5)编写一个C语言程序,实现以下功能:
输入一个整数数组,长度不超过20;
计算并输出数组中所有元素的和、平均值、最大值和最小值。
作业要求
(1)每个程序必须包含main函数,且main函数内不得直接调用其他函数;
(2)每个程序必须使用函数实现主要功能,函数定义清晰、命名规范;
(3)每个程序必须使用数组、指针等高级特性;
(4)每个程序必须包含注释,解释程序的主要功能和关键代码;
(5)每个程序必须通过编译和运行测试,确保程序的正确性。
三、作业解析
作业题目解析
(1)排序问题:可以使用冒泡排序、选择排序或插入排序等算法实现。这里以冒泡排序为例,具体步骤如下:
定义一个长度为10的整数数组;
使用循环输入10个整数,存储在数组中;
使用两层循环实现冒泡排序;
输出排序后的数组。
(2)字符串转换问题:可以使用循环遍历字符串中的每个字符,判断字符是否为小写字母,如果是,则将其转换为大写字母。具体步骤如下:
定义一个长度为101的字符数组(包括结束符' ');
使用循环输入字符串;
使用循环遍历字符串中的每个字符,判断是否为小写字母,如果是,则转换为大写字母;
输出转换后的字符串。
(3)斐波那契数列问题:可以使用递归或循环实现。这里以循环为例,具体步骤如下:
定义一个整数变量n,用于存储用户输入的整数;
使用循环计算斐波那契数列的前n项;
输出斐波那契数列的前n项。
(4)素数和问题:可以使用循环和判断语句实现。具体步骤如下:
定义一个整数变量m,用于存储用户输入的整数;
使用循环计算1到m之间所有素数的和;
输出素数的和。
(5)数组统计问题:可以使用循环和判断语句实现。具体步骤如下:
定义一个整数数组,长度不超过20;
使用循环输入数组中的元素;
使用循环计算数组中所有元素的和、平均值、最大值和最小值;
输出计算结果。
作业示例代码
以下为第(1)题的示例代码:
#include <stdio.h>
void sort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[10], i;
printf("请输入10个整数:
");
for (i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
sort(arr, 10);
printf("排序后的数组:
");
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("
");
return 0;
}
四、作业评价
评价标准
(1)程序正确性:程序能够正确实现题目要求的功能;
(2)代码规范性:代码结构清晰,命名规范,注释完整;
(3)算法效率:排序算法选择合理,程序运行效率较高;
(4)代码可读性:代码易于理解,逻辑性强。
评价方法
(1)教师批改:教师根据评价标准对学生的作业进行批改,给出评分和建议;
(2)学生互评:学生之间相互评价,取长补短,共同进步。
五、作业总结
通过本次作业,学生应能够熟练运用C语言实现简单的算法,掌握函数的定义与调用,以及数组、指针等高级特性。在编程过程中,注重代码规范和算法效率,培养良好的编程习惯。同时,通过评价和反馈,不断提高自己的编程能力和问题解决能力。