整数算法及其位运算训练

1.如何判断闰年?(①能被4整除但不能被100整除的年份②能被400整除的年份)

#include <stdio.h>

int main()
{
    int year;

    printf("please input year:\n");
    scanf("%d",&year);

    if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
    printf("%d is runnian\n",year);
    else
    printf("%d is not runnian\n",year);

    return 0;
}
2.如何判断一个素数?如何判断100~200之间的素数?(除了1和它本身以外,不能被其他正整数整除)

#include <stdio.h>

int main()
{
    int i,j = 2;

    for(i = 100; i <= 200; i++)
    {
        for(j = 2; j < i; j++)
        {
            if(i % j == 0)
            break;
            else if(j == i -1)
            printf("%d\n",i);
        
    }    

    return 0;
}
3.求两个数的最大公约数,最小公倍数

#include <stdio.h>

int main()
{
    int i, num1, num2, min, max;

    printf("please int two integers:\n");
    scanf("%d%d",&num1, &num2);

    min = (num1 > num2) ? num2 : num1;
    for(i = 1; i <= min; i++) 
    {
        if((num1 % i == 0) && (num2 % i == 0))
        max = i;
    }

    printf("big gongyueshu is %d\n",max);
    printf("small gongbeishu is %d\n",(num1 * num2 / max));

    return 0;
}
 

4.设计一个计算器程序

#include <stdio.h>

int main()
{
    int num1,num2;
    char ch;

    printf("begin calculate:\n");
    scanf("%d%c%d",&num1,&ch,&num2);

    switch(ch)
    {
        case '+':
        printf("%d\n",num1 + num2);
        break;
        case '-':
        printf("%d\n",num1 - num2);
        break;
        case '*':
        printf("%d\n",num1 * num2);
        break;
        case '/':
        printf("%d\n",num1 / num2);
        break;
        default:
        printf("input error!\n");
    }

    return 0;
}
5.设计一个日历程序,输入年月日,输出第多少天

#include <stdio.h>

int main()
{
    int year,month,day;
    int sum= 0;
    int i;
    int a[12] = {31,28,31,30,31,30,31,31,30,31,30,31};

    printf("please input date:\n");
    scanf("%d%d%d",&year,&month,&day);

    for(i = 1; i < month; i++)
    {
        sum = sum + a[i - 1];
    }
    sum = sum + day;
    
    if(month <= 2)
    printf("第%d天\n",sum);
    else
    {
        if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0 )
        printf("第%d天\n",sum = sum + 1);
        else
        printf("第%d天\n",sum);
    }

    return 0;
}
6.把一个三位数整数逆序输出

#include <stdio.h>

int main()
{
    int a,i;

    printf("please input 3位整数:\n");
    scanf("%d",&a);

    for(i = 0; i < 3; i++)
    {
        printf("%d",a%10);
        a = a/10;
    }
    printf("\n");

    return 0;
}
7.求1~100的和

#include <stdio.h>

int main()
{
    int i,sum = 0;
    for(i = 1; i <= 100; i++)
    {
        sum += i;
    }
    printf("%d\n",sum);

    return 0;
}
8.200~300之间不能被3整除的数,五个一行输出

#include <stdio.h>

int main()
{
    int i,j = 0;

    for(i = 200; i <= 300; i++)
    {
        if(i % 3 == 0)
        {    
            printf("%4d",i);
            j++;
        }
        if(j == 5)
        {
            printf("\n");
            j = 0;
        }    
        
    }
    printf("\n");
    return 0;
}

9.统计1~n有多少个9

#include <stdio.h>

 

int main()

{

    int i = 0;

    int count = 0;

    int n = 0;

    int temp = 0;

 

    printf("please input an integer num:\n");

    scanf("%d",&n);

 

    for(i = 1; i <= n; i++)

    {

    temp = i;

 

    while( temp != 0)

    {

        if(temp % 10 == 9)

        {

            count++;

        }

        temp = temp / 10;

       }

    }

 

    printf("count=%d\n",count);

 

    return 0;

}

10.输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位.

#include <stdio.h>

#include <stdlib.h>

int main()
{
    int a,pl1,pl2,i,b;

    printf("please input a,pl1,pl2:\n");
    scanf("%d%d%d",&a,&pl1,&pl2);

    if(pl1 > 32 || pl2 > 32 || pl1 > pl2)
    {
        printf("ERROR\n");
        exit(1);
    }

    for(i = pl1; i <= pl2; i++)
    {
        b = a >> (i - 1);
        printf("%d",b & 1);
    }
    printf("\n");

    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值