目录
实验4-1-5 统计素数并求和
//实现一个函数,int su(int n);如果n是素数,则返回这个素数;如果不是则返回0;
//注意:素数的定义:大于1的自然数,只有1和本身是因数(两个因数)的数才是素数。
//1不是素数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int su(int n){
if(n==1){
return 0;
}
for(int i=2;i<n;i++){
if(n%i==0){//2~n-1之间有其他因数
return 0;
}
}
return n;
}
int main(){
int M,N;
int sum=0,num=0;
scanf("%d %d",&M,&N);
for(int i=M;i<=N;i++){
if(su(i)){//i是素数
num++;
sum=sum+i;
}
}
printf("%d %d",num,sum);
return 0;
}
实验4-1-8 求给定精度的简单交错序列部分和
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
//每一位=1/(3*n-2)*pow(-1,n-1);1/(3*n-2)*pow(-1,n-1)
int main(){
double eps;
scanf("%lf",&eps);
double num,sum=0.0;
int n=1;
num=1.0;
if(eps>1){
sum=1.0;
printf("sum = %.6lf",sum);
}else{
while(fabs(num)>=eps){//浮点数的绝对值fabs
sum=sum+num;
n++;
num=1.0/(3*n-2)*pow(-1,n-1);
}
printf("sum = %.6lf",sum);
}
return 0;
}
实验4-1-9 猜数字游戏
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
//第一眼,卧槽好复杂a
//第二眼,分好类
int main(){
int x,N;
scanf("%d %d",&x,&N);
int num,sum=0;
int i;
for(i=1;i<=N+1;i++){
scanf("%d",&num);
if(num<0||i==1+N){
i=-1;
printf("Game Over\n");
break;
}else{
if(num>x){
printf("Too big\n");
}else if(num<x){
printf("Too small\n");
}else{
break;
}
}
}
if(i==1){
printf("Bingo!\n");
}else if(i>1&&i<=3){
printf("Lucky You!\n");
}else if(i>3&&i<=N){
printf("Good Guess!\n");
}
return 0;
}
实验4-1-10 兔子繁衍问题
//1.先长两个月,然后每月生一对兔子。
//2.然后计算后面每个月可以生几对兔子
//第1,2个月还在长大总数:1
//第3个月:1+1//出生1,总个数:2
//第4个月:1+1+1//出生1 总个数:3
//第5个月:1+1+1+2//出生2 总个数:5
//第6个月:1+1+1+2+3//出生3 总个数:8
//第7个月:1+1+1+2+3+5//出生5 总个数:13
//第8个月:1+1+1+2+3+5+8//出生8 总个数:21
//规律就是:啥
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
//实现一个函数,返回对应月数的兔子总数
int sum(int n){
if(n==1||n==2){
return 1;
}
return sum(n-1)+sum(n-2);
}
int main(){
int N;
scanf("%d",&N);
int month=1;
while(sum(month)<N){
month++;
}
printf("%d",month);
return 0;
}
实验4-1-11 高空坠球
//第一次落地:33
//第二次落地:16.5+16.5=33
//第三次落地:16.5
//第四次:8.25
//第五次:4.125,谈起高度:2.06
//第n次谈起高度:h/pow(2,n+1)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){
double h,n;
scanf("%lf %lf",&h,&n);
double hn=h/pow(2,n);
double s=0.0;
if(n==0){
s=0;
h=0;
printf("%.1lf %.1lf",s,h);
}else{
for(int i=1;i<=n;i++){
if(i==1){
s=h*1.0;
}else{
s=h+s;
h=h/2;
}
}
printf("%.1lf %.1lf",s,hn);
}//of if-else
return 0;
}
实验4-1-12 黑洞数
//实现一个函数:输入三位数,返回重排差
int cha(int n){
int a=n/100;
int b=n%100/10;
int c=n%10;
int max,min,mid;
if(a>b&&a>c){
max=a;
if(b>c){
mid=b;
min=c;
}else{
min=b;
mid=c;
}
}
if(b>a&&b>c){
max=b;
if(a>c){
mid=a;
min=c;
}else{
min=a;
mid=c;
}
}
if(c>b&&a<c){
max=c;
if(b>a){
mid=b;
min=a;
}else{
min=b;
mid=a;
}
}
int zhi=100*max+10*mid+min-(100*min+10*mid+max);
printf("%d - %d = %d\n",100*max+10*mid+min,100*min+10*mid+max,zhi);
return zhi;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){
int N;
scanf("%d",&N);
int i=1;
if(N==495){
printf("1: 954 - 459 = 495");
}
while(N!=495){
printf("%d: ",i);
N=cha(N);
i++;
}
return 0;
}
#include<stdio.h>
void sort(int *a,int *b,int *c){
if(*a>*b){
int t=*a;
*a=*b;
*b=t;
}
if(*b>*c){
int t=*b;
*b=*c;
*c=t;
}
if(*a>*b){
int t=*a;
*a=*b;
*b=t;
}
}//冒泡排序
int main()
{
int num,cnt=0;
scanf("%d",&num);
do{
int a=num/100;
int b=num%100/10;
int c=num%10;
sort(&a,&b,&c);
int min=a*100+b*10+c;
int max=c*100+b*10+a;
num=max-min;
cnt++;
printf("%d: %d - %d = %d\n",cnt,max,min,num);
}while(num!=495&&num!=0);
return 0;
}