Part 1:格式化输出函数printf()和格式化输入函数scanf()
#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; }
exe.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; }
exe.2修改后
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; }
这两个错误一个是: 第一个scanf里少了地址运算符“&”;另一个是把“%f"改为”%lf",这是因为前面为双精度double类型,后面必须与%lf相对应。找出这些并不难。
几个常用格式符的用法:
%d: 按十进制整型输出。 %5d: 按数据长度为5输出,如果不够五位数,则左补空格;如果大于五位数,则原样输出;
%f: 指按浮点型数据输出。 %lf: 指输出精度精度为double类型。%.3f: 指按小数点后保留三位有效数字输出。%6.2f:指的是按数据宽度为6,而小数部分占两位输出。
当前面定义的数据为float类型时就必须用%f进行输出。
%e:指的是按指数型数据输出。
%s:指的是按字符串输出
Part 4 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; }
有break的情况:
无break的情况:
在switch语句中如果有break,这个switch结构会在这个break处执行完毕,然后去执行下一个程序或者结束。如果没有switch,这个程序会一直执行下去,直到这个switch结构结束。
Part 5 简单编程小练习
编程模拟用户做选择题的情况:要求用户从键盘输入一个答案选项(A,B,C,D之一),如果用户答案是'A',则输 出提示信息"Binggo, you are right~",否则,输出提示信息"try again~"。
if 类型
#include <stdio.h> int main(){ char answer; printf("请输入你的答案(A,B,C or D):"); scanf("%c",&answer); if(answer=='A') printf("Binggo,you are right~\n"); else printf("try again~\n"); return 0; }
switch 类型
#include <stdio.h> int main(){ char answer; printf("请输入你的答案(A,B,C or D):\n") ; scanf("%c",&answer); switch(answer){ case 'A':printf("Binggo,you are right~\n");break; default:printf("try again~\n") ;break; } return 0; }
运行结果如下:
这个编程比较简单,没什么难度,但要注意如果要用if语句,一定要记住else后面不加条件。
Part 6 拓展练习
/*求两个数的最大公约数*/ #include <stdio.h> int main(){ int a,b,r; scanf("%d %d",&a,&b); do{r=a%b; a=b; b=r; }while(r!=0); printf("最大公约数为:%d\n",a); return 0; }
实验总结与体会
1.格式化输入与输出函数中最值得注意的是 地址运算符“&”的使用和精度类型所对应的格式符的使用。
2.if语句中要注意的是 else后面不再添加条件。
3.switch语句中一定要记得break的使用。
4.学C语言一定要勤加练习,只有这样才能学好它。
1 https://www.cnblogs.com/zwl415/p/10639305.html
2 https://www.cnblogs.com/ft1574497591/p/10629304.html
3 https://www.cnblogs.com/WPA1/p/10634206.html