求各位数字之积
/*
计算正整数num的各位上的数字之积
*/
#include<stdio.h>
int main(){
int x;
int s=1;
scanf("%d",&x);
int y=x;
int cnt=0;
int mask=1;
while(x>9){
x /=10;
mask *=10;
}
do{
int d=y/mask;
s=s*d;
y %= mask;
mask /=10;
}while( mask>0);
printf("%d",s);
return 0;
}
求阶乘之和
/*
编写一个程序,任意输入n,求S=1!+2!+...+n!
*/
#include<stdio.h>
int main(){
int a;
int i;
int ret = 1;
int sum = 0;
scanf("%d",&a);
for (i = 1; i <= a; i++)
{
ret *= i;
sum += ret;
}
printf("%d\n", sum);
return 0;
}
求平均成绩
/*
编写一个程序,输入学生人数和每个人的成绩,计算平均成绩。
######注意:当输入的学生人数小于等于0时,输出平均成绩为0分!
*/
#include<stdio.h>
int main(){
int i,num;
float average,sum=0,a[1000];
scanf("%d",&num);
if(num<=0)
{
printf("the number of students:the scores:average=0.00");
return 0;
}
for(i=0;i<num;i++){
scanf("%f",&a[i]);
}
for(i=0;i<num;i++){
sum=sum+a[i];
}
average=sum/num;
printf("the number of students:the scores:average=%.2f",average);
return 0;
}
求水仙花数
/*
求出所有的水仙花数。
*/
#include<stdio.h>
int main(){
int i;
scanf("%d",&i);
for(i=100;i<1000;i++){
int a=i/100;
int b=i/10%10;
int c=i%10;
if(i==a*a*a+b*b*b+c*c*c){
printf("%d ",i);
}
}
return 0;
}
寻找完数
/*
一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出1000之内的所有完数。
*/
#include<stdio.h>
int main(){
int a;
scanf("%d",&a);
int i,b,sum;
for(i=2;i<=a;i++){
sum=0;
for(b=1;b<i;b++){
if(i%b==0){
sum+=b;
}
}
if(i==sum){
printf("%d\n",i);
}
}
return 0;
}
编写程序计算
/*
编写程序计算 1 - 1/2 + 1/3 - 1/4 + ..... +1/99 - 1/100 的值,并显示出来(保留结果为小数点后三位)。
*/
#include<stdio.h>
int main(){
int n=100,i;
double sign=1.0;
double sum=0.0;
for(i=1;i<=n;i++){
sum += sign/i;
sign*=-1;
}
printf("%.3f",sum);
return 0;
}
求sn和
/*
键盘输入正整数a和n,编程 s=a+aa+aaa+aaaa+aa...a(n个a)的值。
*/
#include<stdio.h>
int main(){
int a,n;
int s=0;
int i;
int sum=0;
scanf("%d %d",&a,&n);
for(i=1;i<=n;i++){
int b=a;
a*=10;
s+=b;
printf("%d \n",s);
sum+=s;
}
printf("%d",sum);
return 0;
}
求n以内被5整除
/*
求解出n以内(包含n)所有能被5整除的正整数数的乘积s。
*/
#include<stdio.h>
int main(){
int n,i;
int s=1;
scanf("%d",&n);
if(n>=0&&n<=100){
for(i=1;i<=n;i++){
if(i%5==0){
s=s*i;
}
}
}
printf("%d",s);
return 0;
}
求立方和
/*
求一个四位数的各位数字的立方和。
*/
#include<stdio.h>
#include<math.h>
int fun(int n)
{
int sum=0,a,b,c,d;
a=n%10;
b=n%100/10;
c=n%1000/100;
d=n/1000;
sum=a*a*a+b*b*b+c*c*c+d*d*d;
return sum;
}
int main()
{
int n,k;
scanf("%4d",&n);
k=fun(n);
printf("k=%d\n",k);
return 0;
}
求素数和
/*
求给定正整数m以内的素数之和。
*/
#include<stdio.h>
int fun(int m)
{
int x,sum=0;
for(x=2;x<m;x++){
int i;
int isPrime = 1;
for(i=2;i<x;i++){
if(x%i==0){
isPrime = 0;
break;
}
}
if(isPrime == 1){
sum = sum+x;
}
}
return sum;
}
统计中英文字母
/*
输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
*/
#include<stdio.h>
int main(void){
int a=0,b=0,c=0,d=0;
char x;
scanf("%d",&x);
while((x=getchar())!='\n'){
if((x>='a'&&x<='z')||(x>='A'&&x<='Z'))
a++;
else if(x>='0'&&x<='9')
b++;
else if(x==' ')
c++;
else
d++;
}
printf("%d %d %d %d",a,b,c,d);
return 0;
}
小球自由落体
/*
一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 结果保留两位小数。
*/
#include<stdio.h>
int main(){
int M,N;
int i;
float x,height;
scanf("%d %d",&M,&N);
height=M/2;
x=M;
for(i=2;i<=N;i++){
x+=height*2;
height/=2;
}
printf("%.2f %.2f",height,x);
return 0;
}
组合排列
/*
学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元。现输入学生总人数30,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)?
*/
#include<stdio.h>
int main(){
int x,y,z,sum;
sum=0;
for(x=1;x<30;x++)
{
for(y=1;y<30;y++)
{
z=30-x-y;
if(z!=0&&3*x+2*y+z==50)
{
printf("大学生%d,中学生%d,小学生%d\n",x,y,z);
sum=sum+1;
}
else
continue;
}
}
printf("sum=%d\n",sum);
return 0;
}
最大公约数和最小公倍数
/*
输入两个正整数m和n,求其最大公约数和最小公倍数
*/
#include<stdio.h>
int main(){
int m,n;
scanf("%d %d",&m,&n);
int x=m,y=n;
while(m!=n){
if(m>n){
m-=n;
}
if(m<n){
n-=m;
}
}
printf("最大公约数:%d\n",n);
printf("最小公倍数:%d",x*y/n);
return 0;
}