C语言程序设计100例之(4):水仙花数

合集下载

C语言经典算法100例题目

C语言经典算法100例题目

看懂一个程序,分三步:1、流程;2、每个语句的功能;3、试数;小程序:1、尝试编程去解决他;2、看答案;3、修改程序,不同的输出结果;4、照答案去敲;5、调试错误;6、不看答案,自己把答案敲出来;7、实在不会就背会。

周而复始,反复的敲。

【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数都是多少==============================================================【程序2】题目:企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少==============================================================【程序4】题目:输入某年某月某日,判断这一天是这一年的第几天==============================================================【程序5】题目:输入三个整数x,y,z,请把这三个数由小到大输出。

==============================================================【程序6】题目:用*号输出字母C的图案。

C语言程序实例100个

C语言程序实例100个

C语言程序实例100个(一)【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++)/*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k);}}【程序2】题目:企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01; printf("bonus=%d",bonus);}==================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

大学C语言程序设计(编程题)

大学C语言程序设计(编程题)

⼤学C语⾔程序设计(编程题)C语⾔程序设计习题(编程题 C语⾔程序设计习题(编程题习题1(编程题)[知识点:基础知识编制程序,要求输⼊整数a和b,若a2+b2⼤于100,则输出a2+b2百位以上的数字,否则输出两数之和。

习题1-参考答案 main() printf("Input a & b:"); if(a*a+b*b>100) printf("%d\n",(a*a+b*b)/100); elseprintf("%d\n",a+b); } 习题2(编程题)[知识点:基础知识试编程判断输⼊的正整数是否既是5⼜是7的整数倍,若是输出yes,否则输出no。

习题2-参考答案 main() printf("Input a:"); if(a%5==0&&a%7==0) printf("yes\n"); else printf("no\n"); } 习题3(编程题)[知识点:选择结构输⼊⼀个整数,判断它能否被3,5,7整除,并输出以下信息之⼀: (1)能同时被3,5,7整除 (2)能被其中两数整除(要指出哪两个)。

(3)能被其中⼀个数整除(要指出哪⼀个)。

(4)不能被任何⼀个整除。

习题3-参考答案 main()printf("Input a number:"); if(m%3==0&&m%5==0&&m%7==0)printf("能同时被3,5,7整除 elseif((m%3==0&&m%5==0)||(m%3==0&&m%7==0)||(m%5==0&&m%7==0)) {printf("能被其中两数整除 if(m%3==0&&m%5==0) printf("(3,5)"); else if(m%3==0&&m%7==0) printf("(3,7)");else printf("(5,7)"); else if(m%3==0||m%5==0||m%7==0) {printf("能被其中⼀个数整除 C语⾔程序设计习题(编程题if(m%3==0) printf("(3)"); else if(m%5==0) printf("(5)"); else printf("不能被任何⼀个整除"); } 习题4(编程题)[知识点:选择结构将以下程序段改⽤⾮嵌套的if语句实现。

(完整)C语言程序设计100个经典例子

(完整)C语言程序设计100个经典例子

经典C语言程序设计100例1。

数字排列 2.奖金分配问题3.已知条件求解整数4.输入日期判断第几天5。

输入整数进行排序6。

用*号显示字母C的图案7。

显示特殊图案8。

打印九九口诀9。

输出国际象棋棋盘10。

打印楼梯并按条件打印笑脸 11.经典兔子问题12。

判断素数13.水仙花数问题14。

正整数分解质因数15.学习成绩划分16。

正整数求其最大公约数和最小公倍数17.统计英文字母/空格/数字个数18.求s=a+aa+aaa+aa..。

a的值 19.求解”完数”20。

球体自由落下物理问题21.猴子吃桃问题22。

乒乓球比赛抽签问题23.打印菱形图案24。

分数数列求和25。

求1+2!+3!+.。

+20!的和26.利用递归方法求5!27.将输入字符以相反顺序打印28.岁数问题29。

求解正整数位数30.判断回文数31.星期几猜测游戏32.改变文本颜色33.学习gotoxy()与clrscr()函数 34。

练习函数调用35。

设置文本颜色36。

求100之内的素数37.对10个数进行排序38.求3*3矩阵对角线元素之和39。

数字插入数组重新排序40。

将一个数组逆序输出41.static定义静态变量用法42。

使用auto定义变量用法43。

使用static的另一用法44.使用external 的用法45。

使用register定义变量方法46。

宏#define命令练习(1) 47.宏#define命令练习(2)48.宏#define 命令练习(3)49.#if #ifdef和#ifndef的综合应用50.#include 的应用练习51。

学习使用按位与 & 52.学习使用按位或 |53.学习使用按位异或 ^ 54.取一个整数从右端开始的4~7位。

55。

学习使用按位取反~56.用circle画圆形57.学用line画直线58.用rectangle画方形 59。

画图综合例子60.画图综合例子261.打印杨辉三角形62。

学习putpixel画点 63.画椭圆ellipse 64。

经典C语言程序100例(word文档版)

经典C语言程序100例(word文档版)

【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}=========================================================== 【程序2】题目:企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=*0.1;bonus2=bonus1+*0.75;bonus4=bonus2+*0.5;bonus6=bonus4+*0.3;bonus10=bonus6+*0.15;if(i<=)bonus=i*0.1;else if(i<=)bonus=bonus1+(i-)*0.075;else if(i<=)bonus=bonus2+(i-)*0.05;else if(i<=)bonus=bonus4+(i-)*0.03;else if(i<=)bonus=bonus6+(i-)*0.015;elsebonus=bonus10+(i-)*0.01;printf("bonus=%d",bonus);}=========================================================== 【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

经典C语言程序设计100例

经典C语言程序设计100例

经典C语言程序设计100例【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++)/*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}【程序2】题目:企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}-----------------------------------------------------------------------------【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

C语言程序设计经典100例(全)

C语言程序设计经典100例(全)

103f程序1】【题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

C语言程序设计100个简单地经典例子

C语言程序设计100个简单地经典例子

经典C语言程序设计100例1.数字排列2.奖金分配问题3.已知条件求解整数4.输入日期判断第几天5.输入整数进行排序6.用*号显示字母C的图案7.显示特殊图案8.打印九九口诀9.输出国际象棋棋盘10.打印楼梯并按条件打印笑脸11.经典兔子问题12.判断素数13.水仙花数问题14.正整数分解质因数15.学习成绩划分16.正整数求其最大公约数和最小公倍数17.统计英文字母/空格/数字个数18.求s=a+aa+aaa+aa...a的值19.求解"完数"20.球体自由落下物理问题21.猴子吃桃问题22.乒乓球比赛抽签问题23.打印菱形图案24.分数数列求和25.求1+2!+3!+...+20!的和26.利用递归方法求5!27.将输入字符以相反顺序打印28.岁数问题29.求解正整数位数30.判断回文数31.星期几猜测游戏32.改变文本颜色33.学习gotoxy()与clrscr()函数34.练习函数调用35.设置文本颜色36.求100之内的素数37.对10个数进行排序38.求3*3矩阵对角线元素之和39.数字插入数组重新排序40.将一个数组逆序输出41.static定义静态变量用法42.使用auto定义变量用法43.使用static的另一用法44.使用external的用法45.使用register定义变量方法46.宏#define命令练习(1)47.宏#define命令练习(2)48.宏#define命令练习(3)49.#if #ifdef和#ifndef的综合应用50.#include 的应用练习51.学习使用按位与 &52.学习使用按位或 |53.学习使用按位异或 ^54.取一个整数从右端开始的4~7位。

55.学习使用按位取反~56.用circle画圆形57.学用line画直线58.用rectangle画方形59.画图综合例子160.画图综合例子261.打印杨辉三角形62.学习putpixel画点63.画椭圆ellipse64.利用ellipse and rectangle画图65.画个最优美的图案66.输入3个数字按大小顺序输出67.输入数组交换元素重新输出68.多个整数后移位置问题69.圆圈报数问题70.计算一个字符串长度71.编写输入/输出函数72.创建链表73.反向输出链表74.连接两个链表75.算一道简单题目76.调用函数求1/2+1/4+...+1/n77.填空练习(指向指针的指针)78.找到年龄最大的人79.字符串排序80.海滩猴子分桃81.已知公式条件求数字82.八进制转换为十进制83.求0-7所能组成的奇数个数84.由两个素数之和表示的偶数85.判断一个素数能被几个9整除86.两个字符串连接程序87.结构体变量传递88.读取数字的整数值并打印出该值个数的*89.数据加密90.专升本一题91.时间函数举例192.时间函数举例293.时间函数举例394.一个猜数游戏95.家庭财务管理小程序96.计算字符串中子串出现的次数97.输入字符并保存到磁盘98.字符串转换成大写字母并输出保存99.文件操作应用1100.文件操作应用2--------------------------------------------------------------------------------c语言经典100题【实用】【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言程序设计100例之(4):水仙花数
例4 水仙花数
题目描述
一个三位整数(100~999),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:153=13+53+33),找出所有的这种数。

输入格式
没有输入
输出格式
若干行,每行1个数字。

输入样例

输出样例
153
* * *
...
* * *
(输出被和谐了)
(1)编程思路1。

对三位数n(n为100~999之间的整数)进行穷举。

对每个枚举的n,分解出其百位a (a=n/100)、十位b(b=n/10%10)和个位c(c=n%10),若满足a*a*a+b*b*b+c*c*c== n,则n是水仙花数。

(2)源程序1。

#include <stdio.h>
int main()
{
int n, a, b, c; //n、a、b和c分别为三位数自身及其百位、十位和个位
for(n=100 ;n<=999;n++)
{
a=n/100;
b=n/10%10;
c=n%10;
if(a*a*a+b*b*b+c*c*c== n)
printf("%d\n",n);
}
return 0;
}
(3)编程思路2。

用一个三重循环对一个3位数的百位a(a的范围为1~9)、十位b(b的范围为0~9)和个位c(c的范围为0~9)进行穷举,在循环体中,计算出3位数n(n=100*a+10*b+c),然后进行判断,若满足a*a*a+b*b*b+c*c*c== n,则n是水仙花数。

(4)源程序2。

#include <iostream>
using namespace std;
int main()
{
int n, a, b, c; //n、a、b和c分别为三位数自身及其百位、十位和个位
for(a=1 ;a<=9;a++)
for (b=0; b<=9;b++)
for(c=0;c<=9;c++)
{
n=100*a+10*b+c;
if(a*a*a+b*b*b+c*c*c== n)
printf("%d\n",n);
}
return 0;
}
习题4
4-1 子数整数
本题选自洛谷题库(https:///problem/P1151)
题目描述
对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:
sub1=a1a2a3
sub2=a2a3a4
sub3=a3a4a5
例如,五位数20207可以拆分成
sub1=202
sub2=020(=20)
sub3=207
现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1 ,sub2 ,sub3都可被K整除。

输入格式
一个正整数K
输出格式
每一行为一个满足条件的五位数,要求从小到大输出。

不得重复输出或遗漏。

如果无解,则输出“No”。

输入样例
15
输出样例
22555
25555
28555
30000
(1)编程思路。

本题关键是分离出一个五位数n的三个子数sub1 ,sub2 和sub3。

由于sub1是n的高3位数,因此,sub1=n/100;sub2是n的中间3位数,因此,sub2=n/10%1000;sub3是n的低3位数,因此,sub3=n%1000。

用循环for (n=10000;n<=30000;n++)对每个五位数n进行穷举判断即可。

(2)源程序。

#include <stdio.h>
int main()
{
int i,sub1,sub2,sub3,k,f=0;
scanf("%d",&k);
for (i=10000;i<=30000;i++)
{
sub1=i/100;
sub2=i/10%1000;
sub3=i%1000;
if (sub1%k==0 && sub2%k==0 && sub3%k==0)
{
printf("%d\n",i);
f=1;
}
}
if (f==0) printf("No\n");
return 0;
}
4-2 4位分段和平方数
题目描述
一个4位自然数分为前后两个2位数,若该数等于所分两个2位数和的平方,则称为4位分段和平方数。

例如,2025=(20+25)2。

编写程序求出所有4位分段和平方数。

输入格式
没有输入
输出格式
若干行,每行1个数字。

输入样例

输出样例
2025
* * *
...
* * *
(输出被和谐了)
(1)编程思路1。

对所有的4位整数n 进行穷举,n 的范围为1000~9999,共9000个数。

对每个数n ,分离出高两位数x (x=n/100)和低两位数y (y=n%100),然后进行判断,若满足n==(x+y)*(x+y),则n 是一个4位分段和平方数。

(2)源程序1。

#include <stdio.h>
int main()
{
int n,x,y;
for(n=1000;n<=9999;n++)
{
x=n/100;
y=n%100;
if (n==(x+y)*(x+y))
printf("%d\n",n);
}
return 0;
}
(3)编程思路2。

思路1的穷举次数为9000次。

实际上,由于4位分段和平方数一定首先是一个平方数,因此只需要穷举4位数中的平方数即可,即穷举9999~1000之间的数a ,在循环体中,先计算出4位数n=a*a ,再分离出高两位数x (x=n/100)和低两位数y (y=n%100),然后进行判断,若满足a==(x+y),则n 是一个4位分段和平方数。

显然,这样穷举,循环次数会大为减少。

(4)源程序2。

#include <stdio.h>
#include <math.h>
int main()
{
int a,n,x,y;
for(a=(int)sqrt(1000);a<=(int)sqrt(9999);a++)
{
n=a*a;
x=n/100;
y=n%100;
if (a==x+y)
printf("%d\n",n);
}
return 0;
}
4-3 特定的四位数
题目描述
有这样一些特定的四位数,它的千位数字与十位数字之和等于百位数字与个位数字之积。

例如,3136, 3+3=1*6 ,故3136就是一个特定的四位数。

输入格式
一个正整数K(1111<=K<=9999)
输出格式
一个不大于K的最大的特定四位数。

输入样例
8000
输出样例
7921
(1)编程思路。

从k开始对四位数i进行穷举,对每个四位数i分离出千位a(a=i/1000)、百位b (b=(i-a*1000)/100)、十位c(c=(i-a*1000-b*100)/10)和个位d(d=i%10)。

(2)源程序。

#include<stdio.h>
int main()
{
int i,k,a,b,c,d;
scanf("%d",&k);
for (i=k; i>=1000; i--)
{
a=i/1000 ;
b=(i-a*1000)/100;
c=(i-a*1000-b*100)/10;
d=i%10;
if (a+c==b*d)
{
printf("%d\n",i);
break;
}
}
return 0;
}。

相关文档
最新文档