C语言_练习(四)
31、质数判断
读入一个数N,判断这个数是不是质数(prime number)。
质数:一个数 N 除了1和它本身不存在其他约数,这样的数叫做质数。
约数:整数a除以整数b(b≠0) 除得的商正好是整数而没有余数。则a称为b的倍数,b称为a的约数。
#include <stdio.h>
int main() {
int n,i;
scanf("%d",&n);
for(i=2;i<n;i++){
if(n%i==0)
break;
}
if(i<n)
printf("no\n");
else
printf("yes\n");
return 0;
}
32、倍数个数
读入N,求出1…N的范围内所有2或3或5的倍数一共有多少个?
#include <stdio.h>
int main() {
int n,i,m=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
if(i%2==0||i%3==0||i%5==0)
++m;
}
printf("%d\n",m);
return 0;
}
33、数字反写
读入一个四位数abcd,请你输出他的“反写”的值。
比如读入1015,输出5101;
读入4310,输出134(不能有前导零)
不合法的四位数,如234, 0123, 12412不会作为读入数据。
#include <stdio.h>
int main() {
int n,m;
int i=0;
int sum=0;
scanf("%d",&m);
n=m;
while(m!=0){
i=m%10;
m=m/10;
sum = sum*10+i;
}
printf("%d\n",sum);
return 0;
}
34、分数求和2
1, - 1/2 , 1/3, - 1/4 , 1/5 ,- 1/6 , …
求这个数列前n个数的和
#include<stdio.h>
int main()
{
int i,n;
float sum=0,x,y=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
if(i%2!=0){
x=1;
y+=1;
sum+=x/y;
}else{
x=-1;
y+=1;
sum+=x/y;
}
}
printf("%f\n",sum);
}
35、分数求和3 (注意精确到小数点后10位)
n!=1 * 2 * 3 * … * n
现在请你求1/1!+1/2!+…+1/n! 的值
#include<stdio.h>
int main()
{
int n,i;
float sum=0,m=1;
scanf("%d",&n);
for(i=1;i<=n;i++){
m=m*i;
sum+=1/m;
}
printf("%.10f\n",sum);
return 0;
}
36、9的个数
给个一个正整数n,请你求出1到n之间所有整数中出现了多少个9
#include<stdio.h>
int main()
{
int n,m=0,i;
scanf("%d",&n);
for(i=1;i<=n;i++){
if(i%10==9)
++m;
if(i/10==9)
++m;
}
printf("%d\n",m);
return 0;
}
37、 最大的质数
读入一个数n,求比n小的最大的质数是谁。
一个数是质数,当且仅当除了1和它本身以外,没有其他的数能整除它。
#include <stdio.h>
int main() {
int n,i,j,max=0;
scanf("%d",&n);
for(j=2;j<n;j++){
for(i=2;i<j;i++){
if(j%i==0)
break;
}
if(i<j)
//printf("no\n");
continue;
else
//printf("yes\n");
if(j>max)
max=j;
}
printf("%d\n",max);
return 0;
}
38、回文数
数字回文的判定,如果一个数字从左往右看和从右往左看是一样的,那么我们称
这个数字是回文数字,例如121,454454, 67876,5,22都是回文数字,而223,
56,10就不是回文数字。现在读入一个数字X,请你写程序判断一下它是不是回文数
字。
#include<stdio.h>
int main()
{
int x,sum=0,n,i=0;
scanf("%d",&x);
n=x;
while(n!=0){
// a = a*10 + m%10;
i=n%10;
n=n/10;
sum = sum*10+i;
}
if(x==sum)
printf("yes\n");
else
printf("no\n");
return 0;
}
39、正数的和
先给定n,再给定n个整数,请计算出里面所有正数的和。
#include<stdio.h>
int main()
{
int n,i,m,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&m);
if(m>0)
sum+=m;
}
printf("%d\n",sum);
return 0;
}
未完待续