实验四

Part 1:

在使用int型数据时地址连续且仅相隔四个单位,后面数的值也与int类型数据相符

 将数据类型改成double后,不仅间隔单位变成了连续的8个单位,说明为double数据分配8个字节,后面数据的值的格式也变成了double类型

将数据类型改成char后,地址间隔单位只有1个单位,说明char数据仅占1个字节,后面的值也成了char数据中我们所定义的字母

Part 2:

demo2 1.cpp用最直观的方式展现数组怎样把每一个变量定义到对应的数;

而demo2_2.cpp用循环代替了demo2_1.cpp中的逐个定义,对于数量较多的情况更加方便;

demo2_3.cpp展示了用特殊的固定的语句  n = sizeof(a) / sizeof(a[0]);  来代替变量的个数,让电脑自己得出数组大小;

demo2_4.cpp说明当数组大小大于所给予数组的值的个数时,软件会按照顺序从0往后安排数组的值,多余的数组赋予0值;

Part 3: 

demo3_2.cpp与demo3_1.cpp同样是把数组元素score[i]作为实参,但区别在与前者用函数的形式表达的实参数组元素score[i],

demo3_3.cpp用函数void init(int a[],int n, int value);来确定数组的大小,其调用出的int a[]实参再来进入主函数的循环,

而正因在void init(int a[],int n, int value)中计算得到的int a[i]皆为-1,所以最后输出的值才会是-1   -1   -1   -1   -1   ;

Part 4:

冒泡法(仅仅只是bubbleSort这个函数名跟它很搭而已吧。。。)

原理即对一组数(n个)进行n次扫描,扫描到第几次将第几大的数放在第n几个数对应的位置上

整个代码流程中用数组便捷地确定了相应位置数的值,重点还是在bubbleSort这个函数上

循环嵌套巧妙使n次计算中每一次又包含了n-1次计算,再搭配if语句每一个数到其相应的位置,涨知识涨知识了。

Part 5:

ex1.cpp

#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]);// 利用循环输入N个整数给数组a     
// 补足程序1    // 。。。                 
max=findMax(a,N);// 调用子函数max求数组a的最大元素值,并赋值给max     
// 补足程序2    // 。。。             
// 输出最大值    
printf("数组a中最大元素值为: %d\n\n", max);             
return 0; 
} 
// 函数定义 
// 功能描述:找出整型数组a中元素的最大值,并返回次此最大值 
int findMax(int a[], int n){
    
    int m,max;
    max=a[0];
    for(m=0;m<N;m++)
    {if(a[m]>max)
    max=a[m];
}
return max;
}
// 补足函数findMax()的实现部分3 // 。。。


 ex2.cpp

#include <stdio.h>
const int N=4; 
void output(char x[], int n); // 函数声明 
// 排序函数声明 
void bubbleSort(char x[], int n);// 补足代码1 // 。。。 
int main() 
{    
char string[N] = {'2','0','1','9'};    
int i;        
printf("排序前: \n");    
output(string, N);// 调用排序函数对字符数组中的字符由大到小排序     
bubbleSort(string,N);// 补足代码2     
// 。。。         
printf("\n排序后: \n");     
output(string, N);        
printf("\n");        
return 0;   
} 
// 函数定义 // 函数功能描述:输出包含有n个元素的字符数组元素 // 形参:字符数组,以及字符数组元素个数 
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,t;        
for (i=0; i<n-1; i++) {         
for(j=0; j<n-1-i; j++) {            
if( x[j] < x[j+1] ) {                
t = x[j];                 
x[j] = x[j+1];                 
x[j+1] = t;            
}        }    } }// 函数定义 // 函数功能描述:对一组字符由大到小排序 // 形参:字符数组,以及字符数组元素个数 // 补足代码3 // 。。。

 

实验总结与体会:

1.对于数组如果只是单纯规定数组大小并得出相应数的值还是比较简单的,

也感受到在用数组的同时再用函数的优越性吧,感觉自己的函数都多了不少可能性。

形参与实参的区别与该处的位置也大致弄清了,还了解了一种貌似有点炫酷的方法(单就名字而言)

2.踩坑与问题的话呢,有时候没有关注数据类型,对于函数的编写到头来好像还不如数组熟练

感觉函数还是太灵活了,不多加练习很难一两次尝试就成功,还是得多自己编写几道程序,

构想算法,付诸于C语言程序吧。

3.还是多想听些算法与函数或是编程题目的实训吧,

因为毕竟课后时间无法达到那么充裕,能多接触一点是一点。

 

posted @ 2019-04-25 22:14  汪纯昊  阅读(125)  评论(0)    收藏  举报