0
点赞
收藏
分享

微信扫一扫

佛系算法刷题打卡记录

Spinach菠菜 2022-04-13 阅读 42

1.计算素数和

输入两个正整数m和n(m<n),求m到n之间(包括m和n)所有素数的和,要求定义并调用函数isprime(x)来判断x是否为素数(素数是除1以外只能被自身整除的自然数)。

输入

m n

输出

素数和

样例输入复制

2 3

样例输出复制

5
#include <stdio.h>
int isprime(int x);
int main()
{
	int m,n;
	scanf("%d %d",&m,&n);
	int p=0;
	for(m;m<=n;m++)
	{
		if(isprime(m))
		{
			p=p+m;
		}
	}
	
	printf("%d",p);
	
	return 0;
	
}

int isprime(int x)
{
	int i;
	int a=0;
	if(x==1) 
	{
		return 0;
	}
	for(i=2;i<x;i++)	//这里用i=2,实际过滤掉了2 ,即2不进入判定 
	{
		if(x%i==0)
		{
			a++;//因数++ 
		}
		

	}
	if(a==0)
	{
		return 1;//是素数 
	}
	else 
	{
		return 0;
	}
}

2.进制转换

题目描述

编程,输入一个10进制正整数,然后输出它所对应的八进制数。

输入

输出

样例输入复制

10

样例输出复制

12
#include <stdio.h>

int main()
{
	int a;
	scanf("%d",&a);
	printf("%o",a);
	return 0;
 } 

3.温度转换

题目描述

输入一个华氏温度,要求输出摄氏温度。公式为

保留两位小数

输入

输出

样例输入复制

-40

样例输出复制

-40.00
#include <stdio.h>

int main()
{
	int a;
	float b;
	scanf("%d",&a);
	b=(float)5/9 * (a-32);
	printf("%.2f",b);
	
	
	return 0;
}

 

4.分段函数

题目描述

有一个函数如下,写一程序,输入x,输出y值。

保留两位小数

输入

输出

样例输入复制

1

样例输出复制

1.00
#include <stdio.h>
int main()
{
	float x;
	scanf("%f",&x);
	if(x<1)
	{
		printf("%.2f",x);
	}
	else if(1<=x<10)
	{
		printf("%.2f",2*x-1);
		
	}
	else if(x>=10)
	{
		printf("%.2f",3*x-11);
	}
	
	return 0;
}

5 .求偶数和

题目描述

编制程序,输入n个整数(n从键盘输入,n>0),输出它们的偶数和。

输入

输出

样例输入复制

2
1 2

样例输出复制

2
#include <stdio.h>

int even(int x);
int main()
{
	int n;
	int a[n];
	scanf("%d",&n);
	int i;
	int p=0;
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(i=0;i<n;i++)
	{
		if(even(a[i]))
		{
			p=p+a[i];
		}
	}
	printf("%d",p);
	
}

int even(int x)
{
	if(x%2==0)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

6.等差数列

题目描述

sum=2+5+8+11+14+…,输入正整数n,求sum的前n项和。

输入

输出

样例输入复制

2

样例输出复制

7
#include <stdio.h>

int main()
{
	int n;
	int sum;
	int i;
	int b=0;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		sum=3*i-1;
		b+=sum;
	}
	printf("%d",b);
	
	return 0;
 } 

7.同因查找

题目描述

求出10至1000之内能同时被2、3、7整除的数,并输出。

每行一个。

输入

输出

样例输入复制

样例输出复制

#include <stdio.h>
int main()//2 3 7
{
	int i;
	for(i=10;i<=1000;i++)
	{
		if(i%2==0)
		{
			if(i%3==0)
			{
				if(i%7==0)
				{
					printf("%d\n",i);
				}
			}
		}
	}
}

8.计负均正

题目描述

从键盘输入任意20个整型数,统计其中的负数个数并求所有正数的平均值。

保留两位小数

输入

输出

样例输入复制

1 2 3 4 5 6 7 8 9 10
-1 -2 -3 -4 -5 -6 -7 -8 -9 -10

样例输出复制

10
5.50
#include <stdio.h>
int main()
{
	int a[10];
	int b[10];
	int j,k;
	int d=0;
	int f=0;
	int c=0;
	int h=0;
	for(j=0;j<10;j++)
	{
		scanf("%d",&a[j]);
		if(a[j]<0)
		{
			d++;
		}
		else
			c+=a[j];
		
	}
	for(k=0;k<10;k++)
	{
		scanf("%d",&b[k]);
		if(b[k]<0)
		{
			f++;
		}
		else
			h+=b[k];
	}
	float m;
	m=(float)(c+h)/(20-(d+f));
	printf("%d\n",d+f);
	printf("%.2f",m);
	return 0;
	
	
}

9.公约公倍

题目描述

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

输入

输出

样例输入复制

2 3

样例输出复制

1
6
#include <stdio.h>

int gb(int a,int b)
{
	int i,j,k,m=0;
	if(a>b)
	{
		if(a%b==0)
		{
			return a;
		}
		else
		{
			if(a==1||b==1||a==2||b==2)
			{
				return a*b;
			}
			else
			{
			
				for(i=2;i<=b;i++)
				{
					if(a%i==0&&b%i==0)
					{
						j = a/i;
						k = b/i;
						m=i;
					}
				}
				if(m!=0)
				{
					return m*j*k;
				}
				else
				{
					return a*b;
				}
			
			}	
		}
	}
	else if(a<b)
	{
		if(b%a==0)
		{
			return b;
		}
		else
		{
			if(a==1||b==1||a==2||b==2)
			{
				return a*b;
			}
			else
			{
				for(i=2;i<=a;i++)
				{
					if(a%i==0&&b%i==0)
					{
						j = a/i;
						k = b/i;
						m=i;
					}
				}
				if(m!=0)
				{
					return m*j*k;
				}
				else 
				{
					return a*b;
				}
			}
		}
	}
	else if(a==b)
	{
		return a;
	}
}

int gy(int a,int b)
{
	int i;
	int j;
	int k;
	i = a*b;
	j = gb(a,b);
	k = i/j;
	return k;
}

int main()
{
	int a,b;
	scanf("%d %d",&a,&b);
	printf("%d\n%d",gy(a,b),gb(a,b));
	
	return 0;
}

10.统计字符

题目描述

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

输入

输出

样例输入复制

a 1,

样例输出复制

1
1
1
1
#include <stdio.h>
#include <string.h>

int main(void)
{
	int i,j;
	int a=0,b=0,c=0,d=0;
	char o[100];
	for(i=0;i<100;i++)
	{
		scanf("%c",&o[i]);
		if(o[i]=='\n')
		{
			j = i;
			break;
		}
	}
	for(i=0;i<j;i++)
	{
		if(((int)o[i]>=65&&(int)o[i]<=90)||((int)o[i]>=97&&(int)o[i]<=122))
		{
			a++;
		}
		else if(o[i]==32)
		{
			b++;
		}
		else if(isdigit(o[i]))//判断字符是否为数字 
		{
			c++;
		}
		else
		{
			d++;
		}
	}
	printf("%d\n%d\n%d\n%d",a,b,c,d);
}

11.最小绝对值

题目描述

输入10个数,找出其中绝对值最小的数,将它和最后一个数交换,然后输出这10个数。

输入

十个数

输出

交换后的十个数

样例输入复制

10 2 30 40 50 60 70 80 90 100

样例输出复制

10 100 30 40 50 60 70 80 90 2
#include <stdio.h>
#include <math.h>

int main()
{
	int a[10];
	int b[10];
	int i;
	int j;
	int k;
	int t;
	for(i=0;i<=9;i++)
	{
		scanf("%d",&a[i]);
		b[i]=abs(a[i]);
	}
	for(i=9;i>=0;i--)
	{
		for(j=0;j<i;j++)
		{
			if(b[i]<b[j])
			{
				k=i;
			}
			else
			{
				k=j;
			}
		}
	}
	t=a[9];
	a[9]=a[k];
	a[k]=t;
	for(i=0;i<=9;i++)
	{
		printf("%d ",a[i]);	
	}

	
	return 0;
}
举报

相关推荐

0 条评论