本人能力有限,发出只为帮助有需要的人。

建议同学们自己写完后再进行讨论。

EX04开始难度提升,由于篇幅问题就分开发了。

1.(编程题)

题目编号:Exp04-Basic01,GJBook3例-06-13
题目名称:括号匹配
题目描述:编写程序,从终端读入以‘@’为结束符的字符序列,检查该字符序列中的 ( 与 )、 [ 与 ] 、{ 与 } 是否匹配(个数相等且位置不相交)。
输入:包含一串以‘@’为结束符的字符串,其间可能包含空白或其它非括号字符。
输出:如果字符串中三类括号匹配,则输出YES;否则输出NO。
样例1:
输入:
{a,a}b{c[cc]c}  {a(bb[cc]dd)a}@
输出:
YES
样例2:
输入:
{a,a}b{c[cc]c] {a(bb[cc]dd)a}@
输出:
NO

#include<stdio.h>
#include<stdlib.h>
#define SIZE 10
char stack[SIZE],ch,out;
int top,flag=0;
int push(char x);
char pop(void);
void check(char x,char y);
int main(void)
{top=0;push('@');//栈的第一个元素ch=getchar();while(ch!='@'){switch(ch)//筛选所有括号入栈{case'(':case'[':case'{':push(ch);break;//switch的break用法case')':out=pop();check(out,'(');break;case']':out=pop();check(out,'[');break;case'}':out=pop();check(out,'{');break;}ch=getchar();//检测下一个char//printf("%d\n",flag);}if(flag==0)//检测flag是否被改变printf("YES");elseprintf("NO");return 0;
}
int push(char x)//压入
{if(top>SIZE-1)//栈的输入大于等于SIZEreturn 0;else{stack[top]=x;top+=1;return 1;}
}
char pop(void)//弹出
{if(top<1)//栈为空的情况return 0;else{top-=1;out=stack[top];return out;}
}void check(char x,char y)//检测左右括号
{if(x=='@'||x=='\0')//检测栈是否弹出结束flag=1;else if(y!=x)//检测括号没有交叉flag=1;
}

2. (程序题)
题目编号:Exp04-Basic02
题目名称:n倍数关系
题目描述:
给定若干不完全相同的正整数(<10000)和n(n<5),计算这些正整数里面有多少数对满足:其中一个是另一个的n倍。例如:1 4 3 2 9 7 18 22,n=3时得到的答案是2;因为3是1的3倍,9是3的3倍。
输入:输入第一行给出正整数n的值,接下来包括多组测试数据。每组数据最多100个整数占用一行,以数字0结束(不计入100个整数里)。测试数据不超过20组,最后一行只包括-1,表示输入数据结束。
输出:对每组输入数据,输出一行,给出有多少数对满足其中一个是另一个n倍。(注:最后一行末尾无换行符等多余字符。)
样例:
输入:
2
1 4 3 2 9 7 18 22 0
2 4 8 10 0
7 5 11 13 1 3 0
-1
输出:
3
2
0

#include<stdio.h>
int k=0,a[101],flag=0,tem=0;
void judge(int x1,int x2,int n);
int main(void)
{int n,x,s,t,x1,x2;scanf("%d",&n);do//do循环可以解决停止在“-1”{k=0;flag=0;scanf("%d",&x);//先输入一个元素判断是不是-1a[k]=x;if(x==-1)break;//结束程序if(a[0]!=-1&&tem!=0)//控制最后不输出\nprintf("\n");tem=1;while(x!=0)//将每一行的元素输入数组{scanf("%d",&x);a[k+1]=x;k++;}for(s=0;s<k;s++)//阅历所有数组中的元素for(t=s+1;t<k;t++)//此处用t=s+1可以减少计算,并解决n=0的问题{x1=a[s];x2=a[t];judge(x1,x2,n);}printf("%d",flag);}while(x!=-1);return 0;
}
void judge(int x1,int x2,int n)//判断是否为倍数
{if(x2/x1==n&&x2%x1==0||x1/x2==n&&x1%x2==0)flag++;
}

3. (程序题)
题目编号:  Exp04-Basic03
题目名称:  数组排序
题目描述:  编写函数,分别采用教材给出的“主元选择排序”、“冒泡排序”和“逐步增加递增子序列”排序方法对给定数组进行排序。综合运用调试方法,观察不同排序方法在排序过程中数组元素值的变化情况,如观察递增排序如下序列{9、8、7、6、5、4、3、2、1、0},{0、1、2、3、4、5、6、7、8、9}和{2、9、4、7、6、5、8、3、0、1}时,数组中元素比较次数、移动或交换次数。
说明:
(1)对于“主元选择排序”和“冒泡排序”,执行完3个赋值操作,计为1次交换。
(2)对于“逐步增加递增子序列”排序,每执行一次while循环的循环条件判断,计为1次比较;如果在某轮比较中元素本身的位置没有变化,则本轮移动次数为0。
(3)因本题目的是观察输出数据,深入理解排序算法;所以样例点和实测点一致。
输入:包含10个整数的待排序数组。
输出:在一行内依次输出,递增排序时,主元排序比较次数 和 移动/交换次数、冒泡排序比较次数 和 移动/交换次数和递增子序列排序比较次数 和 移动/交换次数,相邻数字之间以一个西文空格间隔。
样例1:

输入:
9 8 7 6 5 4 3 2 1 0
输出:
45 9 90 45 54 54
样例2:

输入:
0 1 2 3 4 5 6 7 8 9
输出:
45 9 9 0 9 0
样例3:

输入:
2 2 3 3 5 5 4 4 6 6
输出:
45 9 27 4 13 6
样例4:

输入:
1 0 3 2 5 4 7 6 9 8
输出:
45 9 18 5 14 10
样例5:

输入:
1 2 3 4 5 5 4 3 2 1
输出:
45 9 81 20 29 24

#include<stdio.h>
void Choose(int x[]);//选择(主元)
void Exchange(int x[]);//交换(冒泡)
void Insert(int x[]);//插入(顺序)
int main(void)
{int i,a[10],b[10],c[10];for(i=0;i<10;i++){scanf("%d",a+i);b[i]=a[i];c[i]=a[i];//复制三个初始数组}{Choose(a);Exchange(b);Insert(c);}return 0;
}
void Choose(int x[])
{int i,j,k,r,flag0=0,flag1=0;//flag0为比较,flag1为交换for(i=0;i<9;i++){j=i;for(k=j+1;k<10;k++){if(x[k]<x[j])j=k;flag0++;}r=x[i];x[i]=x[j];x[j]=r;flag1++;}printf("%d %d ",flag0,flag1);
}
void Exchange(int x[])
{int i,r,flag=1,flag0=0,flag1=0;//flag0为比较,flag1为交换while(flag){flag=0;for(i=0;i<9;i++){flag0++;if(x[i]>x[i+1]){r=x[i];x[i]=x[i+1];x[i+1]=r;flag=1;flag1++;}}}printf("%d %d ",flag0,flag1);
}
void Insert(int x[])
{int i,j,r,k,flag=0,flag0=0,flag1=0;//flag0为比较,flag1为交换for(i=1;i<10;i++){flag=0;j=i-1;while((x[j]>x[i])&&(j>=0)){j-=1;flag=1;//标记有插入操作的组flag0++;//所有判断为true的检测}if(x[j]<=x[i])//x[j]<=x[i]判断结果为false但也是一次判断flag0++;r=x[i];for(k=i-1;k>=j+1;k--){x[k+1]=x[k];flag1++;//所有递增操作算一次交换}x[j+1]=r;if(flag)flag1++;//所有的插入操作算一次交换}printf("%d %d",flag0,flag1);
}

吉林大学 超星慕课 高级语言程序设计 实验04 数组及其在程序设计中的应用(2022级)程序第01——03题相关推荐

  1. 吉林大学 超星慕课 高级语言程序设计 实验04 数组及其在程序设计中的应用 (2022级) 程序第04一13题

    本人能力有限,发出只为帮助有需要的人. 建议同学们自己写完后再进行讨论. 第三题后难度明显下降,所以后面的就一起发了 4. (程序题) 题目编号:Exp04-Basic04,GJBook3-06-19 ...

  2. 吉林大学 超星慕课 高级语言程序设计 实验07 递归程序设计(2022级)

    本人能力有限,发出只为帮助有需要的人. 建议同学们自己写完后再进行讨论. 1.题目名称:排列组合 问题描述:编写程序求函数C(m,n)的值. 输入:从键盘随机输入一个自然数和一个非负整数,分别作为m和 ...

  3. 吉林大学超星慕课高级语言程序设计课后作业(2022版)实验00

    1.第一个C程序. 问题描述: 通常学习一门编程语言,开始的第一个程序就是将"Hello World"显示在屏幕上.请大家参照如下代码的样子,写出自己的第一个C语言程序.亲,一定要 ...

  4. 吉林大学 超星慕课 高级语言程序设计 实验06 结构体(2022级)

    本人能力有限,发出只为帮助有需要的人. 建议同学们自己写完后再进行讨论. 1.题目名称:复数运算 题目描述:复数可以写成A+Bi的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i^2=-1. 编 ...

  5. 吉林大学 超星慕课 高级语言程序设计 实验02 分支与循环程序设计(2022级)

    本人能力有限,发出只为帮助有需要的人. 建议同学们自己写完后再进行讨论. Exp02-Basic01 #include<stdio.h> int main(void) {float a,b ...

  6. 吉林大学 超星慕课 高级语言程序设计 实验09 动态数据组织(2022级)

    本人能力有限,发出只为帮助有需要的人. 建议同学们自己写完后再进行讨论. 1. (程序题) 题目编号:Exp09-Basic01 题目名称:创建单链表 题目描述:请填写缺失代码完成程序,实现如下功能: ...

  7. 吉林大学 超星慕课 高级语言程序设计 实验05 指针及其在程序设计中的应用(2022级)

    本人能力有限,发出只为帮助有需要的人. 建议同学们自己写完后再进行讨论. 1.题目名称:字符串长度 题目描述:编写程序实现:使用自编函数int strlen(char *str),求字符串str长度: ...

  8. 吉林大学 超星慕课 高级语言程序设计 实验08 结构化程序设计(2022级)

    本人能力有限,发出只为帮助有需要的人. 建议同学们自己写完后再进行讨论. 其中的代码均没能在oj上进行测试,因此可能有误,请谅解. 除此以外部分题目设计深度优先搜索,因此可以分别用递归和堆栈实现,堆栈 ...

  9. 吉林大学 超星慕课 高级语言程序设计 实验03 模块化程序设计(2022级)

    本人能力有限,发出只为帮助有需要的人. 建议同学们自己写完后再进行讨论. 1. (单选题)有函数定义:int f(int x,int y):则下列函数调用正确的为(    ) A.int n; n=f ...

最新文章

  1. 12.映射表map.rs
  2. Ajax(5)UpdatePanel的使用方法
  3. AT2645 [ARC076D] Exhausted?(Hall定理推论/线段树+扫描线)
  4. OpenCV笔记(基于Python)
  5. 深入解析hostname
  6. Web前端期末大作业--响应式有氧健身休闲会所网页设计(HTML+CSS+JavaScript)
  7. 分治 —— 莫队算法 —— 普通莫队
  8. ASP.NET Core Api网关Ocelot的中文文档
  9. django准备 —环境配置,及其虚拟环境安装、django安装、数据库安装、新建项目...
  10. 深度剖析浏览器渲染性能原理,你到底知道多少?
  11. JAVA远程读取服务器文件
  12. aes-gcm模式前端加解密(html页面 js)——使用node-forge库
  13. 第五篇 应用Java
  14. 杜比、DTS、PCM、A-C3、THX、SDDS音效介绍(转贴)
  15. 践行安全使命,助力冬奥安全,常态化演练——赛宁在行动
  16. 聊一聊我们应该如何有效学习
  17. 宝宝长牙发烧怎么办?会自己退吗?
  18. mysql mmm write vip_MySQLHAbyusingMysql-mmm
  19. 【数据库】谈谈分库分表吧?
  20. ISE启动Modelsim时报错:Platform Mismatch!

热门文章

  1. java五子棋需求分析文档,五子棋--需求分析.doc
  2. HTML5 video标签的播放控制
  3. 【mia】get local ips
  4. day03--课后练习
  5. ActiveX控件开发总结(续二)
  6. HTML 制作九宫格
  7. WorldFirst官网无法访问?万里汇WorldFirst官网域名变更!
  8. 10 .SQL——查,改,删 的应用练习
  9. 成人学历提升考试内容有哪些-难考吗
  10. 毕设常用云平台之机智云如何使用