第七章数组实验实验报告(第一部分)

实验项目:第七章数组实验

姓名:谢丽萍  时间:2019年5月29号   地点:514教室

一、实验目的与实验要求

①7.3.1-1本实验旨在巩固学生对数组这种数据结构的理解,增强程序设计能力。在这个实验中,学生将练习:定义一个一维整形数组,其大小为10,即它能存放10个数据;使用循环语句,利用随机函数生产10个整数放在数组中;编写排序函数sort1()使用循环语句,将排好序的10个数依次存放在数组中。在强化练习中,学生将练习:将数组定义为全局数组或局部数组;在主函数中,用随机函数生成10个元素放入数组中;将sort1()函数部分放入主函数中。

②7.3.2本实验旨在巩固学生对二维数组这种数据结构的理解,增强程序设计能力。在这个实验中,学生将练习:怎样定义和使用二维数组;怎样用循环进行二维数组中的计算;使用循环依次输出二维数组中的元素;用if语句根据条件判断某个字符是否是大写字母。

③7.3.3本实验旨在巩固学生对字符串这种数据结构的理解,增强程序设计能力。在这个实验中,学生将练习:用scanf()函数,从键盘输入一个字符串,存入字符数组中;求出该字符串的长度;用for循环依次比较,循环的终值为长度的一半;设置一个标识符ch,初值为“y”,若某字符对不相等,将其设置为“N”;根据ch是“Y”还是“N”输出该字符串是否是回文数;在强化练习中学生将练习:不用strlen()函数求出字符串的长度;将求回文数的部分独立出来,编成一个函数。

二、实验内容

1、实验练习

问题描述:编写程序,利用随机函数产生的10个整数按从小到大的顺序排序(升序,冒泡排序法)

流程图:

实验代码:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void sort1(int s[],int n)
{
    int i,j,k;
    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 int)time(NULL));
    printf("随机产生10个整数:\n");
    for(i=0;i<10;i++)
    a[i] =rand()%100;
    for(i=0;i<10;i++)
    printf("%d ",a[i]);
    printf("\n");
    sort1(a,10);
    printf("输出排序后的10个整数\n");
    for(i=0;i<10;i++)
    printf("%d ",a[i]);
}

运行结果:

问题分析:这道题中我遇到了几个问题,分别是:①给出随机种子和随机产生10个整数这两个语句的函数我已开始拿到题目不会,后面上网百度了一下,就解决了。老师说这个我们还没学过,但之前碰到过,这次又碰到了,算是又巩固一遍吧。②对于我一开始的代码运行出来的结果是这些数字连在一起的,没有分开。后面我问了一下同桌才发现问题出在没有给输出函数空格,后面改过来后更美观了。

2、实验练习

问题描述:写一个函数,对随机产生的10个整数按从小到大的顺序排序(升序,用选择排序法)

流程图:

实验代码:

#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;
         for(j=i+1;j<=n-1;j++)
    {
        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个整数:\n");
    for(i=0;i<10;i++)
    a[i] =rand()%100;
    for(i=0;i<10;i++)
    printf("%d ",a[i]);
    printf("\n");
    sort2(a,10);
    printf("输出排序后的10个整数\n");
    for(i=0;i<10;i++)
    printf("%d ",a[i]);
}

运行结果:

问题分析:这道题和上一道题一样只是使用的方法不一样而已,所以在做出第一道题后再来做这道题,再加上流程图的帮助就更简单了许多。但还是遇到了问题,就是在sort2中的最后一个if语句后面的内容没有包含到for循环中最后导致运行出来的结果只有部分数据调换了为置。

3、实验练习

问题描述:编写一程序,从键盘输入行数,输出指定行数的杨辉三角形。

流程图:

实验代码:

#include<stdio.h>
main()
{
    int a[50][50],i,j,n;
    printf("输入杨辉三角形行数:\n");
    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("%5d",a[i][j]);
        printf("\n");
     }
}

运行结果:

问题分析:对于这道题我一开始没有怎么搞懂其原理,导致我在经过很长时间思考后还是运行不出来后去看同学的代码时都没看懂。后面经过同学的解释后最后恍然大悟,解出了这道题。我开始没有分清最后两个for循环的含义,导致没搞懂。原来第二个for循环是算出中间的那些数,最后一个for循环是控制输出的。

4、实验练习

问题描述:编写程序,从键盘分别输入年、月、日,计算出改天是这年中的第几天。

流程图:

实验代码:

#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%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];
    }
       s=s+day;
    return s;
}
 main()
{
    int y,m,d;
    printf("输入年,月,日:");
    scanf("%d%d%d",&y,&m,&d);
    printf("是这年的第%d天\n",day_year(y,m,d));
}

运行结果:

问题分析:这道题中犯了一个错误就是if(year%4==0&&year%100!=0||year%400==0)中的year刚开始用i来代替了,导致运行不出来。后面在晓鹏老师的帮助下,发现了问题,并改过来了。以后要谨记定义的变量是什么就用什么,不然白定义了程序识别不了。

5、实验练习

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

流程图:

实验代码:

#include<string.h>
#define N 40
main()
{
    char str[N],ch=‘Y‘;
    int i;
    int len;
    printf("please input a string\n");
    scanf("%s",str);
    len=strlen(str);
    for(i=0;i<(len/2);i++)//回文数从左至右和从右至左一致,所以只需判断前一半与后一半对应数是否一致 ,所以i<len/2
    {
        if(str[i]!=str[len-1-i])
        {
            ch=‘N‘;
            break;
        }
    }
    if(ch==‘Y‘)
    printf("%s是一个回文数\n",str);
    else
    printf("%s不是一个回文数\n",str);
}

运行结果:

问题分析:对于这道题还好,没遇到啥问题,进行的挺顺利的。

三、实验小结

这次实验中我们又再次接触到了随机函数,学会了随机数的表达。还有在使用变量时要注意,必须用之前定义的,不能随便改变,不然会识别不了,导致程序运行不出来。

原文地址:https://www.cnblogs.com/xieliping/p/10947254.html

时间: 2024-10-09 23:27:05

第七章数组实验实验报告(第一部分)的相关文章

程序设计基础 第七章 数组与字符串

第七章 数组与字符串 A总结: 1.数组是同类型的集合,同一个数组的数组元素具有相同的数据类型,引用数组就是引用数组的各元素,通过下标的变化可以引用任意一个数组元素,注意不要进行下标越界的引用,那样会带来副作用. 2.数组类型在数据处理和数值计算中有十分重要的作用,数组与循环的结合可以解决很多的问题. 3.数组可以根据下标的多少分类:一维数组(一个下标)……… 4.C语言使用字符数组来存放字符串,该字符数组中包含一个’\0’字符,代表字符串的结尾. B解析: 7.1:数组的基本概念 :按一定的顺

java-第七章-数组-循环输出

public class A01 { public static void main(String[] args) { // TODO Auto-generated method stub String name [] = new String []{"Nike背包","Adidas运动衫","李宁运动鞋","Kappa外套","361°腰包"}; System.out.println("本次活动

java-第七章-数组-购物金额结算

import java.util.Scanner; public class A02 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input= new Scanner (System.in); double number [] = new double [5]; double sum=0; for (int i = 0; i < number.length; i++) 

java-第七章-数组-字符逆序输出

import java.util.Arrays; public class A03 { public static void main(String[] args) { // TODO Auto-generated method stub char Letter [] = new char []{'a','c','u','b','e','p','f','z'}; System.out.print("原字符 列表:"); for (int i = 0; i < Letter.len

java-第七章-数组-求出一些数的最小值

import java.util.Scanner; public class A04 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); double[] Price = new double[4]; double min = 0; System.out.println("请输入4家店的价格"); for

java-第七章-数组-更新会员积分

import java.util.Scanner; public class A05 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.out.println("请输入5位会员的积分:"); int integral[] = new int[5]; for (int i = 0; i &l

java-第七章-数组-依次输入5句话,然后将它逆序输出.

import java.util.Scanner; public class A01 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner (System.in); System.out.println("请输入5句话:"); String[] names = new String [5]; for (int i = 0; i &

java-第七章-数组-一组数字找出最低分,并找出他的下标

public static void main(String[] args) { // TODO Auto-generated method stub int integarl [] = new int []{18,25,7,36,13,2,89,63}; int min=integarl[0],index=0; for (int i = 0; i < integarl.length; i++) { if(integarl[i]<min){ min=integarl[i]; index=i+1

第七章 数组实验

实验项目: 1.一维数组的运用 2.二维数组的应用 3.字符数组的应用 姓名:陈福洲  实验地点:教学楼514教室  实验时间:2019.5.29 一.实验目的与要求 1.掌握一维和多维数组的定义和数组元素的引用方法. 2.了解一维和多维数组初始化方法. 3.学习一维和多维数组的基本算法. 4.掌握数组的定义.初始化方法及其元素的引用方法. 5.掌握c语言提供的对字符串进行处理的基本函数库. 二.实验内容 一维数组的应用(7.3.1) 实验练习1:(1)问题的简单描述:编写程序,利用随机函数产生