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;
}
欢迎打赏三连