C语言海量题型题库(中篇)


1.计算1到10000以内个位数为7,且能被3整除的整数之和
#include <stdio.h>

int main()
{ 
    int i=1,sum=0;
    for(i=1;i<10000;i++)
    {
        if(i%10==7&&i%3==0)//(i%10==7可以检测个位数余7
        {
            sum+=i;
        }
    }
	printf("sum=%d\n",sum);
	return 0;
}
2.编写程序求出所有的水仙花数

水仙花数(3位数,各位数立方之和等于本身)

#include <stdio.h>

int main()
{ 
    int i;
    int a,b,c;
    for(i=100;i<1000;i++)
    {
        a=i%10; 
        b=i/10%10;// %取小数点后面数字
        c=i/100;//  /取小数点前面数字
        if(a*a*a+b*b*b+c*c*c==i)//立方之和等于本身
           printf("水仙花数=%d\n",i);
    }
	return 0;
}
3.编写程序求一个整数各个位数之和
#include <stdio.h>

int main()
{ 
    int n,sum=0;
    scanf("%d",&n);
    while(n!=0)//不知道数的大小,选用while,用最终条件
    {
        sum+=n%10;//取余
        n=n/10;//除10前进
    }
      printf("各位数之和=%d\n",sum);
	return 0;
}
4.编写程序将一个整数倒序输出
//简单写法,倒叙输出每一位
#include <stdio.h>

int main(void)
{ 
    int n,sum=0;
    scanf("%d",&n);
    while(n!=0)
    {
        printf("%d\n",n%10); //取余
        n=n/10;//除10前进
    }
    
	return 0;
}
//倒叙更改数字
#include <stdio.h>

int main(void)
{ 
    int n,sum=0;
    scanf("%d",&n);
    while(n!=0)
    {
        sum=sum*10+n%10;//sum变化由个位数*10变化为十位数,然后再*10变为百位数等等
        n=n/10;//除10前进,方便上行代码%10加数
    }
      printf("倒叙输出=%d\n",sum);
	return 0;
}

5.编写程序,判断一个正整数是否为回文数

回文数(从左向右读和由右向左读数字一样)

#include <stdio.h>

int main(void)
{ 
    int n,sum=0;
    int num;
    scanf("%d",&n);
    num=n;//这行代码作用是为了后期与倒叙后的数进行比较
    while(n!=0)
    {
       sum=sum*10+n%10;
       n=n/10;
    }
    if(num==sum)
        printf("%d\n是回文数",sum);
    else
        printf("不是回文数");
	return 0;
}
6.编写程序判断一个正整数是否为质数

(只能被1和自身所整除的数)与它相反的是合数
(在所有的偶数中,只有2为质数)

#include <stdio.h>

int main(void)
{ 
    int i;
    int n;
    int flag=1;//用来记录质数动态
    scanf("%d",&n);
    for(i=2;i<n;i++)//只有2为偶数中质数所以起始位置为2,i<n可以优化为i<n/2
        if(n%i==0)
        {
            flag=0;//表示不是质数
            printf("%d是合数",n);
            break;
        }
        if(flag==1)
        printf("%d是质数",n);
        return 0;   
}
7.输出1000以内所有的质数
#include <stdio.h>
int main() { 
    int n,i,flag;
    for(n=2;n<1000;n++)
    {
        flag=1;
        //外循环功能就是2~1000循环,每次内循环使flag初始化1,用来内循环记录flag是否为质数,
        //不写则当下方第一个合数出现时,flag将一直为0,将停止输出剩下的质数
        for(i=2;i<n;i++)
            if(n%i==0)
            {
               flag=0;
                break;
            }
          if(flag==1)
            printf("%d\n",n);
    }
	return 0;
}
8.一维数组元素的输入和输出
#include <stdio.h>

int main()
{ 
    int a[10],i;
    for(i=0;i<10;i++)//切记,i从0开始,基本框架
    {
       scanf("%d",&a[i]); //数组元素的键盘输入
    }
    for(i=0;i<10;i++)
    {
        printf("%d\n",&a[i]);//数组元素的输出
    }
}
9.数组元素的逆置
#include <stdio.h>

int main()
{ 
    int a[7]={1,2,3,4,5,6,7},i,j,tmp;
    for(i=0,j=6;i<j;i++,j--)//核心代码,下标为i的向后移动,下标为j的向前移动
    {
        tmp=a[i];//交换
        a[i]=a[j];
        a[j]=tmp;
    }
    for(i=0;i<7;i++)//这是数组输出模块,重新说明下标
    printf("%d\t",a[i]);
}
10.数组的循环左移

(例如:1,2,3,4,5变为2,3,4,5,1)

#include <stdio.h>

int main()
{ 
    int a[5]={1,2,3,4,5},i,top;
    top=a[0];//top功能存放首元素
    for(i=0;i<5;i++)//下标为0的向后移动,下标为j的向前移动
    {
        a[i]=a[i+1];
        a[5]=top;//为什么是a[5],因为2-1,3-2,4-3,5-4,1-5在第五次进行赋值
    }
    for(i=0;i<5;i++)//这是数组输出模块
    printf("%d\t",a[i]);
}

花神博客生涯之C语言( 题库中篇 )结束了哦~
接下来会持续更新(⊙o⊙)!在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值