实验2  顺序结构程序设计
2.1 实验目的
1.掌握C语言数据类型的概念,熟悉如何定义一个整型、实型和字符型的变量,以及对它们赋值的方法。
2.掌握输出函数printf()及输入函数scanf()的各种格式控制符的用法。
3.掌握顺序结构程序设计方法及执行过程。
4.进一步熟悉C程序的编辑、编译、连接、运行的过程。
2.2 示例程序
【实验2.1】输入并运行以下程序。
#include<stdio.h>
main()
{
        printf("What's ");                        /*输出What's */
        printf("your ");                        /*输出your */
        printf("name?\n");                        /*’\n’是换行符*/
}
说明:
1.程序的运行结果为“What’s your name?”。
2.printf()函数中只有“格式控制字符串”部分,且只包含普通字符,所以会原样输出。
3.前两行的printf()函数中无换行符’\n’,不进行换行操作,第3行的printf()函数中包含换行符’\n’,字符串输出后换行,这样3个字符串输出到一行上。
【实验2.2】编写已知半径r为15求圆面积的程序。
#include <stdio.h>
#define PI 3.14159                            /*定义符号常量PI*/
main()
{
    float radius,area;                        /*定义浮点型变量radius,area*/
    radius=15.0;                            /*给半径radius赋值 */
    area=PI*radius*radius;                    /*计算圆面积area */
    printf("area=%f\n", area );                /*输出圆面积*/
}
说明:
1.程序的运行结果为“area=706.857727”。
2.程序的第2行定义了符号常量PI。这样做的好处是程序中出现的所有PI,其值均为3.14159,既简化了程序,又提高了阅读性。
输出函数printf使用方法3.注意printf()函数中的“格式控制字符串”部分,area=为普通字符,所以会原样输出。
【实验2.3】整型变量的输出程序。
#include <stdio.h>
main( )
{
int a=126;                        /*定义整型变量a并赋值*/
    long b=-1234567;                    /*定义浮点型变量a并赋值*/
    unsigned c=50000;                    /*定义无符号变量c并赋值*/
    printf("%d,%o,%x\n",a,a,a);            /*分别按十进制、八进制及十六进制输出*/
    printf("%5d,%-5d\n",a,a);            /*分别按右对齐、左对齐格式输出*/
    printf("%10ld,%3u\n",b,c);            /*指定宽度输出*/
}
说明:
1.程序的运行结果为:(︺代表一个空格)
126,176,7e
︺︺126,126︺︺
︺︺-1234567,50000
2.数据按八进制、十六进制形式输出时,不显示进制标记(o、0x、0X等前缀)。
3.当输出数据的位数超出指定的宽度时,会突破指定的宽度限制,以确保输出数据的正确性。
【实验2.4】写出下面程序的输出结果。
#include <stdio.h>
main( )
{
    int a;
    float b;
    printf("Enter a and b:",a,b);            /*输出提示*/
    scanf("%d%f",&a,&b);                /*输入a、b的值*/
    printf("\na=%d,b=%f\n",a,b);            /*输出a、b的值*/
}
说明:
1.运行程序,若输入为“10︺22”,则输出的结果为:
a=10,b=22.000000
2.将输入语句改为“scanf("%3d%5f",&a,&b);”,运行程序,若输入“1︺123.4”,则输出结果为:
a=10,b=123.400002
从运行结果看,浮点数在输出时存在误差。
3.输入语句仍为“scanf("%3d%5f",&a,&b);”,运行程序,若输入为“123456”,则输出的结果为:
a=123,b=456.000000
变量a取3位得到123,变量f取5位,由4开始取出3位456,小数部分为6个0。
2.3 阅读程序
【实验2.5】输入并运行以下程序。给出注释和运行结果。
#include <stdio.h>
main( )
{
        int a=123;                        /*                        */
        float b=123.456;                    /*                        */
        printf("%d,%5d\n",a,a);
        printf("%f,%13f,%e,%15e,%g,%6g\n",b,b,b,b,b,b);
        printf("%9.5f,%8.2f,%.0f,%-10.2f\n",b,b,b,b);
}
说明:
1.运行程序,输出的第一行结果为:
2.输出的第二行结果为:
3.输出的第三行结果为:
分析上述三行输出结果。
【实验2.6】输入并运行以下程序。给出注释和运行结果。
#include <stdio.h>
main( )
{
    int a,b,c;
    printf("Enter a,b=");                    /*                        */
    scanf("%o,%x",&a,&b);                    /*                        */
    c=a*b;
    printf("%d,%o,%x\n",c,c,c);                /*                        */
}
说明:
1.“%o”表示从键盘上输入八进制数据,输入时各位数字只能在0~7范围内。“%x”表示从键盘上输入十六进制数据,输入时各位数字只能在0~9、a~f范围内。
2.运行程序,输入“12,1a”输出的结果为:
分析上述输出结果。
2.4 完善程序
【实验2.7】输入并完善以下程序,使程序在两行输出。
#include <stdio.h>
main( )
{
    int a,b;
    a=8;
    b=9;
    printf("__________",a,a,a*a);                /*输出8*8=64*/
    printf("%d*%d=%d\n",___________);            /*输出8*9=72*/
}
【实验2.8】程序实现从键盘输入3个变量的值,其中a=5,b=6,c=7,将3个变量的值进行交换,使得a=6,b=7,c=5。输入并完善以下程序。
#include <stdio.h>
main()
{
    int a,b,c,__________;                        /*定义4个变量*/
    printf("Enter a,b,c=");                        /*输出提示*/
    scanf("%d%d%d",__________);                /*输入3个变量的值*/
    temp = a;
    __________;
    b=c;
    __________;
    printf("a=%d b=%d c=%d\n",a,b,c);            /*输出处理后的数据*/
}
2.5 改错程序
【实验2.9】下面程序的功能是:给定三角形的底a和高h,求三角形面积。请改正程序中的错误,并调试。
注意:改错时不允许增加及删除语句,只允许修改或移动语句的位置。
【含有错误的程序代码】
#include <stdio.h>
main()
{
    float a;
    double area;
    printf("Enter a,h=");
    scanf("%f %f",a,h);
    area=a*h/2;
    printf("area=%d\n",area);
}
【实验2.10】下面程序的功能是:给定梯形的上底a、下底b和高h,求梯形面积。请改正程序中的错误,并调试。
注意:改错时不允许增加及删除语句,只允许修改或移动语句的位置。
【含有错误的程序代码】
#include <stdio.h>
main()
{
    float a,b,h,area;
    printf("Enter a,b,h=");
    scanf("%f%f%f",&a,&b,&h);
    area=1/2*(a+b)*h;
    printf("area=%8.2f\n",area);
}
2.6 自己练习
1.编写程序,从键盘输入两个整数542561689和1351387245,计算并输出它们的和。
2.编写程序,从键盘输入四个整数a、b、c、d,a和d交换,b和c交换,输出交换后的值。
提示:实现交换两个变量的值的方法有两种(请对两种方法进行比较):
(1) 中间变量法。设t为中间变量,利用如下三条语句来交换变量a和b的值。
  t = a: a = b: b = t
(2) 算术方法。利用如下三条语句来交换变量a和b的值。
  a = a + b: b = a – b: a = a - b