c语言程序数组元素大小排序
- 格式:docx
- 大小:43.75 KB
- 文档页数:1
c语言程序数组元素大小排序
#include "stdio.h"
#include "string.h"
void main()
{
int a[6],k;
for(int i=0;i<=5;++i)
scanf("%d",&a[i]);
for(int j=0;j<=5;++j)
for(int m=j+1;m<=5;++m)
c语言程序数组元素大小排序
#include "stdio.h"
#include "string.h"
void main()
{
int a[6],k;
for(int i=0;i<=5;++i)
scanf("%d",&a[i]);
for(int j=0;j<=5;++j)
for(int m=j+1;m<=5;++m)
数 组 笔 记
在程序设计中,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
1.一维数组的定义和引用
1.一维数组的定义方式
在C语言中使用数组必须先进行定义。一维数组的定义方式为:
类型说明符 数组名 [常量表达式];
其中:类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。
方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:
int a[10]; 说明整型数组a,有 10 个元素。
float b[10],c[20]; 说明实型数组 b,有10个元素,实型数组 c,有20个元素。
char ch[20]; 说明字符数组 ch有 20 个元素。
对于数组类型说明应注意以下几点:
1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
2)数组名的书写规则应遵循标识符命名规则。
3)数组名不能与其它变量名相同。例如:
main()
{
int a; float a[10];
……
}
是错误的。
4)方括号中常量表达式表示数组元素的个数,如 a[5]表示数组 a 有 5 个元素。但是其下标从 0 开始计算。因此 5 个元素分别为 a[0],a[1],a[2],a[3],a[4]。
5)常量表达式中可以包括常量和符号常量,不能用变量来表示元素的个数,也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。
例如:
#define FD 5 main()
{
int a[3+2],b[7+FD];
……
}
是合法的。
但是下述说明方式是错误的。
万维考试题和答案c语言
# 万维考试题和答案C语言
## 一、选择题
1. 下列哪个选项是C语言中的关键字?
A. `print`
B. `int`
C. `function`
D. `variable`
**答案:B**
2. C语言中,哪个函数用于计算两个数的和?
A. `sum(a, b)`
B. `add(a, b)`
C. `calculate(a, b)`
D. `printf(a + b)`
**答案:B**
3. C语言中,以下哪个是正确的字符串声明?
A. `char str[] = "Hello";`
B. `int str = "Hello";`
C. `float str = "Hello";`
D. `double str = "Hello";`
**答案:A**
4. 在C语言中,以下哪个是正确的数组声明?
A. `int array[5] = {1, 2, 3, 4, 5};`
B. `int array[] = {1, 2, 3, 4, 5};`
C. `int array[5] = {1, 2, 3};`
D. `int array = {1, 2, 3, 4, 5};`
**答案:A**
5. C语言中,哪个函数用于输出字符串?
A. `print`
B. `display`
C. `printf`
D. `cout`
**答案:C**
## 二、填空题
1. 在C语言中,使用____关键字可以定义一个函数。
**答案:void**
2. C语言中,用于声明整型变量的关键字是____。
**答案:int**
3. C语言中,用于声明字符型变量的关键字是____。
**答案:char**
4. 在C语言中,数组的声明需要指定____和____。
数据结构实验报告
八种排序算法实验报告
一、 实验内容
编写关于八种排序算法的C语言程序,要求包含直接插入排序、希尔排序、简单项选择择排序、堆排序、冒泡排序、快速排序、归并排序和基数排序。
二、 实验步骤
各种内部排序算法的比较:
1. 八种排序算法的复杂度分析〔时间与空间〕。
2. 八种排序算法的C语言编程实现。
3. 八种排序算法的比较,包括比较次数、移动次数。
三、 稳定性,时间复杂度和空间复杂度分析
比较时间复杂度函数的情况:
时间复杂度函数O(n)的增长情况
所以对n较大的排序记录。一般的选择都是时间复杂度为O(nlog2n)的排序方法。
时间复杂度来说:
(1)平方阶(O(n2))排序
各类简单排序:直接插入、直接选择和冒泡排序;
(2)线性对数阶(O(nlog2n))排序
快速排序、堆排序和归并排序;
(3)O(n1+§))排序,§是介于0和1之间的常数。
希尔排序
(4)线性阶(O(n))排序
基数排序,此外还有桶、箱排序。
说明:
当原表有序或基本有序时,直接插入排序和冒泡排序将大大减少比较次数和移动记录的次数,时间复杂度可降至O〔n〕;
而快速排序则相反,当原表基本有序时,将蜕化为冒泡排序,时间复杂度提高为O〔n2〕;
原表是否有序,对简单项选择择排序、堆排序、归并排序和基数排序的时间复杂度影响不大。
稳定性:
排序算法的稳定性:假设待排序的序列中,存在多个具有相同关键字的记录,经过排序, 这些记录的相对次序保持不变,则称该算法是稳定的;假设经排序后,记录的相对 次序发生了改变,则称该算法是不稳定的。
稳定性的好处:排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐次按高位排序,低位相同的元素其顺序再高位也相同时是不会改变的。另外,如果排序算法稳定,可以防止多余的比较;
快速排序算法c语言实验报告
冒泡法和选择法排序C程序实验报告 实验六:冒泡法排序
物理学416班 赵增月 F12 2011412194日期:2013年10
月31日 一·实验目的 1.熟练掌握程序编写步骤;
2.学习使用冒泡法和选择法排序; 3.熟练掌握数组的定义和输入输出方法。
二·实验器材
1.电子计算机; 2.VC6.0
三·实验内容与流程 1.流程图
(1)冒泡法
(2)选择法 2.输入程序如下: (1)冒泡法 #includestdio.h void main() { int a[10]; int i,j,t; printf(请输入10个数字:\n);
for(i=0;i10;i++)scanf(%d,&a[i]); printf(\n); for(j=0;j9;j++)for(i=0;i9-j;i++) if(a[i]a[i+1]) { t=a[i]; a[i]=a[i+1];
a[i+1]=t; } printf(排序后如下:\n); for(i=0;i10;i++) printf(%d,a[i]);
printf(\n); } (2)选择法 #includestdio.h void main() { int a[10]; int i,j,t,k;
printf(请输入10个数字:\n); for(i=0;i10;i++)scanf(%d,&a[i]);
printf(\n); for(i=0;i9;i++) {k=i;for(j=i+1;j10;j++) if
(a[k]a[j])k=j;t=a[i];a[i]=a[k];a[k]=t; }
printf(排序后如下:\n); for(i=0;i10;i++)printf(%d,a[i]); printf(\n); }
四.输出结果 (1冒泡法) 请输入10个数字: 135****2468
排序后如下: 12345678910 (2)选择法 输出结果