(按照作业要求,本文档分为【实验结论】和【实验总结与体会】两部分)

【实验结论】

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

(1)几种常用的格式字符:

%d:  按十进制整数输出      %f:  按浮点数输出             %s:  按字符串输出

%c:  按字符输出            %e(或%E):  按指数形式输出

(2)几种常用的修饰符:

m: 输出数据域宽,数据长度<m,左补空格;否则按实际输出

.n:对实数,指定小数点后位数(四舍五入),对字符串,指定实际输出位数

l: 在d、o、x、u前,指定输出精度为long型;在e、f、g前,指定输出精度为double型

格式说明形式:%[<修饰符>]<格式字符>

实例:

%5d: 按宽度5输出一个整型数据,不足前补空格,超过按原样输出,按宽度5

%.3f:单精度浮点型,保留3位小数

%lf: 按双精度浮点型输出

%6.2f:按数据域宽6输出单精度浮点型数据,保留2位小数

%4.2s:按数据域宽4,输出位数2输出字符串型数据

特别地,当以double双精度浮点型输入数据时,必须使用%lf

Part 4:switch语句体验练习

程序源码:

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

 运行结果(case后语句序列中有break):

运行结果(case后语句序列中无break):

 

 两者区别:

·当有break时,遇到break语句,程序就跳出这一层 switch语句结构,转到其结构后面的语句执行; 

·当没有break语句时,程序就会一直执行下去,直到遇到break语句或该switch结构结束。在该程序中即为输入1,会执行case1及其之后的所有语句,直到该switch结构结束。

 Part 5:简单编程小练习

 程序源码:

 1 /*
 2  编程模拟用户做选择题的情况:要求用户从键盘输入一个答案选项(A,B,C,D)之一,
 3  如果用户答案是‘A’,则输出提示信息"Binggo,you are right~" ,否则输出提示信息
 4  "try again~"。 
 5 */
 6 #include <stdio.h>
 7 int main() {
 8     char answer;
 9     printf("请输入你的答案(A,B,C or D):");
10     scanf("%c",&answer);
11     switch(answer) {
12         case 'A': printf("inggo,you are right~\n");break;  
13         default: printf("try again~\n");
14     }
15     return 0;
16 } 

运行测试截图:

Part 5:拓展练习

程序功能:判断三角形的形状——已知三个数,判断这三个数能否构成三角形的三条边;如果能构成三角形,判断所构成三角形的形状。

源代码:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int main()
 4 {
 5     float a,b,c;
 6     printf("请输入三条边长:");
 7     scanf("%f%f%f",&a,&b,&c);
 8     if(a<=0||b<=0||c<=0)
 9     {
10         printf("三角形的边长不能为0或负,请重新输入!\n");
11         exit(0);
12     }
13     if(a+b<=c||a+c<=b||b+c<=a)
14     {
15         printf("不能构成三角形,请重新输入!\n");
16         exit(0);
17      } 
18     else if(a==b&&b==c)
19         printf("是等边三角形\n");
20     else if(a==b||b==c||a==c)
21         printf("是等腰三角形\n");
22     else
23         printf("是一般三角形\n"); 
24     return 0;
25 }

运行结果截图:

 

 

【实验总结与体会】

·格式化输入scanf()函数的地址符'&'容易遗漏,修饰符对字符串型数据和其他类型数据的作用有所区别,双精度浮点型数据的输入必须使用%lf,输入浮点数时,不能指定小数部分位数;

·基于Part3部分的if语句的使用已经初步理解并掌握,有关else的从属问题还需要进一步加强理解;

·格式字符与输出项个数应相同,按先后顺序一一对应; 

 PS:给别人的评论

 http://www.cnblogs.com/cnx1252/

   https://www.cnblogs.com/bu-xiu/

   https://home.cnblogs.com/u/zpy73363668/