C语言练习题

C语言练习题

整数简单运算

题目11:整数简单运算
问题描述:编写程序,计算用户输入的两个整数的和、差、乘积(*)和商(/)。
输入格式:输入两个整数,整数之间用空格分隔。
输出格式:输出四个整数结果,分别表示和、差、积和商,每输出一个结果换行。
输入样例:
3 4
输出样例:
7
-1
12
0

#include<stdio.h>
int main(){
	int a,b;
	scanf("%d%d",&a,&b);
	printf("%d\n%d\n%d\n%d\n",a+b,a-b,a*b,a/b);
	return 0;
}

四则运算

四则运算
问题描述:
输入两个整数和一个四则运算符,根据运算符计算并输出其运算结果(和、差、积、商、余之一)。注意做整除及求余运算时,除数不能为零。

输入说明:
使用scanf()函数输入两个整数和一个运算符,格式见输入样例。

输出说明:
输出使用printf()函数,格式见输出样例。

输入样例:
5%2

输出样例:
5%2=1

#include<stdio.h>
int main(){
	int a,b;
	char c;
	scanf("%d%c%d",&a,&c,&b);
	if(c=='+')
	printf("%d%c%d=%d\n",a,c,b,a+b);
	else if(c=='-')
	printf("%d%c%d=%d\n",a,c,b,a-b);
	else if(c=='*')
	printf("%d%c%d=%d\n",a,c,b,a*b);
	else if(c=='/')
	printf("%d%c%d=%d\n",a,c,b,a/b);
	else if(c=='%')
	printf("%d%c%d=%d\n",a,c,b,a%b);
	return 0;
}
//switch语句同理

数位输出

数位输出
问题描述:
输入一个5位整数,求出其各数位数值,并按照从高位到低位的顺序输出,如:输入12345,输出为1 2 3 4 5。

输入说明:
输入一个五位正整数。

输出说明:
按数位从高到低依次输出,各数位之间以一个空格相分隔。

输入样例:
96237

输出样例:
9 6 2 3 7

#include<stdio.h>
int main(){
	int a;
	int num[20];
	int i,j,k;
	scanf("%d",&a);
	
	i=0;
	j=0;
	while(a>0){
		num[i]=a%10;
		a=a/10;
		i++;
		j++;
	}
	
	for(k=i-1;k>=0;k--)
	printf("%d ",num[k]);
	
	return 0;
}

计算球体重量_%f的使用

标题
计算球体重量

描述
已知铁的比重是7.86(克/立方厘米),金的比重是19.3(克/立方厘米)。写一个程序,分别计算出给定直径的铁球与金球的质量,假定PI=3.1415926

时间限制
1

内存限制
10000

类别
1

输入说明
输入两个整数,分别表示铁球与金球的直径(单位为毫米)

输出说明
输出两个浮点数,分别表示铁球与金球的质量(单位为克),小数点后保留3位小数,两个浮点数之间用空格分隔

输入样例
100 100

输出样例
4115.486 10105.456

提示
用scanf输入,用printf输出,保留3位小数的格式控制字符为%.3f

#include<stdio.h>
#include<math.h>
#define pi 3.1415926
int main(){
	int a,b;
	double xa,xb;
	scanf("%d%d",&a,&b);
	
	xa=7.86*4/3*pi*pow(a/20.0,3);
	xb=19.3*4/3*pi*pow(b/20.0,3);
	printf("%.3f %.3f",xa,xb);

	return 0;
}

数位输出_三位数数位拆分

标题
数位输出

描述
输入一个3位整数,求出其各数位数值,并按照从高到低的顺序输出,如:输入123,输出1 2 3

时间限制
1

内存限制
10000

类别
1

输入说明
输入一个三位正整数

输出说明
按数位从高到低依次输出,各数位之间以一个空格相分离。

输入样例
985

输出样例
9 8 5

提示
输入三位数,各数位格式输出,从高到低,一个空格分隔,如9 8 5

#include<stdio.h>
int main(){
	int a;
	int num[20];
	int i,j,k;
	scanf("%d",&a);
	
	i=0;
	j=0;
	while(a>0){
		num[i]=a%10;
		a=a/10;
		i++;
		j++;
	}
	
	for(k=i-1;k>=0;k--)
	printf("%d ",num[k]);
	
	
	return 0;
}

求整数各位之和

题目描述:输入一个三位数整数,求其百位、十位和个位数字之和。

输入格式:共一行,输入一个三位整数。

输出格式:共一行,输出一个整数。

示例:
输入:128
输出:11

#include<stdio.h>
int main(){
	int a;
	int num[20],sum;
	int i,j,k;
	scanf("%d",&a);
	
	i=0;
	j=0;
	while(a>0){
		num[i]=a%10;
		a=a/10;
		i++;
		j++;
	}
	
	sum=0;
	for(k=i-1;k>=0;k--)
	sum=sum+num[k];
	
	
	printf("%d",sum);
	
	
	return 0;
}

求三角形面积

题目描述:输入三角形的三边长,计算三角形的面积,结果保留两位小数。
边长分别为a,b,c,三角形的面积公式为s=sqrt(p(p-a)(p-b)(p-c)),其中p=(a+b+c)/2。

输入格式:共一行,输入三个数,保留两位小数,用空格隔开各个数据。

输出格式:共一行,输出面积,结果保留两位小数。

示例:
输入:3.00 4.00 5.00
输出:6.00

#include<stdio.h>
#include<math.h>
int main()
{
	double a,b,c;
	double p,s;
	scanf("%lf%lf%lf",&a,&b,&c);
	
	p=(a+b+c)/2;
	s=sqrt(p*(p-a)*(p-b)*(p-c));
	
	printf("%.2f",s);
	return 0;
}

工资发放

题目描述:公司财务要发工资现金,需要提前换取100元、50元、20元、10元、5元和1元的人民币,
请输入工资数,计算张数最少情况下,各自需要多少张。

输入格式:共一行,输入一个正整数。

输出格式:共一行,分别是100、50、20、10、5、1元面额的张数,用空格隔开各个数据。

示例:
输入:1258
输出:12 1 0 0 1 3

#include<stdio.h>
int main()
{
	int num;
	scanf("%d",&num);
	
	printf("%d %d %d %d %d %d",num/100,(num%100)/50,((num%100)%50)/20,\
			  (((num%100)%50)%20)/10, ((((num%100)%50)%20)%10)/5,\
			  ((((num%100)%50)%20)%10)%5);
			  
 return 0;
}

字符转换

题目:字符编码
时间限制:1S
内存限制:10000Kb
问题描述:
请编程序将“China”译成密码,密码规律是:用原来字母后面第四个字母代替原来的字母。例如“A”后面的第四个字母是“E”,用“E”代替“A”,因此,“China”应译为“Glmre”。
输入说明:
用赋初值的方法使c1,c2,c3,c4,c5这五个变量的值分别为‘C’,‘h’,‘i’‘n’,‘a’,字符之间以空格分隔。
输出说明:
经过运算,使c1,c2,c3,c4,c5分别变成‘G’,‘l’,‘m’,‘r’,‘e’。用printf函数输出这五个字符
输入样例:
C h I n a
输出样例:
Glmre

int main()
{
	char word[5]={'C','h','i','n','a'};
	for(int i=0;i<5;i++)
	word[i]=word[i]+4;
	
	for(int i=0;i<5;i++)
	printf("%c",word[i]);
	
	return 0;
}

成绩分级

题目:成绩分级
时间限制:1S
内存限制:10000Kb
问题描述
给出以百分制成绩,要求输出成绩等级为’A’,’B’,’C’,’D’,’E’。90分以上为’A’,80-89分为’B’,70-79分为’C’,60-69分为’D’,60分以下为’E’。
输入说明:
输入0-100内的成绩
输出说明:
输出成绩相对应的等级
输入样例:
95
输出样例:
A

#include<stdio.h>
int main()
{
	int num;
	scanf("%d",&num);
	if(num<60)
	printf("E");
	else if(num>=60&&num<70)
	printf("D");
	else if(num>=70&&num<80)
	printf("C");
	else if(num>=80&&num<90)
	printf("B");
	else if(num>=90)
	printf("A");
	
	
	return 0;
}

分段函数1

题目:分段函数
时间限制:1S
内存限制:10000Kb
问题描述:
有一个函数:
在这里插入图片描述

编程输出其函数值。
输入说明:
输入自变量x(输入必须为整数)
输出对应的函数值。
输入样例:
3
输出样例:
5

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

利润计算

题目:利润计算
时间限制:1S
内存限制:10000Kb
问题描述:
企业发放的奖金根据利润提成。利润I低于或者等于100000元的,奖金可提10%润高于100000元低于200000元 时,低于100000元的部分按照10%提成,高于100000元的部分,可提成7.5%; 时,低于200000元的部分仍按上述办法提成(下同)。高于200000元的部分按5%提成; 元时,高于400000元的部分按3%提成; 时,高于600000元的部分按照1.5%提成;I>1000000时,超过1000000元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数。
输入说明:
从键盘输入当月利润I。
输出说明:
输出当月应发的奖金总数,结果保留两位小数。
输入样例:
150000
输出样例:
13750.00

#include<stdio.h>
int main()
{
	int x;
	scanf("%d",&x);
	if(x<=100000)
	printf("%.2f",0.1*x);
	else if(x<200000&&x>=100000)
	printf("%.2f",10000+(x-100000)*0.075);
	else if(x<400000&&x>=200000)
	printf("%.2f",17500+(x-200000)*0.05);
	else if(x<600000&&x>=400000)
	printf("%.2f",27500+(x-400000)*0.03);
	else if(x<1000000&&x>=600000)
	printf("%.2f",33500+(x-600000)*0.015);
	else
	printf("%.2f",39500+(x-1000000)*0.01);
	
	return 0;
	
}

和差平方与平方和差

试题名称
problem1-6和差平方与平方和差

时间限制:1秒

问题描述

输入两个大于4的正整数a和b,分别计算(a+b)2、(a-b)2、a2+b2、a2-b2,并找出其最大值和最小值。

输入说明
输入为2个正整数a和b,4<= a, b <1000,整数之间由空格分开

输出说明

输出两个整数,分别表示(a+b)2、(a-b)2、a2+b2、a2-b2中的最大值和最小值,整数之间用空格分隔。

测试样例:

输入样例1

8 10
输出样例1

324 -36

输入样例2

36 5
输出样例2

1681 961

#include<stdio.h>
#include<math.h>
int main()
{
	int a,b;
	int xpow[4];
	scanf("%d%d",&a,&b);
	
	xpow[0]=(int)pow(a+b,2);
	xpow[1]=(int)pow(a-b,2);
	xpow[2]=(int)pow(a,2)+(int)pow(b,2);
	xpow[3]=(int)pow(a,2)-(int)pow(b,2);
	
	for(int i=0;i<3;i++)
	for(int j=i;j<4;j++)
	if(xpow[i]<xpow[j]){
		a=xpow[i];
		xpow[i]=xpow[j];
		xpow[j]=a;
	}
	
	printf("%d %d",xpow[0],xpow[3]);
	
	return 0;
	
}

PM2.5

标题
PM2.5

类别
流程控制

时间限制
1S

内存限制
256Kb

问题描述
给出一组PM2.5数据,按以下分级标准统计各级天气的天数,并计算出PM2.5平均值。
PM2.5分级标准为:
一级优(0<=PM2.5<=50)
二级良(51<=PM2.5<=100为)
三级轻度污染(101<=PM2.5<=150)
四级中度污染(151<=PM2.5<=200)
五级重度污染(201<=PM2.5<=300)
六级严重污染(PM2.5>300)

输入说明
输入分为两行,
第一行是一个整数n表示天数(1<n<=100);
第二行为n个非负整数Pi(0<=Pi<=1000),表示每天的PM2.5值,整数之间用空格分隔。

输出说明
输出两行数据,
第一行为PM2.5平均值,结果保留2位小数;
第二行依次输出一级优,二级良,三级轻度污染,四级中度污染,五级重度污染,六级严重污染的天数。

输入样例
10
50 100 120 80 200 350 400 220 180 165

输出样例
186.50
1 2 1 3 1 2

#include<stdio.h>
int main()
{
	int num;
	int count[100],quality[6];
	double ave=0;
	int i,j;
	
	
	scanf("%d",&num);
	for(i=0;i<num;i++){
		scanf("%d",&count[i]);
		ave=ave+count[i]*1.0/num;
	}
	
	for(i=0;i<6;i++)
	quality[i]=0;
	
	for(i=0;i<num;i++){
		if(count[i]<=50)
		quality[0]++;
		else if(count[i]<=100&&count[i]>=51)
		quality[1]++;
		else if(count[i]>=101&&count[i]<=150)
		quality[2]++;
		else if(count[i]>=151&&count[i]<=200)
		quality[3]++;
		else if(count[i]>=201&&count[i]<=300)
		quality[4]++;
		else if(count[i]>300)
		quality[5]++;
	}
	
	printf("%.2f\n",ave);
	for(i=0;i<6;i++)
	printf("%d ",quality[i]);
}

abc组合

标题
abc组合

类别

时间限制
1S

内存限制
1000Kb

问题描述
已知abc+cba=n,其中a,b,c均为一位数,1000<n<2000,编程求出满足条件的a,b,c所有组合。

输入说明
一个整数n

输出说明
按照整数abc从小到大的顺序,输出a, b, c, 用空格分隔,每输出一组a,b,c后换行.

输入样例
1352

输出样例
3 7 9
4 7 8
5 7 7
6 7 6
7 7 5
8 7 4
9 7 3

#include<stdio.h>
int main()
{
	int a,b,c,abc,cba;
	int num;
	
	scanf("%d",&num);
	
	for(a=1;a<10;a++)
	for(b=0;b<10;b++)
	for(c=1;c<10;c++){
		abc=a*100+b*10+c;
		cba=c*100+b*10+a;
		if(num==abc+cba)
		printf("%d %d %d\n",a,b,c);
	}
	
	return 0;
}

直角三角形

标题
直角三角形

类别
流程控制

时间限制
1S

内存限制
1000Kb

问题描述
设直角三角形两条直角边长度为a和b,斜边长度为c,则a,b,c满足a2+b2=c^2,
输入三个整数a,b,c,判断对应的三角形是不是直角三角形,不是则输出“no”,是则输出其面积的2倍。

输入说明
数据由同一行的三个整数a,b,c构成,整数之间以空格分隔

输出说明
如果输入的三个整数可以构成一个直角三角形,则输出一个整数表示该三角形面积的2倍;否则输出“no”

输入样例
样例1输入
1 1 2
样例2输入
3 4 5

输出样例
样例1输出
no
样例2输出
12

#include<stdio.h>
int main()
{
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	if((a*a+b*b)==c*c)
	printf("%d",a*b);
	else
	printf("no");
	
	return 0;
}

工资计算

题目1:工资计算
问题描述
  小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资为S元,则他应交的个人所得税按如下公式计算:
  1) 个人所得税起征点为3500元,若S不超过3500,则不交税,3500元以上的部分才计算个人所得税,令A=S-3500元;
  2) A中不超过1500元的部分,税率3%;
  3) A中超过1500元未超过4500元的部分,税率10%;
  4) A中超过4500元未超过9000元的部分,税率20%;
  5) A中超过9000元未超过35000元的部分,税率25%;
  6) A中超过35000元的部分,税率30%;
  例如,如果小明的税前工资为10000元,则A=10000-3500=6500元,其中不超过1500元部分应缴税1500×3%=45元,超过1500元不超过4500元部分应缴税(4500-1500)×10%=300元,超过4500元部分应缴税(6500-4500)×20%=400元。总共缴税745元,税后所得为9255元。
  已知小明这个月税前所得为S元,请问他的税后工资T是多少元。
输入格式
  输入为一个整数S,表示小明的税前工资。所有评测数据保证小明的税前工资为一个整百的数。
输出格式
  输出一个整数T,表示小明的税后工资。
样例输入
10000
样例输出
9255
评测用例规模与约定
对于所有评测用例,1 ≤ T ≤ 100000。

#include<stdio.h>
int main()
{
	int s,A,T;
	scanf("%d",&s);
	A=s-3500; 
	if(s<=3500)
	printf("%d",s);
	else if(A<=1500&&A>0)
	{
	   T=3500+(1-0.03)*A;
	   printf("%d",T);
    }
    else if(A>1500&&A<=4500)
    {
    	T=3500+1455+(1-0.1)*(A-1500);
    	printf("%d",T);
	}
	else if(A>4500&&A<=9000)
	{
		T=3500+1455+2700+(1-0.2)*(A-4500);
		printf("%d",T);
	}
	else if(A>9000&&A<=35000)
	{
		T=3500+1455+2700+3600+(A-9000)*(1-0.25);
		printf("%d",T);
	}
	else if(A>35000)
	{
		T=3500+1455+2700+3600+19500+(A-35000)*0.7;
		printf("%d",T);
	}
	return 0;
 } 

整数比较1

Problem 1 整数比较1
描述:
编写程序,对于从键盘输入的2个整数,先输出较大者的个位数字,然后输出较小者的平方值。
输入说明:
输入的两个整数之间以一个空格分隔。
输出说明:
在一行上输出两个整数,整数之间以一个空格分隔,最后换行。
输入样例
样例1输入
29989 372
输出样例
样例1输出
9 138384

#include<stdio.h>
int main()
{
	int a,b,c;
	scanf("%d%d",&a,&b);
	if(a<b){
		c=a;
		a=b;
		b=c;	
	}
	printf("%d %d",a%10,b*b);
	
	return 0;
}

整数比较3

Problem 3整数比较3
描述:
从键盘输入四个整数,要求按由小到大的顺序输出。
输入说明:
输入四个整数,以空格间隔。
输出说明:
输出排序后的整数,以空格间隔。
输入样例
样例1输入
-99 9 99 -9
输出样例
样例1输出
-99 -9 9 99

#include<stdio.h>
int main()
{
	int num[4];
	int i,j,k;
	
	for(i=0;i<4;i++)
	scanf("%d",&num[i]);
	
	for(i=0;i<3;i++)
	for(j=i;j<4;j++)
	if(num[i]>num[j]){
		k=num[i];
		num[i]=num[j];
		num[j]=k;	
	}
	
	for(i=0;i<4;i++)
	printf("%d ",num[i]);
	
	return 0;
}

成绩分级_分支结构

标题
成绩分级

描述
给出一个百分制的成绩,要求输出成绩等级’A’,‘B’,‘C’,‘D’,‘E’。90分以上为’A’,8089分为’B’,7079分为’C’,60~69分为’D’,60分以下为’E’。

时间限制
1

内存限制
10000

类别
1

输入说明
输入一个百分制成绩,浮点型,如78.5。

输出说明
输出成绩和等级,成绩保留两位小数,如78.50 C

输入样例
78.5

输出样例
78.50 C

提示
格式输出%.2f %c

#include<stdio.h>
int main()
{
	double num;
	scanf("%lf",&num);
	
	if(num<60)
	printf("%.2f %c",num,69);
	else if(num<70&&num>=60)
	printf("%.2f %c",num,68);
	else if(num<80&&num>=70)
	printf("%.2f %c",num,67);
	else if(num<90&&num>=80)
	printf("%.2f %c",num,66);
	else if(num>=90)
	printf("%.2f %c",num,65);
	
	return 0;

}

阶梯电价_分支结构练习

标题
阶梯电价计算

描述
电价分三个档次,一档:0110(含110)度电,每度电0.5元;二挡:110210(含210)度电,超出110部分每度电0.55元;三挡:超过210度电,超出210部分每度电0.70元,给出一个家庭一月用电量,请计算出应缴的电费。

时间限制
1

内存限制
10000

类别
1

输入说明
输入一月用电量,正实数,如70.5。

输出说明
输出应缴电费、档次和该档超额使用的电量数据,档次使用字母A、B和C表示,分别对应一、二和三档,电量和电费使用浮点型,结果四舍五入,保留小数点后两位小数

输入样例
70.5

输出样例
35.25 A 0.00

提示
格式输出%.2f %c %.2f

#include<stdio.h>
int main()
{
	double num,money;
	int i,j,k;
	
	scanf("%lf",&num);
	if(num<=110)
	printf("%.2f %c %.2f",num*0.5,65,0);
	else if(num>110&&num<=210)
	printf("%.2f %c %.2f",55+(num-110)*0.55,66,num-110);
	else if(num>210)
	printf("%.2f %c %.2f",55+100*0.55+(num-210)*0.7,67,num-210); 
	
	return 0;
}

英文表示数字

题目描述:输入一个0~9的一位整数,输出其对应的英文单词。要求用switch结构完成。

示例:
输入:0
输出:zero
输入:8
输出:eight

#include<stdio.h>
int main()
{
	int num;
	scanf("%d",&num);
	
	switch(num){
	case 0:printf("zero");break;
	case 1:printf("one");break;
	case 2:printf("two");break;
	case 3:printf("three");break;
	case 4:printf("four");break;
	case 5:printf("five");break;
	case 6:printf("six");break;
	case 7:printf("seven");break;
	case 8:printf("eight");break;
	case 9:printf("nine");break;
	default:break;
	}
}

数字个数统计2–循环条件设置练习

标题
数字个数统计2

描述
输入一个正整数N(300≤N≤500),统计N(1~N)以内奇数、偶数和能分别被3、5、7整除的数字个数。

时间限制
1

内存限制
10000

类别
1

输入说明
输入正整数N(300≤N≤500),如452

输出说明
输出N以内奇数、偶数和能分别被3、5、7整除的数字个数

输入样例
452

输出样例
226 226 150 90 64

提示
编制子函数双数Even()、单数Odd()、Sum_3()、Sum_5()和Sum_7()分别实现数字统计和输出,无返回值,各输出之间空一个空格;
主函数调用

#include<stdio.h>
void Even(int x);//双数 
void Odd(int x);//单数 
void Sum_3(int x);
void Sum_5(int x);
void Sum_7(int x);
int main()
{
	int num;
	scanf("%d",&num);
	
	if(num<=500&&num>=300){
	Odd(num);//单数 
	Even(num);//双数 
	Sum_3(num);
	Sum_5(num);
	Sum_7(num);
	}
	
	return 0;
}
void Even(int x){
	printf("%d ",x/2);
}
void Odd(int x){
	if(x%2==0)
	printf("%d ",x/2);
	else 
	printf("%d ",x/2+1);
}
void Sum_3(int x){
	printf("%d ",x/3);
}
void Sum_5(int x){
	printf("%d ",x/5);
}
void Sum_7(int x){
	printf("%d",x/7);
}

分解质因数

分解质因数

题目描述:
每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,
这几个素数就都叫做这个合数的质因数。编写程序将一个正整数分解质因数

输入描述:
输入一个正整数n(2<n<1000)

输出描述:
形如abb*c,质因数按照从小到大的顺序排列

输入样例:
90

输出样例:
233*5

#include<stdio.h>
int prine(int i);
int main()
{
	int number;
	int c,d;
	scanf("%d", &number);

		int i = 2;
		do 
		{
			if (!prine(i))
			{
				while (number%i == 0)
				{
					if (number%i == 0 && number / i != 1) printf("%d*", i);
					else if (number%i == 0 && number / i == 1) printf("%d", i);
					number /= i;
				} 
				
			}
			i++;
		} while (number != 1);
	
	return 0;
}
int prine(int i)
{
	int c,d;
	c=0;
	for (int b = 2; b < i; b++)
	{
		d = i%b;
		if (!d)
		{
			c = 1;
			break;
		}
	}
	
	return c;
}

奖金计算

2-6 奖金计算

时间限制:1 S

问题描述:
企业发放的奖金根据利润提成。利润低于或等于100000元的,奖金可提10%;
利润高于100000元,低于等于200000元(100000<I≤200000)时,低于等于100000元的部分按10%提成,高于100000元的部分,可提成 7.5%;
200000<I≤400000时,低于等于200000元部分仍按上述办法提成,(下同),高于200000元的部分按5%提成;
400000<I≤600000元时,高于400000元的部分按3%提成;
600000<I≤1000000时,高于600000元的部分按1.5%提成;
I>1000000时,超过1000000元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数。

输入为一个整数(≤1200000),当月利润。

输出一个整数,奖金。

输入示例
900

输出示例
90

#include<stdio.h>
int main()
{
	int x;
	double a,b,c,d,e,f;
	scanf("%d",&x);
	a=0.1*x;
	b=10000+(x-100000)*0.075;
	c=17500+(x-200000)*0.05;
	d=27500+(x-400000)*0.03;
	e=33500+(x-600000)*0.015;
	f=39500+(x-1000000)*0.01;
	if(x<=100000)
	printf("%d",(int)a);
	else if(x<200000&&x>=100000)
	printf("%d",(int)b);
	else if(x<400000&&x>=200000)
	printf("%d",(int)c);
	else if(x<600000&&x>=400000)
	printf("%d",(int)d);
	else if(x<1000000&&x>=600000)
	printf("%d",(int)e);
	else
	printf("%d",(int)f);
	
	return 0;
	
}

亲和数

problem 4-6 亲和数
时间限制:1S

题目描述:
古希腊数学家毕达哥拉斯在自然数研究中发现,220 的所有真约数(即不是自身的约数)之和为:
1+2+4+5+10+11+20+22+44+55+110=284
而 284 的所有真约数为 11、22、44、7171、142142,加起来恰好为 220。人们对这样的数感到很惊奇,并称之为亲和数。
一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。

你的任务就编写一个程序,判断给出的两个整数m和n是不是亲和数(m和n可以相同)。

输入说明
输入为两个整数n和m,(1<n,m≤10000),n和m之间用空格分隔

输出说明
在同一行上输出为三项,用空格分隔。
第一项表示判断结果,如果两个数是亲和数输出yes,否则输出no;
第二项是一个整数,表示n的真约数个数;
第三项是一个整数,表示m的真约数个数。

测试样例
输入样例1:
220 284
输出样例1:
yes 11 5

输入样例2:
4 3
输出样例2:
no 2 1

#include<stdio.h>
int main()
{
	int a,b,i,sum1=0,sum2=0,n=0,m=0;
	scanf("%d %d",&a,&b);//输入a,b
	for(i=1;i<a;i++) 
	{
		if(a%i==0)
		{
			sum1=sum1+i;
			n=n+1;
		}
	}
	for(i=1;i<b;i++)
	{
		if(b%i==0)
		{
			sum2=sum2+i;
			m=m+1;
		}
	}//算a,b各自公约数之和
	if(sum1==b&&sum2==a)
	{
		printf("yes ");
		printf("%d %d",n,m);
	 } 
	 else
	 {
	 	printf("no ");
	 	printf("%d %d",n,m);
	 }
	 return 0;
}

质数求和

problem 4-6 质数求和

时间限制:1S

问题描述
输入一个大于20的正整数p,求出正整数范围内第p个质数(或素数,大于1且只能被1和自己整除的正整数,)到第p+10个质数之和。其中,第1个质数为2,第2个质数为3,第3个质数为5,第4个质数为7,依次类推。

输入说明
一行输入1个整数p,20< p <150。

输出说明
第p个质数到第p+10个质数之和。

输入样例:
21
输出样例:
1081

#include<stdio.h>
int prine(int i);
int main()
{
	int p;
	int i,j,k,flag;
	int sum=0;
	scanf("%d",&p);
	j=1;
	flag=0;
	for(i=3;i<65000;i++){
		if(!prine(i)){
			if(flag==1){
			sum=sum+i;
			}
			j++;
			if(j==p+10)
			break;
		}
		if(j==p-1){
			flag=1;
		}
	}
	
	printf("%d",sum);
	
	return 0;
}

int prine(int i)
{
	int c,d;
	c=0;
	for (int b = 2; b < i; b++)
	{
		d = i%b;
		if (!d)
		{
			c = 1;
			break;
		}
	}
	
	return c;
}

欢迎打赏三连

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页