C程序设计题选题解1

1 A 阵列

在这里插入图片描述

#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<=3;i++)
{
    //如果是第二行,打印A_
    if(i%2==0)printf("A ");
     //打印空格
    for(j=0;j<2;j++)
    {
        printf(" ");
    }
    //打印A
    printf("A");
    printf("\n");
    }
}

2 倒三角

在这里插入图片描述

#include <stdio.h>
int main()
{
    int i,j;
    for(i=0;i<4;i++)
    {
        for(j=0;j<i-1;j++)
        {
            printf(" ");
        }
        for(j=4-i;j>0;j--){
            if(i ==0&&j==4)
            printf("*");
            else printf(" *");
        }
        printf("\n");
    }
return 0;
}

3 星期几

在这里插入图片描述

#include <stdio.h>
int main()
{
    //“后天”是星期几。 6
    int today;
    scanf("%d",&today);

    
    if(today >= 6) printf("%d",(today+2)%7);
    else printf("%d",today+2);
    
    //if(today >= 6) printf("%d",7-today +2);
    //else printf("%d",today+2);
    
  return 0;  
}

4 时间差

在这里插入图片描述

#include <stdio.h>
int main()
{
    
    /*题目保证起始时间和终止时间在同一天内。
    第一个数字以这样的四位数字表示当前时间
    第二个数字表示分钟数 第二个数字表示的分钟数可能超过 60,也可能是负数
    
    计算当前时间经过那么多分钟后是几点表示为四位数字
     5 点 30 分表示为 530;0 点 30 分表示为 030
    */
    int cur, amin,cn;
    scanf("%d%d",&cur,&amin);
    
    // 输入032 = 32
    cur = cur/100*60 + cur%100; //转化为分钟 032也可以直接转换
    
    cn = cur + amin;
    cn = cn/60*100 + cn%60;    //分钟转化为十进制表示时间
        
        if(cn<10)printf("00%d",cn);//如果只有 //(0,10)
        else if(cn<60) printf("0%d",cn);//     //【10,60)
        else printf("%d",cn);                   //(60,++)
    
  return 0;  
}

5 BCD

在这里插入图片描述

#include <stdio.h>
int main()
{
    /*
    BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。
    所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。
    2^4 = 16; 
    BCD当作二进制数转换成十进制输出. 0x12 输出成了十进制的18
    1 2 4 8 16                          1*16 + 2
    */
    int d,h;
    scanf("%d",&d);
    printf("%d", d/16*10 + d%16);
  return 0;  
}

6 出租车cost

在这里插入图片描述

#include <stdio.h>
int main()
{
    float km;
    float cost;
    int min;
    
    
    scanf("%f%d",&km,&min);
    
    if(km <= 3) cost = 10;
    else if(km <= 10) cost =10+ (km-3)*2;//10公里内!
    else cost = 10 + 14 + (km-10)*3;
    
    cost = cost + min/5*2;
    
    //四舍五入算法
    //强制类型转换
    if(cost*10 >= (int)cost*10 +5) cost = (int)cost + 1;
    
    printf("%d",(int)cost);
    
  return 0;  
}

7 计算天数

在这里插入图片描述

#include <stdio.h>
int main()
{
    /*计算某年某月某日是该年中的第几天
    注意:闰年的判别条件是
    该年年份能被4整除但不能被100整除、
    或者能被400整除。
    闰年的2月有29天。
输入样例1:
2009/03/02
输出样例1:
61
    */
    int day,moth,year,febur;
    scanf("%d/%d/%d",&year,&moth,&day);
    if(year%400 ==0||(year%4 == 0&& year%100 != 0))   //用==
    {
        febur = 29;  //闰年29天
    }
    else febur = 28;//平年 28天
    // 1  2     3  4  5  6   7 8   9  10 11 12
    // 31 febur 31 30 31 30 31 31 30 31 30  31
    
        if(moth>1)                              //1月1日是第一天,不是从零开始,不能用>=
            day+= 31;
            
       if(moth>2)
            day += febur;
            
    if(moth>3)
            day += 31;
      if(moth>4)
            day +=30;
      if(moth>5)
            day += 31;
        if(moth>6)day+= 30;
        if(moth>7)day+= 31;
        
        if(moth>8)day+= 31;
        if(moth>9)day+= 30;
       if(moth>10)day+= 31;
       if(moth>11)day+= 30;
        if(moth>12)day+= 31;
    
    
    printf("%d",day);    
    
  return 0;  
}

8 无优先级 计算器

在这里插入图片描述

#include <stdio.h>
int main()
{
    
    int number;
    int sum = 0;

    char operator;
    scanf("%d",&sum);
    while(1)
    {
        
        scanf("%c%d",&operator,&number);
        

        if(operator == '+'){
            sum += number;
        }
        else if(operator == '-'){
            sum -=number;
        }
        else if(operator == '*'){
            sum *= number;
        }
        else if(operator == '/')
        {
            if(number == 0) 
            {
                printf("ERROR\n");
                break;
            }
            sum /=number;
        }
        else if(operator == '=')
        {
            printf("%d\n",sum);
            break;
        }
        
        else
        {
            printf("ERROR\n");
            break;
        }
    }
    
}

9 求和

1奇数列

在这里插入图片描述

#include <stdio.h>
int main()
{
    int input;
    int sum = 0;
    while(1)
    {
        scanf("%d",&input);
        if(input <= 0)break;
        if(input%2 != 0)
        {
            sum += input;
        }
    }
    printf("%d",sum);
  return 0;  
}
2 交错列

在这里插入图片描述

#include <stdio.h>
int main()
{
    /*
    本题要求编写程序,
    计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。
    输入在一行中给出一个正整数N。
    在一行中输出部分和的值,结果保留三位小数。
    */
    int mole =1;
    int deno =1;
    double sum = 0;
    int sign =1;
    int N;
    scanf("%d",&N);
    for(int i = 0;i<N;i++)
    {
        sum += 1.0*mole/deno*sign;
        sign*=-1;
        mole +=1;
        deno +=2;  
    }
    printf("%.3f\n",sum);
    
    
    
    
    return 0;  
}
3 统计素数并求和
#include<stdio.h>
int main(){
    int N,M;
    scanf("%d%d",&N,&M);
    int cnn=0;
    int sum = 0;
    for(;N<=M;N++)
    {
       int i;
        for(i=2;i<N;i++)
        {
            if(N%i==0)break;
        }
        if(i == N)
        {
            cnn++;
            sum+=N;
        }
    }
    printf("%d %d",cnn,sum);
}

10 斐波那契 兔子

在这里插入图片描述

#include <stdio.h>
int main()
{
    /*
    一对兔子,
    从出生后第3个月起每个月都生一对兔子。
    小兔子长到第3个月后每个月又生一对兔子。
    */
    
    int N;
    int cn = 2;
    scanf("%d",&N);
    if(N==1)
        printf("1");
    else if(N==2)
        printf("3");
    else
    {
        int fn_1=1,fn_2=1,fn;
        
        while(fn<N)
        {
            fn = fn_1+fn_2;
            //往前移
            fn_2 = fn_1;
            fn_1 = fn;
            cn++;
        }
        printf("%d",cn);
    }
    
    
    return 0;  
}

11 二分法 求根

在这里插入图片描述

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

double c,d,e,f;

double fomula(double x)
{
    return(c*pow(x,3)+d*pow(x,2)+e*x+f);
}
int main()
{
    /*
    
    */
    
    double a,b;
    scanf("%lf%lf%lf%lf",&c,&d,&e,&f);
-    scanf("%lf%lf",&a,&b);
    double middle = (a+b)/2;
    
    while(1)
    {
        

  
            
        if(fabs(fomula(middle)) < 1e-7)  // 相当于==0
        {
            printf("%.2f",middle);
            break;
        }
        else if(fomula(middle)*fomula(a) >0)
        {
            a= middle;
            middle = (a+b)/2;  //记得更新数据
        }
        else{
            b= middle; 
            middle = (a+b)/2;
        }
            
  
 }

    
    
    
    return 0;  
}

13 数字陷阱

在这里插入图片描述

#include <stdio.h>
int main()
{
    int n,n0;
    scanf("%d",&n0);
    int i=0;
    while(1)
    {
        int number = n0;
        
        n = 0;
        
        while(number>0)
        {
            n+=number%10;
            number/=10;
        }
        i++;
        n = n*3+1;
        printf("%d:%d\n",i,n);
        if(n==n0)break;
        n0 = n;
    }
    
}

14 猴子吃桃

在这里插入图片描述

#include <stdio.h>
int main()
{
    /*
    
    */
    int N;
    int peach = 1;
    scanf("%d",&N);
    for(;N>1;N--)    //第二天早上再想吃,还未执行
    {
        peach = 2*(peach + 1);
    }
    printf("%d",peach);
    
    
    
    return 0;  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘亿妃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值