实验二
part1
#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; }
改变了数值宽度和小数点的位数
#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:scanf()中a1,a2,a3前缺少地址符号,错误2:double双精度应该用%lf
%lf代表双精度整数类型(double) %ld代表输出长整型(long)
part2
#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; }
将14-19行换掉后逻辑依然成立。
#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> #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; }
将line11改成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; }
part 3
#include<stdio.h> #include<stdlib.h> int main() { int num; printf("请输入一个三位数以内的十进制整数:"); scanf("%d",&num); printf("计算其逆序数…\n"); if(num<0||num>999) printf("输入数据错误"); else if(num>=0&&num<10) printf("%d正序和逆序相同",num); if(num>=10&&num<=99&&num%10==num/10) printf("%d正序和逆序相同",num); else if(num>=10&&num<=99&&num%10!=num/10) printf("%d正序和逆序不同",num); if(num>99&&num<=999&num%10==num/100) printf("%d正序和逆序相同",num); else if(num>99&&num<=999&num%10!=num/100) printf("%d正序和逆序不同",num); return 0; }
#include<stdio.h> #include<stdlib.h> int main() { int year,month,day,leapyear; printf("请输入年份和月份:"); scanf("%d%d",&year,&month); leapyear=year%4==0&&year%100!=0||year%4==0;/*是否为闰年*/ if(year<0||month<1||month>12) { printf("输入数据错误"); exit(0); } if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) printf("%d年%d月的天数为:%d\n",year,month,day=31); else if(month==4||month==6||month==9||month==11) printf("%d年%d月的天数为:%d\n",year,month,day=30); else if(leapyear!=0) printf("%d年%d月的天数为:%d\n",year,month,day=29); else if(leapyear==0) printf("%d年%d月的天数为:%d\n",year,month,day=28); return 0; }
#include<stdio.h> #include<stdlib.h> int main() { int score; printf("输入分数(0~100):"); scanf("%d",&score); if( score<0||score>100) { printf("输入数据错误\n"); exit(0); } switch(score/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; }
实验总结与体会:1花了很多时间(整整一个下午)完成实验,不够熟练,需要思考很久;2编写代码总是犯一些小错误自己还不能发现,例如拼错单词,漏掉分号;3写if语句特别是有嵌套时会把自己绕进去,if与else不能很好对应,不熟悉;4觉得自己编写的程序很啰嗦,应该有更简单的编写方法,但我不会,希望熟练点后自己能编写出更简单的代码。