#include
void main() //一段根据输入的年,月,日来计算该天是当年第几天的程序 { int year,month,day,feb,count; //feb代表二月份天数,count代表当年的第几天
printf("请输入年份:n"); scanf("%d",&year); printf("请输入月份:n"); scanf("%d",&month); printf("请输入日期:n"); scanf("%d",&day); if((year%4==0&&year%100!=0)||(year%400==0)){ //()内的条件用于判断当前年份是否为闰年 //条件中%运算符代表求余,同样的运算符有+,-,*,/等, 若/的左右两侧均为int(short、long)型即整形则预算结果会自动取整
//条件中的==以及未出现的<,<=,>,>=为比较运算符用于比较符号两边的值 比较结果为ture/false
//条件中的!=,||,&&为逻辑运算符分别代表非,或,与 用于判断多个条件的ture/false
feb=29; //若条件为真则执行本行 否则执行else下面语句
}else{
feb=28;
}
//根据输入的不同月份计算count值 从而得到结果
if(month==1){
count=day;
}else if(month==2){
count=day+31;
}else if(month==3){
count=day+31+feb;
}else if(month==4){
count=day+31+feb+31;
}else if(month==5){
count=day+31+feb+31+30;
}else if(month==6){
count=day+31+feb+31+30+31;
}else if(month==7){
count=day+31+feb+31+30+31+30;
}else if(month==8){
count=day+31+feb+31+30+31+30+31;
}else if(month==9){
count=day+31+feb+31+30+31+30+31+31;
}else if(month==10{
count=day+31+feb+31+30+31+30+31+31+30;
}else if(month==11{
count=day+31+feb+31+30+31+30+31+31+30+31;
}else if(month==12{
count=day+31+feb+31+30+31+30+31+31+30+31+30;
}
//输出结果
printf("%d年%d月%d日是%d年中的第%d天n",year,month,day,year,count);
}
? 4.switch(表达式){case ?值1: ?case 值2: ... default :} 类似于if...else ?switch也是条件结构,不同的是switch其下{}中的 case 值 ?与()中的表达式相比较,如果相同则执行case 值:下的语句,否则执行default下语句;case后面所跟必须是一个特定的值;不同于if....else if语法,从表达式值等于某个case语句后的值开始,它下方的所有语句都会一直运行,并忽略其他case,直到遇到一个break为止,假如任何一个case语句的值都不等于表达式的值,就运行可选标签default之下的语句; 例: 用switch结构写一段与上面相同的程序
#include? 5.while(){} ?do{}while(); while是一种循环语法,()中的内容为循环执行的条件,如果()中条件为ture则执行{}中的程序,否则停止执行; do..while不同与while,会先执行do{}内的程序后再进入while()中条件进行判断,如果ture则继续执行do{}中的程序,其中while作为一条单独的语句需要以;结尾; 例:void main() { int year,month,day,feb,count=0; printf("请输入年份:n"); scanf("%d",&year); printf("请输入月份:n"); scanf("%d",&month); printf("请输入日期:n"); scanf("%d",&day); if((year%4==0&&year%100!=0)||(year%400==0)){ feb=29; }else{ feb=28; } switch(month) { case 12: count+=30;//这里的+=是运算符相当于count=count+30 //类似的还有-=,/=,*=用法一样 //还有一种++,--代表自+1或者自-1 case 11: count+=31; case 10: count+=30; case 9: count+=31; case 8: count+=31; //其间如果出现break;则会跳过后面的case和default case 7: count+=30; case 6: count+=31; case 5: count+=30; case 4: count+=31; case 3: count+=feb; case 2: count+=31; case 1: count+=day; } printf("%d年%d月%d日是%d年的第%d天n",year,month,day,year,count); }
#include循环嵌套的用法示例:void main() { //打印100~1000之间所有的水仙花数,并统计其个数 int i=100;//循环变量 int count=0,ge,shi,bai,sum; do{ ge=i%10;//获取个位 shi=i/10%10;//获取十位 bai=i/100; //获取百位 sum=ge*ge*ge+shi*shi*shi+bai*bai*bai; if(sum==i){ //用于判定进入循环中的i值是否为水仙花数 //while,do....while,if等语句中都可以彼此嵌入 printf("%dt",i); count++; //用于计数 } i++; //每次循环的间隔,i++代表每次循环后i的值+1 }while(i<1000); //()中为循环条件如果满足会一直执行do{}中程序 printf("n100~1000之间共有%d个水仙花数",count); }
#include? 6.for(;;){} for循环效果类似与while循环;都是在()中条件满足的情况下执行{}中的程序 在for循环中;是不能或缺的,表达式1,表达式2,表达式3都可以省略; for(表达式1?;表达式2?;表达式3?){//循环体;} 执行顺序: 初始化循环变量即表达式1;循环条件判断即表达式2;执行循环体即{}内语句;更改循坏变量即表达式 ? ? ?3;其中表达式1初始化循环变量,只执行1次; 例1:void main() { //打印正的等腰三角形 // * // *** // ***** //******* int i=0,j,k; while(i<4){ //外层循环控制行数 j=0,k=0; while(j<3-i){ //找到变量与需要循环次数的关系 printf(" "); //利用空格定位 j++; } while(k<2*i+1){ //打印每一行星号 printf("*"); k++; } printf("n"); //每一行的循环结束后换行 i++; } }
#include另外循环中可以插入break和contine关键字 break:跳出循环 continue: 跳过本次循环,继续下一次循环 例2:void main() { /**************************************************** *************zhaoyi 2017.3.18 test2************ ******根据用户输入的数据输出合适数量大小整齐排列的菱形 ***************************************************/ //size代表菱形大小,row输出行数,colum输出列数,xyij内外循环变量 int size,row,column,x,y,i,j; //获取用户输入信息 printf("请输入你要显示菱形的对角线长:n"); scanf("%d",&size); printf("请输入你要显示菱形的行数:n"); scanf("%d",&row); printf("请输入你要显示菱形的列数:n"); scanf("%d",&column); printf("n"); for(x=0;x ){ for(y=0;y ); } for(j=0;j<2*i+1;j++){ printf("*"); } for(j=0;j+i ){ printf(" "); } } printf("n"); } for(i--;i>0;i--){ for(y=0;y ); } for(j=0;j<2*i-1;j++){ printf("*"); } for(j=0;j+i ){ printf(" "); } } printf("n"); } } printf("n"); }
#include写了这么多依然没有将这周老师所教授的全部总结到位,只是通过这一周学习的几个函数穿插几个典型的案例来阐述总结,不免疏漏、不到位或是出错的地方,最后两个案例是老师布置的周末作业,老师还未点评,不一定是最佳写法,不过我还是挺满意的。 至此结束本周的回顾。 ps:刚开始没发现注意到插入代码的功能懒得再改了,后续的再完善把~void main() { /********************************************** ****打印0,1,2,3,4可以组成的数字各不相同的三位数 **********************************************/ int num,ge_5,shi_5,bai_5,count=0; for(num=25;num<125;num++){ ge_5=num%5; //将十进制数转化为三位数的5进制(25~125对应100~1000) shi_5=num/5%5; //并分别提取各位的数字 bai_5=num/5/5%5; if(ge_5==shi_5||ge_5==bai_5||shi_5==bai_5){ //判定如果每位数字都不相同就跳过该循环 continue; } printf("%d%d%dt",bai_5,shi_5,ge_5); //输出得到的五进制数字 count++; //循环计次 } printf("nn0,1,2,3,4可以组成的数字各不相同的三位数有%d个n",count); }