第四次实验的总结与体会

本周进行了第四次实验,这次的实验比上次实验顺利了很多,没有出现太多的问题,练习补全的不太顺利,还是要继续努力,多做题,好好巩固。本次实验如下:

Part1:数组数据结构

通过实验观察验证数据中数据是否是连续存放的?

#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;
}

修改line4和line7看结果

#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;
}

继续修改line4和line7看结果

#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;
}

实验中的数据是连续存放的(但我有个疑惑,怎么我截的图和老师发的图中的数字不同,我的是2293392,老师的是6487584)

Part2:一对数组的定义.初始化以及数组元素的引用方法

#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) / sizeof(a[0]);
    for(i=0; i<n; i++)
    printf("a[%d] = %d\n", i, a[i]);
    return 0;
}

sizeof是c语言中的运算符,用于计算数据占用的字节数。表达式sizeof(a) / sizeof(a[0])用于计算数
组元素的个数。其中:
sizeof(a)计算数组a占用的总的字节数,
sizeof(a[0])计算数组元素a[0]占用的字节数。
Part3:数组作为函数参数
#include <stdio.h>
const int N=5;
int main() 
{
    int score[N] = {99, 82, 88, 97, 85};
    int i;
    for(i=0; i<N; i++)
    printf("%d ",score[i]); 
    return 0;
}

程序里的函数printf()要用户自己定义

#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]);
    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;
}

Part4:用冒泡法对一组数据有小到大排序

#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-i; j++) 
    {
    if( x[j] > x[j+1] ) 
    {
    t = x[j];
    x[j] = x[j+1];
    x[j+1] = t;
    }
     }
      }
}

这一部分看了老师的步骤,到现在为止还是不会写太长的程序,要继续努力。

Part5:编程练习

练习一:补全程序,查找一组整型数据的最大值。

#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]);
    max=findMax(a,N);
    printf("数组a中最大元素值为: %d\n\n", max);
    return 0;
}
int findMax(int b[],int m)
{
    int max=b[0],j;
    for(j=1;j<m;j++)     
    {
    if(b[j]>max)
    max=b[j];
    }
    return max;
}

这个练习前两处很快就补全了,第三处想了很久,但还是写出来了。

练习二:补全程序,使用冒泡法对字符数组有大到小排序

#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-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;
    }
     }
      } 
 } 

这个练习补全的也比较费劲,花了很长时间。

总结与体会

本次实验相对顺利,但还是要继续努力,存在了一些小问题,太长的程序不能正确使用一些句式,完整的写一个程序花的时间太长了,要继续积累知识,毕竟不积小流无以成江海,加油!

猜你喜欢

转载自www.cnblogs.com/super123-/p/10757555.html