江苏大学805计算机技术专硕2020考研真题最后三道编程题及答案

第一题

用递归把数组的n个数实现“倒序” 主函数输入n个数,用递归将其顺序颠倒,并输出。

#include <stdio.h>
#include <math.h>
#define N 100
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void reverse(int a[],int low,int high)
{
if (low<high)
{
swap((a+low),(a+high)); //交换两个数 函数形式
reverse(a,low+ 1,high-1); //递归调用
}
}
int main(){
int a[N];
int n;
printf(“需要输入的数(n个)\n”);
scanf(%d”,&n);
int i,j;
for(i=0;i<n;i++) scanf(%d”,&a[i]);
reverse(a,0,n-1);
for(j=0;j<n;j++) printf("%d ",a[j]);
return 0;
}

第二题

男,女,小孩一共40人,共花了50元。男的花3元,女的花了2元,小孩花1元问男,女,小孩各多少人。

#include <stdio.h>
#include <math.h>
#define N 40
int main(){
int man,women,child;
for(man=0;man<=N;man++){
for(women=0;women<=N;women++){
for(child=0;child<=N;child++){
int person_sum=child+women+man;
int money_sum=child+women2+man3;
if(person_sum40&&money_sum50){
printf(“男有%d人,女有%d人,小孩有%d人\n”,man,women,child);
}
}
}
}
return 0;
}

第三题

10个负责打分的人,分值0-100,去掉最高分和最低分,余下8个分数平均分 为最终分数 要求: 1 输入50个选手名字,与10个评委打分 2 按最终得分求名次,分一样则名次一样 3 最终结果输出在result.txt,包括姓名,10位评委的打分,最终得分和名次。且上下对齐。 最终得分相同的名次相同。 如四名选手 80 75 75 70 名次 1 2 2 4

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define N 5
struct student{
char name[20];
int score[10];//10个评委打分;
double endscore;//最后的分数
int rank;//成绩排名
}stu[N];
void reverse(){
int i,j,index;
struct student temp,k;
for(i=0;i<N;i++){
k=stu[i];index=i;
for(j=i+1;j<N;j++){
if(k.endscore<stu[j].endscore){
k=stu[j];
index=j;
}
}
if(i!=index){
temp=stu[i];
stu[i]=k;
stu[index]=temp;
}
}
}
void sortrank(){
int i,j,rank=0;
for(i=0;i<N;i++){
if(rank0){
stu[i].rank=rank+1;
rank=rank+2;
}else{
if(stu[i].endscorestu[i-1].endscore){
stu[i].rank=stu[i-1].rank;
rank++;
}else{
stu[i].rank=rank;
rank++;
}
}
}
}
int main(){
int i,j;
FILE *fp;
if((fp=fopen(“result.txt”,“w+))==NULL){
printf(“cannot open the file:\n”);
exit(0);
}
printf(“请输入%d名人员信息:\n”,N);
for(i=0;i<N;i++){
scanf(%s”,stu[i].name);//输入姓名
int sum=0,max=0,min=0;
for(j=0;j<10;j++){//输入10名评委的打分
scanf(%d”,&stu[i].score[j]);
sum+=stu[i].score[j];
if(max<=stu[i].score[j]) max=stu[i].score[j];
if(min>=stu[i].score[j]) min=stu[i].score[j];
}
sum=sum-min-max;
stu[i].endscore=sum/8.0;//最终得分
}
//按照最终得分进行排序
reverse();
//按照现有的排序进行排名
sortrank();
//写入文件
for(i=0;i<N;i++){
fprintf(fp,%-s”,stu[i].name);
for(j=0;j<10;j++)
fprintf(fp,%-5d”,stu[i].score[j]);
fprintf(fp,%-5lf %-5d\n”,stu[i].endscore,stu[i].rank);
}
//在屏幕上显示信息
for(i=0;i<N;i++){
printf(%-10s”,stu[i].name);
for(j=0;j<10;j++)
printf(%-5d”,stu[i].score[j]);
printf(%-5lf %-5d\n”,stu[i].endscore,stu[i].rank);
}
fclose(fp);
return 0;
}
  • 6
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
江苏科技大学2020年计算机科学与技术专业考研复试科目数据库系统概论真题答案如下: 一、选择题 1.下列哪个不是关系型数据库管理系统的特点? A.数据以表格的形式保存 B.支持SQL语言 C.支持事务处理 D.使用NoSQL数据库技术 答案:D 2.下列哪种数据库适用于海量数据存储和高并发读写? A.关系型数据库 B.面向对象数据库 C.文档型数据库 D.键值型数据库 答案:D 3.以下哪个不是数据库管理系统的主要功能? A.数据的存储和管理 B.数据的备份和恢复 C.数据的加密和解密 D.数据的查询和统计 答案:C 4.下列哪种查询语句可以对表进行修改操作? A.SELECT B.UPDATE C.INSERT D.DELETE 答案:B 5.下列哪个数据库管理系统是开源的? A.Oracle B.SQL Server C.MySQL D.DB2 答案:C 二、简答题 1.请简述关系型数据库的特点。 答案:关系型数据库是指采用关系模型进行数据组织的数据库系统,其特点包括: (1)数据以表格的形式进行存储和管理; (2)支持SQL语言进行数据的查询、修改、删除和增加等操作; (3)支持数据的事务处理和数据的完整性约束; (4)数据可以进行复杂的关联查询和统计分析; (5)易于维护和管理,具有较好的安全性和可靠性。 2.请简述NoSQL数据库的特点。 答案:NoSQL数据库是指非关系型数据库,其特点包括: (1)不采用关系模型进行数据组织,而是采用其他数据结构,如键值对、文档、图形等; (2)不支持SQL语言,而是使用其他查询语言或API进行数据的操作; (3)适用于海量数据存储和高并发读写的场景,具有良好的可扩展性和性能; (4)不支持事务处理和数据的完整性约束,但具有高可用性和容错性; (5)适合于分布式和云计算环境下的应用。 三、计算题 1.给定一个学生表,包含三个字段:学号、姓名、年龄。请使用SQL语句查询年龄大于20岁的学生信息。 答案: SELECT * FROM student WHERE age > 20; 2.给定一个订单表和一个商品表,表结构分别如下: 订单表(order):订单编号(order_id)、用户编号(user_id)、订单金额(amount)、订单时间(time) 商品表(product):商品编号(product_id)、商品名称(name)、商品单价(price) 请使用SQL语句查询用户编号为101的用户在2019年5月1日之后的订单总金额。 答案: SELECT SUM(amount) FROM order WHERE user_id = 101 AND time > '2019-05-01'; 3.给定一个部门表和一个员工表,表结构分别如下: 部门表(department):部门编号(dept_id)、部门名称(name)、部门经理(manager_id) 员工表(employee):员工编号(emp_id)、员工姓名(name)、所在部门(dept_id)、工资(salary) 请使用SQL语句查询每个部门的平均工资和最高工资。 答案: SELECT department.name, AVG(employee.salary), MAX(employee.salary) FROM department, employee WHERE department.dept_id = employee.dept_id GROUP BY department.name;

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值