ITAT第五届C语言培训讲义一(附答案)

 

   第一讲 C语言概述  
     
 
    引 言

  一、教学目的
  本讲主要介绍了C语言的特点、基本结构、基本输入输出语句和C程序的编辑、编译、运行方法,要求了解C语言的特点,掌握C程序的基本结构,掌握输入输出函数scanf()和printf()的基本使用方法,熟悉C程序的编辑、编译、调试和运行过程。

  二、知识要点
  1.C语言的特点
  (1)丰富的数据类型
  (2)结构化的控制语句
  (3)高效率的目标代码
  (4)可移植性好
  2.C语言的基本结构
  (1)由一个主函数main()或一个主函数及其它函数组成
  (2)每个函数用{ }括起来
  (3)每个语句后加“;”
  3.库函数printf()的使用
  (1)函数printf()的功能和使用格式
  (2)常用转义字符的使用
  (3)常用格式符的意义和使用
  4.库函数scanf()的使用
  (1)函数scanf()的功能和使用格式
  (2)格式控制与输入数据格式的关系
  (3)地址表列的使用
  5.C程序开发过程
  (1)编辑、编译、连接和执行
  (2)源程序、目标程序、可执行程序

  三、边用边学

  §1.1 C语言简史

  C语言是由D.M.Ritchie于1972年在B语言的基础上设计的,主要用于编写UNIX操作系统的。1977年出现了可移植的C语言编译程序,使得用C语言编写的UNIX系统可以在各种计算机上使用。随着UNIX的广泛应用,C语言得到了普及和推广,并最终独立于UNIX而成为世界上应用最广泛的计算机语言之一。
  1983年美国国家标准化协会(ANSI)制订了C语言标准,即ANSI C。目前流行的各种版本的C语言都是以它为基础的,如Turbo C,Microsoft C,Quick C等。

  §1.2 C语言的特点

  一、丰富的数据类型
  C具有整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型等多种数据类型。特别是C的指针类型,功能强大、灵活方便。

  二、结构化的控制语句
  C语言的控制结构语句符合结构化程序设计要求,并且用函数作为程序模块,使得程序结构清晰、可读性好、易于调试。

  三、高效率的目标代码
  C语言允许直接访问物理地址、直接对硬件操作,提供对字节、位、内存和寄存器操作,可以调用或嵌入汇编语言代码,并且经过C编译程序生成的目标代码质量高、执行效率高。

  四、可移植性好
  用C语言写的程序,基本上可以不加修改地用于各种计算机和操作系统上。

  §1.3 C程序的基本结构

  一、C程序的基本结构讲解
  例1 在屏幕上显示:Hello !
  #include <stdio.h>
  main()
   {
    printf(“Hello!/n”);
   }
  输出:Hello!
  例2 求两数之和
  #include <stdio.h>
  main()
   { int a,b,sum;
    a=123; b=456;
    sum=a+b;
   printf(“sum is %d/n”,sum);
   }
  输出:sum is 579
  例3 输入 a、b两个数,输出其中最大值。
  #include <stdio.h>
  float max(float x,float y)
   { float z;
    if (x>y) z=x;
    else z=y;
    return z;}
   main()
   { float a,b,c;
    scanf(“%f,%f”,&a,&b);
    c=max(a,b);
    printf(“%f,%f,the maxis%f/n”,a,b,c);
   }
  输入:23,56
  输出:23.000000,56.000000,maxis56.000000

  二、C程序的基本结构
  1.由一个主函数main(),或一个主函数及其它函数组成
  2.每个函数用{ }括起来
  3.每个语句后加;

  三、C语言的三类函数及其采用的意义
  1.C程序是由一个主函数main()或一个主函数及其它函数组成。
  C程序由函数构成,使用函数可以简化了主函数以及实现模块化程序设计。
  C语言的函数可以分为三类:
  第一类:主函数,名为main()。每个程序中只能有一个、也必须有一个主函数。无论主函数在什么位置,C程序总是从主函数开始执行。
  第二类:用户自定义函数,可有可无,数目不限。
  第三类:C语言提供的库函数,例如输出函数printf()和输入函数scanf()
  2.每个函数的内容用大括号“{ }”括起来。
  3.每个语句后加“;”。

  §1.4 库函数printf()和scanf()的使用

  printf()和scanf()函数是C语言中两个最基本的库函数,存在于Turbo C 所在目录的子目录include中的stdio.h头文件内,使用时应该在源程序中加入#include <stdio.h>(Turbo C 2.0可以缺省)。

  一、函数printf( )
  功能:通过标准输出设备(如屏幕)输出一组数据。
  格式:printf(格式控制,输出表列)
  1.“格式控制”是用双引号括起来的部分,由要输出的文字和数据格式说明组成。
  例:printf(“Hello !”);
  printf(“%f,%f,the max is %f /n”,a,b,c);
  要输出的文字除了可以使用字母、数字、空格和一些数学符号以外,还可以使用一些转义字符表示特殊的含义(如“/n”)。转义字符功能见表1-1。
                     表1.1 常用转义字符
转义字符功 能
/n回车换行符,光标移到下一行行首
/r回车不换行,光标移动到本行行首
/t横向跳格(8位为一格,光标跳到下一格起始位置,如第9或17位等)
/b退一格,光标往左移动一格
/f走纸换页
//用于输出反斜杠字符“/”
/'用于输出单引号字符“' ”
/”用于输出双引号字符“””
/ddd三位八进制数ddd对应的ASCII码字符
/xhh两位十六进制数hh对应的ASCII码字符
  #include <stdio.h>
  main()
  {
  printf(“123456789012345678901234567890/n”);
  printf(“123/t456/n");
  printf(“12345/b123/r9/n”)
  }
  运行结果:123456789012345678901234567890
           123     456
           9234123
  举一反三:写出下列输出结果
  printf(“/tfirst/b/b/bsh///r/'No.1/'”);
  数据格式说明由“%”开头,形式为 %<数据输出宽度说明><格式符>,数据格式说明用在需要输出变量或运算数值结果的时候,它的个数与输出表列的个数一一对应。
  数据宽度说明中如果实际数据小于宽度,则根据宽度是否大于零而左补空格或右补空格。如果实际数据大于宽度,按实际位数输出。如果缺省宽度说明,则按实际宽度输出(实数位数按照格式符默认位数输出)。常用格式符见表1-2。
                     表1.2 常用格式符
格式符功 能
d以带符号的十进制形式输出整数(整数不输出正号)
o以不带符号的八进制形式输出整数
x以不带符号的十六进制形式输出整数
u以不带符号的十进制形式输出整数
c以字符形式输出一个字符
s输出一个或多个字符
f以小数形式输出单、双精度数,默认输出6位小数
e以标准指数形式输出单、双精度数,数字部分小数位数为6位

  #include <stdio.h>
  main()
  {
  printf( “a=%4d,b=%-6.2f,c=%c,d=%s”,12,3.456,'A',”hello” );
  }
  运行结果: a=12,b=3.46,c=A,d=hello
  举一反三:写出下列输出结果
  printf( “x=%d,y=%-6.2f,z=%2d”,2,8.999,300);
  2.输出表列可以是变量、表达式或者是数值。
  输出表列的类型决定了“格式控制”中使用的“数据格式符”,其个数决定了“数据格式说明”的个数。
  如已知a=3,则语句
  printf( “%d+%d=%d”,a,12,a+12);
        3+12=15

  二、函数scanf( )
  功能:通过标准输入设备(如键盘)输入一组数据。
  格式:scanf(格式控制,地址表列)
  格式控制同printf()函数的格式控制。其中特别注意:如果格式控制中加入了格式符以外的其它字符,则通过键盘等输入设备输入数据时这些字符也要同样输入,如果格式符中无其它字符间隔,输入时可以用空格、回车或跳格键Tab。
  地址表列是由若干个地址组成的表列,变量的地址表示法是在变量前加上&符(数组不用)。
  函数scanf()是将输入设备输入的数据赋给地址表列中对应的变量。地址表列的个数和变量类型,决定了格式控制中格式符的个数和形式。

  §1.5 C程序的开发过程

  开发一个C程序,一般要经历编辑、编译、连接和运行四个步骤。

  一、源文件的编辑
  用户通过编辑器,将自己开发的C语言程序输入计算机的过程称为C程序源文件的编辑。编辑生成的文件以文本形式存储,扩展名为“.C”,也称为C的源程序。
  源程序文件以ASCII码形式存储,不含任何格式和样式,计算机不能直接执行。

  二、编译
  计算机把C的源程序翻译成计算机可以识别的二进制形式的目标代码文件,这个过程称为编译,由C的编译程序完成。
  C的编译程序在编译的同时,还对源程序的语法和程序的逻辑结构等进行检查。当发现错误时,将会列出错误的位置和种类,此时需要重新编辑修改源程序。如果编辑成功则生成目标文件,文件名同源程序文件名,扩展名为“.obj”。
  编译生成的目标文件,不包含程序运行所需要的库函数等,计算机仍然不能直接执行。

  三、连接
  连接程序以将目标程序和其它目标程序模块,以及系统提供的C库函数等进行连接生成可执行文件的过程,称为“连接”。连接生成的可执行文件的文件名同源程序文件名,扩展名为“.exe”。
  连接生成的可执行文件,计算机可以直接执行。

  四、运行
  在DOS环境直接键入C程序的可执行文件名,或者在C的集成环境下选择“RUN”命令,以及在Windows的资源管理器内双击该可执行文件名,都可以获得运行结果。如果运行结果有误,需要重新编辑源程序,再进行编译、连接、运行,直到得到满意的运行结果。
  作业及上机练习学以致用
  1.使用printf()函数显示下列菜单:
         Menu
  ========================================
  1. Input the students' names and scores
  2. Search scores of some students
  3. Modify scores of some students
  4. List all students' scores
  5. Quit the system
  ========================================
  Please input your choise (1-5):
  2.参照例1.7和例1.8,选择一种方法编写一个程序,实现输入六个数输出最小数。
  3.编写一个程序,从键盘上输入华氏温度,屏幕显示对应的摄氏温度。华氏温度和摄氏温度的转换公式为:
     c=(f-32)/1.8

 

 

答案:

1.#include <stdio.h>
#include <stdlib.h>

int select(int n);
 char name[10];
 float score;
void main(){
 int n;

    printf("/t/t/tmenu/n");
    printf("************************************************/n");
    printf("1. Input the students’ names and scores/n");
    printf("2. Search scores of some students/n");
    printf("3. Modify scores of some students/n");
    printf("4. List all students’ scores/n");
    printf("5. Quit the system/n");
    printf("************************************************/n");
       
    printf("Please input your choise (1-5): ");
 do{
  scanf("%d",&n);
 }while(n>5||n<1);
  select(n);
}
int select(int n){
 switch(n){
  case 1:{
    printf("please input the student's name and scores:");
    scanf("%s%f",name,score);
    printf("**************************************************/n");
    printf("name/t/tscore/t/n");
    printf("%s/t/t%f",name,score);
    printf("**************************************************/n");
    break;
  }
  case 2:{
    printf("please input the student's name:");
    scanf("%s",name);
    break;
     }
  case 3:{
    printf("please input the student's new name and new scores:");
    scanf("%s%f",name,score);
    break;
     }
  case 4:{
    printf("please input the student's new name and new scores:");
    scanf("%s%f",name,score);
    break;
     }
  case 5:{
    system("exit");
     }
 }
 return n;
}

 

2.#include <stdio.h>
main()
{
  int a,b,c,d,e,f,min;
  printf("Please input six numbers:/n");
  scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);
  min=a;
  if(min>b)
    {min=b;
    if(min>c)
      min=c;
      if(min>d)
        min=d;
        if(min>e)
          min=e;
          if(min>f)
             min=f;
     }
   printf("%d",min);
   getch();
 }

3.#include <stdio.h>
main()
{
  int c,f;
  printf("Please input 华氏温度:");
  scanf("%d",&f);
  printf("摄氏温度=%d",c=(f-32)/1.8);
  getch();
 }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值