SCAU高级语言程序设计--实验5 循环结构(一)(1)
一、堂上限时习题
1、计算阶乘
题目:输入正整数n(n<12),计算n!(注n!=1*2*3*...*n)
思路:循环乘而已
#include<stdio.h>
int main (){
int i,n;
scanf("%d",&n);
if(n<12 && n>0){
for(i=1;i<=a;i++)
n *= i;
printf("%d\n",n);
}
else
printf("error\n");
return 0;
}
2、计算数列和
题目:有数列1,3,5,7,9,11,…… 现要求由键盘输入n,计算输出该数列的前n项和。(给的n不会超过10000)
思路:
#include<stdio.h>
int main (){
int n,sum,i,t=1;
scanf("%d",&n);
for(i=1;i<=n;i++){//循环加n个数
sum += t;
t += 2;//数列每个数间隔为2
}
printf("%d\n",sum);
return 0;
}
3、求最大公约数
题目:由键盘输入两个正整数m、n(m、n<1000000),计算它们的最大公约数。
思路:这里使用了欧几里德算法(Euclidean algorithm),尼考曼彻斯法和穷举法。
/*方法1:欧几里德算法*/
#include<stdio.h>
int main (){
int t,m,n;
scanf("%d,%d",&m,&n);
while(m!=0){
t = n % m;
n = m;
m = t;
}
printf("%d\n",n);
}
/*方法2:尼考曼彻斯法*/
#include<stdio.h>
int main (){
int m,n;
scanf("%d,%d",&m,&n);
while(m!=n){
if(x>y)
x = x-y;
else
y = y-x;
}
printf("%d\n",n);
}
/*方法3:穷举法*/
#include<stdio.h>
int main (){
int i,m,n;
scanf("%d,%d",&m,&n);
for (i = 1; i <= x; i++){
if (x%i == 0 && y%i == 0)
break;
}
for (i = x; i > 0; i--){
if (x%i == 0 && y%i == 0)
break;
}
printf("%d\n",n);
}
4、输出最小值
题目:从键盘输入十个整数,输出最小值
思路:输入一个数i,之后输入的数j与i相比,如果较小就替代掉i。
#include<stdio.h>
int main (){
int n,i,j;
scanf("%d",&n);
for(i=1;i<10;i++){
scanf("%d",&j);
if(j < i)
i = j;
}
printf("%d\n",i);
return 0;
}