搜档网
当前位置:搜档网 › ☆C语言实验五(第七章一维数组:排序综合题)

☆C语言实验五(第七章一维数组:排序综合题)

☆C语言实验五(第七章一维数组:排序综合题)
☆C语言实验五(第七章一维数组:排序综合题)

【2008春上机编程题_C07】

【解题思路】:在理解上述要求基础上,只用一个主函数完成:找出Fibonacci 数列的前40个数,存放在一维数组m[40](声明长整型变量long)中,然后找出其中所有素数,存放在一维数组n[40]中(提示:n数组要求对素数总数以k计数),再选用一种排序法对一维数b进行降序排列,最后按长整型量以“%9ld”

形式、一行五个数据将满足条件的数据输出到屏幕:

【提示】:排序方法有“简单起泡法”;“双向起泡法”;“选择法”;所以要求学生在调试上述程序基础上按班组选取排序方法,编写本次作业。(约定:起始Fibonacci数列存放在一维数组m[40]中,挑选出的素数存放在一维数组n[40]中,最后以升序排列的数组n输出,满足素数的个数设定为k)。

参考程序:

简单起泡排序法:(参考教科书P134)

{

双向起泡排序法:(参考上机指导书P54例、2010春完善程序题第15题或软件第七章填空第15题)原理为“下列程序的功能是对n数组n[0]~a[k-1]中存储的k 个整数从大到小排序。排序算法是:第一趟通过比较将k个整数中的最小值放在a[k-1]中,最大值放在a[0]中;第二趟通过比较将k个整数中的次小值放在a[k-2]中,次大值放在a[1]中,………,依次类推,直到待排序序列为递减序列。”

选择排序法:(参考上机指导书P50例)

课堂练习空余时间或课后业余时间练习知识题

【软件第七章】

选择:

1,下列一维数组的声明中,正确的是____(22)_____。

,

A. int a[];

B. int n=10,a[n];

C. int a[10+1]={0};

D. int a[3]={1,2,3,4};

5.以下程序运行后的输出结果是_____(25)___。

main()

{ char a[7]="a0\0a0\0";int i,j;

i=sizeof(a);j=strlen(a);

printf("%d %d",i,j);

}

2 B.7 2 C.7 5 2

8.以下声明中错误的是_____(27)_____。

A. int a[2];

B. int a[]={0,1};

C. int a[3]=0;

D. nt a[3][4]={0};

11. 已知有声明"int m[]={5,4,3,2,1}, i=0;",下列对数组元素的引用中,错误的是_____(27)_____。

A. m[++i]

B. m[5]

C. m[2*2]

D. m[m[4]]

参考资料:数制变换

输入一个十进制数,输出为二进制数形式的一维整型数组

C语言数组编程题

实验4 数组 一.实验目的: 1.掌握一维数组的定义、赋值和输入输出的方法; 2.掌握字符数组定义、初始化、赋值的方法; 3.了解常见的字符串函数功能及其使用方法; 4.掌握二维数组的定义与引用。 二.实验内容: 1.编写程序,输入10个整数存入一维数组,统计输出其中的正数、负数和零的个数。 2.编写程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。 3.编写程序,输入10个整数存入一维数组,对其进行升序排序后输出。 4.编写程序,求二维数组中元素的最大值和最小值。 5.编写程序,求一个4×4矩阵中所有元素之和。 6.编写程序:从键盘上输入一字符串,统计输出该字符串中的字母字符、数字字符、空格以及其他字符的个数。 7.编写程序:从键盘上输入一字符串,并判断是否形成回文(即正序和逆序一样,如“abcd dcba”)。 8. 产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 9. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,按原来的规律将其插入并输出。 页脚内容1

10. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,则输出找不到。 11. 找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小。可能没有鞍点。 12. 编程输出杨辉三角。(要求输出10行)(杨辉三角:每行端点与结尾的数为1.每个数等于它上方两数之和。每行数字左右对称,由1开始逐渐变大) 13. 输入一行字符,统计大写字母、小写字母、数字、空格以及其它字符个数。 14. 编写程序,将两个字符串连接起来,不用strcat。 15. 编写程序实现strcpy函数功能。 16. 编程实现strlen函数功能。 17. 编程求2-4+6-8…-100+102的值。 18. 假设某人有100,000现金。每经过一次路口需要进行一次交费。交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000。请写一程序计算此人可以经过多少次这个路口。 19. 输入若干个正整数,以0结束,将其中大于平均值且个位为5的数排序后输出。(按由大到小的顺序排序) 20. 输入一个字符串,将其中ASCII码值为基数的字符排序后输出。(按由小到大的顺序) 21. 输入一个以回车结束的字符串(少于80个字符),滤去所有的非16进制字符后,组成一个新字符串(16进制形式),然后将其转换为10进制数后输出。 22. 读入一个正整数n(1<=n<=6),再读入n阶矩阵,计算该矩阵除副对角线、最后一行、最后一列 页脚内容2

C语言几种常见的排序方法

C语言几种常见的排序方法 2009-04-2219:55 插入排序是这样实现的: 首先新建一个空列表,用于保存已排序的有序数列(我们称之为"有序列表")。 从原数列中取出一个数,将其插入"有序列表"中,使其仍旧保持有序状态。 重复2号步骤,直至原数列为空。 插入排序的平均时间复杂度为平方级的,效率不高,但是容易实现。它借助了"逐步扩大成果"的思想,使有序列表的长度逐渐增加,直至其长度等于原列表的长度。 冒泡排序 冒泡排序是这样实现的: 首先将所有待排序的数字放入工作列表中。 从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换。 重复2号步骤,直至再也不能交换。 冒泡排序的平均时间复杂度与插入排序相同,也是平方级的,但也是非常容易实现的算法。 选择排序 选择排序是这样实现的: 设数组内存放了n个待排数字,数组下标从1开始,到n结束。 i=1 从数组的第i个元素开始到第n个元素,寻找最小的元素。 将上一步找到的最小元素和第i位元素交换。 如果i=n-1算法结束,否则回到第3步 选择排序的平均时间复杂度也是O(n²)的。 快速排序 现在开始,我们要接触高效排序算法了。实践证明,快速排序是所有排序算法中最高效的一种。它采用了分治的思想:先保证列表的前半部分都小于后半部分,然后分别对前半部分和后半部分排序,这样整个列表就有序了。这是一种先进的思想,也是它高效的原因。因为在排序算法中,算法的高效与否与列表中数字间的比较次数有直接的关系,而"保证列表的前半部分都小于后半部分"就使得前半部分的任何一个数从此以后都不再跟后半部分的数进行比较了,大大减少了数字间不必要的比较。但查找数据得另当别论了。 堆排序 堆排序与前面的算法都不同,它是这样的: 首先新建一个空列表,作用与插入排序中的"有序列表"相同。 找到数列中最大的数字,将其加在"有序列表"的末尾,并将其从原数列中删除。 重复2号步骤,直至原数列为空。 堆排序的平均时间复杂度为nlogn,效率高(因为有堆这种数据结构以及它奇妙的特征,使得"找到数列中最大的数字"这样的操作只需要O(1)的时间复杂度,维护需要logn的时间复杂度),但是实现相对复杂(可以说是这里7种算法中比较难实现的)。

c语言实验报告 ()

丽水学院计算机实验报告

丽水学院计算机实验报告 一、实验目的 1.熟悉Visual C++和C-Free等集成环境,掌握运行一个C程序的基本步骤,包括编辑、编译、连接和运行。 2.掌握算术表达式和赋值表达式的使用。 3.掌握基本输入、输出函数的使用。 4.能够编程实现简单的数据处理。 二、实验环境 硬件:Pentium以上的计算机。 软件:Windows XP操作系统、Visual C++和C-Free等集成环境。 三、实验内容和结果 1.编程题1 在屏幕上显示一个短句“What is a computer?” 思考: (1)如何在屏幕上显示你自己的学号,姓名和班级? (2)如何在屏幕上显示数字、英文字母和汉字等信息?例如:“你在机房吗?” 编程题1源程序: #include<> void main() { printf("What is a computer?\n");

} 程序运行结果: What is a computer? 思考题(1): #include<> void main() { printf(",小王,班级\n"); } 思考题(2): #include<> void main() { printf("英文字母abcdefgABCDEFG\n"); printf("汉字:哇哈哈啊哈和\n"); } 2.编程题2 在屏幕上显示下列图形。 * * * * * * * * * *

思考:如何在屏幕上显示下列图形? A A A A 编程题2源程序: #include<> void main() { int i,j; for(j=1;j<5;j++) { for(i=5;i>j;i--) printf("*"); printf("\n"); } } 程序运行结果: * * * * * * * * * * 思考题:

C语言一维数组教案

学科:计算机科学与技术 课程:C语言程序设计 课题:一维数组 课时:2 教学目标:1、掌握一维数组的定义和引用 2、掌握一维数组的初始化方法 3、了解与一维数组有关的应用编程方法 教学重点:一维数组的定义和引用、初始化方法 教学难点:与一维数组有关的应用编程方法 教学方法:举例法,引导法 教学步骤:1、通过一个例子提出问题来引出本节课的知识点 2、讲授一维数组的定义和引用、初始化方法 3、示例训练 4、进行本节课的总结及作业布置 教具:黑板计算机投影仪 教学过程: 一、导入: 提问:保存一个班50位同学的一门功课的成绩,并且找出最高分和最低分,应如何实现? 解题思路:定义50个变量,从键盘中输入值,然后再相互比较。处理起来很复杂,是

否有更简便的方法?引出本节课的知识点-----数组。 二、讲授: 1、数组概述: ·数组:是数目固定,类型相同的若干个变量的有序集合,用数组名标识。 序:是数组元素之间的位置关系,不是元素值的大小顺序。 数组名:是用于区别其它数组及变量的。 ·数组元素:集合中的变量,属同一数据类型,用数组名和下标确定。 下标:是数组元素在数组中的位置。 ·数组的维数:数组名后所跟下标的个数。 2、一维数组的定义 一维数组是指由一个下标数组元素组成的数组。其定义形式为: 存储类型数据类型数组名[常量表达式] 例如:static int score[50]; 它表示定义了一个名为score的数组,该数组有50个元素,其存储类型为静态型,数据类型为整型。 说明: (1)存储类型为任选项,可以是auto、static、extern存储类型,但是没有register 型。 (2)数据类型是用来说明数组元素的类型:int , char , float。 (3)数组名的命名应遵守标识符的命名规则,但是不能与其他变量同名。

c语言编程有关数组的几道例题

实验四一维数组、二维数组 一、实验目的与要求 1、熟练掌握一维数组、二维数组的定义、赋值和输入输出的方法。 2、掌握与数组有关的算法。 二、实验内容 1、(1)输入N个整数,使用冒泡排序,将数据由大到小输出。 #include "stdafx.h" #include void swap2(int*,int*); void bubble(int a[],int n); int main(void) { int n,a[8]; int i; printf("Enter n(n<=8):"); scanf("%d",&n); printf("Enter a[%d]:", n); for(i=0;ia[j+1]) swap2(&a[j],&a[j+1]); /*交换*/ } void swap2(int *px,int *py) { int t; t=*px; *px=*py; *py=t; } 单向冒泡排序法: //输入10个整数,按从大到小输出// #include

C语言实验报告参考答案 原

C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.编写程序: (1) a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 (2)a=160,b=46,c=18,d=170, 编写求(a+b)/(b-c)*(c-d)的程序。 答案: (1) #include main() {

int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } (2) #include main() { int a,b,c,d; float x; a=160; b=46; c=18;

d=170; x=(a+b)/(b-c)*(c-d); printf("(a+b)/(b-c)*(c-d)=%f\n",x); } 3. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b 时,将0赋给c。(提示:用条件运算符) 答案: #include main() { int a,b,c; a=0; b=-10; c= (a>b) ? b:a; printf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 2、(1) 编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7

C语言一维数组的基本操作

一.插入:C语言数组怎么插入一个元素#include #include #define MAX 40 void insert(int*p,int n,int m) { int i,k; for(i=0;i=m) { k=i; break; } for(i=n-1;i>=k;i--) p[i+1]=p[i]; printf("%d\n",k); p[k]=m; } void sort(int*p,int n) { int i,j; for(i=1;ip[j+1]) { int t; t=p[j+1]; p[j+1]=p[j]; p[j]=t; } } void main() { int a[MAX]; int n,i,m,d; printf("输入数据个数(n<40):"); d=scanf("%d",&n); while(d!=1&&n>=40) { system("cls"); f flush(stdin); printf("请重新输入:"); scanf("%d",&n); } printf("请输入数组元素:");

for(i=0;i #define N 10 void main( ) { int a[N] , num ,i , *p , n=N; int j; /*输入N个数到数组a中;*/ for(i=0;i

c语言各种排序法详细讲解

一插入排序 1.1 直接插入排序 基本思想:每次将一个待排序额记录按其关键码的大小插入到一个已经排好序的有序序列中,直到全部记录排好序。 图解:

1.//直接顺序排序 2.void InsertSort(int r[], int n) 3.{ 4.for (int i=2; i

代码实现: [cpp]view plain copy 1.//希尔排序 2.void ShellSort(int r[], int n) 3.{ 4.int i; 5.int d; 6.int j; 7.for (d=n/2; d>=1; d=d/2) //以增量为d进行直接插入排序 8. { 9.for (i=d+1; i0 && r[0]

C语言中数组排序算法及函数调用

C语言中数组排序算法及函数调用 一、冒泡法(起泡法) 算法要求:用起泡法对10个整数按升序排序。 算法分析:如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次相邻元素的两两比较,在第j趟比较中要进行n-j次两两比较。比较的顺序从前往后,经过一趟比较后,将最值沉底(换到最后一个元素位置),最大值沉底为升序,最小值沉底为降序。 算法源代码: # include main() { int a[10],i,j,t; printf("Please input 10 numbers: "); /*输入源数据*/ for(i=0;i<10;i++) scanf("%d",&a[i]); /*排序*/ for(j=0;j<9;j++) /*外循环控制排序趟数,n个数排n-1趟*/ for(i=0;i<9-j;i++) /*内循环每趟比较的次数,第j趟比较n-j次*/ if(a[i]>a[i+1]) /*相邻元素比较,逆序则交换*/ { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } /*输出排序结果*/ printf("The sorted numbers: "); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); } 算法特点:相邻元素两两比较,每趟将最值沉底即可确定一个数在结果的位置,确定元素位置的顺序是从后往前,其余元素可能作相对位置的调整。可以进行升序或降序排序。 算法分析:定义n-1次循环,每个数字比较n-j次,比较前一个数和后一个数的大小。然后交换顺序。二、选择法 算法要求:用选择法对10个整数按降序排序。 算法分析:每趟选出一个最值和无序序列的第一个数交换,n个数共选n-1趟。第i趟假设i为最值下标,然后将最值和i+1至最后一个数比较,找出最值的下标,若最值下标不为初设值,则将最值元素和下标为i的元素交换。 算法源代码: # include main() { int a[10],i,j,k,t,n=10; printf("Please input 10 numbers:"); for(i=0;i<10;i++)

C语言实验报告3

实验报告 实验名称:最简单的C程序设计——顺序程序设计成绩: 实验日期: 2011 年 10 月 24 日实验报告日期: 2011 年 10 月24 日 实验者:桂婷 一、实验目的 1、掌握C语言中使用最多的一种语句——赋值语句的使用方法。 2、掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。 3、进一步掌握编写程序和调试程序的方法。 二、实验内容 1、输入程序并运行结果。 2、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。编程序,用scanf输入数据,输出计算结果/。 3、计算存款利息。 有1000元,想存5年,可探子以下5种办法存: (1)一次存5年期; (2)先存2年期,到期后将本息再存3年期; (3)先存3年期,到期后将本息再存2年期; (4)存1年期,到期后将本息存再存1年期,连续存5次; (5)存活期存款。活期利息每一季度结算一次。 三、实验步骤: 1、

总结:1、变量在定义时就赋了初值。 2、两次的printf语句输出都指定了要输出数据的长度和小数点。2、 总结:1、程序在定义时只对部分变量赋了初值,这是允许的。 2、在计算时,乘号是用*表示,不能省略。 3、同样,在输出时指定了输出格式,长度,小数点位数。 3、

总结:1、用scanf语句输入数据,要与指定的格式一样。 2、程序用到了数学公式,调用“include ” 4、实验出现的问题、实验结果分析 1、程序在运行时是自上而下同,自左向右的。运到调用函数则会跳 转,但调用完了仍然回到主函数中。 2、printf语句中的常量是按原样输出的。 3、注意赋值语句的使用。 五、实验小结和思考 1、如果在程序2中不指定输出的长度和小数位数,看运行结果。 2、在程序3中不包含“include ”会怎样? 3、程序3若不给变量赋初值会出现什么情况。

C语言编程一维数组的使用

实验三一维数组的使用 【实验目的】 1掌握一维数组、二维数组的定义和初始化方法。 2熟悉使用字符数组处理字符串处理的方法。 【实验内容】 1.输入10个学生的成绩,求平均成绩,并将低于平均成绩的分数打印出来. 编写程序: #include void readdata (float score[10]) { int i; printf("依次输入10个学生的成绩:\n"); for(i=0;i<10;i++) scanf("%f",&score[i]); return; } float aver(float score[10]) { float sum; int i; for(sum=0,i=0;i<10;i++) sum=sum+score[i]; return(sum/10); } void printff(float score[10],float ave) { int i; printf("低于平均分的成绩为:\n"); for(i=0;i<10;i++) if(score[i]

ave=aver(score); printf("average=%6.2f\n",ave); printff(score,ave); } 2、将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。 编写程序: #include int main() { int i,j,a[5]={8,6,5,4,1},b[5]; for(i=0,j=4;i<5,j>=0;i++,j--) b[j]=a[i]; for(i=0;i<5;i++) a[i]=b[i]; for(i=0;i<5;i++) cout< int main() { int a[10]; int i = 0,j=0; int max,temp; for(i=0;i<10;++i) { printf("Please input the %dth number:",i+1); scanf("%d",&a[i]); } printf("The arry has been input is:\n"); for(i=0;i<10;i++) { printf("%d,",a[i]); } printf("\n"); for(i=0;i<10;i++) { max=i;

基于C语言的多种排序方法的实现

基于C语言地多种排序方法地实现 1 引言 1.1 课题背景 排序问题源远流长,一直是数学地重要组成部分.随着各种信息地快速更新,排序问题也走进了其他领域以及我们地日常生活.如何高效地排序一直困扰着我们. 1.2 课程设计目地 排序是数学地重要组成部分,工作量大是其存在地问题.如何高效地排序?本程序就是解决这个问题而设计.程序中,把数列储存在数组中,采用插入排序等十种排序方法对数组元素进行排序,高效地解决了排序问题.本软件开发地平台为最新地微软公司出版地市面最新系统Windows 2000,而且可以作为自身地运行平台非常广泛,包括 Windows 98/2000/XP/Vista等等. 1.3课程设计内容 本程序把对数列地排序转化为对数组元素地排序,用户可以根据自己地实际问题选择系统提供地七种排序方法地任意一种进行排序.程序通过自身地判断以及处理实现排序.程序最后输出每趟排序及初始排序结果. 2 系统分析与设计方案 2.1 系统分析 设计一个排序信息管理系统,使之能够操作实现以下功能: 1) 显示需要输入地排序长度及其各个关键字 2) 初始化输入地排序序列 3) 显示可供选择地操作菜单

4) 显示输出操作后地移动次数和比较次数 5) 显示操作后地新序列 5) 可实现循环继续操 2.2 设计思路 通过定义C语言顺序表来存储排序元素信息,构造相关函数,对输入地元素进行相应地处理. [2] 2.3 设计方案 设计方案如图2.1所示 图2.1 设计方案 具体流程见图2.2

图 2.2 程序流程图

3功能设计 3.1 SqList顺序表 其中包括顺序表长度,以及顺序表.源代码如下:[1] typedef struct { KeyType key。 //关键字项 InfoType otherinfo。 //其他数据项 }RedType。 typedef struct { RedType r[MaxSize+1]。 //r[0]作为监视哨 int length。 //顺序表长度 }SqList。 3.2 直接插入排序 直接插入排序是将一个记录插入到已排好序地有序表中,从而得到一个新地、记录数增1地有序表 图3.1 直接插入排序示意图 将第i个记录地关键字r[i].key顺序地与前面记录地关键字r[i-1].key,r[i-2].key,……,r[1].key进行比较,把所有关键字大于r[i].key地记录依次后移一位,直到关键字小于或者等于r[i].key地记录

数据结构线性表的顺序表示和实现(C语言)概论

/* 线性结构,线性表的顺序表示和实现 */ # include # include # include //包含了exit()函数 //定义一个数组结构体 struct Arr { int * pBase; //保存数组的指针 int len; //保存数组的长度 int cnt; //数组元素的有效个数 }; //前置函数声明 void init_arr(struct Arr * pArr,int length); //初始化 bool append_arr(struct Arr * pArr,int val); //追加一个元素 bool insert_arr(struct Arr * pArr, int pos, int val); //插入一个元素 bool delete_arr(struct Arr * pArr, int pos, int * val); //删除数组中的一个元素int get(struct Arr * pArr, int pos); //获取某个元素的值 bool is_empty(struct Arr * pArr); //判断数组是否为空 bool is_full(struct Arr * pArr); //判断数组是否已满 void sort_arr(struct Arr * pArr); //为数组进行从小到大排序 void show_arr(struct Arr * pArr); //显示数组内容 void inversion_arr(struct Arr * pArr); //反转数组中的所有值 /* 创建一个数组,实现对这个数组的操作 1,追加一个元素 2,插入一个元素 3,对数组排序 4,反转数组元素 */ int main(void) { //定义一个结构体变量 struct Arr array; //获取一个被删除的元素的值 int val; //使用函数init_arr()初始化数组 init_arr(&array, 5);

C语言实验报告

《C语言程序设计实训1》报告 设计题目:基于数组的学生信息管理系统学院名称:信息科学技术学院

专业:计算机科学与技术 班级: 姓名:学号 指导教师: 提交日期: 2014年12月22日 一、实验内容 编写并调试程序,实现学校各专业班级学生信息的管理。10个学生的信息存储在文件中。在头文件中定义学生信息的结构体类型,包括: 学号、姓名、专业、班级、3门成绩;和符号常量N(学生数)。(同一班 级的学生可以属于不同的专业,同一专业的学生可以属于不同的班级)

二、实验要求 (1)main函数:以菜单形式将各项功能提供给用户,根据用户的选择, 调用相应的函数。 STU student[N]; 函数 #include "" void main() { int i,n,id,num,m,sub,corse;将从文件中读取10个人的信\n"); printf("\n2.您将从文件中随机读取第n(0<=n<=9)个学生的信息\n") printf("\n3.您将根据某一班级某一专业总分超过多少进行查找\n"); printf("\n4.您将求某一课程分数最高的学生序号的下标\n"); printf("\n5.您将对平均成绩由低到高进行简单选择排序法\n ");

printf("\n6.您将对某一个班的平均成绩由低到高进行起泡排序法\n"); printf("\n7.您将对某门专业的学生的某门课程成绩由低到高进行直接插入排序法\n"); printf("\n8.您将把学生信息存入文件\n"); scanf("%d",&id); getchar(); switch(id){ case 1: { printf("\n从文件中读取信息\n"); Input(students,sizeof(students)/sizeof(STU));Sort_select 函数 #include "" void Sort_select(STU * p) { int i,j,k; float sum,ave[N],t; STU tem; for(i=0;i

C语言一维数组的定义和引用

C语言一维数组的定义和引用 在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。本章介绍数值数组和字符数组,其余的在以后各章陆续介绍。 7.1一维数组的定义和引用 7.1.1一维数组的定义方式 在C语言中使用数组必须先进行定义。一维数组的定义方式为:类型说明符数组名[常量表达式]; 其中:类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。 例如: int a[10]; 说明整型数组a,有10个元素。 float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。 char ch[20]; 说明字符数组ch,有20个元素。 对于数组类型说明应注意以下几点: 数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。 数组名的书写规则应符合标识符的书写规定。 数组名不能与其它变量名相同。 例如: main() { int a; float a[10]; …… } 是错误的。 方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。 不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。 例如: #define FD 5 main() { int a[3+2],b[7+FD];

c语言 数组排序 字符串排序 函数实现

1.数组倒叙 #include void show(int *a,int len) { int i; for(i=0;i

2.字符串排序 #include #include int main() { char *a[]={"aaaaaaa","ddddddd","eeeee","cccccc"}; int i; int len=sizeof a/sizeof *a; for(i=0;i0) { a[y]=(char *)((int )a[y]^(int)a[y+1]); a[y+1]=(char *)((int )a[y]^(int)a[y+1]); a[y]=(char *)((int )a[y]^(int)a[y+1]); } for(i=0;i

:C语言实验报告册-2016.3资料

学生实验报告册 (理工类) 课程名称:C语言程序设计实验专业班级: 16数字媒体技术学生学号: 1613031008 学生姓名:李翔 所属院部:计算机工程学院指导教师:吕艳林 20 16 ——20 17 学年第一学期 金陵科技学院教务处制

实验报告书写要求 实验报告上交电子稿,标题采用四号黑体,正文采用小四号宋体,单倍行距。 实验报告书写说明 实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。

实验项目名称:初级程序设计实验学时: 6 实验地点: A107 实验日期: 2016年10月13,20,27 实验成绩: 批改教师:批改时间:

实验1 初级程序设计 一、实验目的和要求 (1)熟悉Visual C++集成环境,进行编辑、保存、编译、连接及运行,并能进行简单程序调试; (2)掌握C语言中各种运算符的使用; (3)掌握C语言中各种数据类型的区别与应用; (4)熟练掌握C语言中变量的定义、赋值和使用,表达式语句、输入/输出语句的使用; (5)掌握C语言中输入/输出函数的使用; (6)掌握C语言中控制语句的使用,含if-else、for、while、do-while语句的使用。 二、实验仪器和设备 奔腾以上计算机,装有windows XP以上版本操作系统和Visual C++ 6.0软件。 三、实验内容与过程 1、程序调试 (1)#include main() { int s,t,p,sum; scanf(“%d%d%d”,&s,&t,&p); sum=s+t+p; printf(“sum=%d\n”,sum); } (2)#include main() { int k=3; if(k=3) printf(“***”); else printf(“###”); } (3)#include main() {int k=0; do { printf(“k=%d\n”,k); }while(k++>0); } 2、程序改错

c语言学习笔记(数组、函数)

数组 2010-3-29 22:40 一维数组的定义和一维数组的引用 内存中一串连续的存储单元(变量),叫数组。指针移动和比较只有在一串连续的数组中才有意义。 当数组中每个变量只带一个下标时,为一维数组。 定义一个一维数组: 类型名数组名【常量表达式】如:int a[8]; 说明:①定义一个一维整型名为a的数组。 ②方括号中规定此数组有8个元素,(a【0】-a【7】),不存在a【8】这个元素。 ③a数组中每个元素均为整型,且每个元素只能存放整型。 ④每个元素只有一个下标,且第一个元素的下标总为0。 ⑤c编译程序,为a数组开辟8个连续存储单元。 3)在定义数组语句中,可以有多个数组说明符;它们用逗号隔开。 例:double a【22】,v【100】,u【5】,a,b,c;注:双精度型每个单元占用8个字节的存储空间。另外,也可以和普通变量一起定义。 用逗号分隔开。 2010-3-23 10:29 一维数组元素的引用2 1) 引用形式:数组名【下标表达式】可以是:常量,变量,表达式。 如:double x【8】则x【0】x【j】x【i+k】均合法 2) (1)一个数组元素实际上就是一个变量名,代表内存中的一个存储单元。我们可以把数组元素看做一个变量名来处理。 (2)一个数组不能整体引用,数组名中存放的是一个地址常量,它代表整个数组的首地址。当学习指针时,引用的变量的地址,就是变量中第一个字节的地址。数组的首地址也是它的第一个元素的第一个字节的地址,即它的首地址。 数组的首地址存放在数组名中。所以说,数组名就代表一个地址。数组名是一个地址值。 (3)在引用数组元素时,数组元素下标表达式必须是整数,下标表达式下限为0.系统并不自动检验数组元素下标是否越界,因此编程时要注意。 如:double a,b; int c[10]; a=2.0;b=3.0; 则a[i]; 是不合法的。 给数组赋初值时,如果所赋初值少于元素个数时,后面的元素补为0,字符补为’\0’可以通过赋初值来定义一个数组的大小。如:int a[]={0,0,0,0,0}; 相当于:a[5]={0};

c语言实现简单排序(8种方法)

#include #include //冒泡排序 voidbubleSort(int data[], int n); //快速排序 voidquickSort(int data[], int low, int high); intfindPos(int data[], int low, int high); //插入排序 voidbInsertSort(int data[], int n); //希尔排序 voidshellSort(int data[], int n); //选择排序 voidselectSort(int data[], int n); //堆排序 voidheapSort(int data[], int n); void swap(int data[], inti, int j); voidheapAdjust(int data[], inti, int n); //归并排序 voidmergeSort(int data[], int first, int last); void merge(int data[], int low, int mid, int high); //基数排序 voidradixSort(int data[], int n); intgetNumPos(intnum, intpos); int main() { int data[10] = {43, 65, 4, 23, 6, 98, 2, 65, 7, 79}; inti; printf("原先数组:"); for(i=0;i<10;i++) { printf("%d ", data[i]); } printf("\n"); /*printf("冒泡排序:"); bubleSort(data, 10); for(i=0;i<10;i++) { printf("%d ", data[i]); } printf("\n"); printf("快速排序:"); quickSort(data, 0, 9); for(i=0;i<10;i++) { printf("%d ", data[i]); } printf("\n");

c语言数组排序字符串排序函数实现

1.数组倒叙#include void show(int *a,int len) { int i; for(i=0;i

} return a; } int main() { int l,i; int a[]={1,2,3,4,5,6,7,8}; l=sizeof a/sizeof *a; show(a,l); int *b=reverse(a,l); show(b,l); } 2.字符串排序 #include #include int main() {

char *a[]={"aaaaaaa","ddddddd","eeeee","cccccc"}; int i; int len=sizeof a/sizeof *a; for(i=0;i0) { a[y]=(char *)((int )a[y]^(int)a[y+1]); a[y+1]=(char *)((int )a[y]^(int)a[y+1]); a[y]=(char *)((int )a[y]^(int)a[y+1]); } for(i=0;i

相关主题