C语言程序设计》
实验报告
    :                     
    :                     
    :                     
    :                     
    :                     
课程代码:    2001301         
指导教师:                     
实验中心: 电气信息专业试验中心
    :                     
 
实验总体要求 
实验一………………………………………………C语言的运行环境和运行过程
实验二………………………………………………数据类型、运算符与表达式
递归函数c语言规则实验三………………………………………………程序结构(顺序、选择和循环)
实验四………………………………………………数组
实验五………………………………………………函数
实验六………………………………………………指针
实验七………………………………………………结构体
实验八………………………………………………类和对象

实验总体要求
C语言程序设计课程是一门实践性很强的课程,为了培养学生的计算机应用能力,除了课堂理论教学外,必须加强程序设计课程实验的教学环节。
1、 课程实验教学目的
通过C语言程序设计的课程实验教学,学生应具有使用计算机解决相关问题的能力,同时为学生今后学习其他计算机应用课程打下良好的程序设计基础。
分析问题和解决问题能力的训练
课程实验教学将课本上的理论知识和实际应用有机地结合起来,达到训练学生分析问题解决实际问题的能力,提高学生应用计算机知识开发应用系统的综合能力。
逻辑思维能力的训练
通过课程实验教学,使学生正确地掌握C语言的基本知识,较好掌握基本的程序算法,以及描述方法。培养学生在程序设计解题思路、算法的描述、编程构思等方面的计算机逻辑思维能力。
程序设计技能的训练
通过C语言环境下的应用实例,训练学生编写程序的能力,掌握编程的思路和方法,掌握结构化程序设计的基本概念和基本技能。
通过课程实验教学,使学生掌握C程序设计语言的语法规则,数据结构的应用,掌握算法描述及相应代码描述,掌握结构化程序设计的基本方法,能熟练编写一般的应用程序。
2、 课程实验教学要求
要求通过解题、程序设计和上机实践,加深对所学概念的理解,提倡理论与实践相结合的学习方法。
要求学生认真进行解题分析,掌握算法描述方法,掌握编程基本技能。通过布置一定数量程序设计题目,帮助学生逐步熟悉编写程序的方法,提高程序设计能力。
要求学生在课程实验中,努力培养发现程序错误、纠正程序错误的能力,独立完成每一次课程实验,提高编程的效率和成功率。
要求学生在完成课程实验规定的任务外,利用课余的时间多编程,多上机实践。反对抄袭或拷贝他人的源程序。
要求学生培养科学、严谨的学习作风,认真写好实验报告。学生在上机实践前,应事先编写好相应的源程序,准备好有关的调试数据,了解上机操作的步骤和过程,较好地完成每一次上机实验课。为了使学生能真正做到每一次课程实验有收获,做完一个实验后,要求学生必须写成完整的实验报告。
⑸实验报告模板(如下)要求手工填写,程序代码、及运行结果用附页(见本文件最后一页),打印、手写均可,程序应包含较清楚的注释,装订时附页附在每次实验报告之后。 报告所有文本、程序代码,均要求独立完成,严禁抄袭。

实验一  C语言的运行环境和运行过程
1、熟悉C语言运行环境Visual C++6.0集成开发环境。
2、掌握C语言程序的书写格式和C语言程序的结构。
3、掌握编辑、编译、连接和运行C程序的操作步骤。
硬件:                      软件
1、有下面的C程序,目的是想计算由键盘输入的任意两个整数的积。
/*exl_1.c*/
#include  (stdio.h);               
main()                         
scanf(“%x,%y”,&x,%y)             
printf(“\n  x*y=%d, x/y=%d \n”,x*y,x/y)
在编辑状态纠正上述程序中的所有错误,并用一下输入数据测试,并对结果予以解释。
(1)9(2)3 9      (3)20,3
2、编写程序,通过函数max调用实现从键盘输入两个(或三个)整数,输出最大的一个。其中max函数分别用if-else结构和?:表达式实现。
实验过程及总结体会
1.纠错:  /*exl_1.c*/
      #include  <stdio.h>             
      main()
      int x;
      int y;                 
      scanf(“%x,%y”,&x,&y) ;           
  printf(“ x*y=%d\n, x/y=%d \n”,x*y,x/y)
(1).输入9结果是273
(2)输入3结果是27和一个异常,因为定义的都是整形,但是3/9是一个  非整形
(3)输入20结果是60和一个异常 理由和(2)一样
2.程序: #include  <stdio.h>             
      main()
  int x;
      int y;
    int maxx,y;
int max(a,b){
if(a>b)
reture a;
else reture b;
}
参考资料:
(程序代码、及运行结果拷贝附后)              实验日期:              指导教师:
实验二  数据类型、运算符与表达式
1、熟悉和理解C语言中的基本数据类型。
2、了解基本数据类型的字节宽度和范围表示。
3、学会C语言的有关运算符,以及包含这些运算符的表达式,特别是++和--运算符的使用。
4、进一步熟悉C程序的编辑环境,能利用学习的数据类型,编制简单的C程序。
硬件:                      软件
1运算符sizeof用以测试一个数据或类型所占用的存储空间的字节数。请编写一个程序,测试输出各基本数据类型char, short, int, long, float, double所占用的存储空间大小(字节数)。
2、编写程序,测试所学过的C++语言主要运算符。例如可包含如下类似语句:
printf(“\n 3+4=%d,5*6=%d,5/6=%d,5.0/6.0=%f \n”,3+4,5*6,5/6,5.0/6.0);
cout<<“\n 5>6?”<<5>6<<” 9>8?”<<9>8<<10==10?”<<10==10<<endl;
cout<<”\n !(5>6) =”<<!(5>6)?”TRUE”:”FALSE”<<endl;
cout<<”(7>5)&&(8>5)=”<<(7>5)&&(8>5)
<< ”(7>5)&&(8<5)=”<<(7>5)&&(8<5)
<< ”(7>5)||(8<5)=”<<(7>5)||(8<5)<<endl;
实验过程及总结体会
1. #include  <stdio.h>             
    void main()
char a;
short b;
int  c;
long d;
float  e;
double  f; 
printf(sizeof(a));
printf(sizeof(b));
printf(sizeof(c));
printf(sizeof(d));
printf(sizeof(e));
printf(sizeof(f));
2.
include<stdio.h>
main(){
cout<<“\n 5>6?”<<5>6<<” 9>8?”<<9>8<<10==10?”<<10==10<<endl;
}
参考资料:
(程序代码、及运行结果拷贝附后)              实验日期:              指导教师:
实验三  程序结构(顺序、选择和循环)
1、掌握C语言程序输入、输出的方法和格式。
2、理解并掌握程序的顺序结构设计
3、理解并掌握程序的分支结构(if语句、switch语句)设计
4、理解并掌握程序的循环结构(for语句、while语句、do-while语句)设计
硬件:                      软件
1、编写程序任意输入一个三位整数,将其反向输出。如输入数值123,输出数值321。
2、求1加至100之和(或求1至100中的奇数之和)
3、输入某学生的成绩,经处理后给出学生的成绩等级,等级分类如下:
      90分以上(包括90): A
      80至90分(包括80):B
      70至80分(包括70):C
      60至70分(包括60):D
      60分以下:          E
实验过程及总结体会
1.
#include "stdio.h"
#define BIT 3
void main()
{
    void switchNum(char *a);
    char  num[BIT];
    printf("请输入一个%d位数的整数:",BIT); 
          scanf("%s",num);     
    switchNum(num);
    printf("\n");
    printf("转化过后:%s",num);   
   
   
}
void switchNum(char *a)
{
    char j=0,i=BIT-1;
    char midNum;
    while(i>=j)
    {
        midNum=a[i];
        a[i]=a[j];
        a[j]=midNum;
        i--;j++;
    }
   
}
2.
#include "stdio.h"
void main()
{
    int Oddtotal(int num);
    int Total(int num);
    int num;
    int oddtotal=0;
    int total=0;
    printf("请输入范围:1——");
    scanf("%d",&num);   
    oddtotal=Oddtotal(num);   
    total=Total(num);
    printf("奇数之和为:%d\n",oddtotal);
    printf("总和为:%d",total);
   
   
}
int Oddtotal(int endNum)//奇数之和
{
    int i=1,sum=0;
    for(i;i<=endNum;i++)
    {
        if(i%2==0)
        {
            sum+=i;
        }
    }
    return sum;
   
}
int Total(int endNum)//总和
{
    int i=1,sum=0;
    for(i;i<=endNum;i++)
    {
        sum+=i;
    }
    return sum;
}
3.
#include "stdio.h"
void main()
{
    char JudgeLevel(int score);
    char level;
    int score=0;
    printf("请输入成绩100:");   
    scanf("%d",&score);
    level=JudgeLevel(score);
    printf("分数等级为:%c",level);
   
   
}
char JudgeLevel(int score)//判断等级
{
    if(score>=90)return 'A';
    if(score>=80)return 'B';
    if(score>=70)return 'C';
    if(score>=60)return 'D';
    return 'E';   
}
参考资料:
(程序代码、及运行结果拷贝附后)              实验日期:              指导教师:
实验四  函数
1、掌握C语言函数定义及调用的规则。
2、理解参数传递的过程。
硬件:                      软件
1.编写一个将华氏温度转换为摄氏温度的程序,转换公式为C=(5/9)×(F-32)。
要求:①要求将转换公式C=(5/9)×(F-32)的功能用一个子函数来实现,并在主函数中对其进行函数调用。
② 给出华氏温度的测试数据,写出相应的摄氏温度运行结果。分析结果是否正确,并分析产生错误的原因是什么?并对程序进行修改。
2、编写程序,通过函数maxmin调用实现从键盘输入三个整数,分别输出最大、最小的数。
3、用一个函数实现求л近似值,并在主函数调用它输出л近似值。
4、用递归函数调用,求1+2+3++100的值。
实验过程及总结体会
参考资料:
(程序代码、及运行结果拷贝附后)              实验日期:              指导教师:
实验五  数组
1、掌握数组定义、初始化及基本用法;
2、掌握字符数组的使用;
3、掌握与数组有关的算法(例如排序算法);
4、掌握二维数组的定义、赋值和输入输出的方法。
硬件:                      软件
1、一个含10个整数元素的数组,试出其中的最大、最小元素及其下标,并分别输出最大、最小元素值及其下标值。
2定义一个二维数组存储三位学生的考试成绩,每位学生有两科考试的成绩,编写程序分别取出二维数组里的元素值,经过累加之后计算并输出每位学生的总成绩。
3输入两个字符串,比较这两个字符串是否相同,并输出比较的结果。(提示:可以调用系统库函数strcmp进行比较)
4、对1题中的一维数组用选择法进行排序并输出。
实验过程及总结体会
1.#include <stdio.h>
  #include <stdlib.h>
      int main(){
          int i;
          void Compare(int a[]);
          int a[10];
          for(int i=0;i<10;i++){
              scanf("%d",&a[i]);
          }
          Compare(a);
          getchar();
          scanf("%d",i);
         
      }
      void Compare(int a[]){
                  int i,j;
                  int max=0,min=0;
                  int maxIndex,minIndex;
                  for(i=0;i<10;i++){
                      if(max<a[i]){
                          max=a[i];
                          maxIndex=i;           
                      } 
                      else{
                          min=a[i];
                          minIndex=i;   
                        }                 
                  }
            printf("最大值是:%d\n",max);
            printf("最大值索引是:%d\n",maxIndex);
            printf("最小值是:%d\n",min);
              printf("最小值索引是:%d\n",minIndex);
         
              }
     
2.
#include <stdio.h>
#include <stdlib.h>
int main(){
      int i,j;
      int studentScore[3][2];
      int sum[3];
      for(i=0;i<3;i++){
          for(j=0;j<2;j++){
            if(j==0){
              printf("请输入第%d名学生第一门课的成绩:\n",i+1);
              scanf("%d",&studentScore[i][j]);
              }   
              if(j==1){
              printf("请输入第%d名学生34第二门课的成绩:\n",i+1);
              scanf("%d",&studentScore[i][j]);
              }             
            }           
          }
    for(i=0;i<3;i++){
        sum[i]=0;
        for(j=0;j<2;j++){
            sum[i]+=studentScore[i][j];
        }
      printf("%d名学生成绩为%d\n",i+1,sum[i]);
      }
      scanf("%d",i);
     
    }
3.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
        char str1[10],str2[10];
        int i;
    int Compare(char str1[],char str2[]);
        printf("请输入第一个字符串(长度为10)");
        gets(str1);
        printf("请输入第二个字符串(长度为10)");
        gets(str2);
        Compare(str1,str2);
        scanf("%d",i);
    }
        int Compare(char str1[],char str2[]) {
            int i;
            i=strcmp(str1,str2);
            if(i>0){
            printf("第一个字符大于第二个字符",i);
            }
              if(i<0){
            printf("第一个字符小于第二个字符",i);
            }
              if(i=0){
            printf("第一个字符等于第二个字符",i);
            }
        }
4.
#include <stdio.h>
#include <stdlib.h>
  int main(){
          int i;
          void xu(int a[]);
          int a[10];
          for(int i=0;i<10;i++){
              scanf("%d",&a[i]);
          }
          xu(a);
          for(i=0;i<10;i++){
              printf("排序后:");
              printf("%d\n",a[i]);               
          }
          scanf("%d",i);
         
      }
      void xu(int a[]){
                  int i,j,max,t;
                  for(i=0;i<=10;i++){
                      max=i;
                    for(int j=i+1;j<=10;j++){
                          if(a[j]>a[max]){
                            max=j;                 
                        }
                      if(max!=i){
                          t=a[max];
                          a[max]=a[i];
                          a[i]=t;
                      }     
                    }                 
                  }
         
              }
     
 
参考资料:
(程序代码、及运行结果拷贝附后)              实验日期:              指导教师:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。