实验二
Part1: 格式化输出函数printf()和格式化输入函数scanf()
(1)
#include <stdio.h> int main() { int x=1234; float f=123.456; double m=123.456; char ch='a'; char a[]="Hello, world!"; // 定义一个数组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; }

常用的输出格式字符需要熟练运用,“%8d”中的8表示列数,当实际数位超过设定值时,保留实际位数,例如%2.5s中输出值为hello。
小数点后位数表示输出精度
(2)修改
修改前源代码
#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; }
修改后
#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; }
地址是由地址运算符“&”后跟变量名组成的。第七行缺失了地址符&
double型数据在scanf()函数中要用%lf。倒数第三行少了l
Part 2
(1)在c程序开发环境下,编写、运行程序putchar.c,结合运行结果,理解其用法
#include <stdio.h> int main() { char ch; ch = getchar(); // 用户从键盘输入字符,如果输入成功,输入的字符被赋值给ch putchar(ch); // 使用putchar()输出字符变量ch中存放的字符 printf("%c",ch); // 使用printf()和格式符%c输出单个字符 return 0; }
(2)在c程序开发环境下,编写、运行程序getchar.c,结合运行结果,理解其用法
#include <stdio.h> int main() { char ch; ch = 'A'; putchar(ch); // 参数ch是字符型变量 putchar(ch+32); // 参数ch+32是字符型表达式 putchar('\x41'); // 参数是字符型常量,是用十六进制表示的转义字符 putchar('\n'); // 参数\n是字符型常量,是转义字符,表示换行 return 0; }
Part 3
(1)单分支if语句
从键盘输入两个整数,比较大小,然后由小到大输出。
#include <stdio.h> int main() { int a,b; int t; // 用于交换a和b时,作为中间变量 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语句后要带{}
(2)两分支if语句
如果括号里的表达式成立(逻辑真),就执行语句序列1;否则,执行语句序列2。
#include <stdio.h> int main() { printf("输入一个整数给n:\n"); scanf("%d",&n); if(n%2) printf("n是奇数.\n"); else printf("n是偶数.\n"); return 0; }
(3)多分支if语句
如果表达式1成立(逻辑真),就执行语句序列1;否则,判断表达式2,如果表达式2成立,执行语句序 列2,否则,判断表达式3,...
#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; }
if后的小括号必须要有,语句序列中只有一条语句的时候,可以省略{}
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 1和case 2最后的break, 保存并重新编译后,再次运行,运行结果为

去掉break程序无法暂停,将完整运行
Part5: 简单编程练习
#include<stdio.h> int main(){ char ch; printf("请输入你的答案(A,B,C or D):\n"); scanf("%c",&ch); if(ch=='A') printf("Bingo,you are right!\n"); else printf("try again~\n"); return 0; }

注意赋值为==不是=
【实验总结与体会】
*本次实验都是在已经给出流程图的情况下一些较为简单的if语句,如果在只有问题的情况下需要自己设计还未掌握
*符号中英文转化有些细节还是不到位,在查找自己的错误时还存在困难
实验一评论地址:
https://www.cnblogs.com/radius1/p/10559627.html
https://www.cnblogs.com/yuan82/p/10565353.html
https://www.cnblogs.com/ls4computer/p/10566103.html
浙公网安备 33010602011771号