zoukankan      html  css  js  c++  java
  • 第七次实验报告

    第七次实验报告

    实验项目:

    1.一维数组的应用

    2.二维数组的应用

    3.字符数组的应用

    姓名:伍臣林   实验地点:教学楼514教室   实验时间:5月16日

    一、实验目的与要求

    1.一维数组的应用

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

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

    ·编写排序函数sort1();

    ·使用循环语句,将排好序的10个数依次输出。

    2.二维数组的应用

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

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

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

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

    3.字符数组的应用

    ·用scanf()函数,从键盘输入一个字符串存入字符数组中;;

    ·求出该字符串的长度;

    ·用for循环依次比较,循环的最终值为长度的一半;

    ·设置一个标志符ch,初值为‘Y’,若某字符对不相等,将其设置为‘N’。

    ·根据ch是‘Y’还是‘N’,输出该字符串是否是回文数。

    二丶实验内容

    7.3.1实验练习

    1.问题描述

    一:编写程序,利用随机函数产生10个整数,按升序排列输出。
    二:写一个函数,对随机产生的10个整数按从小到大的顺序排序(用选择排序法实现)。

    2.实验代码
    一流程图:

    #include "stdio.h"
    #include "stdlib.h"
    #include "time.h"
    void sort1(int s[],int n)
    {
        int i,j,temp;
        for(i=0;i<n-1;i++)
        {
            for(j=9;j>=i+1;j--)
            {
                if(s[j]<s[j-1])
                {
                    temp=s[j];
                    s[j]=s[j-1];
                    s[j-1]=temp;
                }
            }
        }
    }
    main()
    {
        int i,a[10];
        printf("随机产生10个整数:
    ");
        srand((unsigned) time(NULL));
        for(i=0;i<10;i++)
        {
            a[i]=rand()%100;
            printf("%d  ",a[i]);
        }
        sort1(a,10);
        printf("输出排序后的结果:
    ");
        for(i=0;i<10;i++)
        {
            printf("%d  ",a[i]);
        }
    }
    实验结果图:

    二流程图:

    #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];
        printf("随机产生10个整数:
    ");
        srand((unsigned) time(NULL));
        for(i=0;i<10;i++)
        {
            a[i]=rand()%100;
            printf("%d  ",a[i]);
        }
        sort2(a,10);
        printf("输出排序后的结果:
    ");
        for(i=0;i<10;i++)
        {
            printf("%d  ",a[i]);
        }
    }
    实验结果图:

    3.问题分析

    问题:实验中,产生随机数的函数不知道怎么使用。通过百度找到了解决方法:将srand与rand函数结合使用。

    7.3.2实验练习

    1.问题描述

    一:编写程序,从键盘输入行数,输出指定行数的杨辉三角形。
    二:编写程序,从键盘分别输入年、月、日,计算出该天是这年中的第几天。

    2.实验代码
    一流程图:

    #include "stdio.h"
    main()
    {
        int a[50][50],i,j,n,y,x;
        printf("请输入杨辉三角形行数:");
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            a[i][i]=1;
            a[i][1]=1;
        }
        for(i=3;i<=n;i++)
        {
            for(j=2;j<=i-1;j++)
            {
                a[i][j]=a[i-1][j-1]+a[i-1][j];
            }   
        }
        for(x=1;x<=n;x++)
        {
            for(y=1;y<=n;y++)
            {
                if(y<=x)
                {
                    printf("%d ",a[x][y]);
                }
            }
            printf("
    ");
        }
        
    }
    实验结果图:

    二流程图:

    #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(int y,int m,int d)
    {
        int i,j,s=0;
        if(y%4==0&&y%100!=0||y%400==0)
        {
            i=1;
        }
        else
        {
            i=0;
        }
        for(j=1;j<m;j++)
        {
            s=s+day_tab[i][j];
        }
        s=s+d;
        return s;
    }
    main()
    {
        int y,m,d;
        printf("请分别输入年、月、日:");
        scanf("%d%d%d",&y,&m,&d);
        printf("是这年的第%d天",day(y,m,d)); 
    }
    实验结果图:

    3.问题分析

    问题:闰年计算的公式是通过问同学才知道的 嘿嘿

    二丶实验内容

    7.3.3实验练习

    1.问题描述

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

    2.实验代码
    一流程图:

    #include "stdio.h" 
    #include "string.h"
    #define N 40
    main()
    {
        char str[N],ch='Y';
        int i;
        int len;
        printf("Input a string:");
        scanf("%s",&str);
        len=strlen(str);
        for(i=0;i<=len;i++)
        {
            if(str[i]!=str[len-1-i])
            {
                ch='N';
                break;
            }
        }
        if(ch=='Y')
        {
            printf("%s是回文",str); 
        }
        else
        {
            printf("%s不是回文",str);
        } 
    }
    实验结果图:

    3.问题分析

    问题:实验结果运行会互逆,应是回文却不是回文。
    解决方法:在for循环中加上i<=len,即可。

    三、实验小结


    本次实验 题目不多 但在解题的过程中还是离不开流程图,还是很极大程度上依赖于流程图!这次实验让我对srand函数和数组的使用有了一定的认识!

  • 相关阅读:
    ASP.NET MVC 重点教程一周年版 第二回 UrlRouting
    ASP.NET MVC 重点教程一周年版 第三回 Controller与View
    DynamicData for Asp.net Mvc留言本实例 下篇 更新
    Asp.net MVC视频教程 18 单选与复选框
    使用ASP.NET MVC Futures 中的异步Action
    ASP.NET MVC RC 升级要注意的几点
    ATL、MFC、WTL CString 的今生前世
    msvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
    关于Windows内存的一些参考文章
    Windows访问令牌相关使用方法
  • 原文地址:https://www.cnblogs.com/wu18151783/p/10964919.html
Copyright © 2011-2022 走看看