实验四
Posted zmh1977
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验四相关的知识,希望对你有一定的参考价值。
Part 1 数组的数据结构
#include<stdio.h> const int N=5; int main(){ int a[N]={1,2,3,4,5}; int i; for(i=0;i<N;i++) printf("%d:%d\\n",&a[i],a[i]); return 0; }
#include<stdio.h> const int N=5; int main(){ char a[5]={‘h‘,‘e‘,‘l‘,‘l‘,‘o‘}; int i; for(i=0;i<N;i++) printf("%d:%c\\n",&a[i],a[i]); return 0; }
#include<stdio.h> const int N=5; int main(){ double a[5]={1.0,2.0,3.0,4.0,5.0}; int i; for(i=0;i<N;i++) printf("%d:%.2f\\n",&a[i],a[i]); return 0; }
1.int型数据占4个字节的内存空间,double型数据占8个字符的内存空间,char型数据占一个字节的内存空间。
2.数组数据是由类型相同的一组数据构成的集合,它们在内存中连续存放。
Part 2:一维数组的定义,初始化以及数组元素的引用方法
#include<stdio.h> int main(){ int a[5]; a[0]=1; a[1]=9; a[2]=8; a[3]=6; a[4]=0; printf("a[0]=%d\\n",a[0]); printf("a[1]=%d\\n",a[1]); printf("a[2]=%d\\n",a[2]); printf("a[3]=%d\\n",a[3]); printf("a[4]=%d\\n",a[4]); return 0; }
#include<stdio.h> int main(){ int a[5]={1,9,8,6,0}; int i; for(i=0;i<5;i++) printf("a[%d]=%d\\n",i,a[i]); return 0; }
#include<stdio.h> int main(){ int a[]={1,9,8,6,0}; int i,n; n=sizeof(a); for(i=0;i<5;i++) printf("a[%d]=%d\\n",i,a[i]); return 0; }
此截图同上
#include<stdio.h> int main(){ int a[5]={1,9}; int i; for(i=0;i<5;i++) printf("a[%d]=%d\\n",i,a[i]); return 0; }
1,可用int a[5]={1,9,8,6,0};形式定义数组,并对每个元素进行初始化
2.当对所有数组元素初始化时,可以省略数组大小。
3.sizof用于计算数据占用的字节数。表达式sizof(a)/sizof(a[0])用于计算数组元素的个数。
4.没有被初始化的元素值,系统自动设为0.
5.数组的下标从0开始
Part 3数组作为函数参数
#include<stdio.h> const int N=5; int main(){ int score[N]={99,82,88,87,85}; int i; for(i=0;i<N;i++) printf("%d ",score[i]); return 0; }
#include<stdio.h> const int N=5; void print(int x); int main(){ int score[N]={99,82,88,97,85}; int i; for(i=0;i<N;i++) print(score[i]); printf("\\n"); return 0; } void print(int x){ printf("%d ",x); }
#include<stdio.h> const int N=5; void init(int a[],int n,int value); int main(){ int b[N],i; init(b,N,-1); for(i=0;i<N;i++) printf("%3d ",b[i]); return 0; } void init(int a[],int n,int value){ int i; for(i=0;i<n;i++) a[i]=value; }
函数名作为参数时,函数声明和函数定义中,函数名init后面括号里出现的是形式参数,数组名后面要加[].如:void init(INt a[],int n,int value);函数调用中,函数名init后面括号里出现的是实际参数,直接写数组名。如:init(b,N,-1);在函数中,改变形参数组a,实参数组b也跟着改变,实参数组b和形参数组a对应的是同一组内存空间。
Part 4 用冒泡法对一组数据由大到小排序
#include<stdio.h> const int N=5; void bubbleSort(int[],int); int main(){ int i,a[N]; printf("请输入%d个整形数据:\\n",N); for(i=0;i<N;i++) scanf("%d",&a[i]); printf("排序前的数据:\\n"); for(i=0;i<N;i++) printf("%d ",a[i]); printf("\\n"); bubbleSort(a,N); printf("排序后的顺序:\\n"); for(i=0;i<N;i++) printf("%d ",a[i]); printf("\\n"); return 0; } void bubbleSort(int x[],int n){ int i,j,t; for(i=0;i<=n-1;i++){ for(j=0;j<n-1;j++){ if(x[j]>x[j+1]){ t=x[j]; x[j]=x[j+1]; x[j+1]=t; } } } }
1,用冒泡法对n个数由小到大排序,共需扫描(n-1)遍,第i遍扫描时需要比较(n-1)次。
2.注意边界条件,i,j的值都是从零开始,边界条件分别为i<n-1,j<n-1-i.
Part 5 编程练习
#include<stdio.h> int findMax(int a[],int n); const int N=5; int main(){ int a[N]; int max,i; printf("输入%d个整数:\\n",N); for(i=0;i<N;i++) scanf("%d",&a[i]); findMax(a,N); max=a[4]; printf("数组a中最大元素值为:%d\\n\\n",max); return 0; } int findMax(int x[],int n){ int i,t; for(i=0;i<n-1;i++){ if(x[i]>x[i+1]){ t=x[i]; x[i]=x[i+1]; x[i+1]=t; } } }
#include<stdio.h> const int N=4; void output(char x[],int n); void bubbleSort(char x[],int n); int main(){ char string[N]={‘2‘,‘0‘,‘1‘,‘9‘}; int i; printf("排序前:\\n"); output(string,N); bubbleSort(string,N); printf("\\n排序后:\\n"); output(string,N); printf("\\n"); return 0; } void output(char x[],int n){ int i; for(i=0;i<N;i++) printf("%c",x[i]); } void bubbleSort(char x[],int n){ int i,j; char t; for(i=0;i<n;i++){ for(j=3;j>i;j--){ if(x[j]>x[j-1]){ t=x[j]; x[j]=x[j-1]; x[j-1]=t; } } } }
实验总结与体会
感觉这一章学的有懵,有很多会出错的地方,总觉得还是自己应该有一个系统的复习,然后再把书上的内容好好捋一捋。快期中考试了,很慌,要多看一些考试的题型吧。我觉得还是要多尝试,多犯错,虽然这样会很痛苦,但是也会有很多收获的。
以上是关于实验四的主要内容,如果未能解决你的问题,请参考以下文章