博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实验二
阅读量:5360 次
发布时间:2019-06-15

本文共 3235 字,大约阅读时间需要 10 分钟。

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

  • 观察运行结果

转换说明及其打印的输出效果:

%d 按有符号十进制整数输出
%f 按十进制浮点数输出
%c 按字符型输出
%e 按浮点型指数形式输出
%s 按字符串输出
%o 按无符号八进制整数输出
%x 按无符号十六进制整数输出

关于数字:

%5d 输出数据长度为5,若输出的数据长度大于5,则按实际输出。

%lf 在d,o,x,u前,指定输出精度为long型;在e,f,g前,制定输出精度为double。

%.3f 对实数,指定小数点后3位数,四舍五入。对字符串,指定实际的输出位数。

%6.2f 输出数据长度为6,指定小数点后两位。

在输入数据为double类型是,要使用格式控制符%lf输出;输入数据为float类型时,要使用格式控制符%f输出。

  • 查找错误

修改结果:

#include 
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("%lf,%lf",&x,&y); printf("%lf,%lf\n",x,y); return 0;}

运行结果:

Part 4: switch语句体验练习:

源代码:

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

 

去除break;后:

Part 5: 简单编程练习:

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

ps:对于上述的要求,我个人认为是不太完善的。在日常应用中,很多时候用户在作答题目时并不一定会打开大写锁定,导致其作答的答案即使就是‘A',程序也会显示回答错误。所以我在这里擅自添加了一个“invalid answer,try again~"的提示选项,当用户的答案不是“A,B,C or D”时,程序便会提醒用户答案无效。

源代码:

#include 
int main(){ int answer; printf("请输入你的答案(A,B,C or D):"); scanf("%c",&answer); if(answer!='A'&&answer!='B'&&answer!='C'&&answer!='D'){ printf("invalid answer,try again~\n"); } else switch(answer){ case 'A':printf("Binggo, you are right~\n");break; default :printf("try again~\n");break; } return 0;}

运行结果:

Part 6: 拓展练习:

  • 要求:取一个无符号的十进制整数中的所有奇数数字,按原来的顺序组成一个新的数。

源代码:

#include 
int main(){ int a,b=0,c,number,result=0; printf("Please input a number:"); scanf("%d",&number); while(number!=0){ a=number%10; number=number/10; switch(a%2){ case 1:b=b*10+a;break; default:break; } } while(b!=0){ c=b%10; b=b/10; result=result*10+c; } printf("%d",result); return 0;}

运行结果:

  • 要求:输入一个正整数,求它的所有素数因子。

源代码:

#include
#include
int main(){ int a=1,b,number; printf("Please input a number:"); scanf("%d",&number); do{ switch(number%a){ case 0:for(b=2;b<=sqrt(a);b++) if(a%b==0)break; if(b>sqrt(a)&&a>1){ printf("%d ",a); }break; default:break; } a++; }while(a<=number); return 0;}

运行结果:

实验总结与体会:

  • part 1部分,我们详细了解了不同的转换说明及其输出效果。知识点多且杂,在记忆背诵的同时更要在实践中加深对其的理解;后面的找错纠正中,两个错误更是我们平时练习的常见问题,须牢记在心。

          再次强调:对于printf(),%f可表示单精度和双精度的任意一种;

                             对于scanf(),%f表示双精度,%fl表示单精度(通过指针的存储方向不同);

  • part 2-5部分,主要是对几种函数和语句的熟悉和理解。其中值得我们注意的是:

           1、对于putchar()和getchar()而言,它们只处理字符(单个),而printf()和scanf()为标准输入\输出函数,功能更加齐全;

           2、对于switch语句,如果一个进入其中一个case而没有break,则程序会自动进入下一个case运行,直到出现break或运行完所有case;

  • part 6部分来自于书后练习3,几乎使用了这次课所学的全部知识。

          p.s.由于全部是我独立编写的,与书上的答案思路有所不同。若有问题,敬请指正,感激不尽!

评论地址:

https://www.cnblogs.com/NyaNyaGoose/p/10640071.html

https://www.cnblogs.com/zhaoyingshan/p/10621191.html

https://www.cnblogs.com/linmuqiao/p/10596479.html

转载于:https://www.cnblogs.com/jiyuan201088/p/10632185.html

你可能感兴趣的文章
策略模式 C#
查看>>
[模板]树状数组
查看>>
[HDU 6447][2018CCPC网络选拔赛 1010][YJJ's Salesman][离散化+线段树+DP]
查看>>
设计模式学习的好方法
查看>>
感谢Leslie Ma
查看>>
几种排序方法
查看>>
查看数据库各表的信息
查看>>
第一阶段测试题
查看>>
第二轮冲刺第五天
查看>>
图片压缩
查看>>
Hadoop-2.6.5安装
查看>>
教你如何一步步将项目部署到Github
查看>>
关于Android圆形图片的一种优化方案(可以显示网络图片)
查看>>
Windows路由表详解
查看>>
.NET性能优化方面的总结
查看>>
Windows下文件夹扩展名
查看>>
今天早上6:00起来,每天晚上回来6点多已经天黑
查看>>
debian开启cgroup memory子系统
查看>>
信息收集
查看>>
SQL Server 中使用Convert来取得datetime数据类型样式(全)
查看>>