zoukankan      html  css  js  c++  java
  • C语言程序设计数组实验实验报告

    C程序设计实验报告

    实验项目:数组实验

    姓名:胡俊 实验地点:家 实验时间2020.5.7

    一、实验目的与要求

    (1)掌握一维和多维数组的定义和数组元素的引用方法。
    (2)了解一维和多维数组初始化的方法。
    (3)学习一维和多维数组的基本算法。
    (4)掌握字符数组的定义、初始化方法及其元素的引用方法。
    (5)掌握C语言提供的对字符串进行处理的基本库函数。

    二、实验内容

    1、实验练习:7.3.1-1

    1、问题的简单描述:编写程序,利用随机函数产生10个整数,并按升序排列输出。其算法流程图如图7-1所示。

    2、流程图:

    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+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];
    	srand((unsigned)time(0));
    	printf("随机产生10个整数:
    ");
    	for(i=0;i<10;i++)
    	a[i]=rand()%100;
    	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、问题分析:个别printf函数中 和%d后要加空格,没加的话会导致数与数堆积在一起。

    2、实验练习:7.3.1-2

    1、问题的简单描述:与7.3.1-1相同只不过运行过程不同,排序方法不同。

    2、实验代码:

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

    3、问题分析:无

    3、实验练习:7.3.2改进

    1、问题的简单描述:编写程序,从键盘输入行数,输出指定行数的杨辉三角形。其算法流程图如图7-3所示。

    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=0;i<n;i++)
    	{
    		for(j=1;j<=n-i;j++)
    		{
    			printf("  ");
    		}
    		for(j=1;j<=i+1;j++)
    		{
    			printf("%3d ",a[i+1][j]);
    		}
    		printf("
    ");
    	}
    }
    

    4、问题分析:无

    4、实验练习:7.3.2-2

    1、问题的简单描述:编写程序,从键盘分别输人年、月、日,计算出该天是这年中的第几天。其算法流程图如图7-4所示。

    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,s=0;
    if((year%400==0)||((year%4==0)&&(year%100!=0)))
    i=1;
    else
    i=0;
    for(j=1;j<month;j++)
    s=s+day_tab[i][j];
    s=s+day;
    return s;
    }
    main()
    {
    int y,m,d;
    printf("Input year_month_day:
    ");
    scanf("%d %d %d",&y,&m,&d);
    printf("是这年的第%d天
    ",day_year(y,m,d));
    }
    

    4、问题分析:无

    5、实验练习:7.3.3

    1、问题的简单描述:编写程序,从键盘输入一个字符串,判断其是否是回文数。算法流程图如图7-5所示。

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

    4、问题分析:无

    四、实验小结(剖析个人得失)

    简单的使用了C语言的数组感觉只要掌握了数组的结构,就能够运用数组了。

  • 相关阅读:
    家庭问题(family)
    BFS简单题记
    【例2-3】围圈报数
    【例8.3】最少步数
    【例3-5】扩展二叉树
    股票买卖
    小球(drop)
    用循环单链表实现约瑟夫环
    二叉树的3种遍历6种实现
    const与#define宏常量 , inline与#define
  • 原文地址:https://www.cnblogs.com/mzbhq/p/12843717.html
Copyright © 2011-2022 走看看