标签:sys return mamicode 初始 使用 color int 精度 switch语句
#实验结论
Part1: 格式化输出函数printf()和格式化输入函数scanf()
ex2-1.cpp
#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;
}
第三行:输出格式为“%8d”即数据宽度为8,进行右对齐。
输出格式为“%2d”,因为数据进行右对齐,从右边进行输出,因此输出原型。
第四行:输出格式为“%f”float以二进制形式储存,因此在转变数据输出时输出的时123.456的近似数。
输出格式为“%8f”因为输出数据占8个单位,其中整数整体占一个单位,“.”占一个单位,小数位一个数据占一个单位(001原因见上一行)。
输出格式“%8.1f”其中.1代表小数点后只有一个数据宽度,通过四舍五入将4进一位为5。同时数据宽度为8个单位,因此整数前右对齐,留出空格。
输出格式“%0.2f”输出时四舍五入保留两位小数。
输出格式“%.2e”%e指以指数形式输出实数,.2指输出的小数部分的位数,其中又进行了四舍五入。
第五行:输出格式“%lf”,因为m的输入形式是double型,因此以十进制形式输出,lf表示双精度浮点数,所占单位也比f大,因此在小数后面取0占位。
第六行:输出格式“%3c",表明数据宽度为3个单位,因此右对齐,在a的左边留出三个空格。
第八行:输出格式“%15s”,表明输出字符串占15个单位,右对齐,因此在左边空格占位。
第九行:输出格式“%10.5s”,10代表字符串占据10个单元,.5表示输出5个字符。右对齐,所以在左边空格占位。
第十行:输出格式“%2.5s”,2表示占2个单位,.5表示输出5个字符,右对齐。
第十一行:输出格式“%.3s”,表示输出3个字符。
ex2-2.cpp
错误源代码:
#include <stdio.h>
int main() {
double x,y;
char c1,c2,c3;
int a1,a2,a3;
scanf("%d%d%d",a1,a2,a3); -在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); -在%f前加上l
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("%f,%lf\n",x,y); return 0; }
运行结果:
总结1.
%d:%md-整型输出单位为m个单位,%m.nd-整型输出占m个单位,并且如果输出数据不满n个,即在左边用0占位。
%f:%lf-双精度浮点数,对应double。%m.nf-数据占m个单位,小数点后保留n个小数(进行四舍五入),%.nf-整数部分不变,小数部分保留n个小数(四舍五入)
%c:%mc-表示字符占m个单位,右对齐(空格补位)。
%s:%ms-字符串占m个单位,右对齐(空格补位)。%m.ns-字符串占m个单位,且字符串显示n个字符。
%lf:是double类型,如果用%f输入,会导致输入错误。
%ld:是长整型数,在整数是长整型时,如果用%d输出,就会只取整型前几个数,导致输出错误。
Part2: 验证性内容
ex2-3.cpp
初始源代码:
#include <stdio.h> int main() { double a,b,c; scanf("%lf %lf %lf", &a, &b, &c); if(a<0 || b<0 || c<0) printf("不能构成三角形\n"); else if(a+b>c && a+c>b && b+c>a) { if(a==b && a==c) printf("构成等边三角形\n"); else if(a==b || a==c || b==c) printf("构成等腰三角形\n"); else printf("构成一般三角形\n"); } else printf("不能构成三角形\n"); return 0; }
运行结果:
也可替换成:
#include <stdio.h> int main() { double a,b,c; scanf("%lf %lf %lf", &a, &b, &c); if(a<0 || b<0 || c<0) printf("不能构成三角形\n"); else if(a+b>c && a+c>b && b+c>a) { if(a==b || a==c||b==c) {if(a==b&&a==c) printf("构成等边三角形"); else printf("构成等腰三角形"); }else printf("构成一般三角形"); } else printf("不能构成三角形\n"); return 0; }
输出结果不变。
ex2-4.cpp
初始源代码:
#include <stdio.h> #include <stdlib.h> int main() { char choice; // 显示菜单 printf("输入0~9以内的数字,选择屏幕背景色前景色方案: \n"); printf("1-\t黑底绿色\n"); printf("2-\t白底黑色\n"); printf("3-\t蓝底白色\n"); printf("其它-\t黑底白色(默认)\n"); printf("\n请输入, 选择你想使用的屏幕配色方案: "); // 要求用户从键盘输入0~9的数字,选择屏幕配色方案 choice = getchar(); // 根据用户输入,设置屏幕配色方案 if (choice == ‘1‘) { system("color 02"); printf("《黑客帝国》一类的影视剧常见这种屏幕色:)\n"); } else if(choice == ‘2‘) { system("color f0"); printf("大部分编辑器默认是这种配色:)\n"); } else if(choice == ‘3‘) { system("color 1f"); printf("这是机器蓝屏故障时的不讨喜色:)\n"); } else {
system("color 0f"); printf("控制台程序默认小黑窗:)\n"); } printf("programming is fun, just try@_@\n"); return 0; }
运行结果:
输入4~9:
如果变量choice由char类型改成int类型:
应将源代码改为:
#include <stdio.h> #include <stdlib.h> int main() { int choice; // 显示菜单 printf("输入0~9以内的数字,选择屏幕背景色前景色方案: \n"); printf("1-\t黑底绿色\n"); printf("2-\t白底黑色\n"); printf("3-\t蓝底白色\n"); printf("其它-\t黑底白色(默认)\n"); printf("\n请输入, 选择你想使用的屏幕配色方案: "); // 要求用户从键盘输入0~9的数字,选择屏幕配色方案 scanf("%d",&choice); // 根据用户输入,设置屏幕配色方案 if (choice == 1) { system("color 02"); printf("《黑客帝国》一类的影视剧常见这种屏幕色:)\n"); } else if(choice == 2) { system("color f0"); printf("大部分编辑器默认是这种配色:)\n"); } else if(choice == 3) { system("color 1f"); printf("这是机器蓝屏故障时的不讨喜色:)\n"); } else { system("color 0f"); printf("控制台程序默认小黑窗:)\n"); } printf("programming is fun, just try@_@\n"); return 0; }
输出结果不变。
part3: 编程练习
1、从键盘上输入一个三位数以内的十进制整数,判断其是否满足正序、逆序相同。
#include<stdio.h> int main() { int a,b,c; scanf("%d",&a); b=a/10+(a%10)*10; c=a/100+(a/10-(a/100)*10)*10+((a%100)%10)*100; if(a>=0&&a<10) printf("%d正序和逆序相同",a); else if(a==b||a==c) printf("%d正序和逆序相同",a); else printf("%d正序和逆序不相同",a); return 0; }
结果:
2、 从键盘上输入年份和月份,计算该月有多少天
源代码:
#include<stdio.h> #include<stdlib.h> int main() { int y,m,d,r; scanf("%d%d",&y,&m); if(y<=0||m<1||m>12) { printf("输入的数据错误!\n"); exit(0); } r=y%400==0||y%4==0&&y%100!=0; if(m==1||m==3||m==5||m==7||m==8||m==10||m==12) d=31; else if(m==4||m==6||m==9||m==11) d=30; else {d=28+r;} printf("%d年%d月的天数为:%d\n",y,m,d); return 0; }
输出结果:
3、从键盘输入一个百分制成绩(整型量),要求输出成绩等级:优秀、良好、中等、及格、不及格
源代码:
#include<stdio.h> #include<stdlib.h> int main() { int x; scanf("%d",&x); if(x<0||x>100) { printf("分数不在有效区间内\n"); exit(0); } x=x/10; switch(x) { case 0: case 1: case 2: case 3: case 4: case 5:printf("不及格\n");break; case 6:printf("及格\n");break; case 7:printf("中等\n");break; case 8:printf("良好\n");break; case 9: case 10:printf("优秀\n");break; } return 0; }
运行结果:
#实验总结与体会
1、if();出错
2、switch用法时,忘加break;做截止。
3、#include<stdlib.h>
······
if(x<0||x>100)
{
printf("分数不在有效区间内\n");
exit(0);
}
······
上面一段我在switch语句中想用default代替,结果发现不好代。
标签:sys return mamicode 初始 使用 color int 精度 switch语句
原文地址:https://www.cnblogs.com/gebilaowangfangruidong/p/11784380.html