实验2 格式化输入输出和分支语句

实验前的话

能适应。课下的预习希望能给予指导譬如划分一下要预习的点,给一个大致框架,或者是给一些预习方法的 建议。

实验目的

1. 掌握格式字符的使用方法,特别是%d, %f, %c, %s的基础用法

2. 掌握格式化输出函数printf()和格式化输入函数scanf()的用法

3. 掌握单个字符输出函数putchar()和单个字符输入函数getchar()的用法

4. 体验if语句和if...else语句的用法 5. 体验switch语句的用法

实验准备

实验前,请结合教材和课件复习/预习以下内容:

1. 格式化输出函数printf()的用法

2. 格式化输入函数scanf()的用法

3. 常用的格式控制符: %d, %c, %f, %e, %s 输入double类型的数据时,格式控制符要使用 %lf 浮点型数据输出时,常使用修饰符来控制输出精度。比如,%.3f控制小数部分保留3位。

4. 单个字符输出函数putchar()的用法

5. 单个字符输入函数getchar()的用法

实验内容

Part1: 格式化输出函数printf()和格式化输入函数scanf()

在c程序开发环境下输入并运行程序ex2_1.c,运行程序,观察运行结果。

/* 
《C语言程序设计教程学习指导》p118 实验内容(1) 
这是一个常用格式控制符使用示例
运行程序,结合运行结果,对照每一行printf()中的格式控制符,理解其功能和用法
*/ 
#include <stdio.h>
int main() {
    int x=1234;
    float f=123.456;
    double m=123.456;
    char ch='a';
    char a[]="Hello, world!"; // 定义一个数组a,数组中连续存放了字符串常量hello,world!
    int y=3, z=4; 
    printf("%d %d\n", y, z);
    printf("y=%d, z=%d\n", y,z);
    printf("%8d,%2d\n", x,x);
    printf("%f, %8f, %8.1f, %0.2f, %.2e\n",f,f,f,f,f);
    printf("%lf\n",m);
    printf("%3c\n", ch);
    printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n",a,a,a,a,a);
    return 0;
}

在c程序开发环境下输入程序ex2_2.c,查找并修改错误

C语言程序设计教程学习指导》p119 实验内容(2)  
这是一个格式化输入输出函数及格式符使用练习
找出两处错误,修改并运行程序 
为a1,a2,a3,c1,c2,c3,x,y输入数据,使得:
a1=1,a2=2,a3=3,c1='a',c2='b',c3='c', x=1.5, y=2.5 
*/ 
#include <stdio.h>
int main() {
    double x,y;
    char c1,c2,c3;
    int a1,a2,a3;
    scanf("%d%d%d",&a1,&a2,&a3);
    printf("%d,%d,%d\n",a1,a2,a3);
    scanf("%c%c%c",&c1,&c2,&c3);
    printf("%c%c%c\n",c1,c2,c3);
    scanf("%f,%lf",&x,&y);
    printf("%f,%lf\n",x,y);
    return 0;
} 

Part2: 单个字符输出函数函数putchar()和单个字符输入函数getchar()

在c程序开发环境下,编写、运行程序putchar.c,结合运行结果,理解其用法

/*
putchar()可以用于在屏幕上输出单个字符
括号中要给出想要输出的字符参数,参数可以是字符型常量/变量/表达式 
如果使用这个函数,需要在程序前面加上#include <stdio.h> 
*/
#include <stdio.h>
int main() {
    char ch;
    ch = 'A';
    putchar(ch);      // 参数ch是字符型变量 
    putchar(ch+32); // 参数ch+32是字符型表达式 
    putchar('\x41'); // 参数是字符型常量,是用十六进制表示的转义字符 
    putchar('\n'); // 参数\n是字符型常量,是转义字符,表示换行 
    return 0;
}

在c程序开发环境下,编写、运行程序getchar.c,结合运行结果,理解其用法

/*
getchar()可以用于从键盘上输入单个字符 
括号中不需要参数
如果输入成功,函数会返回用户从键盘输入的字符 
如果使用这个函数,需要在程序前面加上#include <stdio.h> 
*/ 
#include <stdio.h>
int main() {
    char ch;
    ch = getchar();        // 用户从键盘输入字符,如果输入成功,输入的字符被赋值给ch 
    putchar(ch);        // 使用putchar()输出字符变量ch中存放的字符 
    printf("%c",ch);    // 使用printf()和格式符%c输出单个字符 
    return 0;
}

Part3: if语句体验练习

单分支if语句

语法规则说明 如果括号里的表达式成立(逻辑真),就执行语句序列;否则,什么也不做。

注*:if后的小括号必须要有,语句序列中只有一条语句的时候,可以省略{}

编程示例

从键盘输入两个整数,比较大小,然后由小到大输出。

结合流程图,理解并运行程序。

代码:if1.c 

/* 
单分支if语句使用示例
从键盘上输入两个整数分别给a和b
如果a>b,就交换,使得a里面存放小的数,b里面存放大的数 
*/  
#include <stdio.h>
int main() {
    int a,b;
    int t;   // 用于交换a和b时,作为中间变量 
    printf("输入两个整数给a和b:\n");
    scanf("%d%d",&a,&b);
    if(a>b) {
        t = a; 
        a = b;
        b = t; 
    }
    printf("a=%d, b=%d\n",a,b);
    return 0;
} 

两分支if语句

语法规则说明

如果括号里的表达式成立(逻辑真),就执行语句序列1;否则,执行语句序列2

注*:if后的小括号必须要有,语句序列中只有一条语句的时候,可以省略{}

编程示例

输入一个整数n,判断其是奇数还是偶数。

结合流程图,理解并运行程序。

算法流程图 

代码:if2.c

/*
二分支if语句使用示例
从键盘上输入一个整数给n,判断n是奇数还是偶数 
*/ 
#include <stdio.h>
int main() {
    printf("输入一个整数给n:\n");
    scanf("%d",&n);
    if(n%2)
        printf("n是奇数.\n");
    else
        printf("n是偶数.\n");
    return 0;
} 

多分支if语句

语法规则说明

如果表达式1成立(逻辑真),就执行语句序列1;否则,判断表达式2,如果表达式2成立,执行语句序 列2,否则,判断表达式3,...

注*:if后的小括号必须要有,语句序列中只有一条语句的时候,可以省略{}

编程示例 输入1,2,3...不同整数,显示不同提示信息。

运行程序,结合运行结果,观察并尝试理解程序中多分支if语句的使用。

算法流程图(略)

 代码:if3.c

/*
多分支if语句示例
输入1,2,3...的不同整数,显示不同提示信息 
*/
#include <stdio.h>
int main() {
    int level;
    printf("输入现在状态等级(1-5):  ");
    scanf("%d",&level);
    if(level == 1) 
        printf("high翻了:)\n");
    else if(level == 2) 
        printf("low爆了:(\n");
    else
        printf("一言难尽,无法概括。。。\n");
    return 0;
} 

Part4: switch语句体验练习

语法规则说明

计算switch后面括号里表达式的值,与case之后的常量进行比较,与哪一个匹配,就执行哪 一个case后面的语句序列;如果都不匹配,就执行default后面的语句序列(如果写了default的话)。

注*:switch语句中括号里表达式的值必须是整型或字符型;语句序列中是否有break语句会影响程序执行 流程。

编程示例 输入1,2,3...的不同整数,显示不同信息 运行程序,结合运行结果,观察并尝试理解程序中多分支 if语句的使用。

代码:switch.c(if3.c用switch语句的重新实现)

/*
switch语句使用示例
输入1,2,3...的不同整数,显示不同提示信息  
*/
#include <stdio.h>
int main() {
    int level;
    printf("输入现在状态等级(1-5):  ");
    scanf("%d",&level);
    switch(level) {
        case 1: printf("high翻了:)\n"); break;
        case 2: printf("low爆了:(\n"); break;
        default: printf("一言难尽,无法概括。。。\n");
    }
    return 0;
} 

/*
switch语句使用示例
输入1,2,3...的不同整数,显示不同提示信息  
*/
#include <stdio.h>
int main() {
    int level;
    printf("输入现在状态等级(1-5):  ");
    scanf("%d",&level);
    switch(level) {
        case 1: printf("high翻了:)\n"); 
        case 2: printf("low爆了:(\n"); 
        default: printf("一言难尽,无法概括。。。\n");
    }
    return 0;
} 

part5: 简单编程练习

编程模拟用户做选择题的情况:要求用户从键盘输入一个答案选项(A,B,C,D之一),如果用户答案是'A',则输 出提示信息"Binggo, you are right~",否则,输出提示信息"try again~"。

#include<stdio.h>
int main()
{
    char ch;
    printf("请输入你的答案(A,B,C or D):\n");
    scanf("%c",&ch);
    if(ch=='C')
    printf("Bingo,you are right!\n");
    else
    printf("Try again~\n");
    return 0 ;
} 

实验结论

Part1: 格式化输出函数printf()和格式化输入函数scanf()

总结几个常用的格式符%d, %f, %c, %e, %s的常用用法,尤其是诸如%5d, %lf, %.3f, %6.2f的用法。回答什么情 况下必须使用格式符%lf.

Part4: switch语句体验练习

附上程序源码,分别给出case后语句序列中有break和没有break语句时运行测试结果。

Part5: 简单编程小练习 附上程序源码和运行测试截图。

实验总结与体会

在机房操作过程中,还是会不注意;的使用,在程序正确的情况下浪费时间苦苦寻找无法成功编译的原因。但是本次实验大部分是给出了程序框架用于运行补充,在操作性上较为简单。我觉得在之后的实验中,反而是流程图的绘制能力更为重要,因为没有流程图的框架一般情况下,初学者无法敲打代码。
还是希望大家共勉,辛苦老师了!

猜你喜欢

转载自www.cnblogs.com/254729wjl/p/10632143.html
今日推荐