超星高级语言程序设计实验作业 实验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语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Java中的for循环高级用法

《Java中的for循环高级用法》本文系统解析Java中传统、增强型for循环、StreamAPI及并行流的实现原理与性能差异,并通过大量代码示例展示实际开发中的最佳实践,感兴趣的朋友一起看看吧... 目录前言一、基础篇:传统for循环1.1 标准语法结构1.2 典型应用场景二、进阶篇:增强型for循环2.

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python循环结构全面解析

《Python循环结构全面解析》循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随... 目录for-in循环while循环循环控制语句break语句continue语句else子句嵌套的循