实验二 作业
Part1
ex2_1.c
#include <stdio.h> int main() { int x=1234; float f=123.456; double m=123.456; char ch='a'; char 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; }
运行结果

其实在课堂上做的时候,这个结果对我来说不太直观(我比较菜所以看不出来空了几格)为了我能比较直观地看出区别,我在每个小语句里都加了换行......

噢......终于清楚一些了
ex2_2.c 找错误
原错误代码
#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; }
这个找错误,我找了好久。最先找到的是scanf函数那个语句里应该有&地址形式,后面%lf这个错误我就找了很久,因为我一直弄不清楚双精度 单精度 float double到底有什么区别,其实现在也不太懂,是看到书后面那一页的提示才知道错在哪。x,y定义是double双精度变量,所以scanf函数中要用%lf。
正确代码
#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("%lf,%lf",&x,&y); printf("%lf,%lf\n",x,y); return 0; }
运行结果

Part2
putchar.c
#include <stdio.h> int main() { char ch; ch = 'A'; putchar(ch); putchar(ch+32); putchar('\x41'); putchar('\n'); return 0; }
运行结果:

getchar.c
#include <stdio.h> int main() { char ch; ch = getchar(); putchar(ch); printf("%c\n",ch); return 0; }
运行结果:

做这个的时候一开始复制老师的代码,但运行不了,后来加了\n就可以运行了??好奇怪啊......
Part3 if语句练习
单分支if语句
if1.c
#include <stdio.h> int main() { int a,b; int t; 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语句
if2.c
#include<stdio.h> int main() { int n; printf("输入一个整数给n:\n"); scanf("%d", &n); if(n%2==1) { printf("n是奇数.\n"); } else { printf("n是偶数.\n"); } return 0; }
运行结果:


多分支if语句
if3.c
#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语句练习
#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; }
运行结果和if3.c一样
当把case1和case2后面的break去掉时,结果变成了这样


Part5 编程练习
#include<stdio.h> int main() { int answer; printf("请输入你的答案(A、B、C、or D):"); scanf("%c",&answer); if(answer=='A') { printf("bingo,you are right\n"); } else { printf("try again\n"); } return 0; }
运行结果


小结:我一开始想偷个懒,直接照着老师给的文件把代码抄在自己的程序里,但后来发现有错误,比如if语句那里没有花括号,或者有些变量没有定义,后来再也不抄了哈哈哈哈....我看着老师的代码作为我的思路,一点一点写,并且避免犯以前的错误,比如上一个程序我没有定义变量导致出错,下一个程序我就把变量定义好。写if语句时,我觉得每一个if语句都要打括号很麻烦,但不打又会出错,只能老老实实打了,不过通过这次练习我真的学到了很多。写最后的编程训练时,我一开始还很顺,到后来就卡住了,if(answer=='a')这句,我一开始没有把单引号打上去,就一直报错,后来参考了别人的程序才发现是这个问题,感觉自己有点蠢哈哈哈哈哈哈......

浙公网安备 33010602011771号