zoukankan      html  css  js  c++  java
  • 第七章 数组实验

    ---恢复内容开始---

    第七章实验报告

    姓名:王煜     时间:2019.5.28  地点:514教室

    7.3.1一维数组的应用练习一

    1、实验目的

    巩固对一维数组这种数据结构的理解,增强程序设计能力:

    定义一个一维整型数组,其大小为10,即能存放10个数据;

    使用循环语句,利用随机函数产生10个整数存放在数组中;

    编写循环语句,将排好序的10个数依次输出。

    2、问题描述

      编写程序,利用随机函数产生的10个随机数,按升序排列输出。

    3、流程图

     

    4、实验代码

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    void sortl (int s[],int n)
    {
        int i,j,temp;/*定义临时变量*/
        for(i=0;i<n-1;i++)/*糜谂判虻耐庋�穎or语句i*/ 
        
            for(j=9;j>=i+1;j--)/*用于排序的内循环for语句j*/
            {
                if(s[j]<s[j-1])
                {
                    temp=s[j];
                    s[j]=s[j-1];
                    s[j-1]=temp;/*利用中间变量,完成两数组元素的交换*/    
                }
            }
    }
    main()
    {
        int i,a[10];
        srand(time(NULL));/*给出随机种子*/
        printf("随机产生10个整数:
    ");
        for(i=0;i<10;i++)
        a[i]=rand()%100;/*随机产生10个整数*/
            for(i=0;i<10;i++)
            printf("%d ",a[i]);
            printf(" 
    ");
        sortl (a,10);/*调用排序函数*/
        printf("排序后的结果
    ");
        for(i=0;i<10;i++)/*for循环语句*/
        printf("%d ",a[i]); 
    }

    5、实验结果

    7.3.1练习二

    1、实验目的

    在强化练习中,学生将练习:

    将数组定义为全局数组或局部数组;

    在主函数中,用随机函数生成的10个元素放入数组中;

    将sort1()函数部分放入主函数中。

    2、问题描述

    编写程序,利用随机函数产生的10个随机数,按升序排列输出

    3、流程图

    4、实验代码

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    void sort2 (int s[],int n)
    {
        int i,j,k,temp;/*定义临时变量*/
         
        for(i=0;i<n-1;i++)
        {
            k=i;
            for(j=i+1;j<=n-1;j++)
            {
                if(s[j]<s[k])
                    k=j;
            }
            if(k!=i)/*利用中间变量完成交换*/
            {
                temp=s[k];
                s[k]=s[i];
                s[i]=temp;
            }
        }    
    }
    main()
    {
        int i,a[10];
        srand(time(NULL));/*给出随机种子*/
        printf("随机产生10个整数:
    ");
        for(i=0;i<10;i++)
        a[i]=rand()%100;/*随机产生10个整数*/
            for(i=0;i<10;i++)
            printf("%d ",a[i]);
            printf(" 
    ");
        sort2 (a,10);/*调用排序函数*/
        printf("排序后的结果
    ");
        for(i=0;i<10;i++)/*for循环语句*/
        printf("%d ",a[i]); 
    } 

    5、实验结果

     7.3.2练习一

    1、实验目的

    怎样定义和使用二维数组;

    怎样用循环进行二维数组中值的计算;

    使用循环依次输出二维数组中的元素;

    用if语句根据条件判断某个字符是否是大写字母。

    2、问题描述

    编写程序,从键盘输入行数,输出指定行数的杨辉三角形。

    3、流程图

    4、实验代码

    #include<stdio.h> 
    main()
    {
        int a[50][50],i,j,n;
        printf("请输入杨辉三角的行数:");
        scanf("%d",&n);
        for(i=0;i<=n;i++)
        {
            a[i][i]=1;/*第i行第i列输出1*/
            a[i][0]=1;/*第i行第1列输出1*/
        }
        for(i=2;i<=n;i++)
        {
            for(j=1;j<=i-1;j++)
            {
                a[i][j]=a[i-1][j-1]+a[i-1][j];
            }
        }
            for(i=0;i<n;++i)/*杨辉三角行数的输出*/
            {
            for(j=0;j<=i;++j)/*杨辉三角列数的输出*/
                printf("%5d",a[i][j]);
            printf("
    ");
        }
    }

    5、实验结果

     7.3.2练习二

    1、问题描述

    编写程序,从键盘输入年月日,计算该天是这年中的第几天。

    2、流程图

    3、实验代码

    #include<stdio.h>
    int day_tab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
                 {0,31,29,31,30,31,30,31,31,30,31,30,31}};
    int day_year(int year,int month,int day)
    {
        int i,j;
        int s=0;
        if((year%4==0&&year%100!=0)||(year%400==0))
            i=1;
        else
            i=0;
        for(j=1;j<month;j++)
        {
            s=s+day_tab[i][j];
        }
        return s=s+day;
    }
    main()
    {
        int y,m,d;
        printf("输入年月日:");
        scanf("%d%d%d",&y,&m,&d);
        printf("是这年的第%d天",day_year(y,m,d));
    }

    4、实验结果

     

     7.3.3

    1、问题描述

    编写程序,从键盘输入一个字符串,判断其是否是回文数。

    2、流程图

    3、实验代码

    #include<stdio.h>
    #include<string.h>
    #define N 40
    main()
    {
        char str[N],ch='Y';
        int i;
        int len;
        printf("In put a  string:");
        scanf("%s",&str);
        len=strlen(str);/*求字符串长度*/
        for(i=0;i<=len/2;i++)/*for循环语句头部,终值为len/2*/
        if(str[i]!=str[len-1-i])
        {
            ch='N';/*将标志ch设置为‘N’*/
            break;/*退出循环*/
         }
        if(ch=='Y')/*if语句,当标志ch为‘Y’时*/
            printf("%s是一个回文数
    ",str);
        else
            printf("%s不是一个回文数
    ",str); 
    }

    4、实验结果

     

    小结

    回文的判断只需要循环到字符串长度的一半,

    年月日天数计算s=s+day_tab

    不懂就去参考

    ---恢复内容结束--

  • 相关阅读:
    爱奇艺笔试题 输出01020304... ...
    ThreadPoolExecutor 中为什么WorkQueue会在corePoolSize满了之后入队
    jvisualvm 的使用
    连续子数组的最大和
    最长连续子序列
    leetcode 需要了解的知识点储备
    java String
    mysql MVCC
    java 批量导出(zip文件)
    java 中接口调用
  • 原文地址:https://www.cnblogs.com/17370137371WY/p/10962419.html
Copyright © 2011-2022 走看看