#include <stdio.h> #include <malloc.h> #include <stdlib.h> #include <stdbool.h> //简单数组存储 gcc下运行 //J.WANG 2013-6-8 typedef struct Arr{ int * data; //存储数组的第一个元素的地址 int len; //数组的存储长度 int index; //有效元素个数 } ARR; bool init(ARR *p,int n); //初始存储,p要初始对象的地址,n初始的长度 bool append(ARR *p,int val); //添加元素,p添加的对象,val要增加的值 void printArr(ARR *p); //打印数组 bool isFull(ARR *p); //数组是否有足够的空间 void reverse(ARR *p); //反转数组 bool delete(ARR *p,int val); //删除数组中第一个出现的指定元素 void sort(ARR *p); //排序 bool insert(ARR *p,int pos,int val); //插入数据 bool isEmpty(ARR *p); //判断数组是否为空 int main(){ ARR arr; init(&arr,12); //插入数据 append(&arr,32); append(&arr,22); append(&arr,1); append(&arr,-1); append(&arr,0); append(&arr,0); append(&arr,6); append(&arr,55); append(&arr,1011); append(&arr,23); append(&arr,88); append(&arr,22); //删除 delete(&arr,22); delete(&arr,22); delete(&arr,1); printf("-------输出数据----\n"); printArr(&arr); printf("-------反转数据----\n"); reverse(&arr); //反转 printArr(&arr); printf("-------排序后数据----\n"); sort(&arr); //排序 printArr(&arr); return 0; } //初始数组 bool init(ARR * p,int n){ if(0<n){ p->data=(int *)malloc(sizeof(int)*n); if(p->data==NULL){ printf("初始化失败.\n"); return false; }else{ p->index=0; p->len=n; return true; } } return false; } //判断数组是否已满 bool isFull(ARR *p){ if(isEmpty(p)){ printf("isFull数组为空.\n"); return false; } //有效元素个数大于等于数组长度,数组已满 if(p->len<=p->index) return true; else return false; } //增加 bool append(ARR * p,int val){ if(isFull(p)){ printf("append没有足够空间存储.%d\n",val); return false; } p->data[p->index] = val; p->index++; return true; } //打印 void printArr(ARR *p){ int i; for(i=0;i<p->len;i++){ printf("%d\n",p->data[i]); } printf("\n"); } //是否为空 bool isEmpty(ARR *p){ if(p==NULL||p->len==0) return true; else return false; } //插入数据 bool insert(ARR *p,int pos,int val){ int i; if(pos<1){ printf("insert无效的位置.\n"); return false; } if(isEmpty(p)){ return false; } if(p->len-1<p->index){ printf("insert没有足够的空间存储数据.\n"); return false; } //每个元素向后移1位 for(i=p->len-1;i>=pos;i--){ p->data[i]=p->data[i-1]; } //插入值 p->data[pos-1]=val; p->index++; return true; } //删除数组中第一个出现的指定的元素 bool delete(ARR *p,int val){ int i; if(isEmpty(p)){ printf("delete数组为空!\n"); return false; } //找到第一个出现的指定元素 for(i=0;i<p->len&&!(p->data[i]==val);i++); //标记: !的优先级比==高 //每个元素向前移动1位 for(;i<p->len-1;i++){ p->data[i]=p->data[i+1]; } p->index--; p->len--; return true; } //反转数组 void reverse(ARR *p){ if(isEmpty(p)){ printf("reverse数组为空!\n"); return; } int i=0,j=p->len-1,m=(p->len)/2,t; while(0 < m){ t=p->data[i]; p->data[i]=p->data[j]; p->data[j]=t; i++; j--; m--; } } //选择排序 void sort(ARR *p){ if(isEmpty(p)){ printf("sort数组为空!\n"); return; } int i,j,min,tmp; for(i=0;i<p->len;i++){ //遍历所有元素 min=i; for(j=i+1;j<p->len;j++){ //从所有元素里找出最小的元素下标 if(p->data[min]>p->data[j]){ min=j; } } if(min!=i){ tmp=p->data[i]; p->data[i]=p->data[min]; p->data[min]=tmp; } } }
相关推荐
整理的一些关于C语言的练习题,题目答案都有,需要的可以下载看一下
C语言诞生于美国的贝尔实验室,由丹尼斯·里奇(Dennis MacAlistair Ritchie)以肯尼斯·蓝·汤普森(Kenneth Lane Thompson)设计的B语言为基础发展而来,在它的主体设计完成后,汤普森和里奇用它完全重写了UNIX,...
08指针数组;09多级指针) 9.结构体(01typedef语句;02结构体定义和使用;03结构体数组;04结构体数组排序;05结构体赋值;06结构体嵌套;07共用体) 10.位运算(01位运算;02位移运算;03位运算应用) 11.文件(01...
4.指针数组 5.指向函数的指针 6.main函数的形参 7.void*和动态存储分配 8.复杂表示的分析 五、编程练习 第七部分:结构体与共用体 一、结构体变量说明与赋值操作 二、结构体数组与结构体指针 三、结构体量的各种使用...
接下来,我们将探讨如何使用指针来操作数组和结构体。我们还将介绍如何在函数中传递指针,并讨论指针的一些高级用法。 在学习本文的过程中,我们将提供许多例子和示例来帮助你更好地理解指针。我们还将提供一些练习...
这份C语言基础教程提供了一份全面的C语言基础教程,覆盖了C语言的核心概念,包括语言简介、程序结构、数据类型、运算符、控制结构、函数、数组、指针、结构体与联合体、文件操作、预处理指令、宏定义、高级特性如变...
这些案例涵盖了各种不同难度级别的问题,涉及基本语法、数组、函数、指针、结构体、文件操作等方面,适合初学者和有一定基础的程序员练习和学习。 每个案例都包含了详细的题目描述、示例代码和解题思路,帮助读者更...
这份笔记涵盖了C语言的基础语法、数据类型、运算符、条件语句、循环语句、函数、指针、数组、结构体、文件处理等方面的内容。我相信,如果你认真阅读这份笔记,再结合自己一定的相关练习,差不多能够掌握C语言的基础...
(二)C语言基础 1.基本知识:C语言的组成、C语言的特点、C语言的编译过程;算法的概念和特性;...指针与数组、字符串和函数 的配合使用。 7.结构体:结构体数据的定义和使用;结构体数组的使用;利用指针
这份笔记涵盖了C语言的基础语法、数据类型、运算符、条件语句、循环语句、函数、指针、数组、结构体、文件处理等方面的内容。我相信,如果你认真阅读这份笔记,再结合自己一定的相关练习,差不多能够掌握C语言的基础...
这份笔记涵盖了C语言的基础语法、数据类型、运算符、条件语句、循环语句、函数、指针、数组、结构体、文件处理等方面的内容。我相信,如果你认真阅读这份笔记,再结合自己一定的相关练习,差不多能够掌握C语言的基础...
这份笔记涵盖了C语言的基础语法、数据类型、运算符、条件语句、循环语句、函数、指针、数组、结构体、文件处理等方面的内容。我相信,如果你认真阅读这份笔记,再结合自己一定的相关练习,差不多能够掌握C语言的基础...
这些案例涵盖了各种不同难度级别的问题,涉及基本语法、数组、函数、指针、结构体、文件操作等方面,适合初学者和有一定基础的程序员练习和学习。 每个案例都包含了详细的题目描述、示例代码和解题思路,帮助读者更...
二级C语言笔试真题分类打印版本,按照数据类型,输入输出函数,3种基本结构,数组,函数,指针,结构体,文件分类整理,各类别含5年真题,针对性的练习,含有答案。共64页,也是初学者做练习的好选择!
我的C语言笔记从数组,操作符的使用,函数,指针和结构体进行详细的介绍,用相关的代码进行一些知识点的验证,里面也有相关的小型项目进行练习,包括:三子棋和扫雷,都可以帮助我们提高自己学习编程语言的兴趣和对...
此外,本书的内容非常系统,按照一定的顺序进行讲解,包括了C语言的基本语法、数据类型、运算符、表达式、函数、数组、指针、结构体、文件操作等多个方面。每个知识点都有详细的讲解和实例,能够帮助读者全面理解和...
练习: 15. C语言指针面试 16. C语言字符串与内存函数 C语言自定义类型: 17. C语言自定义类型-结构体 应用: 18. C语言实现通讯录 19. C语言自定义类型-枚举和联合 动态内存分配: 20. C语言动态内存分配 21. C语言...
c++程序设计基础知识综合考试试卷,包括c++数据类型、程序设计语句(顺序结构、选择结构、循环结构)、函数、数组、指针、结构体、共用体等知识。10套考试试卷题型多样,难易适中,版面清晰,分值分配科学,适合...
(29)二维数组与指针 (30)二维数组应用实例 (31)二维数组应用实例(2) (32)用一维数组来存储字符串 (33)字符串的输入与输出 (34)字符串数组 (35)用于字符串处理的函数 (36)字符串应用实例 (37)传给Main函数的参数 (38)...
第一部分是C++语言基础部分,主要讲述Visual C++ 6.0集成开发环境中的常用功能菜单的使用、基本应用程序的建立方法和步骤、数据类型、运算符、表达式、三种基本程序结构、数组、函数及其重载、引用、指针、结构体、...