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

    C程序设计实验报告
    实验项目: 数组实验
    姓名: 廖云福 实验地点: 514物联网实验室 实验时间:2019年5月29日

    一实验项目

    • 7.3.1一维数组的应用
    • 7.3.2二维数组的应用
    • 7.3.3字符数组的应用
      一、实验目的和要求
      a.掌握一维和多维数组的定义和数组元素的引用方法。
      b.了解一维数组和多维数组初始化方法。
      c.学习一维和多维数组的基本算法。
      d.掌握字符数组的定义、初始化方法和元素的引用方法。
      e.掌握C语言提供的对字符串进行处理的基本库函数。

    二、实验内容
    实验练习一、冒泡排序法给随机数排序
    1、问题描述:编写程序,利用随机函数产生的10个数,按升序排序输出。

    3、实验代码:

    #include "stdio.h"
    #include "stdlib.h"
    #include "time.h"
    void sort1(int s[],int n)
    {
        int i,j;
        int temp;
        for(i=0;i<n-1;i++)
        for(j=9;j>=i;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("
    ");
        sort1(a,10);
        printf("排序后的结果:
    ");
        for(i=0;i<10;i++)
        printf("%d ",a[i]);
    }
    

    4、问题分析
    冒泡排序接触比较多,随机数用srand(time(NULL));a[i]=rand()%100;rand()%100这样可以让数据更小,控制在100以内。
    用数组,用到双重循环。数组名是数组储存的首地址,所以可以把数组名看成地址量。
    运行结果:
    流程图

    实验练习二、选择排序给随机整数排序
    1、问题的简单描述:对随机产生的10个随机整数从大到小的顺序排列。
    2、流程图如下图所示:

    3、实验代码

    #include"stdio.h"
    #include"stdlib.h"
    #include"time.h"
    void sort2(int s[],int n)
    {
    	int i,j,k;
    	int temp;
    for(i=0;i<n-1;i++)	/*用于排序的外循环for语句*/
    {
        	k=i;
            for(j=i+1;j<=n-1;j++)	/*用于排序的内循环for语句*/
             {
            	if(s[k]>s[j])
                {
    				k=j;
    			}
    	     }
            	if(k!=i)
            	{
    	     	temp=s[k];
    	    	s[k]=s[i];
    	     	s[i]=temp;
    	        } 
             
    }
    }
    main()
    {
    	int i,a[10];
    	srand((unsigned int)time(NULL)); 
    	printf("随机产生10个整数:
    ");
    	for(i=0;i<10;i++)
    	a[i]=rand()%100+1;
    	for(i=0;i<10;i++)
    	printf("%d ",a[i]);
    	printf("
    ");
    	sort2(a,10);
    	printf("输出排序后的10个数;
    ");
    	for(i=0;i<10;i++)
    	printf("%d ",a[i]);
    }
    

    运行结果:

    实验三、输出指定行数的杨辉三角
    1、问题描述:编写程序,从键盘输入行数,输出指定行数的杨辉三角形。
    2、算法流程图:

    3、实验代码

    
    #include "stdio.h"
     main()
    {
        int a[50][50],i,j,n;
        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(i=1;i<=n;i++)//输出杨辉三角// 
            {
                for(j=1;j<=i;j++)
                printf("%6d",a[i][j]);
                printf("
    ");
            }
    }
    

    运行结果:

    实验四:给定 年月日,将其转化为这一年的第几天,并输出。
    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 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("Input year_month_day:
    ");
        scanf("%d%d%d",&y,&m,&d);
        day_year(y,m,d);
        printf("是这一年的第%d天
    ",day_year(y,m,d));
    }
    

    运行结果:

    实验五:判断字符串是否为回文数。
    1、问题描述:编写程序,从键盘输入一个字符串,判断其是否为回文数。
    2、算法流程图:

    3、实验代码

    #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/2;i++)
    	{
    		if(str[i]!=str[len-1-i])
    	{
    		ch='N';
    		break;
    	}	
    	}
    
    	if(ch=='Y')
    	printf("%s是一个回文数
    ",str);
    	else
    	printf("%s不是一个回文数",str); 
    }
    

    运行结果:

    实验小结:在上实验课之前,应该做好实验预习,查好相应的资料,多动手实验。

  • 相关阅读:
    百度高级搜索技巧
    JRebel插件使用详解
    css3自适应布局单位vw,vh详解
    vue的MVVM原理
    JS实现全屏和退出全屏
    设置不定宽高的元素垂直水平居中
    微信小程序启动更新机制
    了解MVVM原理
    xss攻击和csrf攻击的定义及区别
    跨站脚本漏洞(XSS)基础讲解
  • 原文地址:https://www.cnblogs.com/lyf152977/p/10957427.html
Copyright © 2011-2022 走看看