C程序设计实验报告6
------------恢复内容开始------------
C程序设计实验报告六
实验项目:7.3.1 一维数组的应用 ,7.3.2 二维数组的应用 ,7.3.3 字符数组的应用
姓名:胡一阳
实验地点:家中
实验时间:2020.05.19
一、实验目的与要求
1、使用循环语句,利用随机函数产生10个整数并排序;
2、定义和使用二维数组;
3、用循环进行二维数组中值的计算;
4、用if语句根据条件判断某个字符是否是大写字母;
5、使用strlen()函数求出字符串的长度;
二、实验内容
1、实验练习: 7.3.1 一维数组的应用
1、问题的简单描述:编写程序,利用随机函数产生10个整数,并按升序排列输出。
2、实验代码:
(1)冒泡排序法
(2)选择排序法
#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; } } void main() { int i,a[10]; srand(time(NULL)); printf("随机产生10个整数:\n"); for(i=0;i<10;i++) a[i]=rand(); 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]); }
#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[j]<s[k]) k=j; } if(k!=i) { temp=s[k]; s[k]=s[i]; s[i]=temp; } } } int main() { int i,a[10]; srand(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]); }
3、问题分析:写题目时要注意具体该如何排序,要注意for循环的用法;
4、流程图:
2、实验练习:7.3.2 二维数组的应用
1、问题的简单描述:如何用循环进行二维数组中值的计算,如何输出指定行数的杨辉三角形;
2、实验代码:
(1)输出指定行数的杨辉三角形
(2)给定年某月某年某日,将其转换成这一年的第几天并输出
#include<stdio.h> void 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; } i=3; for(i;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<=n-i;j++) printf(" "); for(j=1;j<=i;j++) printf("%8d",a[i][j]); printf("\n"); } }
#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]; } return s+day_tab; } main() { int y,m,d; printf("Input year_month_day:"); scanf("%d%d%d",&y,&m,&d); printf("是这年的第%d天\n",day_year(y,m,d)); }
3、问题分析:统计方式的头部刚开始不知道是什么东西,后面多看了一下前面的就懂了;
4、流程图:
3、实验练习:7.3.3 字符数组的应用
1、问题的简单描述:回文数的判断以及如何使用算法;
2、实验代码:
(1)判断某一字符串是不是回文数;
#include "stdio.h" #include "string.h" #define N 40 main() { char str[N],ch='Y'; int i; int len; printf("Input a sting:"); scanf("%s",&str); len=strlen(str); for(i=0;i<=len/2;i++) { if(str[i]!=str[len-1-i]) ch='N';/*将标志设置为‘N'*/ break; } if(ch=='Y')/*判断是否为回文数*/ printf("%s是一个回文数",str); else printf("%s不是一个回文数",str); }
3、问题分析:无
4、流程图:
三、实验小结
这次的实验有点难,要多花点时间去学习。我希望在今后的学习中,我也会努力的去学习c语言。我觉得c语言的学习让我明白了好多,也挖掘出了写代码的乐趣。现在已经学到了指针,是比较难的部分,数组和指针也有联系,要好好融会贯通,今后的学习要更加努力。
------------恢复内容结束------------