实验2 格式化输入输出和分支语句
Posted syl123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验2 格式化输入输出和分支语句相关的知识,希望对你有一定的参考价值。
Part1:
ex2_1.cpp:
程序运行后,各个变量的值与代码中赋给变量的初始值有一个不一致,printf("%f,%8f)的结果为123.456001
解释:f系统默认小数部分输出6位小数,计算机读取数据时转化为二进制,再转化为十进制输出,过程会出现数据的偏差。
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 ",a1,a2,a3); scanf("%c%c%c",&c1,&c2,&c3); printf("%c%c%c ",c1,c2,c3); scanf("%lf,%lf",&x,&y); printf("%lf,%lf ",x,y);/*x为double类型,应该为lf*/ return 0; }
总结:%d十进制有符号整数,%f小数形式,%c字符形式输出单个字符,%s字符串
%md等是按m宽度输出数据,%m.n等是指数据总宽占m,小数n,数据自身宽度小于m列时左补空格
长双精度实型数据的输出必须加L
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("不能构成三角形 "); 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("不能构成三角形 "); return 0; }
思考:替换代码后依旧成立
ex2_4.cpp:
#include <stdio.h> #include <stdlib.h> int main() { int choice; // 显示菜单 printf("输入0~9以内的数字,选择屏幕背景色前景色方案: "); printf("1- 黑底绿色 "); printf("2- 白底黑色 "); printf("3- 蓝底白色 "); printf("其它- 黑底白色(默认) "); printf(" 请输入, 选择你想使用的屏幕配色方案: "); // 要求用户从键盘输入0~9的数字,选择屏幕配色方案 scanf("%d",&choice); // 根据用户输入,设置屏幕配色方案 if (choice == 1) { system("color 02"); printf("《黑客帝国》一类的影视剧常见这种屏幕色:) "); } else if(choice == 2 ){ system("color f0"); printf("大部分编辑器默认是这种配色:) "); } else if(choice == 3) { system("color 1f"); printf("这是机器蓝屏故障时的不讨喜色:) "); } else { system("color 0f"); printf("控制台程序默认小黑窗:) "); } printf("programming is fun, just try@_@ "); return 0; }
Part3:
练习1:
#include<stdio.h> int main(){ int a; printf("请输入一个三位以内的十进制整数: "); scanf("%d",&a); if(a<=9) printf("其正序与逆序相同 "); else if(a>=10&&a<=99){ if(a%11==0) printf("其正序与逆序相同 "); else printf("其正序与逆序不同 "); } else{ if(a/100==a%10) printf("其正序与逆序相同 "); else printf("其正序与逆序不同 "); } return 0; }
练习2:
#include<stdio.h> #include<stdlib.h> int main(){ int year,month,day,leapyear; printf("输入年份 月份: "); scanf("%d%d",&year,&month); if(year<=0||month<1||month>12){ printf("输入的数据错误! "); exit(0); } leapyear=year%4==0&&year%100!=0||year%400==0; if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) day=31; else if(month==2) day=28+leapyear; else day=30; printf("%d年%d月的天数为:%d ",year,month,day); return 0; }
练习3:
#include<stdio.h> #include<stdlib.h> int main(){ int score; printf("输入分数(0~100): "); scanf("%d",&score); if(score<0||score>100){ printf("分数不在有效区间内 "); exit(0); } switch(score/10){ case 10: case 9:printf("优秀 ");break; case 8:printf("良好 ");break; case 7:printf("中等 ");break; case 6:printf("及格 ");break; default:printf("不及格 ");break; } return 0; }
总结与体会:
if 和swich语句在一起套用的时候会输着输着思路混乱
{}出现多次的时候会分不清,特别是不小心删去一个}的时候
英文拼错后系统报错,以为是程序错误找半天
part3中的实验二if里面把月份都输了,不知道有没有简便的方法