4.2.1程序解析一统计一个整数的位数Enteranumber:12534int main(void)Itcontains5digits int count, number;Entera number:-99count = O;It contains 2 digits.printf("Enter a number:"):Entera number: 0scanf ("%d", &number) ;It contains 1 digits.if(number < 0) number = -number;do{while (number!= 0)(number=number/10:number=number/10;count++;count ++;1} while (number != 0):printf("lt contains %d digits.In", count);return O;1
int main(void) { int count, number; count = 0; printf("Enter a number: "); scanf ("%d", &number) ; if (number < 0) number = -number; do { number = number / 10; count ++; } while (number != 0); printf("It contains %d digits.\n", count); return 0; } 4.2.1 程序解析-统计一个整数的位数 Enter a number: 12534 It contains 5 digits. Enter a number: -99 It contains 2 digits. Enter a number: 0 It contains 1 digits. while (number != 0) { number = number / 10; count ++; }
4.2.2do-while语句dol循环体语句先循环} while (表达式)循环体语句假表达真式后判断do-while的下一条语句
4.2.2 do - while 语句 do { 循环体语句 } while (表达式) 先循环 后判断 真 假 表达 式 循环体语句 do-while的下一条语句
while和do-while的比较while是先判别条件,再决定是否循环:■do-while是先至少循环一次,然后再根据循环的结果决定是否继续循环。假循环体语句表达式I真假循环体语句表达式-do-while的下一条语句while的下一条语句
◼ while 是先判别条件,再决定是否循环; ◼ do-while 是先至少循环一次,然后再根据循 环的结果决定是否继续循环。 while 和 do-while 的比较 真 假 表达式 循环体语句 do-while的下一条语句 真 假 while的下一条语句 表达式 循环体语句
4.3判断素数例4-4输入一个正整数m,判断它是否为素数。4.3.1程序解析4.3.2break语句和continue语句
4.3 判断素数 例4-4 输入一个正整数m,判断它是否为 素数。 4.3.1 程序解析 4.3.2 break语句 和continue语句
4.3.1程序解析一判断素数算法:除了1和m,不能被其它数整除。for(i = 2; i<= m/2; i++)寸if(m % i== 0) break;if(i > m/2) printf("yesln")Lelse printf("noln");%2%3%4%5m%(m-1)=0=011不是素数!=0!=0是素数&&m不可能被大于 m/2 的数整除i取值[2,m-1] 、[2,m/2] 、[2,/m ]
4.3.1 程序解析-判断素数 算法:除了1和m,不能被其它数整除。 设 i 取值 [2, m-1] ◼如果m不能被该区间上的任何一个数整除,即对 每个i,m%i 都不为0,则m是素数 ◼只要找到一个i,使m%i为0,则m肯定不是素数 m %2 %3 %4 %5 %(m-1) 不是素数 || =0 =0 是素数 && !=0 !=0 m不可能被大于 m/2 的数整除 i 取值 [2, m-1] 、 [2, m/2] 、 [2, m ] for(i = 2; i <= m/2; i++) if(m % i == 0) break; if(i > m/2) printf("yes\n") else printf("no\n”);