c语言中最难程序之一,一个超级难的C语言

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

附:综合性程序设计试验一

实验名称: 顺序表操作的C程序实现

【目的】

1.利用所学的三种程序基本结构以及数组、用户自定义函数进行一个中型程序的设计,进一步理解和掌握C语言的语法以及三种基本程序结构的综合应用。

2.通过程序中涉及到的排序、查找、求和等操作加深对算法、程序设计思路、常用程序设计技巧的理解与掌握,逐步培养学生的程序开发能力。

【内容】

设某班有n位同学,每位同学的数据包括以下内容:学号(长整型)、姓名(字符串)、数学成绩(整型)、程序设计成绩(整型)。设计程序完成以下五项功能:新建数据档案、添加数据、删除数据、对输入的数据进行排序和查询。

注:

1.输入数据时,要求学号不能相同,姓名可以相同。

2.在学习“结构体”和“文件”之前可进行本项程序设计,采用多个数组存储数据,同一学生信息对应的数组元素应下标相同。

【步骤】

1. 画出程序流程图;

2. 编制程序;

3. 调试程序,对调试程序时出现的错误进行分析,思考导致错误的原因;

4. 写出通过调试并修改后的正确程序代码。

【要求】

1.程序运行时,首先显示主菜单如下:

1.新建数据

2.添加数据

3.删除数据

4.排序

5.查询

6.退出

请输入序号选择相应操作

用户输入序号后,程序进行相应操作。

2.在主菜单中选择序号4,弹出子菜单选择排序方式,子菜单如下:

1.数学成绩排序

2.程序设计成绩排序

3.总分排序。

4.返回主菜单

请按序号选择相应操作

选择子菜单的序号后,程序能正确运行并在屏幕上显示按要求排序后的相关信息。

3.在主菜单中选择序号5,弹出子菜单选择查询方式,子菜单如下:

1.学号查询

2.姓名查询

3.数学成绩查询

4.程序设计成绩查询

5.总分查询

6.返回主菜单

请按序号选择相应操作

在子菜单中选择序号后,程序按以下方式工作。

(1)学号查询:输入学号后,若该学号存在则显示与其相关的所有信息,否则显示找不到的提示信息;(提示:查询到满足条件的结果后,查询即可结束)

(2)姓名查询:输入姓名后,若该姓名存在则显示与其相关的所有信息,否则显示找不到的提示信息;(提示:使用字符串比较函数进行比较)

(3)按科目查询:输入指定分数,程序运行后显示该科目中考试成绩大于等于指定分数的同学的学号、姓名以及该科成绩并统计满足条件的人数;

(4)总分查询:输入指定分数,程序运行后显示总分成绩大于等于指定分数的同学的学号、姓名以及各科成绩并统计满足条件的人数。

哪位高手帮忙做一�

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个非常简单的C语言扫雷程序,其只实现了最基本的功能,适合初学者参考: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> #define ROWS 10 #define COLS 10 #define MINES 10 int main() { int board[ROWS][COLS]; // 游戏棋盘 int mines[MINES][2]; // 地雷位置 int i, j, k, x, y, count; char input[10]; // 初始化棋盘 for (i = 0; i < ROWS; i++) { for (j = 0; j < COLS; j++) { board[i][j] = 0; } } // 初始化地雷 srand(time(NULL)); for (k = 0; k < MINES; k++) { do { x = rand() % ROWS; y = rand() % COLS; } while (board[x][y] == -1); board[x][y] = -1; mines[k][0] = x; mines[k][1] = y; } // 主循环 while (1) { // 显示棋盘 printf(" "); for (j = 0; j < COLS; j++) { printf("%2d ", j); } printf("\n"); for (i = 0; i < ROWS; i++) { printf("%2d ", i); for (j = 0; j < COLS; j++) { if (board[i][j] >= 0) { printf(" - "); } else { printf(" * "); } } printf("\n"); } // 读取玩家输入 printf("\nEnter row and column (e.g. 3 4), or q to quit: "); fgets(input, 10, stdin); if (input[0] == 'q') { break; } sscanf(input, "%d %d", &x, &y); // 检查输入是否合法 if (x < 0 || x >= ROWS || y < 0 || y >= COLS) { printf("Invalid input!\n"); continue; } if (board[x][y] >= 0) { printf("Already opened!\n"); continue; } // 判断是否踩到地雷 if (board[x][y] == -1) { printf("Oops, you stepped on a mine!\n"); break; } // 计算周围地雷数量 count = 0; for (i = x-1; i <= x+1; i++) { for (j = y-1; j <= y+1; j++) { if (i >= 0 && i < ROWS && j >= 0 && j < COLS && board[i][j] == -1) { count++; } } } // 更新棋盘状态 board[x][y] = count; } // 显示地雷位置 for (k = 0; k < MINES; k++) { printf("Mine %d at (%d, %d)\n", k+1, mines[k][0], mines[k][1]); } return 0; } ``` 这个程序采用了二维数组来表示游戏棋盘,-1代表有地雷,0代表未翻开,1-8代表周围地雷数量。程序随机生成若干个地雷并在棋盘上标记出来,然后进入主循环,每次循环读取玩家输入(选择翻开哪个方格),判断是否踩地雷,如果没有踩,则更新棋盘状态。玩家可以输入q来结束游戏。当游戏结束后,程序会显示地雷位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值