《C语言程序设计主观作业》
一、作业目的
本次作业旨在巩固和加深学生对C语言程序设计的基本概念、语法规则、算法设计与实现方法的理解,提高学生的编程能力、问题解决能力和创新意识。通过本次作业,希望学生能够熟练运用C语言解决实际问题,为后续课程的学习打下坚实基础。
二、作业内容
基础题(共30分)
(1)编写一个C程序,实现以下功能:
输入:一个整数n(1≤n≤1000)
输出:输出n的阶乘(n!)
要求:使用循环结构实现。
(2)编写一个C程序,实现以下功能:
输入:一个字符串str(长度不超过100)
输出:输出字符串str中字母的个数。
要求:不使用库函数。
(3)编写一个C程序,实现以下功能:
输入:一个整数数组arr(长度不超过100)
输出:输出数组arr中的最大值和最小值。
要求:不使用库函数。
提高题(共40分)
(1)编写一个C程序,实现以下功能:
输入:一个整数n(1≤n≤1000)
输出:输出n的阶乘(n!)的每一位数字。
要求:使用递归函数实现。
(2)编写一个C程序,实现以下功能:
输入:一个字符串str(长度不超过100)
输出:输出字符串str中所有单词的长度。
要求:单词之间以空格分隔,不使用库函数。
(3)编写一个C程序,实现以下功能:
输入:一个整数数组arr(长度不超过100)
输出:输出数组arr中所有奇数的平均值。
要求:不使用库函数。
创新题(共30分)
(1)编写一个C程序,实现以下功能:
输入:一个整数n(1≤n≤1000)
输出:输出n的阶乘(n!)的每一位数字,并以倒序排列。
要求:使用递归函数实现。
(2)编写一个C程序,实现以下功能:
输入:一个字符串str(长度不超过100)
输出:输出字符串str中所有单词的长度,并按长度从大到小排序。
要求:单词之间以空格分隔,不使用库函数。
(3)编写一个C程序,实现以下功能:
输入:一个整数数组arr(长度不超过100)
输出:输出数组arr中所有奇数的平均值,并输出所有奇数的和。
要求:不使用库函数。
三、作业要求
每位同学独立完成作业,不得抄袭他人成果。
作业格式要求:
(1)每个程序单独编写在一个文件中,文件名以“学号_姓名_题目编号”命名,如“123456_张三_1.c”。
(2)程序代码注释清晰,命名规范,具有良好的可读性。
(3)每个程序文件开头包含以下信息:
/*
* 学号:123456
* 姓名:张三
* 题目编号:1
* 提交日期:2022年10月1日
*/
作业提交方式:
(1)将所有程序文件打包成一个压缩文件,文件名为“学号_姓名.zip”。
(2)将压缩文件发送至课程邮箱,邮件主题为“C语言程序设计主观作业_学号_姓名”。
四、作业评分标准
基础题:每题10分,共30分。
(1)程序正确性:5分
(2)代码可读性:3分
(3)注释完整性:2分
提高题:每题15分,共40分。
(1)程序正确性:10分
(2)代码可读性:4分
(3)注释完整性:1分
创新题:每题10分,共30分。
(1)程序正确性:7分
(2)代码可读性:2分
(3)创新性:1分
五、作业反馈
作业提交后,教师将对作业进行批改,并在一周内给出评分及反馈意见。
学生需根据反馈意见进行修改,以提高编程能力。
作业成绩将计入课程总评成绩,请同学们认真对待。
六、作业示例
以下为部分题目的示例代码,仅供参考。
基础题(1)
#include <stdio.h>
int main() {
int n, i, factorial = 1;
scanf("%d", &n);
for (i = 1; i <= n; i++) {
factorial *= i;
}
printf("%d
", factorial);
return 0;
}
提高题(1)
#include <stdio.h>
int factorial(int n) {
if (n == 0) {
return 1;
}
return n * factorial(n - 1);
}
int main() {
int n, i, temp;
scanf("%d", &n);
temp = factorial(n);
while (temp > 0) {
printf("%d", temp % 10);
temp /= 10;
}
printf("
");
return 0;
}
创新题(1)
#include <stdio.h>
int factorial(int n) {
if (n == 0) {
return 1;
}
return n * factorial(n - 1);
}
int main() {
int n, i, temp;
scanf("%d", &n);
temp = factorial(n);
while (temp > 0) {
printf("%d", temp % 10);
temp /= 10;
}
printf("
");
return 0;
}