第七章 数组实验
---恢复内容开始---
第七章实验报告
姓名:王煜 时间: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个整数:\n"); for(i=0;i<10;i++) a[i]=rand()%100;/*随机产生10个整数*/ for(i=0;i<10;i++) printf("%d ",a[i]); printf(" \n"); sortl (a,10);/*调用排序函数*/ printf("排序后的结果\n"); 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个整数:\n"); for(i=0;i<10;i++) a[i]=rand()%100;/*随机产生10个整数*/ for(i=0;i<10;i++) printf("%d ",a[i]); printf(" \n"); sort2 (a,10);/*调用排序函数*/ printf("排序后的结果\n"); 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("\n"); } }
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是一个回文数\n",str); else printf("%s不是一个回文数\n",str); }
4、实验结果
小结
回文的判断只需要循环到字符串长度的一半,
年月日天数计算s=s+day_tab
不懂就去参考
---恢复内容结束--