C语言程序设计实验报告实验5 使用数组的程序设计--华北水利水电大学

一、实验目的

(1)掌握一维数组和二维数组的定义、赋值和输入输出方法。

(2)掌握字符数组的使用。

(3)掌握与数组有关的算法。

二、实验内容及步骤

1、已有一个已排好序的数组,要求输入一个数,将它插入数组中,保持数组依然有序。

程序代码:

#include
int main()
{
    int i,j,a,q,end,x;
    int b[10]={1,3,5,6,7,8,9,10,11};
    for(int i=0;i<=9;i++)
    {
    printf("%d ",b[i]);}
    printf("\n");
    printf("请输入一个数");
    scanf("%d",&a);
    end=b[8];
    if(a>=end)
    b[9]=a;
    else
    for(i=0;i<=9;i++)
    {
        if(b[i]>a)
        {    j=b[i];
            b[i]=a;
            for(x=i+1;x<10;x++)
            {
            q=b[x];
            b[x]=j;
            j=q;
            }
        break;
        }
    }    //TODO
    for(i=0;i<=9;i++){
    printf("%d ",b[i]);}
}

2、 检验并打印幻方矩阵

    在下面的5*5阶幻方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些幻方矩阵中的元素读到一个二维整型数组中,然后检验其是否为幻方矩阵,并将其按如下格式显示到屏幕上。

                17  24  1   8   15

                23   5  7   14  16

                4    6  13  20  22

                10  12  19  21  3

                11  18  25  2   9

程序代码:

#include
int main()
{
    int a[5][5],sum1=0,sum2=0,sum3=0,sum4=0,b[5]={0},c[5]={0},k=0;
    printf("请依次输入数组元素\n");
    for(int i=0;i<5;i++)//数组输入
    {
        for(int j=0;j<5;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    for(int i=0;i<5;i++)//每一行和放到一个数组
    {
        for(int j=0;j<5;j++)
        {
        sum1+=a[i][j];
        }
         b[i]=sum1;
        sum1=0;
    }
    for(int j=0;j<5;j++)//每一列和放到一个数组
    {
         for(int i=0;i<5;i++)
        {
        sum2+=a[i][j];//TODO
        }
        c[j]=sum2;
        sum2=0;
    }
    for(int i=0;i<5;i++)
    {
        int j=0;
        sum3+=a[i][j];
        j++;
    }
    for(int i=0;i<5;i++){
        for(int j=4;j<=0;j--)
        {
        sum4+=a[i][j];//TODO
        }
    }
    if(b[1]==b[2]&&b[2]==b[3]&&b[3]==b[4]&&b[1]==b[0])
        k++;
    if(c[1]==c[2]&&c[2]==c[3]&&c[3]==c[4]&&c[1]==c[0])
        k++;
    if(sum3==sum4);
        k++;
    if(b[1]==c[1]&&c[1]==sum3);
        k++;
    if(k==4)
    {printf("该数组为幻方矩阵\n");    
    for(int i=0;i<5;i++)
    {
        for(int j=0;j<5;j++)
        {
            
            printf("%-3d",a[i][j]);
        }
        printf("\n");
    }
    }
    else
    printf("该数组不是幻方矩阵");    
}

3、完成以下程序,并进行调试

某班期末考试科目为数学、英语和计算机,有最多不超过30人参加考试,考试后要求:1)计算每个学生的总分和平均分;

2)按总分成绩由高到低排出成绩的名次;

3)打印出名次表,表格内包括学生学号、各科分数、总分和平均分;

4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。

【提示】:用二维数组score存放每个学生各门课程的成绩,用一维数组num存放每个学生的学号,用一维数组sum存放每个学生的总分,用一维数组aver存放每个学生的平均分。

程序代码:

  

#include
int main()
{
    int score[4][30]={0},num[7][30]={0},sum[30]={0},aver[30]={0};
    int a;
    printf("请输入参加考试学生人数\n");
    scanf("%d",&a);
    printf("请输入学生学号和成绩(数学 英语 计算机)\n");
    int q,w,e,r,i=0;
    for(int j=0;j

4.编写一个程序,利用字符数组实现两个字符串的比较。(注意不能使用字符串比较函数strcmp())

程序代码:

#include
int main()
{
    char a[100]={0},b[100]={0};
    printf("请输入第一个字符串:\n");
    scanf("%s",a);            
    printf("请输入第二个字符串:\n");
    scanf("%s",b);
    for(int i=0;;i++)
    {    if(a[i]>b[i])
    {            
        printf("字符串1大于字符串2");
        break;
    }else if(a[i]

三、问题讨论

  1. 使用%s格式符输入字符串到数组时能否将空格符输入?如果不能该如何使用其它方法解决?举例说明。

不能

可用getch() 代替

#include<stdio.h>
int main()
{

    char a;
    a=getchar();
    printf("1%c1",a);
}

1.数组在“定义”时和“引用”时所带的下标有何区别?

定义下标表示的是该数组所能容纳的数组元素个数

引用时下标下标表示引用元素所在的行和列。

四、实验心得

你可能感兴趣的:(算法,蓝桥杯,java,c语言)