成信大807程序综合设计2015-2022历年真题及答案【持续更新中】

2015年

此答案系学长自己做出来的答案,并非官方答案,有问题欢迎留言交流!由于答案不完整,大家也可以将自己做的以及相关想法写在留言栏里面,方便大家交流查阅,谢谢!

一、填空题

(1) 1
(2) test1.txt
(3) int FindMax(int x[N][M])
(4) max = FindMax(x);
(5) return max;
(6) printf(“%c”, a[i])
(7) 字符型
(8) 变量 a, b 的值互换
(9) c = 10 + 2 * ( n - 1 )
(10) age(n)
(11) 题目有误,s1 为字符串常量,常量的值是不能被改变的
(12) 3

二、程序改错题

10题.
(1) char * p_str;
(2) if ((p_str=(char *)malloc(100)) == NULL)
(3) free(p_str);
11题.
(4) void input(struct person * x);
(5) input(&y);
(6) void input(struct person * x)
12题.
(7) double result = 0;
(8) result += 1.0 / fac;
13题.
(9) int i;
(10) printf("*****\n");

三、分析程序题

14题:
功能:判断数组 a 和数组 b 对应位置是否相当,若相等,则结束;若不等,则输出 a 对应位置的元素。
运行结果:12 4 17 24 27

15题:
功能:将字符串两两之间进行比较,升序排列。

四、算法设计及编程题

编程题答案请参考陈宏松同学的博客,在此我们由衷地对他表示感谢!
http://www.chenhongsong.top/index.php/2019/11/16/2015/

2016年

一、单项选择题

  1. A
  2. C
  3. A
  4. A
  5. A
  6. D
  7. B
  8. A
  9. D
  10. B

二、判断题

  1. ×
  2. ×
  3. ×
  4. ×
  5. ×

三、程序分析题

21题:
功能:对两个变量进行基本的四则运算,其中若除数为 0 或运算符不为 + ,- ,*,/ 中的一种,则结果为 0。
运行结果:
(1) 12 + 120 = 132
(2) 60 / 3 = 20

22题:
功能:对输入的 n 个数进行冒泡排序,顺序为由小到大升序排列。
运行结果:

13   27   32   38   49   55   61   76   86   87

23题:

题目有误,错在下面这行代码
str[i++] = str[i++] - 'a' + 'A'
大家应该能看懂具体是怎么回事~

功能:将字符串中小写字母转换成大写字母。
运行结果:Output: INTRODUCTION OF C++ LANGUAGE

四、程序设计题

编程题答案请参考陈宏松同学的博客,在此我们由衷地对他表示感谢!
http://www.chenhongsong.top/index.php/2019/11/16/2016%e3%80%8a807%e3%80%8b%e7%bc%96%e7%a8%8b/

2017年

一、单项选择题

  1. C
  2. A
  3. D
  4. A
  5. D
  6. A
  7. C
  8. B
  9. A
  10. D

二、判断题

  1. ×
  2. ×
  3. ×
  4. ×
  5. ×
  6. ×
  7. ×

三、程序分析题

21题:
功能:将输入的三个数进行降序排列。
运行结果:67 56 48

22题:

题目中的k1k2写错了,分别对应的是score1score2
功能:输出每个人的名字和对应的总分。
运行结果:
name: Zhangwei total=170.000000
name: Wangfeng total=150.000000

23题:
功能:输入15个数存入一个二维数组中,输出这15个数中的最大值和对应的下标。
运行结果:a[2][1]=92

四、程序设计题

编程题答案请参考陈宏松同学的博客,在此我们由衷地对他表示感谢!
http://www.chenhongsong.top/index.php/2019/11/16/2017/

26题:结构体
描述和流程图略,代码如下:

#include <stdio.h>

int main(void)
{
	struct student
	{
		char name[10];
		float chinese;
		float math;
		float english;
	}stu[4] = { "zhao", 97.5, 69.0, 78.0,
				"qian", 80.0, 93.0, 87.5,
				"sun", 75.0, 89.5, 68.5,
				"li", 72.5, 68.5, 54.0};
	
	int max_average_index = 0;
	int i;
	float temp, max_average;
	for (i=0; i<4; i++)
	{
		temp = (stu[i].chinese + stu[i].math + stu[i].english) / 3.0;
		if (i==0)
		{
			max_average = temp;
		}
		else
		{
			if (temp > max_average)
			{
				max_average = temp;
				max_average_index = i;
			}
		}
	}
	printf("平均分最高的学生信息如下:\n");
	printf("姓名:%s\t语文:%.1f\t数学:%.1f\t外语:%.1f\n", stu[max_average_index].name, 
		stu[max_average_index].chinese, stu[max_average_index].math, stu[max_average_index].english);
	
	return 0;
}

2018年

一、单项选择题

  1. B
  2. C
  3. A
  4. D
  5. A
  6. D
  7. B
  8. C
  9. C
  10. B

二、判断题

  1. 修改为 ×,原因见评论
  2. ×
  3. ×
  4. ×
  5. ×
  6. ×
  7. ×

三、程序分析题

21题:
功能:对字符串的字母进行计数,并区分大小写。
运行结果:
K - 1
O - 1
T - 1
a - 2
e - 1
g - 1
h - 1
i - 2
m - 1
o - 1
p - 1
r - 2
s - 3
t - 2

上面的答案是错误的,正确答案如下(更新于2018年11月11日17:05:28)
功能:对字符串中的字母进行统计,不区分大小写,最终在输出计数结果时统一按照大写字母输出结果!
运行结果:

统计结果为:
A - 2
E - 1
G - 1
H - 1
I - 2
K - 1
M - 1
O - 2
P - 1
R - 2
S - 3
T - 3

22题:
功能:分别输出成绩最高与最低的学生的姓名与分数。
运行结果:

Max is: Wanghai, 93
Min is: Liuhong, 62

23题:
功能:将输入的正整数逆序输出。
运行结果:54321

四、程序设计题

编程题答案请参考陈宏松同学的博客,在此我们由衷地对他表示感谢!
http://www.chenhongsong.top/index.php/2019/11/16/2018/

25题:

#include<stdio.h>
#include<string.h>

#define N 100

struct person
{
	char name[20];
	char sex;
	int age;
}per[N];

int main()
{
	int i, count[6]={0};
	printf("请输入100个人的姓名、性别和年龄:\n");
	for(i=0;i<N;i++)
	{
		printf("请输入第 %d 个人的信息:\n", i+1); 
		gets(per[i].name);
		per[i].sex = getchar();
		scanf("%d", &per[i].age);
		getchar(); // 接收多余的回车符 
	}
	for(i=0; i<N; i++)
	{
		if(per[i].sex == 'M')
		{
			if(per[i].age>=0 && per[i].age<=29)
			{
				count[0]++;
			}
			else if(per[i].age>=30 && per[i].age<=59)
			{
				count[1]++;
			}
			else if(per[i].age>=60)
			{
				count[2]++;
			}
		}
		else if(per[i].sex=='W')
		{
			
			if(per[i].age>=0 && per[i].age<=29)
			{
				count[3]++;
			}
			else if(per[i].age>=30 && per[i].age<=59)
			{
				count[4]++;
			}
			else if(per[i].age>=60)
			{
				count[5]++;
			}
		}
		
	}
	printf("男性0~29岁:%d人, 30~59岁:%d人, 60岁以上:%d人\n", count[0], count[1], count[2]);
	printf("女性0~29岁:%d人, 30~59岁:%d人, 60岁以上:%d人\n", count[3], count[4], count[5]);
	
	return 0;
} 

26题:

此题的答案由一位不愿意透露姓名的好心人提供,让我们一起感谢他吧!

#include<stdio.h>
#include<string.h>

void sort(char a[],int len)
{
	char b[100];
	int m=0;
	for(int i=0;i<len;i++)
	{
		if(a[i]<'0' || a[i]>'9')
		{	
			b[m]=a[i];
			m++;
			
		}
	}
	for(int j=0;j<m;j++)
	{
		printf("%c",b[j]);
	}
	putchar('\n');
}


int main()
{
	char a[100];
	
	gets(a);

	int len=strlen(a);

	sort(a,len);
	
	return 0;
}

2019年

一、单项选择题

  1. C
  2. D
  3. A
  4. C
  5. B
  6. C
  7. A
  8. D
  9. A
  10. B

二、判断题

  1. ×
  2. ×
  3. ×
  4. 应该是 ×
  5. ×
  6. ×
  7. ×

三、程序分析题

21题:

22题:
判断字符串2是否为字符串1的子串,如果是则输出“yes”,否则输出“no”

23题:

四、程序设计题

编程题答案请参考陈宏松同学的博客,在此我们由衷地对他表示感谢!
http://www.chenhongsong.top/index.php/2019/11/16/2019%e3%80%8a807%e3%80%8b%e7%bc%96%e7%a8%8b/

24题:

25题:

#include <stdio.h>
#define N 3

int main(void)
{
	struct student {
		int num;
		int math;
		int c_language;
	}stu[N];
	int i, max_score, count;
	for (i=0, max_score=0; i<N; i++)
	{
		scanf("%d%d%d", &stu[i].num, &stu[i].math, &stu[i].c_language);
		if (max_score < stu[i].c_language)
			max_score = stu[i].c_language;
	}
	printf("C语言分数最高的学生各项数据如下:\n");  
	for (i=0, count=0; i<N; i++)
	{
		if (max_score == stu[i].c_language)
		{
			printf("%d\t%d\t%d\n", stu[i].num, stu[i].math, stu[i].c_language);
			count++;
		}
	}
	printf("C语言分数最高的学生人数为:%d\n", count);
	return 0;
} 

const与#define相比,区别和优点超详解总结!

26题:

2021年大题回忆版

从2020年开始,学校已不再公开真题,因此以下为热心网友提供的大题回忆版

一、阐述程序设计思想,画出程序流程图,不需要给出代码

  1. 设计一个函数fun,其作用为使数组中最大元素项与第一位互换,数组中最小元素项与最后一位互换。(使用指针实现)
  2. 现有两个递增有序链表L1与L2,P1、P2指向两链表头节点。利用两个链表的空间节点及指针P1、P2,构造出两列表合并后的有序递减序列L3。

二、阐述程序设计思想,画出主要流程,并给出代码

  1. 选择合适的数据结构保存十个工人信息(包括编号、姓名、工龄和工资)。使用冒泡算法将工人按照工龄从大到小排序,并输出排序后的结果。
  2. 有一个长度为10的字符串,输入一个字串,调用Find函数找出字符串中含有输入子串的个数,并在主函数输出结果。
  3. 现有ABC三个顺序表,要求在顺序表A中删除BC含有的元素后构建新的顺序表后输出。(结构体中的数据为int类型)

2022年大题回忆版

算法流程图:先叙述程序设计思想,再画出程序流程图,不需要给出代码。

  1. 选择排序

  2. 有很多集装箱,每箱重量不等,有一艘船,承重为C,如何可以装最多数量的箱子,不考虑容积,说明原因。

读程序描述功能

  1. 素数和合数判断
  2. 给出一维数组的12个数据,每个数字和第一个数比较大小,小于第一个数的得出的个数作为一个下标和第一个数交换(即,若有3个数小于第一个数则将a[3]和a[0]交换)
  3. 输入字符串形式的16进制数换算成10进制需判断输入是否合法

程序设计题:先叙述程序设计思想,再画出程序主要流程,然后写出程序代码

  1. 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。

  2. A. 从1.txt中读出数据,计算大写字母,小写字母,数字和总的行数(最后一行没有换行符号)
    B. 从1.txt中读出数据,将每行首字母改为大写,非首字母改为小写,写到2.txt中,并输出(输出显示符号空格等,2.txt中不显示符号空格)

  3. A. 根据员工的性别分别统计各部门男女员工的平均工资和平均年龄(员工信息包括:工号 姓名 性别 年龄 部门 工资)
    B. 判断5000工资以上的男员工的平均年龄是否大于相应条件的女员工的平均年龄,输出结果要求为“true”或者“false”

此答案系学长自己做出来的答案,并非官方答案,有问题欢迎留言交流!由于答案不完整,大家也可以将自己做的以及相关想法写在留言栏里面,方便大家交流查阅,谢谢!

  • 23
    点赞
  • 195
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
### 回答1: 您好,我是AI语言助手,以下是对您的回复: 20201022-成信大-c语言程序设计-20201学期《c语言程序设计b》是一门面向大学生的C语言程序设计课程,主要教授C语言的基础知识和编程技巧,包括数据类型、运算符、流程控制语句、函数、指针、数组、结构体等内容。通过本课程的学习,学生可以掌握C语言的基本语法和编程思想,提高编程能力和解决问题的能力,为以后的编程学习和工作打下坚实的基础。 ### 回答2: 20201学期的《c语言程序设计b》是一个深入学习C语言的课程,教授的是C语言的高级应用。在本次课程,学生将会进一步学习C语言的语法、程序设计思路以及具体的编码实践。 首先,学生将会学习C语言的函数、指针、结构体、联合体、枚举等高级概念。这些概念是C语言面向对象编程至关重要的概念,也是学生在日后编写复杂程序时所必须了解的内容。此外,在学习这些概念的同时,学生还将学习如何使用宏定义和预编译指令来进一步优化程序性能。 其次,学生将会进行具体的编码实践,包括基于C语言的数据结构设计和实现、字符串处理、文件操作、网络编程等等。这些项目和实践将会提供给学生大量的机会来将所学的概念应用到具体的场景,帮助学生更深入地理解C语言的应用。 此外,学生还将参加课堂讨论、代码评审等活动,通过这些活动来提高自己的编程能力、代码质量和团队协作能力。教师也将会给学生提供详细的反馈,帮助他们改善自己的问题和提高自己的能力。 总之,《c语言程序设计b》是一门非常重要的课程,对于学生日后从事计算机编程工作具有非常重要的意义。通过学习这门课程,学生将会大幅提高自己的编程能力、透彻理解C语言并将其应用到实际工作。 ### 回答3: 成信大-20201学期《c语言程序设计b》是一门针对深入学习C语言的高级课程,内容涵盖了高级数据结构、算法设计、动态内存分配、文件操作等等。 在这门课程,学生将通过实践和理论学习,掌握C语言的高级编程技巧和策略。课程的重点之一是高级数据结构,包括链表、树、哈希表、图等等,学生将深入理解数据结构的实现和应用。 除此之外,课程还将涉及算法设计和分析,学生将学习如何设计出高效的算法,并进行时间和空间复杂度分析。动态内存分配和文件操作也是这门课程的重点,这些技术对于C语言程序设计来说非常重要。 学生在课程还将开展实践项目,以实现理论学习。通过项目实践,学生将在实际应用学到的技术,发现其存在的问题并解决。 总之,成信大-20201学期《c语言程序设计b》是一门非常高级的、面向深度学习的课程。通过系统学习和实践的方式,学生将深入掌握C语言的高级编程技巧。这门课程对于想要深入学习C语言的学生来说是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风醉雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值