判断给定的三位数是否 水仙花 数。所谓 水仙花 数是指其值等于它本身 每位数字立方和的数。例 153 就是一个 水仙花 数。 153=1+125+27
输入
一个整数。
数据规模和约定
一个三位的整数,是水仙花数输出"YES",否则输出" N·O"
#include<stdio.h>
#include<math.h>
int main(){
int n,i,j,sum=0;
scanf("%d",&n);
i=n;
while(i>0){
j=i%10;
i=i/10;
sum+=pow(j,3);
}
if(sum==n){
printf("YES\n");
}
else{
printf("NO\n");
}
return 0;
}
输入10个整数,求它们的平均值,并输出大于平均值的数据的个数。
#include<stdio.h>
int main()
{
double a[10];
double p,sum=0;
int i,j=0;
for(i=0;i<10;i++)
{
scanf("%lf",&a[i]);
}
for(i=0;i<10;i++)
{
sum+=a[i];
}
p=sum/10;
for(i=0;i<10;i++)
{
if(a[i]>p)
{
j++;
}
}
printf("%d\n",j);
return 0;
}
编制程序,输入n个整数(n从键盘输入,n>0),输出它们的偶数和。
#include<stdio.h>
int main()
{
int i,n,a[100],sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
if(a[i]%2==0) sum=sum+a[i];
}
printf("%d\n",sum);
return 0;
}
#include<stdio.h>
int main()
{
int a[20],j=0; //a[20]:存储数据 j:负数个数统计
double sum=0; //所有正数的和
for(int i=0;i<20;i++)
{
scanf("%d",&a[i]);
if(a[i]>=0)
{
sum=sum+(double)a[i];
}
else
{
j++;
}
}
printf("%d\n%.2lf\n",j,sum/(20-j));
return 0;
}
用简单素数筛选法求N以内的素数。
解题思路:
1.素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
(也就是只有 1 和它本身能整除)
2.利用两个for循环来判断素数。
注意事项:
1.注意for添加花括号。
2.注意输出问题。
#include<stdio.h>
int main()
{
int i,j;
int N,a;
scanf("%d",&N);
for(i=2;i<=N;i++) //因为 1 不是素数,所以 i 要从 2 开始
{
a=0; // a 要赋值 0 否则会出错
for(j=2;j<i;j++) //第二个循环判断 i 能否能被其它数整除
{
if(i%j==0) //如果 i 能被其它数整除,a 就自增
a++;
}
if(a==0) //判断 a=0 如果这个数除了本身和 1 没有数能整除它就输出
printf("%d\n",i);//输出这边注意要换行
}
return 0;
}
[========]
还有其他写法
#include<stdio.h>
#include<math.h>
int prime(int p)
{
int i,n;
n=sqrt(p);//这句能使素数判断得更快,因为只求到了 n 的平方根
if(p==0 || p==1) return 0;//这句跟下面那句加不加都对
if(p==2) return 1;//但在题目没有从 2 开始是就需要加这两句
for(i=2;i<=n;i++)
if(p%i==0) return 0;
return 1;
}
int main()
{
int i,n;
scanf("%d",&n);
for(i=2;i<=n;i++)
if(prime(i))
printf("%d\n",i);
return 0;
}
//小白方法
int N;
scanf("%d",&N);
for(i=2;i<=N;i++)
{
for(j=2;j<=i;j++)
{
if(i%j==0)
{
break;
}
}
if(i==j)
{
printf("%d\n",i);
}
}