C语言程序设计第六次实验报告

实验项目:7.3.1练习1、7.3.1练习2、7.3.2练习1、7.3.2练习1Plus

姓名:李爽

实验地点:家

实验时间:2020.5.7 2020.5.19


一、实验目的与要求

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

二、实验内容

实验7.3.1练习1

1、问题的简单描述:写一个函数,对用随机数产生的10个整数按从小到大的顺序排序(升序,用冒泡排序实现)。
2、实验代码:

#include"stdio.h"
#include"stdlib.h"
#include"time.h"
void sort1(int s[ ],int n)
{
	int i,j;
	int temp;
	for(i=0;ii+1;j--)
	{
		if(s[j]

3、问题分析:排序时,只排了9个数,i的初始值设为了1,所以错误。不熟悉sort()函数的用法,编写过程中出了点错误。

实验7.3.1练习2

1、问题的简单描述:写一个函数,对随机产生的10个整数按从小到大的顺序排序(升序,用选择排序实现)。
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

3、问题分析:改变了排序方法,问题与上面相同,i的初始值应设为0。

实验7.3.2练习1

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]=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("%d   ",a[i][j]);
       printf("\n");
    }
    printf("\n");
}

3、问题分析:输出结果第一列只有第一个数为1,后面都为0。a[i][i]=a[i][1]=1要连写才可以。

实验7.3.2练习1Plus

1、问题的简单描述:将杨辉三角以等腰三角形的形式输出。
2、实验代码:

#include"stdio.h"
void main()
{
	int a[50][50],i,j,k,n;
	printf("请输入杨辉三角的行数:\n");
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	  a[i][i]=a[i][1]=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<=n-i;j++)
          printf("  ");
       for(j=1;j<=i;j++)
          printf("%-6d  ",a[i][j]);
        printf("\n");
    }
   
}

3、问题分析:等腰三角形图案的代码不熟悉。对于输出结果的美观度没有太在意,输出时用“%-6d”,采用对齐会好很多。

实验7.3.2练习2

1、问题的简单描述:给定年某月某日,将其转换成这一年的第几天病输出。
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 day_year(int y,int m,int d)
{
	int i,j,s=0;
	if(y%4==0&&y%100!=0||y%400==0)
	    i=1;
	else i=0;
	for(j=1;j

3、问题分析:在二维数组初始化时漏掉了最外面的{}。对函数的定义不熟悉,刚开始漏掉了参数的类型符。

实验7.3.3

1、问题的简单描述:编写程序,判断某一字符串是不是“回文数”(从左至右和从右至左读起来是一样的字符串)。
2、实验代码:

#include"stdio.h"
#include"string.h"
#define N 40
void 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是一个回文数\n",str);
	else
	  printf("%s不是一个回文数\n",str);
 } 

3、问题分析:scanf()中变量要设置为str,if()判断语句中==表示等于。

三、实验小结

本次实验涉及了函数和数组,我发现自己理论知识掌握的不牢靠,实际操作就不熟练。但同时从实验中也加深了对相关知识的理解和运用。从同学们的讨论中,我了解了左对齐的编写。

你可能感兴趣的:(C语言程序设计第六次实验报告)