实验六
C语言程序设计实验报告六
姓名:林贵阳
地点:家
时间:2020.5.19
实验项目
-
一维数组项目
-
二维数组项目
-
字符数组项目
一、实验目的与要求
-
掌握一维和多维数组的定义和数组元素的引用方法。
-
了解一维和多维数组初始化的方法。
-
学习一维和多维数组的基本算法
-
掌握字符数组的定义、初始化方法及其元素的引用方法
-
掌握C语言提供的对字符串进行处理的基本库函数。
二、实验内容
7.3.1一维数组的应用
实验1
-
问题的简单描述:写一个函数,对用随机数产生的10个整数按从小到大的顺序排序(升序,用冒泡排序实现)。
-
实验代码
#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(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("排序后的结果;\n");
for (i=0;i<10;i++)
{
printf("%d ",a[i]);
}
}
- 问题分析:冒泡排序的理解要加强
实验2
- 问题描述:写一个函数,利用随机产生的10个整数按从小到大的顺序排列(升序,用选择排序实现)
- 实验代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
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;
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
sort2(a,10);
printf("排序后的结果:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
- 问题分析:选择排序理解要加强
二维数组
实验1
-
.问题描述:输入指定行数的杨辉三角形
-
实验代码
#include<stdio.h> int 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("%-4d",a[i][j]); } printf("\n"); } }- 问题分析:对于这种方法感到惊奇,所以还是要对优秀的代码多看多想;
实验2
-
问题描述:编写程序,从键盘分别输入年月日,计算该天是这年的第几天
-
实验代码
#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 day1(int year,int mouth,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<mouth;j++) { s=s+day_tab[i][j]; } s=s+day; return s; } main() { int y,m,d; printf("input year_mouth_day:\n"); scanf("%d %d %d",&y,&m,&d); printf("是这一年的第%d天\n",day1(y,m,d)); }- 问题分析:如何把闰年和其他年分成两行来取
字符数组应用
实验1
-
问题描述:编写程序,从键盘输入一个字符串,判断其是否为回文数。
-
实验代码
#include<stdio.h> int main() { int i,k; char line[80]; printf("Enter astring:"); k=0; while((line[k]=getchar())!='\n'){ k++; } line[k]='\0'; i=0; k=k-1; while(i<k){ if(line[i]!=line[k]){ break; } i++; k--; } if(i>=k){ printf("it is a palindrom"); }else{ printf("it is not a palindrom"); } return 0; }
3. 问题分析:在这题中难点在于如何首尾相对应
实验小结
这次实验让我更加面板各排序的原理和作用,在二维数组方面清楚的认知了自己的不足,字符数组中的函数要进一步加强记忆

浙公网安备 33010602011771号