作业智慧树

结满作业设计丰硕成果

C语言程序设计作业3形考答案

  《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;
}

Copyright Your WebSite.Some Rights Reserved.