C语言程序设计实验指导书

 《C语言程序设计》实 验 指 导 书

 石家庄铁道大学信息科学与技术学院

2012年9月1日

实验一   上机环境初识及简单程序设计

一、实验的目的要求

1. 理解C语言的基本特征和基本知识;

2. 掌握赋值语句的使用;

3. 掌握基本输入/输出语句的使用;

4. 熟悉上机实验环境。

5. 要求:上机前先编制程序并画出N-S图;独立完成实验;独立完成实验报告。

二、实验内容(第1题必做,2-4题选做2题)

1. 分析下面程序的执行结果,并上机验证。(必做)

main()

{

int a=5,b=7;

float x=67.8564,y=-789.124;

char c=‘a’;

long n=1234567;

unsigned u=65536;

printf(“%d%d\n”,a,b);

printf(“%3d%3d\n”,a,b);

printf(“%f,%f\n”,x,y);

printf(“%-10f,%-10f\n”,x,y);

printf(“%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n”,x,y,x,y,x,y);

printf(“%c,%d,%o,%x\n”,c,c,c,c);

printf(“%ld,%lo,%x\n”,n,n,n);

printf(“%u,%o,%x,%d\n”,u,u,u,u);

printf(“%s,%5.3s\n”,”computer”,”computer”);

}

 

2. 假设公民的个人所得税为工资总额的5%,编程输入一个公民的工资总额,计算其应缴纳的个人所得税和其扣除所得税后的实际工资,并输出。

3. 利用格式控制符输出以下图形。

        *

                  ***

       *****

       *******

      *********

4. 从键盘上输入圆的半径,圆柱的高,求圆的周长,圆球的表面积、圆球的体积、圆柱体积。用scanf输入,用printf输出。输出时有文字说明,取小数点后2位数字。请编程序。

 

实验二    选择结构程序设计

一、实验的目的要求

1. 理解c语言表示逻辑量的方法(以0代表“假”,以非 0代表“真”);

2. 掌握逻辑运算符和逻辑表达式,关系运算符和关系表达式的书写的意义;

3. 掌握if语句的使用;

4. 掌握if 语句的嵌套;

5. 掌握 switch语句的使用。

6. 要求上机前先编制程序并画出N-S图;独立完成实验;独立完成实验报告。

二、实验内容

1. 有三个整数a,b,c,由键盘输入,输出其中最大的数。见习题4(P112) 

4. 编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。设:>=90分为‘A’,>=80&&<90分为‘B’,>=70&&<80分为‘C’,>=60&&<70分为‘D’,<60分为‘E’(用switch语句实现)。见习题8(P113)

5. 企业发放的奖金根据利润提成。利润I低于或等于10万元的,奖金可提10%;利润高于10万元的,低于20万元时,低于10万元的部分仍按10%提成,高于10万元的部分按7%提成;200000<I<400000时,低于20万元的部分仍按上述办法提成,高于20万元的部分按5%提成;400000<I<600000时,高于40万元的部分按3%提成,600000<I<1000000时,高于60万元的部分按1.5%提成;I>1000000时,超过100万元的部分按1%提成。从键盘上输入当月利润I,求应发奖金总数。

要求:(1)用if语句编程 (2)用switch语句编程。见习题10(P113)

6. 求ax2+bx+c=0方程的根,a,b,c由键盘输入。

 

 

实验三    循环结构程序设计

 

一、实验的目的要求

1. 理解三种循环语句的执行流程;

2. 掌握while语句,do-while语句以及for语句的语法及基本应用;

3. 掌握多重循环的使用;

4. 掌握循环结构的编程方法;

5. 进一步提高编程能力。

6. 要求上机前先编制程序并画出N-S图;独立完成实验;独立完成实验报告。

二、实验内容(1-5题必做,6-9题选做1题)

1. 输入10个数,计算它们的和,积、平方和以及和的平方。

2. 在1-500中,找出能同时满足用3除余2,用5除余3,用7除余2的所有整数。

3. 输入两个正整数mn,求其最大公约数和最小公倍数。

4. 求100~200间的全部素数。

5. 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

6. 求1!+2!+3!+4!+…+20!

7. 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如153是一个“水仙花数”,因为153=13+53+33。

8. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如:6的因子分别是:1,2,3,而6=1+2+3,所以6是完数。编程输出1000之内的所有完数,并按照下面的格式输出其因子:6 its factors are 1,2,3

9. 输出以下图案:

       *

     ***

   *****

  *******

   *****

     ***

       *

10. 验证歌德巴赫猜想(任何充分大的偶数都可由两个素数之和表示)。将4-100中的所有偶数分别用两个素数之和表示。输出为:

4=2+2

6=3+3

……

100=97+3

11. 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半多一个。第二天早上又吃了剩下的一半多一个。以后每天早上都吃了前一天剩下的一半多一个。到第十天早上想再吃时,发现就剩下1个桃子了。求第一天共摘了多少?(提示:利用递推的方法。由第10天开始时的桃子数可以推出第九天开始时的桃子数,以此类推即可)。

 

实验四   数组类型程序设计

 

一、实验的目的要求

1. 理解数组的含义和存储方式;

2. 掌握数组的定义方法;

3. 掌握数组的应用;

4. 掌握字符数组的定义方法和应用;

5. 进一步提高编程能力。

6. 要求上机前先编制程序并画出N-S图;独立完成实验;独立完成实验报告。

二、实验内容(1-5题必做,6-10题选做2题)

1. 输入一串字符,以“ ?”结束,分别统计其中每个数字字符0,1,2,….9出现的次数。

2. 从键盘上输入10个数,求最大值、最小值和平均值。

3. 从键盘上输入10个数,按从小到大的顺序排序输出。

4. 编写程序,将字符数组s2中的全部字符拷贝到字符数组s1中。不用strcpy函数。拷贝时,‘\0’也要拷贝进去,‘\0’后面的字符不拷贝。

5. 从键盘上输入15个数,编程实现:首先对它按从小到大的顺序排序,然后,从键盘上再输入一个数,用折半查找法找出该数是数组中的第几个元素的值。若该数不在数组中,则打印出“无此数”。

6. 计算两个矩阵的和、积。

7. 在一个已排好序的数列中(由小到大)再插入一个数,要求仍然有序。编程并上机运行。提示:编程时应考虑到插入的数的各种可能性(比原有所有的数大;比原有所有的数小;在最大数和最小数之间)。

8. 编写一程序,一班级有n名学生要求按他们姓名的顺序排列(按汉语拼音的字母顺序从小到大),并按序输出。

9. 从键盘上输入一字符串,并判断是否形成回文(即正序和逆序一样,如“abcd dcba”)。

10. 输入两个二维矩阵,求两个矩阵的和、差和积。

7.(选作)约瑟夫问题。M个人围成一圈,从第一个人开始报数,数到n的人出圈。再由下一个人开始报数,数到n的人出圈,……输出依次出圈人的编号。M的值预先设定,n从键盘上输入。

 

 

实验五   函数程序设计

 

一、实验的目的要求

1. 掌握定义函数的方法;

2. 掌握函数实参和形参的对应关系以及“值传递”的方法;

3. 掌握函数的嵌套调用和递归调用的方法;

4. 掌握全局变量和局部变量,动态、静态变量的概念和使用方法;

5. 学习对多文件程序的编译和运行。

6. 进一步提高编程能力。

7. 要求上机前先编制程序并画出N-S图;独立完成实验;独立完成实验报告。

二、实验内容(1-3题必做,4-5题选做1题)

1. Definine a function: digit(n,k),it will return the kth digit of n from right.

for example: digit(15327,4)=5

           digit(289,5)=0

3. 写几个函数:(1)输入10个职工的姓名和职工号;(2)按职工号从小到大排序,姓名也相应改变顺序;(3)要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工的职工号,输出该职工的姓名。

4. 用牛顿迭代法求方程2x3-4x2+3x-6=0在区间(1,5)之间的根。

5. 写一函数,输入一行字符,将此字符串中最长和单词输出

 

实验六   指针类型程序设计

 

一、实验的目的要求

1. 进一步理解指针的概念;

2. 掌握指针变量的定义和使用方法;

3. 能正确使用一维数组的指针和指向一维数组的指针变量;

4. 掌握用指针作为函数参数的方法;

5. 了解二维数组与指针的关系。

6. 学习对多文件程序的编译和运行。

7. 进一步提高编程能力。

8. 要求上机前先编制程序并画出N-S图;独立完成实验;独立完成实验报告。

二、实验内容(1-3题必做,4-5题选做1题)

1. 输入三个整数,按照从小到大的顺序输出。(用函数和指针实现)

2. 写几个函数:(1)输入10个职工号;(2)按职工号从小到大排序;(3)要求输入一个职工号,用折半法找出来。(用函数和指针实现)

3. 写一个函数,将一个3 X 3的整型矩阵转置。

4. 编写一个函数sort,使20个整数由小到大的顺序排列。在主函数中输出排好序的数。本程序编写函数部分要求要用指针来解决。

5. 在主函数中输入10个等长的字符串。用另一个函授数对它们排序,然后输出这10个已排好序的字符串。

 

实验七   结构体程序设计

 

一、实验的目的要求

1. 进一步理解结构体的概念;

2. 掌握结构体的定义和结构体变量的定义和使用方法;

3. 能正确使用结构体数组;

4. 掌握链表的基本概念,能够编写简单的应用程序

5. 进一步提高编程能力。

6. 要求:上机前先编制程序并画出N-S图;独立完成实验;独立完成实验报告。

二、实验内容(12题必做,3-8题选做4道)

1. 一个班有10名同学,每名同学都有如下信息:学号,姓名,三门课程的成绩。请编写程序输入全班同学的信息,并且按第一门课程的成绩从小到大排序后输出。

2. 在题1的基础上,计算每名同学三门课程的平均成绩,并按照平均成绩排序后输出。

3. 在题1的基础上,每个同学添加出生日期信息,编写程序输入全班同学的信息,并且按照年龄(出生日期)排序后输出。要求:判断二人的大小写成函数。并分别用选择排序和冒泡排序。

4. 在题2的基础上,每名同学增加等级(grade)信息,若平均成绩高于全班平均成绩10分以上,则为”A”,高于平均成绩不超过10分,则为”B”,低于平均成绩则为”C”,计算每个同学的等级,并输出。

5. 按照输入的顺序建立一个链表,每个节点包括:学号、姓名、性别、年龄。直到输入的学号为-1结束。然后输出此链表。然后从键盘上输入一个学生的学号,把此学生的节点删除后再输出链表。(要求建立链表、删除用函数)

6. 修改5题的建立链表的函数,要求按照输入的逆序建立链表。其他不变。

7. 有两个链表ab。每个链表中节点包括学号、成绩。要求把两个链表合并。(自己编程建立链表)。

8. 在题7的基础上,要求合并两个链表,但是要求按学号升序。(可以借助第三个链表)。

实验八   文件类型程序设计

 

一、实验的目的要求

1. 进一步理解文件的概念;

2. 掌握文件的定义;

3. 掌握文本文件和二进制文件的基本访问方法;

4. 进一步提高编程能力。

5. 要求上机前先编制程序并画出N-S图;独立完成实验;独立完成实验报告。

二、实验内容

1. 从键盘上输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件中保存。输入的字符以“!”结束。

2. 有5个学生,每个学生有3门课的成绩,从键盘上输入学生数据(包括学号、姓名、三门课的成绩)。计算出每个同学的平均成绩,将学生信息存放在磁盘文件中。

3. 将2题文件中的学生信息,按照平均成绩排序,把排序后的数据存放到另一个新文件中。

posted @ 2012-11-01 16:52  秋天的菠菜  阅读(4996)  评论(0编辑  收藏  举报