实验2(2019.3.26)

【实验结论】

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

1、几个常用的格式符%d,%f,%c,%e,%s的常用用法。

便于直观体现,就基于书本P45的表3-1加工一下,有如下结论:

格式符 含义 举例 结果 特殊的注意事项
%d 输出/入十进制数 int a=567;printf("%d",a); 567 %5d:输出/入字符宽度为5的十进制数
%f 输出/入浮点数 float a=567.789;printf("%f",a); 567.789000

%lf:输出/入字符为长浮点数

%.3f:输出/入浮点数小数点后字符宽度为3

%6.2f:输出/入浮点数共占6个字符宽度,其中小数部分保留2位(占2个字符宽度)

%c 输出/入字符形式 char a=65;printf("%c",a); A  
%e 输出/入指数形式 double a=567.789;printf("%e",a); 5.677890e+002  
%s 输出/入字符串 printf("%s","ABC"); ABC  

2、对于格式符"%lf",经资料查找和多次测试,发现该格式符在输入的类型为双精度(double)类型时必须使用。

二、Part4:switch语句体验练习。

完整的程序源码如下:

#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;
} 

case后面有break时,程序运行截图如下:

                                                          

而当case后面的两个”break“时被我删掉之后,程序运行截图如下:

                                                        

用一个表情包形容我当时的反应:

为什么会出现这种情况?

后来我翻了一下书,第67页最下面的⑦项是这么写的:

⑦每个case后面语句序列里的break语句可有可无,但执行效果不同。当有break语句时,遇到break语句,程序就跳出这一层switch语句结构,转到其结构后面的语句执行;当没有break 语句时,程序就会一直执行下去,知道遇到break语句或该switch结构结束。

上面的话看起来很绕口,实际逻辑很简单:有break,这个条件语句遇到break成立的条件就结束了;没有break,那么这个条件语句就老老实实地从成立的那个语句运行到截止吧。

 三、Part5:简单编程小练习。

(一)用if......else语句。

程序源码如下:

#include<stdio.h>
int main(){
    char ch;
    printf("please write down your answer:\n"); 
    scanf("%c",&ch);
    if(ch=='A')
    printf("Bingo,you are right!\n");
    else
    printf("try again~\n");
    return 0;
} 

运行结果如下:

                                      

无误。

(二)用switch语句。

那么:

#include<stdio.h>
int main(){
    char ch;
    printf("please write down your answer:\n"); 
    scanf("%c",&ch);
    switch(ch){
        case 'A':printf("Bingo,you are right\n");break;
        default:printf("try again~\n");
    } 
    return 0;
} 

运行结果:

                                    

也无误。

 

【实验总结与体会】

1、在这次实验前,对于精度要求、字符宽度等细节的理解还不是很到位。但经过这次实验,对这些细节有了更进一步的清醒认识,但还不能说非常熟练,还需要在不断的实验中总结和提高。

2、在格式化输入函数和输出函数中,注意换行转义字符“\n”的位置在双引号里面。

3、在if......else语句中if和else后面不需要加分号。

 

总之,实践出真知。只有不断地实验、操作,才能对有关知识有更好的掌握。

posted on 2019-03-26 21:16  白云下的兔子  阅读(181)  评论(2)    收藏  举报