用系列相关操作完成一个任务: 1、完成 数组 Data[] 和Str[] 的声明; 2、对数组 Data[] 设计函数,实现指定数目元素个数(可由用户指定元素个数)的输入和 不指定元素个数(整数元素的个数不确定)的输入完成数组的初始化。 3、对数组Str ,设计函数,分别用scanf 和 gets 的方法完成字符串的输入,输入字符串包括空格。 4、对 Data 整型数组查找最大值(最小值);输出最大值及所在下标。 5、输出 Data 整型数组; 6、使用排序算法对 Data 实现至少一种方案的排序;(冒泡法、选择法、从小到大、从大到小) 7、对比排序后的Data 整型数组; 8、键盘输入查找元素:(二分法),查到,输出元素所在下标,并删除元素;否则,输出查找失败!,并将元素插入到合适位置,并保持数组有序。 9、对比查找操作后的数组; 10、判断Str 是否为回文,如果不是,就地转置字符串。

时间: 2024-02-09 21:10:00 浏览: 32
好的,以下是代码实现: ```c #include <stdio.h> #include <string.h> #define MAX_SIZE 100 int Data[MAX_SIZE]; char Str[MAX_SIZE]; int input_data() { int n; printf("请输入整数元素个数:"); scanf("%d", &n); printf("请输入 %d 个整数:", n); for (int i = 0; i < n; i++) { scanf("%d", &Data[i]); } return n; } void input_data_unspecified() { printf("请输入整数元素,以 -1 结束:"); int i = 0, x; while (scanf("%d", &x) == 1 && x != -1) { Data[i++] = x; } } void input_str() { printf("请输入一个字符串(包括空格):"); fflush(stdin); gets(Str); } void print_data(int n) { printf("Data 数组为:"); for (int i = 0; i < n; i++) { printf("%d ", Data[i]); } printf("\n"); } void find_max(int n) { int max = Data[0], max_index = 0; for (int i = 1; i < n; i++) { if (Data[i] > max) { max = Data[i]; max_index = i; } } printf("最大值为 %d,所在下标为 %d\n", max, max_index); } void bubble_sort(int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n - i - 1; j++) { if (Data[j] > Data[j + 1]) { int temp = Data[j]; Data[j] = Data[j + 1]; Data[j + 1] = temp; } } } } void selection_sort(int n) { for (int i = 0; i < n - 1; i++) { int min_index = i; for (int j = i + 1; j < n; j++) { if (Data[j] < Data[min_index]) { min_index = j; } } int temp = Data[i]; Data[i] = Data[min_index]; Data[min_index] = temp; } } void sort_data(int n) { int choice; printf("请选择排序方法:\n"); printf("1. 冒泡排序(从小到大)\n"); printf("2. 冒泡排序(从大到小)\n"); printf("3. 选择排序(从小到大)\n"); printf("4. 选择排序(从大到小)\n"); printf("请输入数字选择:"); scanf("%d", &choice); switch (choice) { case 1: bubble_sort(n); break; case 2: bubble_sort(n); for (int i = 0; i < n / 2; i++) { int temp = Data[i]; Data[i] = Data[n - i - 1]; Data[n - i - 1] = temp; } break; case 3: selection_sort(n); break; case 4: selection_sort(n); for (int i = 0; i < n / 2; i++) { int temp = Data[i]; Data[i] = Data[n - i - 1]; Data[n - i - 1] = temp; } break; default: printf("输入不合法!\n"); break; } } int binary_search(int n, int x) { int left = 0, right = n - 1; while (left <= right) { int mid = (left + right) / 2; if (Data[mid] == x) { return mid; } else if (Data[mid] < x) { left = mid + 1; } else { right = mid - 1; } } return -1; } void search_data(int n) { int x; printf("请输入要查找的整数:"); scanf("%d", &x); int index = binary_search(n, x); if (index != -1) { printf("元素 %d 在数组中的下标为 %d,将被删除!\n", x, index); for (int i = index; i < n - 1; i++) { Data[i] = Data[i + 1]; } n--; } else { printf("查找失败!将 %d 插入到合适位置...\n", x); int i; for (i = n - 1; i >= 0 && Data[i] > x; i--) { Data[i + 1] = Data[i]; } Data[i + 1] = x; n++; } print_data(n); } void reverse_str() { int len = strlen(Str); int left = 0, right = len - 1; while (left < right) { char temp = Str[left]; Str[left] = Str[right]; Str[right] = temp; left++; right--; } } int is_palindrome() { int len = strlen(Str); for (int i = 0; i < len / 2; i++) { if (Str[i] != Str[len - i - 1]) { return 0; } } return 1; } int main() { int n; n = input_data(); input_data_unspecified(); input_str(); print_data(n + strlen(Str)); find_max(n + strlen(Str)); sort_data(n + strlen(Str)); print_data(n + strlen(Str)); search_data(n + strlen(Str)); printf("字符串为:%s\n", Str); if (!is_palindrome()) { printf("字符串不是回文,将字符串就地转置...\n"); reverse_str(); printf("转置后的字符串为:%s\n", Str); } else { printf("字符串是回文!\n"); } return 0; } ``` 注意:在函数 `input_data_unspecified()` 中,我们使用了 `scanf("%d", &x) == 1` 的写法,表示只要输入的是一个整数,就会返回 1,即使输入的整数是负数。这样可以保证只有输入 -1 时才退出循环。另外,我们在调用 `gets()` 函数之前加了一个 `fflush(stdin)`,这是因为 `gets()` 函数会读取缓冲区中的换行符,导致输入不完整,所以需要清空缓冲区。但是,这种写法并不是标准的,因为 `fflush()` 函数在标准输入流上的行为是未定义的,因此不同的编译器可能有不同的行为。

最新推荐

recommend-type

ansys maxwell

ansys maxwell
recommend-type

matlab基于不确定性可达性优化的自主鲁棒操作.zip

matlab基于不确定性可达性优化的自主鲁棒操作.zip
recommend-type

pytest-2.8.0.zip

文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

信息安全课程实验C++实现DES等算法源代码

信息安全课程实验C++实现DES等算法源代码
recommend-type

基于知识图谱的医疗诊断知识问答系统python源码+项目说明.zip

环境 python >= 3.6 pyahocorasick==1.4.2 requests==2.25.1 gevent==1.4.0 jieba==0.42.1 six==1.15.0 gensim==3.8.3 matplotlib==3.1.3 Flask==1.1.1 numpy==1.16.0 bert4keras==0.9.1 tensorflow==1.14.0 Keras==2.3.1 py2neo==2020.1.1 tqdm==4.42.1 pandas==1.0.1 termcolor==1.1.0 itchat==1.3.10 ahocorasick==0.9 flask_compress==1.9.0 flask_cors==3.0.10 flask_json==0.3.4 GPUtil==1.4.0 pyzmq==22.0.3 scikit_learn==0.24.1 效果展示 为能最简化使用该系统,不需要繁杂的部署各种七七八八的东西,当前版本使用的itchat将问答功能集成到微信做演示,这需要你的微信能登入网页微信才能使用itchat;另外对话上下文并没
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。