C语言程序设计实验报告(数组)

C语言程序设计实验报告(数组)

1       实验目的

(1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法;

(2)熟练掌握字符数组和字符串函数的使用;

(3)掌握与数组有关的常用算法(查找、排序等)。

2       实验内容

编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。

     要求:

1、不允许用strcat()和strlen()字符处理库函数;

2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数strlen()计算并返回两个字符串的长度;

3、调用函数catstr()连接两个字符串(将str2连接在str1后面);

4、调用函数lenstr()计算并返回连接后字符串的长度;

5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字符串及其长度。

3算法描述流程图

 

4       源程序

#include<stdio.h>

#include<string.h>

 void  catStr(char str1[],char str2[])

 { int i,j;

   for (i=0;str1[i]!='\0';i++);

     for(j=0;str2[j]!='\0';j++)

         str1[i+j]=str2[j];

         str1[i+j]='\0';

}

 lenStr(char m[] )

 {int i;

for (i=0;m[i]!='\0';i++);

       printf("%d",i);

 }

 void main()

 {char s1[50]="forever",s2[50]="more";

     printf("s1=%s,s2=%s",s1,s2);

         printf("\ns1的长度:");

         lenStr(s1);

         printf("\ns2的长度:");

         lenStr(s2);

     catStr(s1,s2);

         printf("\n连接后的字符:");

     printf("%s\n",s1);

        printf("连接后字符的长度:");

        lenStr(s1);

        printf("\n");

       }

5       测试数据

  s1=forever, s2=more

6       运行结果

7       出现问题及解决方法

在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。

8       实验心得

 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。

 

第二篇:C语言程序设计实验报告 数组.doc1

实验目的:

(1)掌握数组的定义和使用

(2)掌握使用数组的常用算法

实验内容:

【实验5-1】从键盘输入6个同学C语言程序设计期末考试成绩,计算平均分、最高分、最低分,以及超过平均分的人数,并输出以上计算结果值(平均分保留1位小数)。

(1)程序代码

#include<stdio.h>

void main()

{

 int a[6];

 float aver,max,min,sum;

 int i,j,count,temp;

 sum=0.0;

 count=0;

 printf("请输入C语言成绩:\n");

 for(i=0;i<=5;i++)

 {

     scanf("%d",&a[i]);

     sum=sum+a[i];

 }

 aver=sum/i;

 printf("平均分为%.1f",aver);

for(i=1;i<6;i++)

{

 for(j=0;j<(6-i);j++)

 {

     if(a[j]>a[j+1])

     {

         temp=a[j];

         a[j]=a[j+1];

         a[j+1]=temp;

     }

 }

}

max=a[5];

min=a[0];

printf("最高分为%f" "最低分为%f",max,min);

for(i=0;i<=5;i++)

{

    if(a[i]>aver)

    {

        count=count+1;

    }

}

  printf("超过平均分的人数为%d",count);

}

(2)运行结果

【实验5-2】编写程序,在输入一个字符串后,实现将该字符串存储并倒序输出。

(1)程序代码

#include<stdio.h>

void main()

{

 char ch[100];

 int i,k;

 i=0;

 do

 {

  scanf("%c",&ch[i]);

  i++;

 }while(ch[i-1]!='\n');

 for(k=i-2;k>=0;k--)

 {

     printf("%c",ch[k]);

 }

}

(2)运行结果

【实验5-3】编写程序,输入一个整型的二行三列的二维数组,并将该二维数组行和列的元素互换,存到另一个二维数组中输出 (求转置矩阵)

(1)程序代码

 #include<stdio.h>

void main()

{

 int a[2][3],b[3][2];

 int i,j;

 for(i=0;i<=1;i++)

 {

     for(j=0;j<=2;j++)

     {

         scanf("%d",&a[i][j]);

     }

 }

 for(i=0;i<=2;i++)

 {

    for(j=0;j<=1;j++)

    {

       b[i][j]=a[j][i];

    }

 }

 for(i=0;i<=2;i++)

 {

    for(j=0;j<=1;j++)

    {

       printf("%d",b[i][j]);

     

    }

  printf("\n");

 }

}

(2)运行结果

【实验5-4】编写程序,将某一指定字符从一个已知的字符串中删除,并将删除后的字符串输出。(提示:首先输已知字符串和指定字符,然后依次查找是否有字符与其匹配。如果找到有字符匹配,则删除,后面的字符前移,再输出)

(1)程序代码

#include<stdio.h>

#include<string.h>

void main()

{

 int i;

 int k;

 char b;

 char a[6];

 gets(a);

 printf("请指出要删除字符\n");

 i=0;

 scanf("%c",&b);

 do

 {

  if(a[i]==b)

  {

   for(k=i;k<=4;k++)

   {

       a[k]=a[k+1];

   }

  }

  else

  {

      i++;

  }

}while(i<=4);

 for(i=0;i<5;i++)

 {

     printf("%c",a[i]);

 }

}

(2)运行结果

【实验5-5】编写程序,从键盘输入任意6个整数,利用冒泡法进行排序,并将排序后的整数序列输出

(1)程序代码

#include<stdio.h>

void main()

{

int ch[6];

int i,j,temp;

for(i=0;i<=5;i++)

{

    scanf("%d",&ch[i]);

}

for(i=1;i<6;i++)

{

    for(j=0;j<(6-i);j++)

    {

       if(ch[j]>ch[j+1])

       {

           temp=ch[j];

           ch[j]=ch[j+1];

           ch[j+1]=temp;

       }

    }

}

for(i=0;i<=5;i++)

{

    printf("%d ",ch[i]);

}

}

(2)运行结果

实验小结:

编程过程中,经常会遇到编译正确但是运行不出的问题,很是苦恼。。。

相关推荐