zoukankan      html  css  js  c++  java
  • 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题文件中的学生信息,按照平均成绩排序,把排序后的数据存放到另一个新文件中。

  • 相关阅读:
    20121010 闲的慌的日子
    九月,桂花飘香的季节
    win7下控件(ActiveX)注册错误(0x80040200) 修正
    C#多线程技术(一)
    C#多线程技术(二)
    C++沉思录摘录(OOP部分)
    SVM入门教程
    是IE的bug还是Windows的bug?
    inno setup安装时不需要开始菜单项
    django本地局域网访问
  • 原文地址:https://www.cnblogs.com/shajianheng/p/2749910.html
Copyright © 2011-2022 走看看