不会,因为for循环里的while循环,会将n里面的因数4,在循环到4之前分解成2*2的形式,这里面涉及到了一些数学知识。
测试如下:
参考链接:
#include <stdio.h>
int main(void){
int n,i;
printf("\nplease input a number:\n");
scanf("%d",&n);
printf("%d=",n);
// https://baike.baidu.com/item/%E5%88%86%E8%A7%A3%E8%B4%A8%E5%9B%A0%E6%95%B0/2253749?fromtitle=%E8%B4%A8%E5%9B%A0%E6%95%B0%E5%88%86%E8%A7%A3&fromid=10305400&fr=aladdin
// https://baike.baidu.com/item/%E5%9B%A0%E6%95%B0%E5%88%86%E8%A7%A3/5827933?fr=aladdin
for(i=2;i<=n;i++){ // 从2开始分解n的因数,直到 分解到因数大于n
// 如果n不等于i,就一直分解,这个起到循环的作用 ,可以将n中的因数i 分解到只剩最后一个,即当n==i时
while(n!=i){
if(n%i==0){ // 如果i整除n的余数等于0,i是n的因数,打印i的值,然后n中除掉i的值
printf("%d*",i);
n=n/i;
}else{ // 如果i整除n的值不等于0,则i不是n的因数,退出循环,判断判断i的下一个值是否n的因数
break;
}
}
}
printf("%d",n); // 打印n被分解到只剩最后一个因数的值
return 0;
}
#include <stdio.h>
int main(void)
{
int count, i, n; /* count 记录不及格学生的人数 */
double grade, total; /* grade 存放输入的成绩, total保存成绩之和 */
printf("Enter n: "); /* 提示输入学生人数n */
scanf("%d", &n);
total = 0;
count = 0;
for(i = 1; i <= n; i++){
printf("Enter grade #%d: ", i);/* 提示输入第i个成绩 */
scanf ("%lf", &grade); /* 输入第i个成绩 */
total = total + grade; /* 累加成绩 */
if(grade < 60){ /* 统计不及格学生的人数 */
count++;
}
}
printf("Grade average = %.2f\n", total / n);
printf("Number of failures = %d\n", count);
return 0;
}