实验2
Part1: 格式化输出函数printf()和格式化输入函数scanf()
ex2_1.cpp
程序运行后,各个变量的值与代码中赋给变量的初始值是否一致:不一致
原因:输出符printf%后的修饰符:m 输出数据域宽,数据长度<m,左补空格;否则按实际输出;
.n 对实数,指定小数点后位数(四舍五入),对字符串,指定实际输出位数
l 在d、o、x、u前。指定输出精度为long型;在e、f、g前,指定输出精度为double型
ex2_2.cpp
指出有错的部分,并分析错误原因。
line 13,line17
错误原因:line13少了地址运算符,line17double类型数据输入应为“%lf”
总结几个常用的格式符%d, %f, %c, %s的常用用法,尤其是诸如%5d, %lf, %.3f, %6.2f的用法。回答什么情况下必须使用格式符%lf, %ld?
%d:按十进制整数输入;%f:按浮点数据输入;%c:按字符输入;%s:按字符串输入
double类型的数据输入一定要用“%lf”
long类型的数据输入一定要用“%ld”
Part2: 验证性内容
在实验博客中回答验证性内容中提出的思考题,并附上自己对ex2_3.cpp和ex2_4.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 || b==c) { if (a==b && a==c) printf("构成等边三角形\n"); else printf("构成等腰三角形\n"); } else printf("构成一般三角形\n"); } else printf("不能构成三角形\n"); return 0; }
#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: 编程练习
附上每道程序源码和运行测试截图。
#include<stdio.h> int main() { int a,b; printf("输入一个三位数以内的十进制整数:\n"); scanf("%d",&a); if (0<=a&&a<10) { printf("该数正序和逆序相同"); } else if(10<=a&&a<=999) { b=(a%10)*100+((a/10)%10)*10+a/100; if (a==b) printf("该数正序和逆序相同"); else printf("该数正序和逆序不同"); } else printf("wrong"); return 0; }
#include<stdio.h> #include<stdlib.h> int main() { int year,month,day,leapyear; scanf("%d%d",&year,&month); if(year<0||month<1||month>12) { printf("输入的数据错误!\n"); 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) { printf("%d年%d月的天数为:31\n",year,month); } else if(month==2) { day=28+leapyear; printf("%d年%d月的天数为:%d\n",year,month,day); } else { printf("%d年%d月的天数为:30\n",year,month); } return 0; }
#include<stdio.h> #include<stdlib.h> int main() { int cj; scanf("%d",&cj); if(cj<0||cj>100) { printf("输入数据错误\n"); exit(0); } switch(cj/10) { case 10: case 9:printf("优秀\n");break; case 8:printf("良好\n");break; case 7:printf("中等\n");break; case 6:printf("及格\n");break; default:printf("不及格\n");break; } return 0; }
实验总结与体会
输入时要加地址运算符,注意相应的控制符的用法与作用,以及相应输入输出时的数据类型。
对用法意基本掌握,但是对if else 的花括号的使用仍有一点问题,不太清楚。
if else语言多个使用时没有加花括号;语句结束没有加分号;单词拼写错误。
c语言要多加练习,注意语言的简洁不要走弯路。