《实验与习题指导》编程题|051-060

实验4-1-2 求奇数和 – 浙大版《C语言程序设计实验与习题指导(第4版)》题目集

#include <stdio.h>

int main(){
    // 输入
    int num;
    scanf("%d",&num);
    // 处理:求奇数和
    int sum=0;
    while(num>0){
        if(num%2==1){
            sum+=num;
        }
        scanf("%d",&num);
    }
    // 输出
    printf("%d\n",sum);
    
    return 0;
}

实验4-1-3 求整数的位数及各位数字之和 – 浙大版《C语言程序设计实验与习题指导(第4版)》题目集

#include <stdio.h>

int main(){
    // 输入
    int num;
    scanf("%d",&num);
    // 处理:
    int cnt=0;
    int sum=0;
    while(num>0){
        ++cnt;
        sum+=num%10;
        num/=10;
    }
    // 输出
    printf("%d %d\n",cnt,sum);
    
    return 0;
}

实验4-1-4 找出最小值 – 浙大版《C语言程序设计实验与习题指导(第4版)》题目集

#include <stdio.h>
#include <limits.h>

int main(){
    // 输入
    int size;
    scanf("%d",&size);
    // 处理:求最小值
    int min=INT_MAX;
    for(int i=1;i<=size;++i){
        int cur;
        scanf("%d",&cur);
        min=fmin(min,cur);
    }
    // 输出
    printf("min = %d\n",min);
    
    return 0;
}

实验4-1-5 统计素数并求和 – 浙大版《C语言程序设计实验与习题指导(第4版)》题目集

#include <stdio.h>
#include <math.h>
#include <stdbool.h>

// 返回:素数->true 否则->false
bool isPrime(int num){
    if(num<=1) return false;
    if(num==2) return true;
    // 检查是否有除了1和自己以外的其他因数
    int upper=sqrt(num)+1;
    for(int i=2;i<=upper;++i){
        if(num%i==0) return false;
    }
    return true;
}

int main(){
    // 输入
    int lower,upper;
    scanf("%d %d",&lower,&upper);
    // 处理:统计素数个数并求和
    int cnt=0;
    int sum=0;
    for(int i=lower;i<=upper;++i){
        if(isPrime(i)){
            ++cnt;
            sum+=i;
        }
    }
    // 输出
    printf("%d %d\n",cnt,sum);
    
    return 0;
}

实验4-1-6 求分数序列前N项和 – 浙大版《C语言程序设计实验与习题指导(第4版)》题目集

#include <stdio.h>

int main(){
    // 输入
    int n;
    scanf("%d",&n);
    // 处理
    double frac[2]={2,1};
    double sum=0;
    for(int i=1;i<=n;++i){
        sum+=frac[0]/frac[1];
        double temp=frac[0];
        frac[0]+=frac[1];
        frac[1]=temp;
    }
    // 输出
    printf("%.2f\n",sum);
    
    return 0;
}

实验4-1-7 特殊a串数列求和 – 浙大版《C语言程序设计实验与习题指导(第4版)》题目集

#include <stdio.h>

// 返回:n个a组成的数字
int fan(int a,int n){
    int result=0;
    for(int i=1;i<=n;++i){
        result=result*10+a;
    }
    return result;
}

int main(){
    // 输入
    int a,n;
    scanf("%d %d",&a,&n);
    // 处理:特殊a串前n项和
    int sum=0;
    for(int i=1;i<=n;++i){
        sum+=fan(a,i);
    }
    // 输出
    printf("s = %d\n",sum);
    
    return 0;
}

实验4-1-8 求给定精度的简单交错序列部分和 – 浙大版《C语言程序设计实验与习题指导(第4版)》题目集

#include <stdio.h>

int main(){
    // 输入
    double eps;
    scanf("%lf",&eps);
    // 处理:计算部分和
    double sum=1.0;
    double cur=1.0;
    int flag=1;
    for(int i=1;cur>eps;++i){
        flag*=-1;
        cur=1.0/(1+3*i);
        sum+=flag*cur;
    }
    // 输出
    printf("sum = %f\n",sum);
    
    return 0;
}

实验4-1-9 猜数字游戏 – 浙大版《C语言程序设计实验与习题指导(第4版)》题目集

#include <stdio.h>

int main(){
    // 输入
    int target,maxTimes;
    scanf("%d %d",&target,&maxTimes);
    // 处理:猜数字游戏
    int cnt=1;
    while(cnt<=maxTimes){
        int cur;
        scanf("%d",&cur);
        if(cur<0){
            printf("Game Over");
            return 0;
        } 
        if(cur<target) printf("Too small\n");
        else if(cur>target) printf("Too big\n");
        else break;
        ++cnt;
    }
    // 输出
    if(cnt>maxTimes){
        printf("Game Over\n");
    }else{
        if(cnt==1) printf("Bingo!\n");
        else if(cnt<=3) printf("Lucky You!\n");
        else printf("Good Guess!\n");
    }
    
    return 0;
}

实验4-1-10 兔子繁衍问题 – 浙大版《C语言程序设计实验与习题指导(第4版)》题目集

#include <stdio.h>

int main(){
    // 输入
    int n;
    scanf("%d",&n);
    // 边界处理
    if(n==1){
        printf("1\n");
        return 0;
    }
    // 处理:求最少需要的月数
    int month=2;
    int nums[3]={0,1,1};
    // 滚动更新
    while(nums[2]<n){
        ++month;
        nums[0]=nums[1];
        nums[1]=nums[2];
        nums[2]=nums[0]+nums[1];
    }
    // 输出
    printf("%d",month);
    
    return 0;
}

实验4-1-11 高空坠球 – 浙大版《C语言程序设计实验与习题指导(第4版)》题目集

#include <stdio.h>
#include <math.h>

int main(){
    // 输入
    double height,n;
    scanf("%lf %lf",&height,&n);
    // 处理:
    // 计算第n次落地总距离
    double sum=0;
    if(n==1){
        sum=height;
    }else if(n>=2){
        sum=height*(3.0-1.0/pow(2,n-2));
    }
    // 计算第n次反弹的高度
    double heightN=0;
    if(n!=0){
        heightN=height/pow(2,n);
    }
    // 输出
    printf("%.1f %.1f\n",sum,heightN);
    
    return 0;
}

发表评论