1. 程序设计基础Ⅰ实验三:while循环经典题目解析
作为计算机专业的基础课程,程序设计基础Ⅰ的实验环节对培养编程思维至关重要。实验三围绕while循环结构设计了11-20题,涵盖了数学猜想、数值处理、条件判断等典型应用场景。这些题目看似简单,却蕴含着程序设计中最基础的逻辑构建能力。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数学猜想类问题实现
2.1 3n+1猜想(7-11题)
这个著名的数学猜想被称为Collatz猜想或冰雹猜想。其核心在于通过简单的规则对数字进行变换,观察最终是否会收敛到1。
cpp复制#include<bits/stdc++.h>
using namespace std;
int main(){
int n,i=0;
cin>>n;
while(n>1){ // 当n大于1时持续循环
if(n%2!=0) n=3*n+1; // 奇数变换
else n=n/2; // 偶数变换
i++; // 计数器递增
}
cout<<i;
return 0;
}
注意事项:虽然题目保证最终会变为1,但在实际应用中,对于极大数值需要考虑整型溢出问题。例如当n=999999时,变换过程中数值会超过int范围(2^31-1),建议使用long long类型。
2.2 物不知其数问题(7-15题)
这道题源自中国古代数学著作《孙子算经》,是模运算的经典应用。我们需要找到满足三个同余条件的最小正整数。
cpp复制#include<bits/stdc++.h>
using namespace std;
int main(){
int x,y,z;
scanf("%d %d %d",&x,&y,&z);
for(int i=1;;i++){ // 无限循环直到找到解
if(i%3==x && i%5==y && i%7==z){
cout<<i;
break; // 找到解后退出循环
}
}
return 0;
}
算法优化:直接遍历效率较低,可以采用中国剩余定理进行优化。例如先找到满足i%3==x的数,然后每次加3的倍数进行验证,减少循环次数。
3. 数值计算类问题
3.1 平均数计算(7-12题)
这个题目要求处理不定数量的实数输入,计算它们的平均值。关键在于处理EOF(End Of File)输入情况。
cpp复制#include<bits/stdc++.h>
using namespace std;
int main(){
int i=0;
double n,sum=0.0,m=0.0;
while(scanf("%lf",&n)!=EOF){ // 检测输入结
