C程序设计实验报告

C语言程序设计》实验报告

学号  不告诉你哦~      班级  信管一班     姓名  你猜猜~哈哈   

一、实验题目

一、编程实验

猜数问题:输入两个整数,并求这两个整数的和,输入所猜的结果,如果输入数比正确的结果要大,提示“猜大了”;如果输入数比正确的结果要小,提示“猜小了”;当猜对结果时提示“猜对了”,结束游戏(用函数调用方式编程)。

二、程序改错实验

    输入一个数字 b,求sum=b+bb+bbb+…,改正下列程序中的错误。

    #include “stdio.h”

    main()

      { int i,j;

        long int b,sum,temp;

        scanf(“%d”,&b);

        do

          { i++;

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

              temp+=(long int)pow(10,j-1)*b;

              sum+=temp;

           } while(i<=3)

            printf(“sum=%d”,sum);

       }

三、编程实验

编写两个矩阵相加减的程序,两矩阵的行列数均由用户输入(两矩阵的行列数要限制最大值),在屏幕上分行列打印出结果(矩阵元素为整型变量)。

    解析:两个矩阵可以定义两个二维数组matrixl[m][n],matrix2[m][n]存放,用二重循环进行输入输出或实现对应元素的相加或相减运算,相加后矩阵元素存放在matrixl中,相减后矩阵元素存放在matrix2中(上机实验时输入矩阵的行数m=10, 矩阵的列数n=10)。

二、        实验目的和要求

一、          1,、掌握数组的定义、初始化、以及数组元素的引用方法

2、掌握使用序设计基本方法数组表示相关同类数据以及相应的程序设计基本方法

3、掌握字符数组的定义、输入、输出

4、掌握字符串的标准库函数的使用

二、1、考察对字符串的熟练程度

     2、考察sun函数的运用

三、1、把理论和实践有机结合,提高学生适应实际,实验编程的能力

二、    实验环境

VC6.0

三、    源程序

一、#include "stdio.h"

int sum(int n)

{int a,b,t;

  printf("Enter two numbers:" );

  scanf("%d,%d",&a,&b);

  t=a+b;

  return t;

}

 int happy(int x,int y)

 {int g;

     if(x>y)

        { printf("guess big.\n");

      printf("再次输入:\n");

      scanf("%d",&g);

        }  

        if(x<y)

        {

    printf("guess small.\n");

    printf("please write in a four figures again:\n");

    scanf("%d",&g);

        }

    if(x==y) {printf("right.");

      printf("The number is %d.\n",x);/*输出这个数*/

       }

    main()

{int a,b,t,c;

   sum(a,b);

     printf("Enter a guess number:");

       scanf("%d",&c);

         compare(c,t);

}

 }

二、#include "stdio.h"

    main()

      { int i=-1,j;

        long int b,sum,temp;

        sum=0;

              printf("enter a number");

        scanf("%ld",&b);

        do

          { i++;

                 temp=0;

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

              temp+=(long int)pow(10,j)*b;

              sum+=temp;

           }

                while(i<=3);

            printf(“sum=%ldsum=%ld”,sum);

       }

本题中的改错点:

1.把int i,j;改成int i=-1,j;

2.插入一步:sum赋值于零

3.插入一步:temp赋值于零

4.将pow(10,j-1)*b改成pow(10,j)*b

5.将sum=%d改成sum=%ld

三、#include "stdio.h"

main()

{int matrix1[5][5],matrix2[5][5],x,n,i,j,p[5][5];

  printf("输入矩阵1行列数x,n");

   scanf("%d,%d",&x,&n);

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

 {  for(j=0;j<n;j++)

 {

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

 }

   printf("\n");

  }

    printf("请输入矩阵2的行列x,n\n");

     scanf("%d,%d",&x,&n);

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

{ for(j=0;j<n;j++)

  {

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

   }

   printf("\n");

 }

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

{ for(j=0;j<n;j++)

 { h[i][j]=matrix1[i][j]+matrix2[i][j];

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

}

printf("\n");

}

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

{ for(j=0;j<n;j++)

 { matrix2[i][j]=matrix1[i][j]-matrix2[i][j];

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

}

printf("\n");

}

}

四、  运行结果(给出程序运行结果截图)

一、Enter  two number: 12 12

Enter a guess number:12

Guess small

Press any key to continue

三、    Enter  matrix1[i][j]  :4 4 4 4 4                      

                          4 4 4 4 4

4 4 4 4 4

4 4 4 4 4

4 4 4 4 4

Enter matrix2[i][j] : 4 4 4 4 4

                4 4 4 4 4

                4 4 4 4 4

                4 4 4 4 4

                4 4 4 4 4

matrix1[i][j]  :0 0 0 0 0

            0 0 0 0 0

            0 0 0 0 0

            0 0 0 0 0

            0 0 0 0 0

matrix2[i][j] : 8 8 8 8 8

            8 8 8 8 8

            8 8 8 8 8

            8 8 8 8 8 

    

六、实验心得

通过这次的C语言程序设计实验,我明白了很多很多也收获了很多。自从拿到这个题目到完成整个编程,从理论到实践,在这一个月的时间里,我巩固了以前学过的知识,而且努力钻研收获了一些新的知识。通过这次试验使我懂得了理论与实践相结合是重要的,作为新时代的学生,光从书本上获取知识是不够的,应该提高自己动手实践的能力,学会独立思考。在自己动手操作的过程中发现自己的不足,比如说:对以前所学的知识不理解或者理解不够深刻,掌握的不够牢固、不注意细节问题……通过这次自己动手设计程序我更加完善了自己的知识体系。经过近一个月的努力,我的自信心也提高了很多,我也会写程序了!虽然这些程序对有些人来说很简单,但对于我这个初学者来说,已经很不容易了。这次自己动手操作为以后学计算机的我增强了信心。

 

第二篇:C程序设计实验报告

实验一  C语言的运行环境、运行过程和表达式的使用

一、目的与要求

1、了解Dos、Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。

2、了解在该系统上如何编辑、编译、连接和运行一个C程序。

3、通过运行简单的C程序,初步了解C源程序的特点。

4、掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。

5、学会使用C的有关算术运算符,以及包含这些运算符的表达式

二、实验例题

【例1】编程实现在屏幕上显示如下三行文字

            Hello, world !

            Wolcome to the C language world!

            Everyone has been waiting for.

 

在Turbo C的集成环境下,键入如下源文件。敲Alt+F组合键打开File菜单,File菜单中Write to或save as选项可将默认noname.c文件名改为任意文件名。程序example.c如下:

main()

{

printf("Hello,World!\n");

printf("Wolcome to the C language world!\n");

printf("Everyone has been waiting for.\n");

}

然后用Ctrl+F9执行example.c,用Alt+F5查看结果,即在屏幕上显示题目要求的三行文字。按回车键重新返回Turbo C的编辑环境。注意,在运行程序之前最好先存盘。

【例2】输入并运行程序,写出运行结果。

main()

{

int a,b,sum;

    a=123;b=456;

    sum=a+b;

    printf(“sum is %d\n”,sum);

}

运行方法同上,最后结果为:sum is 579。

【例3】

输入并运行程序,写出运行结果。

main()

{

int a,b,c;

int max(int,int);

scanf(“%d,%d”,&a,&b);

c=max(a,b);

printf(“max=%d”,c);

}

int max(int x,int y)

{

int z;

if (x>y) z=x;

else z=y;

return(z);

}

这个程序的功能是对于任意输入的两个整数,输出较大的那个数。所以程序运行之后,光标将停留在用户屏幕上,等待用户输入两个整数,比如输入“3,5”,回车,在用户屏幕上就会输出“max=5”。

 【例4】输入并运行下程序,写出运行结果。

mian()

{

char  c1 , c2;

c1=97;

c2=98;

printf(“%c %c”, c1, c2);

}

在此基础上

1)加一个printf语句,并运行之。

printf(“%d,%d”, c1, c2 );

2)再将第二行改为:

    int c1, c2;

再使之运行。

3)再将第三行改为:

    c1=300; c2=400;

再使之运行,分析其运行结果。

在该程序中,说明了字符型数据在特定情况下可作为整型数据处理,整型数据有时也可以作为字符型数据处理。

【例5】分析下面程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。

main()

{

char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;

printf(“a%c b%c\tc%c\tabc\n”,c1,c2,c3);

printf(“\t%c %c”,c4,c5);

}

在该程序中,主要考查对转义字符的掌握情况。

【例6】

分析下面程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。

main()

{

int i , j , m , n ;

i=8; j=10;

m=++i; n=j++;

printf(“%d,%d,%d,%d”,i,j,m,n);

}

分别作以下改动之后,先分析再运行:

1)将第四行改为:

m=i++; n= ++j;

2)程序改为:

main()

{

int i , j ;

i=8; j=10;

printf(“%d,%d”, i++, j++);

}

3)在2)的基础上,将printf语句改为:

printf(“%d,%d”, ++ i, ++ j );

4)再将printf语句改为:

printf(“%d,%d,%d,%d”,i,j,i++,j++);

5)程序改为:

main()

{

int i , j , m=0 , n=0 ;

i=8; j=10;

m+= i ++; n -= --j;

printf(“i=%d,j=%d,m=%d,n=%d”,i,j,m,n);

}

此程序主要考查自加、自减运算符以及复合运算符的用法。

三、上机内容

1.用turbo c输入并运行前面6道例题中程序,记下运行结果,熟悉调试C程序的的方法与步骤。

2.参照例题,编写一个C程序,输出以下信息:

****************************

        Hello,World!

****************************

四、实验结果分析

对实验结果进行检验,如结果出现错误,分析产生错误的原因并修改程序、改正错误。


实验二   顺序结构与选择结构程序设计

一、实验目的及要求

1.  理解C语言程序的顺序结构;

2.  掌握常用的C语言语句,熟练应用赋值、输入、输出语句;

3.  了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”);

4.  学会正确使用逻辑运算符和逻辑表达式;

5.  熟练掌握if语句和switch语句。

二、实验内容

1、已知圆半径r=1.5,圆柱高h=3, 求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。

2、输入一个华氏温度,要求输出摄氏温度。公式为c=5/9*(f-32)。

3、有3个整数a、b、c,由键盘输入,编程序按从小到大的顺序将它们排序并输出。

4、编程序计算下面的函数:

           e-1         0<x<1

     y=     |x|+2            3≤x≤4

           sin(x2)          当x取其他值时

5、输入一个整数m,判断它能否被7、11、17整除,如果能被以上三个数之一整除,则输出它能被整除的信息,否则输出m不能被7、11、17整除的信息。

6、输入3个整数,要求按由小到大的顺序输出。(与3重复)

7、电文加密的算法是:将字母A变成字母G,a变成g,B变成H,b变成h,依此类推,并且U变成A,V变成B,等等。从键盘输入一个电文字符,输出其相应的密码。

8、企业发放的奖金根据利润提成。若利润I≤10万元,奖金可提10%;若10万<I≤20万时,则低于等于10万元的部分按10%提成,高于10万元部分,可提成7.5%;若20万<I≤40万时,低于等于20万元的部分仍按上述办法提成,高于20万元部分按5%提成;按类似的办法,若40万<I≤60万元时,高于40万元部分按3%提成;若60万<I≤100万元时,高于60万元的部分按1.5%提成;若I>100万时,超过100万元部分按1%提成。从键盘输入当月利润I,求应发奖金总数。

三、实验结果分析

对实验结果进行检验,如结果出现错误,分析产生错误的原因并修改程序、改正错误。


实验三   循环结构程序设计

一、实验目的及要求

1.熟练掌握if语句和switch语句。熟练掌握while、do—while和for三种循环语句的应用。

2.掌握基本的编程算法。

二、实验内容

1、利用公式

         sinx=x-x3/3!+x5/5!-x7/7!+x9/9!-…+(-1)(n-1)·x(2n-1) /(2n-1)!

         编程计算sinx的值。设x=0.5,n=9。


2、编写程序求:

3、计算方程ax2+bx+c=0的解

4、输入20个有符号整数,统计正整数、零、负整数的个数。

5、输入m个数,求其最大数、最小数和平均值。

6、在100和1000之间,有多少个其数字之和等于9而且该数可被5整除的整数?

7、一位同学问老师和老师夫人的年龄是多少,老师说:“我年龄的平方加上我夫人的年龄恰好等于1053,而我夫人年龄的平方加上我的年龄等于873。”试计算老师和其夫人的年龄。

8、打印下列图案

*

***

*****

***

*

三、实验结果分析

对实验结果进行检验,如结果出现错误,分析产生错误的原因并修改程序、改正错误。


实验四、数组程序设计

一、实验目的及要求

1.掌握一维、二维数组的定义、赋值和输入输出的方法;

2.掌握字符数组的使用;

3.掌握与数组有关的算法(例如排序算法)。

二、实验内容

1、给整型二维数组 b[3][4]输入12个数据,计算并输出数组中所有正数之和、所有负数之和。

2、青年歌手参加歌曲大奖赛,有10个评委进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分)。

分析:这道题的核心是排序。将评委所打的10个分数利用数组按增序(或降序)排列,计算数组中除第一个和最后一个分数以外的数的平均分。

3、设二维数组 b[5][4]中有鞍点,即b[i][j]元素值在第i行中最小,且在第j列中最大,试编写一程序找出所有的鞍点,并输出其下标值。也可能没有。

4、从键盘输入一数,然后在一个整型一维数组a[20]中,用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印”No found”。

5、编程打印如下图形:

    *      

  *   *    

*       *  

*   *     

  *

6、有一电文,已按下列规律译成译码:

              A→Z  a→z

              B→Y  b→y

              C→X  c→x

即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变。编写一个程序将密码译成原文,并输出密码和原文。

三、实验结果分析

对实验结果进行检验,如结果出现错误,分析产生错误的原因并修改程序、改正错误。


实验五  函数程序设计

一、目的与要求

1、掌握C语言函数的定义方法、函数的声明及函数的调用方法。

2、了解主调函数和被调函数之间的参数传递方式。

二、实验内容

1、分别编写求圆面积和圆周长的函数,另编写一主函数调用之, 要求主函数能输入多个圆半径,且显示相应的圆面积和周长。

2、编写一程序,把M×N矩阵a的元素逐列按降序排列。假设M、N不超过10。分别编写求一维数组元素值最大和元素值最小的函数,主函数中初始化一个二维数组a[10][10],调用定义的两函数输出每行、每列的最大值和最小值。

3、编写一判别素数的函数,在主函数中输入一个整数,输出该数是否为素数的信息。

4、编写一个将两个字符串连接起来函数(即实现strcat函数的功能),两个字符串由主函数输入, 连接后的字符串也由主函数输出。

5、编写一函数实现用牛顿迭代法求方程ax3+bx2+cx+d=0在x=1附近的一个实根。主函     数完成各系数值的输入及所求得的根值的输出。

6、编写计算最小公倍数的函数,试由主函数输入两个正整数a和b调用之。计算最小 公倍数的公式为:

          lcm(u,v)=u*v/gcd(u,v) (u,v≥0)

    其中,gcd(u,v)是u、v的最大公约数。lcm(u,v)是u、v的最小公倍数。

三、实验结果分析

对实验结果进行检验,如结果出现错误,分析产生错误的原因并修改程序、改正错误。


实验六  指针程序设计

一、目的与要求

1、通过实验进一步掌握指针的概念,会定义和使用指针变量;

2、能正确使用数组的指针和指向数组的指针变量;

3、能正确使用字符串的指针和指向字符串的指针变量;

4、能正确使用指向函数的指针变量;

5、了解指向指针的指针的概念及其使用方法。

二、实验内容

1、编写子函数,对传送过来的三个数按由小到大的顺序排列,并通过形参传回调用函数。

2、编写函数int find(int *p,int n,int x),在指针p所指的数组中查找整型数x,如果x在数组中,则该函数返回1,否则返回0。n为数组的大小。

3、有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前m个数(如下图所示)。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个整数。

4、在主函数中输入10个不等长的字符串。用另一个函数对它们按升序排序,然后在主函数中输出这10个已排序的字符串。

5、用指针型指针对五个字符串进行排序,并将排序后的结果按顺序输出。

6、编写一程序,统计从键盘输入的命令行中第二个参数所包含的英文字符个数。

三、实验结果分析

对实验结果进行检验,如结果出现错误,分析产生错误的原因并修改程序、改正错误。


实验七  结构、联合程序设计

一、目的与要求

1、掌握结构体类型变量的定义和使用;

2、掌握结构体类型数组的概念和使用;

3、掌握单链表的结构以及对链表的基本操作;

4、了解共用体的概念与使用。

二、实验内容

1、编程序,然后上机调试运行。

(1)有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。

要求用input函数输入10个学生数据;用average函数求总平均分;用max函数找出最高分的学生数据;总平均分和最高分学生的数据都在主函数中输出。

2、有5门教材,输入其书名,册数、单价,按它们的册数降序排序,并求各自的金额。

3、有一单位,职工信息包括姓名(name)、年龄(age)、工龄(worktime)、性别(sex)和婚姻状况(marrige)、级别(grade:1-5)、工资(wage)、是否在职(tired)等信息。现在要进行工资的调整,规定退休职工增加50元,在职职工1-5级的工资分别增加20、40、60、80、100元,编程实现上述工资调整。

要求:

分析要存放的信息,设计合适的数据结构;

分析要对信息进行的操作,选择switch语句进行信息处理;

输出程序调整前后的工资数据及级别;

设数据如下:

LiMing    61  42  m  true  5  460  true

GaoMing   46  20  f  false 4  416  true

Malin     26  4   m  true  2  360  false

三、实验结果分析

对实验结果进行检验,如结果出现错误,分析产生错误的原因并修改程序、改正错误。


实验八  文件、图形与接口程序设计

一、目的与要求

1、掌握文件和文件指针的概念以及文件的定义方法。

2、了解文件打开和关闭的概念和方法。

3、掌握有关文件的函数。

4、掌握图形程序与菜单程序的设计方法。

5、掌握简单的接口设计方法。

二、实验内容

1、有 5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原始数据和计算出的平均分数存放在磁盘文件“stud”中。

2、将上题“stud”文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一个新文件“stu_sort”中。

3、设计一个简单的动画程序,实现小球反复地落地和弹起(假设弹起的高度与原始高度相同)。

4、设计简单的菜单,实现Turbo C的主菜单以及Run的子菜单。

5、设计简单的接口及其实现,接口内容包括对一维数组的查找、排序、插入、删除操作。

三、实验结果分析

对实验结果进行检验,如结果出现错误,分析产生错误的原因并修改程序、改正错误。

相关推荐