part1
ex2_1:
1.浮点数在储存时为近似值,所以小数后会多一
2.修饰符m,输出数据域宽,数据长度小于m,左补空格,否则输出实际值
3. .n ,对实数指定小数点后位数(四舍五入),对字符串指定实际输出位数
ex2_2:
/* C语言程序设计教程学习指导》p119 实验内容(2) 这是一个格式化输入输出函数及格式符使用练习 找出两处错误,修改并运行程序 为a1,a2,a3,c1,c2,c3,x,y输入数据,使得: a1=1,a2=2,a3=3,c1='a',c2='b',c3='c', x=1.5, y=2.5 */ #includeint 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("%lf,%lf\n",x,y); return 0; }
scanf函数后要加寻址符&,定义double x,y 必须用lf%形式输出
ex2_3:
ex2_4:
发现数据不在0-9直接会变成非0数据1 按1输出
#includeint main() { int a,b,c; printf("请输入一个三位以内的十进制整数:");//xyz// scanf("%d",&a); if(a<=9) { printf("%d正序与逆序相同",a); } else if(a<=99) { c=a;//储存输入值xy// b=a/10;// b=x// a=a%10;//a=y// b=a*10+b;//b=yx// if(b==c) printf("%d正序与逆序相同",c); else printf("%d正序与逆序不同",c); } else if(a>=100&&a<=999) { c=a; b=a/100;//b=x// a=a%100;//a=yz// b=(a/10)*10+b;// b=yx// a=a%10;//a=z// b=b+a*100;//b=zyx// if(b==c) printf("%d正序与逆序相同",c); else printf("%d正序与逆序不同",c); } return 0; }
ex_2:
#include#include 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) { day=31; printf("%d年%d月的天数为:%d\n",year,month,day); } else if(month==4||month==6||month==9||month==11) { day=30; printf("%d年%d月的天数为:%d\n",year,month,day); } else { day=28+leapyear; printf("%d年%d月的天数为:%d\n",year,month,day); } return 0; }
ex_3;
#include#include int main() { printf("输入分数(0~100):"); int score; 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; }
结论:函数表达式不熟悉,不编译情况下无法输出。