题型:判断大月还是小月
难点:怎么一次性输出,保证时间复杂度为O(n)的情况;
本来想着在一个数组里面,用一层for循环加个if-else判断就能输出来,但因为if在for循环嵌套里面,导致每一次遍历都会打印出月份信息,一直也想不到怎么让他检测一次就直接打印出来,而不是重复打印。
原先代码如下:
int big[7] ={1,3,5,7,8,10,12};
for(int i =0;i<7;i++){
if(){
printf("-------")
}
}else{
printf("---------------")
}
这样做导致每一次都会打印一遍,后来才想到设置一个标记位,通过真假判断能在循环体外面打印出来:
#include <stdio.h>
int main(){
int month;
int found =0;//设置标记位
printf("请输入月份:");
scanf("%d",&month);
//判断
if (month !=2){
int big[7] ={1,3,5,7,8,10,12};
//在数组中遍历
for(int i =0;i<7;i++){
if(month == big[i]){
found =1; //数组中遍历到元素时,标记位为1
break; //否则跳出循环
}
}
if (found){
printf("%d月是大月",month); //found为1则会执行真语句
}else{
printf("%d月是小月",month);
}
}else{
printf("既不是大月也不是小月");
}
return 0;
}
本着学习的态度和大家讨论和交流,希望大家看完能给出自己的建议,我也会认真看的