#includeint 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; }
1,2行输出整形,一致
3行中x分别以宽度为8和2的整形输出,后一个x实际宽度大于2,按照原宽度输出,因此前者不一致后者一致
4行第一项因为十进制与二进制的相互转化,计算机计算产生误差,
第二项以8为宽度输出,原宽度大于8,
第三项以宽度8小数点保留一位四舍五入输出,
第四项保留两位小数四舍五入输出,
第五项按科学计数法且保留两位小数输出,均不一致
5行按double型输出,不一致
6行以宽度3输出字符a,不一致
7行输出字符串,一致
8行以宽度15输出字符串,不一致
9行以宽度10输出最大字符长度为5的字符串 ,不一致
10行以宽度2输出最大字符长度为5的字符串,原宽度大于2,不一致
11行输出最大字符长度为3的字符串,不一致
#includeint 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);//改为%lf printf("%f,%lf\n",x,y);//改为%lf return 0; }
错误1:a1,a2,a3缺少地址码,错误2:double双精度应该用%lf
总结:%5d,%2f,等输出右段对齐的数,在制作表格形式常用,%.2f,%.3f等控制小数精度一致,%c输出字符,%s输出字符串
长整形时用%ld,double时用%lf
Part 2
ex2_3
#includeint 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; }
#includeint 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; }
ex_2.4
#include#include 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请输入,选择你想使用的屏幕配色方案: "); 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; }
修改后:
#include#include 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请输入,选择你想使用的屏幕配色方案: "); 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
#includeint main() { int number; printf("请输入一个三位以内的十进制整数: "); scanf("%d",&number); printf("计算其逆序数...\n"); if(number>0 && number<999) { if(number>99 && number/100 == number%10) printf("%d正序和逆序相同",number); else if(number>9 && number<100 && number/10 == number%10 ) printf("%d正序和逆序相同",number); else if(number<10) printf("%d正序和逆序相同",number); else printf("%d正序和逆序不同",number); } else printf("该整数不是三位以内的十进制整数\n"); return 0; }
#include#include int main() { printf("输入年份 月份:\n"); int year,month,leapyear; scanf("%d%d",&year,&month); leapyear=year%4==0 && year%100!=0 || year%400==0; if(year<0 || month<1 || month>12) { printf("输入数据错误\n"); exit(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==4 || month==6 || month==9 || month==11) printf("%d年%d月是30天\n",year,month); else if(leapyear==0) printf("%d年%d月是28天\n",year,month); else printf("%d年%d月是29天\n",year,month); return 0; }
#include#include int main() { printf("输入分数(0~100):"); int grade; scanf("%d",&grade); if(grade<0 || grade>100) { printf("输入的数据错误\n"); exit(0); } switch(grade/10) { case 10: case 9:printf("优秀");break; case 8:printf("良好");break; case 7:printf("中等");break; case 6:printf("及格");break; case 5: case 4: case 3: case 2: case 1: case 0:printf("不及格");break; } return 0; }
总结:对if语句与switch用法基本掌握,算法的设计不够流畅,地址符与分号容易忘记输入。