实验二
一、实验结论
Part1: 格式化输出函数printf()和格式化输入函数scanf()
%d:以十进制整数输出(对应int) %f:按浮点数输出(对应float) %e:按指数形式输出(对应double)
%c:按字符输出(对应char) %s:按字符串输出
%5d:若数据大于5,按实际输出;否则在左边补空格,使宽度为5
%lf:双精度浮点型(对应double) %6.2f:float型数据按6位输出,小数位数为2位
%.3f:float型数据按保留小数点后三位(四舍五入)输出
double类型的数据在scanf()中引用要用%lf,在printf()中用%lf和%f都可以。
Part4: switch语句体验练习
有break的时候:
/*part4*/ #include <stdio.h> int main(){ int level; printf("请输入现在的等级(1-5):\n"); scanf("%d",&level); switch(level){ case 1:printf("high翻了:)\n");break; case 2:printf("low爆了:(\n");break; default: printf("一言难尽,无法概况。。\n"); } return 0; }
运行结果为:
无break的时候:
没有break程序就会一直执行所有的case语句。
Part5: 简单编程小练习
/*part5*/ #include <stdio.h> int main(){ char ch; printf("请输入答案(A,B,C,D):\n"); scanf("%c",&ch); if(ch=='A') printf("binggo,you're right~\n"); else printf("trt,again~\n"); return 0; }
运行结果:
Part6: 拓展练习(教材106页第六题)
输入一个正整数,求它的所有素数因子。
/*素数因子*/ #include <stdio.h> int main(){ int x; int y=2; printf("请输入一个正整数:\n"); scanf("%d",&x); do{ if(x%y==0){ printf("%d,",y); x=x/y; } else y=y+1; }while(x>1); return 0; }
运行结果:
程序存在一个问题,就是会重复出现同一个素数,这是因为算法中用到这个素数好多次。目前还不知道怎么解决这个问题。
二、实验总结与体会
格式符与他们所对应的数据类型的对应关系掌握得不是太好;
if语句中“{}”,“else”,“;”的使用不熟悉,老是出错误,尤其是加入循环语句后,需要多多练习。为了保证if语言的清晰,在if()后面无论是一个语句还是多个语句都最好加上{};
拓展练习中,不知道将算法如何改进,结果才不会重复输出同一个素数。
互评:
https://www.cnblogs.com/zzn123321/
https://www.cnblogs.com/yy-Siri/
https://home.cnblogs.com/u/shauifan/