C语言从0到1--第一篇(刷题篇)

文章目录

  • Printf的返回值
  • 斐波那契数
  • 水仙花数
  • 九九乘法表
  • 3或5的倍数

Printf的返回值

试利用printf的返回值去求一个数字n的位数
(printf返回输出字符的数量例如:int n=printf(“xixi”);printf(“%d”,n);//得到xixi4

#include
int main()
{
   int num;scanf("%d",&num);
	int n=printf("%d\n",num);
	printf("%d",n-1);
	return 0;
 } 

斐波那契数

斐波那契数列中的每一项都是前两项的和。1,2,3,5,8…求100以内的斐波那契数列之和。

#include
int fibo(int n)
{
	if(n==1||n==2)
	{
		return 1;
	}
	else
	{
	return fibo(n-2)+fibo(n-1);
    }
}		
int main()
{
	int i,sum=0,b[30]={0};
	for(i=0;i<30;i++){
		b[i]=fibo(i+1);
		if(b[i]>=100) break;
		sum+=b[i];
	}
	printf("%d",sum);
	return 0 ;
}
#include
int main(){
	int a=0,b=1,s=0,c=a+b;
	while(c<100){
		s+=c,a=b,b=c,c=a+b;
	}
	printf("%d",s);
	return 0;
}

C语言从0到1--第一篇(刷题篇)_第1张图片

#include 
#define UPPER_BOUND 4000000

int main(){
  int num1= 1, num2 = 2;
  int tmp = 0;
  int sum=num2;

while(num2 < UPPER_BOUND){
    tmp = num2;
    num2 = num2 + num1;
    num1 = tmp;
    
    if(!(num2 & 1)){
        sum += num2;
    }
}
printf("%d",sum);
}
#include
#define max_n 44
#define N 4000000
int fib[max_n+5]={0};

int main(){
	fib[1]=1,fib[2]=2;//忽略数组的第0位
	long long sum=2;
	for(int i=3;i<=max_n && fib[i-1]+fib[i-2]<=N;i++){
		fib[i]=fib[i-1]+fib[i-2];
		if(fib[i]&1) continue;//奇数
		sum+=fib[i];
	}
	printf("%lld",sum);
}

C语言从0到1--第一篇(刷题篇)_第2张图片

水仙花数

水仙花数是指 “该数本身等于各位数字的立方和” 的三位数。求所有的水仙花数。

int main(){
	int i;
	int n;scanf("%d",&n);//n表示输入的位数
	int max= pow(10,n) ;
	int min= pow(10,n-1);
	
	for(i=min;i<max;i++){
		int sum=0,m=i;
		while(m>0){
			sum+=pow(m%10,n);
			m/=10;
		}
	   if(sum==i) printf("%d\n",i);
   }
    return 0;
}

九九乘法表

用C语言简单的输出一个九九乘法表(注意排序整齐)。

#include
int main()
{
	int i,j;
	
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=9;j++)
		{
			printf("%d*%d=%2d\t",i,j,i*j);
		}
		printf("\n");
	}
	return 0;
}

#include
int main() {
	int i,j;
	for(i=1; i<=9; i++) {
		for(j=1; j<=9; j++) {
			if(j>=i)
				printf("%d*%d=%2d  ",i,j,i*j);
		}
		printf("\n");
	}
	return 0;
}

#include
int main() {
	int i,j;
	for(i=1; i<=9; i++) {
		for(j=1; j<=9; j++) {
			if(j<i)
				printf("\t");
			else
				printf("%d*%d=%2d  ",i,j,i*j); 
		}
		printf("\n");
	}
	return 0;
}

#include
int main() {
	int i,j;
	
	for(i=1; i<=9; i++) {
		for(j=1; j<=9-i; j++) {
			printf("\t");
		}
		for(j=1; j<=i; j++)
			printf("%d*%d=%2d  ",i,j,i*j);

		printf("\n");
	}
	return 0;
}

3或5的倍数

在小于10的的自然数中,3或5的倍数有3、5、6和9,这些数之和是23。求小于1000的自然数中所有3或5的倍数之和。(考虑使用俩种解法)

#include
using namespace std;
int is_value(int n){
	if(n%3==0||n%5==0) return 1;
	return 0;
}
  
int main(){
	int sum=0;
	for(int i=0;i<1000;i++)
	{
		if(!is_value(i)) continue;
		sum+=i;
	}
	cout<<sum<<endl;
}
#include
using namespace std;

int main(){
 int sum3=(3+999)*999/3/2;
 int sum5=(5+995)*995/5/2;
 int sum15=(15+990)*990/15/2;
 int sum=sum3+sum5-sum15;
 printf("%d",sum);

return 0;
}

你可能感兴趣的:(C语言专栏重构,c语言,算法,c++)