《C语言程序设计作业3形考答案》
一、作业目的
本次作业旨在巩固学生对C语言程序设计的基本概念、语法规则和编程技巧的理解,提高学生的编程能力,培养学生的逻辑思维和问题解决能力。
二、作业内容
基础知识部分
(1)选择题(每题2分,共20分)
以下哪个选项是C语言的关键字?
A. include B. define C. if D. struct
在C语言中,以下哪个运算符用于取模?
A. % B. / C. * D. &
下列哪个选项表示逻辑非?
A. && B. || C. ! D. |
在C语言中,以下哪个函数用于输入字符串?
A. scanf() B. printf() C. gets() D. putchar()
以下哪个选项表示字符串的结束符?
A. ' ' B. '
' C. '
' D. ' '
(2)填空题(每题2分,共20分)
C语言中,定义整型变量的关键字是______。
在C语言中,数组的下标从______开始。
以下程序段的输出结果是______。
#include <stdio.h>
int main() {
int a = 5, b = 3;
printf("%d
", a % b);
return 0;
}
在C语言中,函数的返回类型为void时,表示该函数______。
以下程序段的输出结果是______。
#include <stdio.h>
int main() {
int a = 10, b = 20;
a += b;
b -= a;
printf("%d %d
", a, b);
return 0;
}
编程题(共60分)
(1)编写一个程序,实现以下功能:
输入一个整数n(n≥2),判断n是否为素数;
如果n是素数,输出“n is a prime number”;
如果n不是素数,输出“n is not a prime number”。
(2)编写一个程序,实现以下功能:
输入一个字符串str,计算并输出字符串str的长度;
输出字符串str中每个字符的ASCII值;
输出字符串str的反转字符串。
(3)编写一个程序,实现以下功能:
输入一个整数数组arr,计算并输出数组arr的平均值;
输出数组arr中的最大值和最小值;
输出数组arr的排序结果(从小到大)。
三、作业要求
作业需在规定时间内完成,逾期提交将扣除相应分数。
作业要求独立完成,不得抄袭他人代码,一经发现,将扣除全部分数。
作业代码需规范、简洁,注释清晰,便于理解。
作业提交时,需将源代码文件(.c文件)和可执行文件(.exe文件)一起打包,以“学号_姓名”命名,发送至指定邮箱。
四、作业评分标准
基础知识部分:选择题和填空题共40分,每题2分。
编程题部分:共60分,每个题目20分。
功能实现:10分;
代码规范:5分;
注释清晰:5分。
五、作业解析
基础知识部分
(1)选择题答案:
C 2. A 3. C 4. C 5. A
(2)填空题答案:
int 2. 0 3. 2 4. 没有返回值 5. -10 10
编程题解析:
(1)判断素数:
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int n;
scanf("%d", &n);
if (is_prime(n)) {
printf("%d is a prime number
", n);
} else {
printf("%d is not a prime number
", n);
}
return 0;
}
(2)字符串处理:
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
scanf("%s", str);
int len = strlen(str);
printf("Length: %d
", len);
for (int i = 0; i < len; i++) {
printf("%c: %d
", str[i], str[i]);
}
char reverse_str[100];
for (int i = 0; i < len; i++) {
reverse_str[i] = str[len - 1 - i];
}
reverse_str[len] = ' ';
printf("Reverse string: %s
", reverse_str);
return 0;
}
(3)数组处理:
#include <stdio.h>
void sort(int arr[], int len) {
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[100], len, sum = 0, max = 0, min = 0;
scanf("%d", &len);
for (int i = 0; i < len; i++) {
scanf("%d", &arr[i]);
sum += arr[i];
if (i == 0) {
max = arr[i];
min = arr[i];
} else {
if (arr[i] > max) max = arr[i];
if (arr[i] < min) min = arr[i];
}
}
double avg = (double)sum / len;
printf("Average: %.2f
", avg);
printf("Max: %d
", max);
printf("Min: %d
", min);
sort(arr, len);
printf("Sorted array: ");
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("
");
return 0;
}