2016.10.13

实验3-1 分别使用while循环、do while循环、for循环求(即求1+2+3+ ……+100)。

#include <stdio.h>
int main(){
	int i,sum=0;
	i=1;
	while(i<=100)
	{
		sum+=i;
		i++;
	}
	printf("sum=%d\n",sum);
	return 0;
}

  

#include <stdio.h>
int main(){
	int i,sum=0;
	i=1;
	sum=0;
	do{
		sum+=i;
		i++;
	}while(i<=100);
	printf("sum=%d\n",sum);
	return 0;

  

#include <stdio.h>
int main(){
	int i,sum=0;
	sum=0;
	for(i=1;i<=100;i++)
		sum+=i;
	printf("sum=%d\n",sum);
	return 0;
}

  

实验3-2分别使用while循环、do while循环、for循环求n!,其中n由键盘输入

#include <stdio.h>
int main(){
	int i,sum=1,n;
	i=1;
	printf("请输入n的值:");
	scanf("%d",&n);
	while(i<=n)
	{
		sum=sum*i;
		i++;
	}
	printf("sum=%d\n",sum);
	return 0;
}

  

#include <stdio.h>
int main(){
	int i,sum=1,n;
	i=1;
	printf("请输入n的值:");
	scanf("%d",&n);
	do{
		sum=sum*i;
		i++;
	}while(i<=n);
	printf("sum=%d\n",sum);
	return 0;
}

  

#include <stdio.h>
int main(){
	int i,sum=1,n;
	printf("请输入n的值:");
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	sum=sum*i;
	printf("sum=%d\n",sum);
	return 0;
}

  

#include <stdio.h>
#include <math.h> 
int main(){
	long int k,sum=1,sum1,sum2;
	do{
		sum+=k;
		k++;
	}while(k<=100);
	for(k=1;k<=50;k++)
		sum1=k*k;
	for(k=1;k<=10;k++)
		sum2=1/k;	
	printf("总数为:%d\n",sum+sum1+sum2);
	return 0;
}

  

#include <stdio.h>
int main(){
	char c;
	int zm=0,sz=0,kg=0,qt=0;
	while((c=getchar())!='\n'){
		if((c>='a' && c<='z') ||(c>='A' && c<='Z'))
			zm++;
		if(c==' ')
			kg++;
		if(c>='0' &&c<='9')
			sz++;
		else
			qt++;
	}
	printf("字母个数:%d\n",zm);
	printf("空格个数:%d\n",kg);
	printf("数字个数:%d\n",sz);
	printf("其他字符个数:%d\n",qt);
} 

  

实验3-5输入两个正整数m和n,求其最大公约数和最小公倍数。

#include<stdio.h>
int main(){
	int a,b,m,n;
	printf("请输入正整数m和n:\n");
	scanf("%d%d",&a,&b);
	m=a;
	n=b;
	while(a!=b)
		if(a>b)
			a=a-b;
		else
			b=b-a;
	printf("最大公约数为:%d\n",a);
	printf("最小公倍数为:%d\n",m*n/a);
}

  

实验3-6 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153是一个水仙花数,因为153=13+53+33

#include<stdio.h>
int main(){
    int a,b,c,z;
    for(a=1;a<=9;a++)
    for(b=0;b<=9;b++)
    for(c=0;c<=9;c++)
    {
        z=a*100+b*10+c;
        if(a*100+b*10+c==a*a*a+b*b*b+c*c*c)
        printf("水仙花数为:%d\n",z);
    }
    return 0;
}

心得:

可以将一个公式变换着写例如最后水仙花那道题a*100+b*10+c可以变为a*a*a+b*b*b+c*c*c

最大公约数可以用减法求,如果a>b,则a=a-b      如果a<b,则b=b-a

那么当a=b时,a,b的值就为最大公约数

最小公倍数就为两个数的乘机再除以最大公约数

原文地址:https://www.cnblogs.com/160809212tjc/p/5955522.html