(实验报告参考范例)

实验报告

                                                                 第     

专业__软件工程    __  班级   软工*班           学号_123012012***  _   姓名         

实验日期:20##年11 月1 日              报告退发 (订正 、 重做)                         

课程   c语言实验设计                    实验名称                     数组            

一、实验目的

(1)掌握一维数组的基本操作;

(2)掌握二维数组的基本操作;

二、实验环境(描述实验的软件、硬件环境)

   安装有Microsoft VC++6.0的PC机

三、实验内容、步骤和结果分析

(列出实验内容,阐明实验步骤及中间的结果或现象、最终结果和现象,对这些结果和现象进行分析,若出现误差也予以分析误差原因)

题目一:从键盘上输入六个整数,存放到整型数组arr中,再从键盘上输入一个整数,存放到整型变量n中。

要求:

    编程查找整数n是否在数组arr中出现过。若出现,则输出第一次出现的位置,否则,输出no found

(1)源码

#include <stdio.h>

#define N 6

int main()

{

       int arr[N];

       int i,n;

      

       printf("输入六个整数:");

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

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

       printf("输入一个整数:");

       scanf("%d",&n);

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

       {

              if(arr[i]==n)

              {

                     printf("%d\n",i);

                     break;

              }

                    

       }

       if(i>=N)

       printf("no found\n");

      

       return 0;

}

(2)运行结果截图

题目二:编程实现将原数组中的元素逆序存储:例如原数组a[]={5,2,7,4}   ,则逆序后的数组a[]={4,7,2,5}.

要求:

(1)分别输出逆序前、后数组各元素的数值;

(2)逆序实现不要借助其他数组;

(1)源码

#include <stdio.h>

int main()

{

       int a[4]={5,2,7,4};

       int i;

       printf("原数组:");

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

              printf("%2d",a[i]);

          

       printf("\n");

       printf("逆序数组:");

       for(i=3;i>=0;i--)

              printf("%2d",a[i]);

       printf("\n");

      

       return 0;

}

(2)运行结果截图

题目三:输出数组中的元素(重复的元素只输出一次):

    例如数组int a[]={1,1,2,3,26,3,4,5,8,7,7,4};则应输出 1 2 3 26 4 5 8 7

(1)源码

#include <stdio.h>

int main()

{

       int a[]={1,1,2,3,26,3,4,5,8,7,7,4};

       int b,i,n;

      

       printf("%3d",a[0]);

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

       {

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

              {

                     if(a[i]==a[n]) 

                     {

                            b=0;

                            break;

                     }

                     else

                            b=1;

              }

              if(b==1)

              printf("%3d",a[i]);

             

               

       }

      

       printf("\n");

       return 0;

}

(2)运行结果截图

      

题目四:编写一个程序,将用户输入的十进制正整数转换成任意进制(2~16)的数(将结果存储在一维数组中,最后显示结果)

(1)源码

#include<stdio.h>

int main()

{

       int a,b,d;

       int i,m,n;

       int c[100];

       for(d=1;d!=-1;)

       {

              printf("请输入一个十进制整数<-1结束输入>:");

              scanf("%d",&a);

             

             

              if(a==-1)

                     goto done;

      

             

              printf("请输入要转换成的进制:");

              scanf("%d",&b);

             

              for(i=0,m=1;m!=0;i++)

              {

                     c[i]=a%b;

                     m=a/b;

                     a=m;

              }

    

      

              printf("转换结果为:");

              for(n=i-1;n>=0;n--)

                     printf("%d",c[n]);

      

              printf("\n");

              printf("----------------------------------------\n");

       }

    done:

       printf("----------------------------------------\n");

    return 0;

}

(2)运行结果截图

题目五:

?  假设共有3名学生,每名学生都有5门成绩(语文、数学、英语、化学、物理)。

?  要求:

(1)从键盘上输入每位学生的5门课程成绩;

(2)输出每位同学的总成绩和平均分;

1)源码

#include<stdio.h>

int main ()

{

       int a[3]={1,2,3};

       float b[5];

       int i,j;

       float sum;

      

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

       {

              printf("请输入第%d位学生的课程成绩(语文、数学、英语、化学、物理):",a[i]);

             

              for(j=0,sum=0;j<5;j++)

              {

                     scanf("%f",&b[j]);

                     sum =sum+b[j];

              }

      

              printf("总分:%.2f              平均分:%.2f\n",sum,sum/5.0);

              printf("\n");

       }

       return 0;

}

(2)运行结果截图

题目六:使用二维数组打印如下图形(杨辉三角)

(1)方法1

#include<stdio.h>

int main ()

{

       int a[6][6]={1};

       int i,j;

      

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

              a[i][0]=1;

       printf("-------------------------------------\n");

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

       {

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

              {

                     if(j==0)

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

                     else

                     {

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

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

                     }

              }

              printf("\n");

       }

       printf("-------------------------------------\n");

       return 0;

}

方法2

#include<stdio.h>

int main ()

{

       int a[6][6]={1};

       int i,j;

      

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

              a[i][0]=1;

       printf("-------------------------------------\n");

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

       {

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

              {

                     if(j==0)

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

                     else

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

              }

       }

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

       {

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

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

                     printf("\n");

       }

       printf("-------------------------------------\n");

       return 0;

}

(2)运行结果截图

题目七:编写一个程序,将两个字符串连接起来。

注意:不要用strcat函数。

1)源码

#include<stdio.h>

int main ()

{

       char a[3];

       char b[5];

       char c[50];

       int i;

       printf("input the value of array a:");

       scanf("%s",a);

       printf("input the value of array b:");

       scanf("%s",b);

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

       {

              if (i<3)

                     c[i]=a[i];

             

              else

                     c[i]=b[i-3];

       }

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

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

       printf("\n");

       return 0;

}

(2)运行结果截图

题目八:编写程序,读入一个以符号"!"结束的长度小于20字节的英文句子,检查其是否为回文(即正读和反读都是一样的)。例如:
读入句子:MADA ADAM! 它是回文,所以输出:YES
读入句子:ABCDBA)! 它不是回文,所以输出:NO

1)源码

#include<stdio.h>

int main ()

{

       char a[20];

       int i,k,h;

       printf("读入一个以符号!结束的长度小于20字节的英文句子:");

      

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

       {

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

              if(a[i] == '!')

                     break;

       }

      

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

       {

              h=i-k-1;

              if(a[k]!=a[h])

              {

                     printf("No\n");

                     break;

              }

             

       }

      

       if(k==i)

       printf("Yes\n");

       return 0;

}

(2)运行结果截图

四、讨论

(说明实验过程中遇到的问题及解决办法;未解决/需进一步研讨的问题或建议新实验方法等)

题目四中开头会出现这种问题

后来问了老师,就知道是怎么回事啦!!!明白问题出在哪里真是高兴。

题目八开头也是运行不出来,但是在11月9日下午的课上,听老师讲课时恍然大悟 原来自己忘记在输入的那个地方加入地址符,所以总是运行不了。

题目六中,把输出语句放入判断的循环内和循环外,好像应该是没有什么区别吧,方法一比较省代码吧。

 

第二篇:C程序综合实验报告参考样例

华北科技学院计算机系综合性实验

实 验 报 告

课程名称      程序设计语言(C)                   

实验学期   2007     2008  学年 第  2  学期

学生所在系部       计算机系             

年级     07级     专业班级    信管B072班         

学生姓名     XXX           学号 200707034201      

任课教师     刘士杰                                

实验成绩                          

计算机系制


C程序设计》课程综合性实验报告

开课实验室:软件开发实验室一                                              20##年7月2日

相关推荐