目录

1. (程序题)

2. (程序题)

3. (程序题)

4. (程序题)

5. (程序题)

6. (程序题)

7. (程序题)

8. (程序题)

9. (程序题)

10. (程序题)

11. (程序题)

12. (程序题)

13. (程序题)


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<stdbool.h>#define size 100int top = 0;char a[100];bool push(char x) {if (top > size - 1)return false;else {a[top] = x;top++;return true;}}char pop(void) {if (top == 0) return '\0';else {top--;return a[top];}}int check(char x, char y) {if (x == '\0' || x == '@') { printf("NO"); return 0; }else if (x != y) { printf("NO"); return 0; }else return 1;}int main() {char ch, out;int i = 1;push('@');ch = getchar();while (ch != '@') {switch (ch) {case'[':case'(':case'{':push(ch); break;case']':out = pop(); i = check(out, '['); break;case'}':out = pop(); i = check(out, '{'); break;case')':out = pop(); i = check(out, '('); break;default:break;}ch = getchar();if (i == 0) break;}out = pop();if (i == 1){if (out == '@') {printf("YES");}else {printf("NO");}}return 0;}

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
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main() {int n;scanf("%d", &n);int i = 0, j = 0;int a[20][100], b[20];for (int iio = 0; iio < 20; iio++) {b[iio] = 0;}for (int hh = 0; hh < 20; hh++) {for (int ll = 0; ll < 100; ll++) {a[hh][ll] = -2;}}while (1) {scanf("%d", &a[i][j]);if (a[i][j] == -1) {break;}else if (a[i][j] == 0) {i++;j = -1;}j++;}for (int m = 0; m < i; m++) {for (int s = 0; s < 100; s++) {for (int p = 0; p < 100; p++) {if (p == s) { continue; }if (a[m][s] * n == a[m][p]) {b[m]++;}}}}for (int uuu = 0; uuu < i; uuu++) {if (uuu != 0)printf("\n%d", b[uuu]);else {printf("%d", b[uuu]);}}}

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>int zy1 = 0, zy2 = 0, mp1 = 0, mp2 = 0, cr1 = 0, cr2 = 0;void zy(int b[10]) {int i, j, k, r;for (i = 0; i < 9; i++) {j = i; zy2++;for (k = i + 1; k < 10; k++) {zy1++;if (b[k] < b[j])j = k;r = b[i];b[i] = b[j];b[j] = r;}}}void mp(int b[10]) {int i, r, flag = 1;while (flag) {flag = 0;for (i = 0; i < 9; i++) {mp1++;if (b[i] > b[i + 1]) {mp2++;r = b[i]; b[i] = b[i + 1]; b[i + 1] = r;flag = 1;}}}}void cr(int b[10]) {int i, j, k, r, flag;for (i = 1; i < 10; i++) {cr1++;flag = 0;j = i - 1;while ((b[j] > b[i]) && (j >= 0)) {j--;flag = 1;cr1++;}r = b[i];for (k = i - 1; k >= j + 1; k--) {b[k + 1] = b[k];if (flag)cr2++;}if (flag)cr2++;b[j + 1] = r;}}int main() {int a[10], b[10], c[10];for (int s = 0; s < 10; s++) {scanf("%d", &a[s]);b[s] = a[s]; c[s] = a[s];}zy(a); mp(b); cr(c);printf("%d %d %d %d %d %d", zy1, zy2, mp1, mp2, cr1, cr2);}

4. (程序题)

题目编号:Exp04-Basic04,GJBook3-06-19

题目名称:删除重复元素

题目描述:编写函数,不使用其他辅助数组,把整型数组中重复元素删得只剩一个;所有未被删除元素都保留最先顺序移动到数组前面。

输入:第一行输入数组长度n(≤100),第二行依次从键盘随机输入n个整数作为数组元素值。

输出:已删除重复元素的数组,各元素间以一个西文空格间隔,最后一个元素后无字符。

样例1:

输入:
10
1 1 2 3 3 3 2 1 2 4
输出:
1 2 3 4

样例2:

输入:
10
1 0 2 2 2 2 2 2 2 2
输出:
1 0 2
#include<stdio.h>
int main() {int a[100], n, count = 0;scanf("%d", &n);for (int i = 0; i < n; i++) {scanf("%d", &a[i]);}for (int m = 0; m < n; m++) {if (a[m] < 10492) {for (int ss = m + 1; ss < n; ss++) {if (a[m] == a[ss]) {a[ss] = 10492;}}}}for (int h = 0; h < n; h++) {if (a[h] < 10492) {count++;if (count == 1) { printf("%d", a[h]); }else { printf(" %d", a[h]); }}}}

5. (程序题)

题目编号:Exp04-Basic05,GJBook3-06-06

题目名称:转移0元素

题目描述:编写程序,不使用其他辅助数组,把给定整型数组中所有0元素全部移到后面,且所有非0元素的顺序不变。

输入:第一行输入数组长度n(≤100),第二行依次从键盘随机输入n个整数作为数组元素值。

输出:已将所有0元素串到后面的整数数组,各元素间以一个西文空格间隔,最后一个元素后无字符。

样例1:

输入:
10
0 3 1 0 0 0 1 2 3 0
输出:
3 1 1 2 3 0 0 0 0 0

样例2:

输入:
10
0 0 0 0 0 0 1 2 3 4
输出:
1 2 3 4 0 0 0 0 0 0
#include<stdio.h>int main() {int n, top = 0;long long a[100];scanf("%d", &n);for (int i = 0; i < n; i++) {scanf("%lld", &a[i]);}for (int s = 0; s < n; s++) {if (a[s] != 0 && s != top) {a[top] = a[s];top++;a[s] = 0;}else if (a[s] != 0 && s == top) { top++; }}for (int h = 0; h < n; h++) {if (h == 0)printf("%lld", a[h]);else printf(" %lld", a[h]);}}

6. (程序题)

题目编号 :Exp04-Basic06,GJBook3-06-04

题目名称:循环右移

题目描述:编写程序,不使用其它辅助数组,把一维整型数组中的各个元素循环右移j位。

输入:

第一行输入两个整数,n表示数组长度(0<n<=100),j表示循环右移的位数(j>=0);

第二行依次从键盘随机输入n个整数作为数组元素值。

输出:

循环右移后的整数数组,各元素间以一个西文空格间隔,最后一个元素后无字符。

样例1:

输入:
10 2
1 2 3 4 5 6 7 8 9 0
输出:
9 0 1 2 3 4 5 6 7 8

样例2:

输入:
10 23
1 2 3 4 5 6 7 8 9 0
输出:
8 9 0 1 2 3 4 5 6 7
#include<stdio.h>int main() {int n, j, a[100];scanf("%d%d", &n, &j);for (int m = 0; m < n; m++) {scanf("%d", &a[m]);}j = j % n;for (int i = 0; i < n; i++) {if (i == 0)printf("%d", a[(i + n - j) % n]);else printf(" %d", a[(i + n - j) % n]);}}

7. (程序题)

题目编号:Exp04-Basic07,GJBook3-06-01

题目名称:检验矩阵重复元素

题目描述:编写程序判断任意给定n*n的两维整型数组中是否有相同元素。

输入:第一行输入数组行数n(≤10),第二行随机输入n*n个整数作为数组元素值。

输出:如果数组中有相同元素,则输出YES;否则,输出NO。

样例1:

输入:
3
1 2 3 4 5 6 7 8 9
输出:
NO

样例2:

输入:
3
1 1 2 3 4 5 6 7 8
输出:
YES
#include<stdio.h>#include<stdlib.h>int main() {int n, a[100];scanf("%d", &n);for (int i = 0; i < n * n; i++) {scanf("%d", &a[i]);}for (int s = 0; s < n * n; s++) {for (int m = s + 1; m < n * n; m++) {if (a[s] == a[m]) {printf("YES");exit('0');}}}printf("NO");}

8. (程序题)

题目编号: Exp04-Basic08,GJBook3-06-03

题目名称: 矩阵转置

问题描述: 编写程序,将任意给定n*n的两维整型数组转置。

输入:第一行输入数组行数n(≤10),第二行随机输入n*n个整数作为数组元素值。

输出:按先行后列、从左至右的顺序输出转置后数组内的所有元素,每行n个元素,同一行内的各元素间以一个西文空格间隔;每行最后一个元素除必要的回车换行符外无其它字符。

样例1:

输入:
3
1 2 3
1 2 3
1 2 3
输出:
1 1 1
2 2 2
3 3 3

样例2:

输入:
3
1 1 1
2 2 2
3 3 3
输出:
1 2 3
1 2 3
1 2 3
#include<stdio.h>#include<stdlib.h>int main() {int n, a[10][10], b[10][10];scanf("%d", &n);for (int h = 0; h < n; h++) {for (int l = 0; l < n; l++) {scanf("%d", &a[h][l]);b[l][h] = a[h][l];}}for (int s = 0; s < n; s++) {for (int t = 0; t < n; t++) {if (t == 0)printf("%d", b[s][t]);else printf(" %d", b[s][t]);}printf("\n");}}

9. (程序题)

题目编号:Exp04-Basic09,GJBook3-06-02

题目名称:检验矩阵主对角线对称

题目描述:编写程序,判断任意给定n*n的两维整型数组是否关于主对角线对称。

输入:第一行输入数组行数n(≤10),第二行随机输入n*n个整数作为数组元素值。

输出:如果数组关于主对角线对称,则输出YES;否则输出NO。

样例1:

输入:

3
1 2 3
2 1 2
3 2 1
输出:
YES

样例2:

输入:

3
0 0 1
2 1 2
3 2 1
输出:
NO
#include<stdio.h>#include<stdlib.h>int main() {int n, a[10][10];scanf("%d", &n);for (int i = 0; i < n; i++) {for (int p = 0; p < n; p++) {scanf("%d", &a[i][p]);}}for (int m = 0; m < n; m++) {for (int b = 0; b < n; b++) {if (a[m][b] != a[b][m]) {printf("NO");exit('0');}}}printf("YES");}

10. (程序题)

题目编号:Exp04-Basic10,GJBook3-06-12

题目名称:字符串反序

问题描述:编写程序,将给定的字符串反序输出。

输入:一个长度不超过255的字符串,字符串中可能含有空白字符。

输出:反序输出的字符串。

样例1:

输入 A            输出 A

样例2:

输入 123 45    输出  54 321

#include<stdio.h>#include<stdlib.h>#include<string.h>int main() {char a[255];int len;gets_s(a);len = strlen(a);for (int i = len - 1; i >= 0; i--) {printf("%c", a[i]);}}

11. (程序题)

题目编号:Exp04-Enhance01,GJBook3-06-25

题目名称:规则形式构建集合

题目描述:

设整数集合 M 定义如下:

(1) 1∈M ;

(2) 若 x ∈M , 则 2x+1 ∈M , 3x+1 ∈M ;

(3) 没有别的整数属于集合 M 。

编程序按递增顺序生成并输出集合 M 的前n项

输入:一个正整数n(≤300)。

输出:按递增序列输出n个属于集合M的整数,各数间以一个西文空格间隔;最后一个数后无字符。

样例1:

输入:10
输出:1 3 4 7 9 10 13 15 19 21

样例2:

输入:1
输出:1
#include<stdio.h>
int main() {int n;scanf("%d", &n);int a[300] = { 1 }, i, j, k;for (i = j = 0,k=1; k < n; k++) {if (3 * a[i] > 2 * a[j]) { a[k] = 2 * a[j] + 1; j++; }else if (3 * a[i] < 2 * a[j]) { a[k] = 3 * a[i] + 1; i++; }else { a[k] = 2 * a[i] + 1; i++; j++; }}for (int s = 0; s < n; s++) { printf("%d ", a[s]); }
}

12. (程序题)

题目编号 :Exp04-Enhance02,GJBook3-06-26

题目名称:约瑟夫问题(Josephus)

题目描述:

古代某法官要判决 n 个犯人死刑, 他有一条荒唐的逻辑, 将犯人首尾相接排成圆圈,所有计数从1开始; 然后从第 s 个人开始数, 每数到第 m 个犯人,则拉出来处决; 然后再数 m 个,数到的犯人再处决;... ; 但剩下的最后一个犯人可以赦免。编程序,给出处决顺序,并告知哪一个人活下来。

输入:三个正整数 n(≤1000),s和m,都可以使用int类型变量表示。

输出:依次输出被处决人员的编号,每个编号之间用一个西文空格间隔,最后一个编号后无字符。

样例:

输入:6 1 5
输出:5 4 6 2 3 1
#include <stdio.h>int main() {int n, s, m, a[1009];scanf_s("%d %d %d", &n, &s, &m);int i, j;int h = s - 1, count = 0;for (i = 0; i <= n - 1; i++) {a[i] = i;}while (count <= n - 1) {h = (h + m - 1) % (n - count);if (count == 0) { printf("%d", a[h] + 1); }else { printf(" %d", a[h] + 1); }a[h] = 114514;j = 0;for (i = 0; i <= n - 1 - count; i++)if (a[i] != 114514) {a[j] = a[i];j++;}count++;}}

13. (程序题)

题目编号 :Exp04-Enhance03,freshman-1006

题目名称:英文翻译自然数

题目描述:按常规英文输出1000以内自然数的英文读法。

输入:每个测试输入包含 1 个测试用例,给出正整数 n(0<= n <1000)

输出:输出占一行:如果 0<= n <1000, 用规定的格式输出 n,所有英文单词小写,最后一个单词后无字符;否则输出ERR。

样例:

输入:123
输出:one hundred and twenty-three
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int main() {int n, g, s, b;scanf("%d", &n);if (n >= 1000 || n < 0) { printf("ERR"); }else {char s1[10][10] = { "","one","two","three","four","five","six","seven","eight","nine" };char s2[10][10] = { "ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen" };char s3[10][10] = { "","","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety" };g = n % 10;s = (n / 10) % 10;b = n / 100;if (b != 0) {printf("%s hundred", s1[b]);if (g != 0 || s != 0) {printf(" and");if (s == 1) { printf(" %s", s2[g]); }else if (s == 0) { printf(" %s", s1[g]); }else {printf(" %s", s3[s]);if (g != 0) {printf("-%s", s1[g]);}}}}if (b == 0) {if (g != 0 || s != 0) {if (s == 1) { printf("%s", s2[g]); }else if (s == 0) { printf("%s", s1[g]); }else {printf("%s", s3[s]);if (g != 0) {printf("-%s", s1[g]);}}}else { printf("zero"); }}}}

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

  1. 吉林大学超星慕课平台——高级语言程序设计 实验01 顺序程序设计(2022级)

    实验01 顺序程序设计(2022级) 1. (程序题) 表达式计算. 问题描述:编写程序,计算并输出如下表达式的值: y= 其中a,x,y均为float类型,取值为3.1415926.输出结果要求保留 ...

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

    实验03 模块化程序设计(2022级) 一. 单选题(共1题,16.6分) 1. (单选题)有函数定义:int f(int x,int y):则下列函数调用正确的为(    ) A.int n; n= ...

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

    1. (程序题) 题目编号 :Exp07-Basic01 题目名称:复数运算 题目描述:复数可以写成A+Bi的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i^2=-1. 编写程序,分别计算两个 ...

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

    一. 程序题(共15题,100分) 1. (程序题) 题目编号:Exp02-Basic01,GJBook3-03-03 题目名称:递增排序 题目描述:任意三个实数a.b.c,按照从小到大的顺序输出. ...

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

    一. 程序题(共5题,100分) 1. (程序题) 题目编号:Exp05-Basic01,GJBook3-07-06 题目名称:字符串长度 题目描述:编写程序实现:使用自编函数int strlen(c ...

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

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

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

    本人能力有限,发出只为帮助有需要的人. 建议同学们自己写完后再进行讨论. EX04开始难度提升,由于篇幅问题就分开发了. 1.(编程题) 题目编号:Exp04-Basic01,GJBook3例-06- ...

  8. 超星高级语言程序设计实验作业 (实验04 数组及其在程序设计中的应用)(二)

    超星高级语言程序设计实验作业 实验04 数组及其在程序设计中的应用(二) 注:以下内容仅供交流,代码都是本人自己写的,还请同学们先自己编写再进行交流. 7.检验矩阵重复元素 题目描述:编写程序判断任意 ...

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

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

最新文章

  1. 熟练掌握HDFS的Shell访问
  2. python第三周笔记_Python第三周 学习笔记(1)
  3. 修理牛棚 Barn Repair
  4. 解秘 Node.js 单线程实现高并发请求原理,以及串联同步执行并发请求的方案
  5. Semaphore 源码分析
  6. 深入理解javascript原型和闭包(10)——this
  7. html-----020----事件
  8. Linux底层开发之四书五经
  9. 用MS SQL Server事件探查器来跟踪数据库的操作
  10. Pandas知识点-索引和切片操作
  11. svpwm仿真_【好物推荐】《现代永磁同步电机控制原理及MATLAB仿真》
  12. boost::asio
  13. 如何用java实现阶乘倒数求和_JAVA 阶乘 的倒数求和public class Jiecheng {public static void main(...
  14. RPLIDAR A2 Windows 下开发
  15. (经典)tcp粘包分析
  16. unity 物体高亮显示
  17. 读书笔记 摘自:《为什么精英都是时间控》
  18. qt 批量裁剪图片_照片变素描,不用下载App,好用的在线图片处理及图库
  19. 这位程序员的桌面是我见过最漂亮的了
  20. 上班族的最佳饮食搭配法

热门文章

  1. 摒弃单一变现手段,开拓多元商业模式,破解场景单一APP盈利难题!
  2. 含电热联合系统的微电网运行优化(Matlab代码实现)
  3. 未来30年的研究预测——新书上架(《超限未来10大趋势》)
  4. 【车载开发系列】UDS诊断服务入门知识
  5. 大批量数据修改时发现有一行数据被锁住了,一直处于等待状态的问题解决
  6. 如何开发一个全新的操作系统(手机操作系统)呢?
  7. matlab 波形文件4438c,matlab 5 计算分析
  8. 【VS常量类和 else if】更完美的数据校验,解决码值乱送问题的思路
  9. Git步步进阶---完美实战git tag所有操作
  10. 海康摄像头YUV420P格式图片缩放