超星高级语言程序设计实验作业 实验07 结构体与文件实验08 结构化程序设计

本文主要是介绍超星高级语言程序设计实验作业 实验07 结构体与文件实验08 结构化程序设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

超星高级语言程序设计实验作业

实验07 结构体与文件

注:以下内容仅供交流,代码都是本人自己写的,还请同学们先自己编写再进行交流。
快期末了😅有点忙,就先不写注释了

1.复数运算

题目描述:复数可以写成A+Bi的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i^2=-1。
编写程序,分别计算两个复数的和、差、积。
输入:在一行中依次给出两个复数的实部和虚部,数字间以一个西文空格分隔。
输出:一行中按照A+Bi的格式输出两虚数的和、差、积,实部和虚部均保留2位小数;
如果B是负数,则应该写成A-|B|i的形式;如果B是零则不输出虚部;结果间以4个西文空格间隔。
样例1:
输入: 2.3 3.5 5.2 0.4
输出: 7.50+3.90i -2.90+3.10i 10.56+19.12i
样例2:
输入: 3.3 4.5 3.3 -4.5
输出: 6.60 0.00+9.00i 31.14

#include <stdio.h>
struct num{ 
float x;float y;
}a[2];
void add(struct num*p1,struct num*p2) {printf("%.2f", p1->x + p2->x);if ((p1->y + p2->y) == 0) printf("    ");else if((p1->y + p2->y )>0) printf("+%.2fi    ", p1->y + p2->y);else printf("%.2fi    ", p1->y + p2->y);
}
void J(struct num* p1, struct num* p2) {printf("%.2f", p1->x - p2->x);if ((p1->y - p2->y) == 0) printf("    ");else if ((p1->y -p2->y) > 0) printf("+%.2fi    ", p1->y - p2->y);else printf("%.2fi    ", p1->y - p2->y);
}
void C(struct num* p1, struct num* p2) {printf("%.2f", p1->x * p2->x - p1->y * p2->y);if ((p1->x * p2->y + p1->y * p2->x) == 0);else if ((p1->x * p2->y + p1->y * p2->x) > 0)printf("+%.2fi", (p1->x *p2->y + p1->y * p2->x));else printf("%.2fi", (p1->x * p2->y + p1->y * p2->x));
}
int main() {scanf_s("%f%f%f%f",&a[0].x,&a[0].y,&a[1].x,&a[1].y);add(&a[0], &a[1]);J(&a[0], &a[1]);C(&a[0], &a[1]);return 0;
}

2.构造一个表示教师的结构体(包含3个字段:姓名、性别、年龄)

编写函数,读入n个教师的信息,存入一个结构体数组中(如下图所示)。最后输出第n/2个教师的信息。
在这里插入图片描述

例如:一个教师的信息为zhangsan、false、50,另一个教师的信息为lisi、false、37。
输入:依次输入一个正整数n及n个教师的姓名、性别、年龄。(说明:n不大于10;姓名长度不超过20个英文字符;性别输入0/1表示女/男)。
输出:数组下标为n/2的教师信息。(说明:n/2直接截取整数,不进行四舍五入;性别输出Female/Male表示女/男;每个数据后均有1个空格)。
样例1:
输入:1 zhangsan 0 50
输出:zhangsan Female 50
样例2:
输入:4 zhangsan 0 50 lisi 1 28 wangwu 0 30 zhaoliu 1 34
输出:wangwu Female 30
样例3:
输入:5 zhangsan 0 50 lisi 1 28 wumei 0 30 zhaoliu 1 34 wangermazi 1 18
输出:wumei Female 30

#include <stdio.h>
struct num{char name[21];int sex;int age;
}x[10];
void W(int n) {scanf_s("%s", &x[n].name,sizeof(x[n].name));scanf_s("%d", &x[n].sex);scanf_s("%d", &x[n].age);
}
void R(int n) {printf("%s ", x[n].name);if (x[n].sex) printf("Male ");else printf("Female ");printf("%d ", x[n].age);
}
int main() {int n,i;scanf_s("%d",&n);for (i = 0; i < n; i++) {W(i);}R(n / 2);return 0;
}

实验08 结构化程序设计

1.正整数分解

题目描述:正整数n,按第一项递减的顺序依次输出其和等于n的所有不增的正整数和式。
输入:一个正整数n(0<n≤15)。
输出:每行输出如样例所示,和等于n的不增正整数和式,数字和运算符间无符号,最后一行结尾有一个回车换行符。
样例:
输入:
4
输出:
4=3+1
4=2+2
4=2+1+1
4=1+1+1+1

#include<stdio.h>
int a[15], keep;
void dfs(int m, int c, int n) {if (!m) {printf("%d=", n);for (int i = 0; i < keep-1; i++){printf("%d+", a[i]);}printf("%d\n", a[keep-1]);return;}for (int i = c; i>0; i--){a[keep++] = i;if (m-i >= 0) dfs(m - i,i, n);keep--;}return;
}
int main() {int n;scanf_s("%d", &n);dfs(n, n - 1, n);return 0;
}

这个题属实离谱…

2.N皇后问题

题目描述:
八皇后问题由高斯(C. F. Gauss)最早在1850年提出并研究,但并未完全解决。N皇后问题指在一个N×N的棋盘上放置N个皇后,使任意两个皇后都不能互相攻击。按国际象棋规则,两个皇后,若在同一行上,或在同一列上, 或在同一条斜线上, 则她们可以互相攻击。下图即满足八皇后条件的一种棋局。
编写程序给出满足条件的棋局数目。
Exp08-Basic02.jpg

输入:一个正整数N(0<N≤13)输出:棋局数目
样例1:
输入:
2
输出:
0
样例2:
输入:
8
输出:
92

#include<stdio.h>
int a[14],N,m,out;
bool check(int n);
void change(void);
void extend(void);
int main() {scanf_s("%d", &N);a[0] = 0; a[1] = 1; m = 1;while (m > 0) {if (check(m)) {if (m == N) {out++; change();}else {extend();}}else {change();}}printf("%d", out);return 0;
}
void change(void) {while (a[m]==N)m--;a[m]++;
}
void extend(void) {m++; a[m] = 1;
}
bool check(int n) {int i;for (i = 1; i <n; i++) {if(a[n]==a[i]) return false;if(a[n]-n==a[i]-i) return false;if(a[n]+n==a[i]+i)return false;}return true;
}

3.

第三题属实难😱我就不放了 (我的也是抄别人的)
老师发了一个视频讲解,大家自己看吧😁

4.Debruijn问题

题目描述:
如图所示由2^3 个二进制数字0和1组成一个环。使 2^3 个 3 位的二进制数正好在环中各出现一次。图中目前所示顺序是:0、1、2、5、3、7、6、4。设计生成这样环的程序,环由 2^n 个二进制数字组成,恰好包含 2^n 个互不相同的n位二进制数。
Exp08-Enhance02.png

输入:n(n<=4)
输出:按照字典序输出符合的答案(当出现多组本质不同的解时,仅输出字典序中最小的那个序列);每行数字间以一个西文空格间隔,行末有一个换行符。
样例1:
输入:
3
输出:
0 0 0 1 0 1 1 1

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int N, A[17], B[17];
bool judge(int i, int n);
void put(int r, int n);
void out(void);
int main() {int n;scanf_s("%d", &n);N = pow((double)2, n);for (int i = 0; i <= 16; i++) {A[i] = -1;}put(N, n);return 0;
}
void put(int r, int n) {int i;for (i = 1; i <= N; i++) {A[N - r + 1]++;if (A[N - r + 1] > 1) { A[N - r + 1] = -1;return; }if (judge(N - r + 1, n)) {if (r > 1) put(r - 1, n);else out();}}
}
void out(void) {int i;for ( i = 1; i < N; i++){printf("%d ", A[i]);}printf("%d\n", A[N]);exit(0);
}
bool judge(int i, int n) {int x;if (i < n) return true;i = i - n+1;if (i == 1) {B[i] = 0;for (int j = i; j < i + n; j++) {B[i] = B[i] * 2 + A[j];}return true;}else if (i < N - n+1) {B[i] = 0;for (int j = i; j < i + n; j++) {B[i] = B[i] * 2 + A[j];if (j <= N);else j = j % N;}for (int j = i - 1; j > 0; j--) {if (B[i] == B[j])return false;}return true;}else if (i == N - n+1) {for ( ; i <= N; i++){x = 0;B[i] = 0;for (int j = i;x<n; j++) {if (j <= N);else j = j % N;B[i] = B[i] * 2 + A[j];x++;}for (int j = i - 1; j > 0; j--) {if (B[i] == B[j]) return false;}}return true;}
}

这篇关于超星高级语言程序设计实验作业 实验07 结构体与文件实验08 结构化程序设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/410772

相关文章

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

MySQL数据类型与表操作全指南( 从基础到高级实践)

《MySQL数据类型与表操作全指南(从基础到高级实践)》本文详解MySQL数据类型分类(数值、日期/时间、字符串)及表操作(创建、修改、维护),涵盖优化技巧如数据类型选择、备份、分区,强调规范设计与... 目录mysql数据类型详解数值类型日期时间类型字符串类型表操作全解析创建表修改表结构添加列修改列删除列

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.