目录
1. 计算平均分
2. 字母顺序数字逆序
3. 求前n项和
4. 求阶乘
5. 完数
6. 无理数
7. 黄金分割数
【问题描述】输入一批学生的成绩(至少一个学生,以负数作为结束标志),计算平均分,并统计不及格成绩的个数。
【输入形式】一批学生的成绩(以负数作为结束标志),成绩数据类型为float,逗号分开。
【输出形式】平均分(保留二位小数)和不及格的人数(整数)。逗号分开。
【样例输入】6.9,6.4,87,65,48.6,-9
【样例输出】42.78,3
【样例说明】共有5个成绩,总分6.9+6.4+87+65+48.6=213.9,平均分213.9/5=42.78,有3个不及格。
#include
int main(){
float x,s=0;
int n=0,t=0;
scanf("%f,",&x);
while(x>=0){
s=s+x;
if(x<60){
n++;
}
t++;
scanf("%f,",&x);
}
printf("%.2f,%d",s/t,n);
return 0;
}
【问题描述】输入任意的由字母和数字组成的字串,将其中字母直接输出,数字最后逆序输出。
【输入形式】任意的由字母和数字组成的字串,#结束,中间没有空格。
【输出形式】将其中字母直接输出,数字逆序输出,不含#。
【样例输入】number3reve45rse#
【样例输出】numberreverse543
提示:m=0,k=0,用while((c=getchar())!='#')输入字符c, 如果c是字母,直接输出,否则数字,再用 m=m+(c-'0' )*pow(10,k),k++;变成逆序。
#include
#include
int main(){
char c;
int k=0,m=0;
while((c=getchar())!='#'){
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
printf("%c",c);
}else{
m=m+(c-'0')*pow(10,k);
k++;
}
}
printf("%d",m);
return 0;
}
【问题描述】输入一个正整数n,计算1-2/3+3/5-4/7+5/9-...的前n项之和。
【输入形式】一个正整数n
【输出形式】1-2/3+3/5-4/7+5/9-...+(-1)n+1n/(2n-1)的前n项之和,保留5位小数。
【样例输入】3
【样例输出】0.93333
【样例说明】1-2/3+3/5=0.93333
#include
int main(){
int n;
float sum=0,flag=1,item1=1,item2=1,item=1;
scanf("%d",&n);
for(int i=0;isum=sum+item;
flag=-flag;
item1=item1+1;
item2=item2+2;
item=flag*item1/item2;
}
printf("%.5f",sum);
return 0;
}
【问题描述】
【输入形式】一个不超过15的正整数。
【输出形式】一个double型数据,保留0位小数。
【样例1输入】3
【样例1输出】9
【样例1说明】1!+2!+3!=9
【样例2输入】15
【样例2输出】1401602636313
#include
int main(){
int n;
scanf("%d",&n);
double sum1,sum2=0;
for(int i=1;i<=n;i++){
sum1=1;
for(int j=1;j<=i;j++){
sum1=sum1*j;
}
sum2+=sum1;
}
printf("%.0lf",sum2);
return 0;
}
【问题描述】输入一个正整数n(<=1000),判断该数是否为完数(真因子之和等于数本身),如6是完数,6=1+2+3。
【输入形式】一个正整数n。
【输出形式】如果是完数,输出该数,空格后输出Y,否则输出该数,空格后输出N。
【样例1输入】6
【样例1输出】6 Y
【样例2输入】8
【样例2输出】8 N
#include
int main(){
int n,sum=0,k=1;
scanf("%d",&n);
while(1){
if(k==n) break;
if(k<=n/2&&n%k==0){
sum+=k;
}
k++;
}
if(sum==n) printf("%d Y",n);
else printf("%d N",n);
return 0;
}
【问题描述】由下式e=1+1/1!+1/2!+...+1/n!求无理数e,精确到小数点后6位。
【输入形式】无
【输出形式】由e=1+1/1!+1/2!+...+1/n!得e,精确到小数点后6位。
【样例输入】无
【样例输出】e=2.718282
#include
int main(){
float e,s1,s2=1;
for(int i=1;i<100;i++){
s1=1;
for(int j=1;j<=i;j++){
s1=s1*j;
}
s2=s2+1/s1;
}
printf("%.6f",s2);
return 0;
}
【问题描述】【问题描述】Fibonacci数列1,1,2,3,5,8,13,21…,fn=fn-1+fn-2,当n充分大时(如n=24),第n项和第n+1项的比是黄金分割数0.618033989,求黄金分割数,精确到小数点后6位。
【输入形式】无
【输出形式】一个小数,精确到小数点后6位。
【样例输入】
【样例输出】0.618034
#include
int main(){
double a,b,c,d;
a=1;
b=1;
c=2;
for(int i=1;i<=100;i++){
d=b+c;
if(i==100) break;
a=b;
b=c;
c=d;
}
printf("%.6lf",c/d);
}