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

相关文章

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤