超星高级语言程序设计实验作业 实验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

相关文章

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

基于Go语言实现一个压测工具

《基于Go语言实现一个压测工具》这篇文章主要为大家详细介绍了基于Go语言实现一个简单的压测工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理客户端模块Http客户端处理Grpc客户端处理Websocket客户端

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

C语言线程池的常见实现方式详解

《C语言线程池的常见实现方式详解》本文介绍了如何使用C语言实现一个基本的线程池,线程池的实现包括工作线程、任务队列、任务调度、线程池的初始化、任务添加、销毁等步骤,感兴趣的朋友跟随小编一起看看吧... 目录1. 线程池的基本结构2. 线程池的实现步骤3. 线程池的核心数据结构4. 线程池的详细实现4.1 初