计算机C语言趣味的程序设计——题目百例
- 格式:doc
- 大小:261.00 KB
- 文档页数:42
c语言编程题库100题1. 计算两个整数的和编写一个C程序,接收两个整数作为输入并计算它们的和,并将结果输出。
2. 计算两个整数的差编写一个C程序,接收两个整数作为输入并计算它们的差,并将结果输出。
3. 计算两个整数的乘积编写一个C程序,接收两个整数作为输入并计算它们的乘积,并将结果输出。
4. 计算两个整数的商编写一个C程序,接收两个整数作为输入并计算它们的商,并将结果输出。
5. 判断一个整数是否为偶数编写一个C程序,接收一个整数作为输入并判断它是否为偶数,并将结果输出。
6. 判断一个整数是否为质数编写一个C程序,接收一个整数作为输入并判断它是否为质数(只能被1和自身整除的数),并将结果输出。
7. 计算一个整数的阶乘编写一个C程序,接收一个整数作为输入并计算它的阶乘,并将结果输出。
8. 计算一个整数的平方根编写一个C程序,接收一个整数作为输入并计算它的平方根,并将结果输出。
9. 判断一个字符串是否为回文字符串编写一个C程序,接收一个字符串作为输入并判断它是否为回文字符串(正向和反向读取都相同的字符串),并将结果输出。
10. 排序一个整数数组编写一个C程序,接收一个整数数组作为输入并对其进行排序,并将结果输出。
11. 求两个整数之间的最大公约数编写一个C程序,接收两个整数作为输入并计算它们的最大公约数,并将结果输出。
......(依此类推,共100道题)这是一个C语言编程题库,包含100道不同类型的题目。
你可以选择其中的题目进行练习和实践,通过解决这些问题来提升自己的C语言编程能力。
每道题目都有具体的描述和要求,你可以按照题目要求编写相应的代码,并运行测试。
如果遇到问题,可以参考相关的解法或向他人寻求帮助。
通过不断地练习和学习,你将逐渐掌握C语言的编程技巧和思维方式,提高自己在编程领域中的能力。
祝你编程愉快!。
【最新整理,下载后即可编辑】C语言经典编程100例程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....2.程序源代码:main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf("%12ld %12ld",f1,f2);if(i%2==0) printf("\n");/*控制输出,每行四个*/f1=f1+f2; /*前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第三个月*/}}=================================================== ===========【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
2.程序源代码:#include "math.h"main(){int m,i,k,h=0,leap=1;printf("\n");for(m=101;m<=200;m++){ k=sqrt(m+1);for(i=2;i<=k;i++)if(m%i==0){leap=0;break;}if(leap) {printf("%-4d",m);h++;if(h%10==0)printf("\n");}leap=1;}printf("\nThe total is %d",h);}【程序4】题目:将一个正整数分解质因数。
经典C语言程序设计100例1-10【程序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.程序源代码:# includemain(){double i;double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%lf",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.075;bonus4=bonus2+200000*0.05;bonus6=bonus4+200000*0.03;bonus10=bonus6+400000*0.015;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;else if(i>1000000)bonus=bonus10+(i-1000000)*0.01;printf("bonus=%lf",bonus);}-----------------------------------------------------------------------------【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
学会用c语言解决生活中的问题【程序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;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 例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.利用ellipse and rectangle 画图65.画个最优美的图案66.输入3 个数字按大小顺序输出67.输入数组交换元素重新输出68.多个整数后移位置问题69.圆圈报数问题70.计算一个字符串长度71.编写输入/输出函数72.创建链表73.反向输出链表74.连接两个链表75.算一道简单题目76.调用函数求1/2+1/4+...+1/n 77.填空练习(指向指针的指针) 78.找到年龄最大的人79.字符串排序80.海滩猴子分桃81.已知公式条件求数字82.八进制转换为十进制83.求0-7 所能组成的奇数个数84. 由两个素数之和表示的偶数85.判断一个素数能被几个9 整除86.两个字符串连接程序87.结构体变量传递88. 读取数字的整数值并打印出该值个数的*89.数据加密90.专升本一题91.时间函数举例1 92.时间函数举例293.时间函数举例3 94.一个猜数游戏95.家庭财务管理小程序96.计算字符串中子串出现的次数97.输入字符并保存到磁盘98.字符串转换成大写字母并输出保存99.文件操作应用1100.文件操作应用2c 语言经典100 题【实用】【程序1】题目:有1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
经典C语言程序设计100例1-10【程序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例1-10【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:#include<stdio.h>main(){int i,j,k,z=0;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)printf("%d%d%d\n",i,j,k);if(i!=k&&i!=j&&j!=k)z++;}printf("排列的组合数:%d\n",z);}【程序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.程序源代码:#include<stdio.h>main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;printf("请输入利润值:");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例(2)MIME-Version: 1.0 Content-Location: file:///C:/0917AA32/anli02.htmContent-Transfer-Encoding: quoted-printable Content-Type: text/html;charset="us-ascii"经典c程序100例<= span lang=3DEN-US>=3D=3D11--20【程序11】题目:古= 0856;问题:有一对兔子ᦁ= 2;从出生后第3个月起每个月ᦁ= 7;生一对兔子,小兔子&= #38271;到第三个月后每&= #20010;月又生一对兔子,= 551;如兔子都不死,问每= ;个月的兔子总数为多&#= 23569;?1.程序分析:兔子&#= 30340;规律为数列1,1,2,3,5,8,13,21....2.程序源代码:main(){long f1,f2;int i;f1=3Df2=3D1;for(i=3D1;i<=3D20;i++){ printf("%12ld %12ld",f1,f2);<= br> if(i%2=3D=3D0) printf(&qu=ot;\n");/*控制输出,每Ŝ= 92;四个*/f1=3Df1+f2; /*= 069;两个月加起来赋值给= ;第三个月*/f2=3Df1+f2; /*= 069;两个月加起来赋值给= ;第三个月*/}}=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D==3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D==3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D【ᦁ= 3;序12】题目:判= 6029;101-200之间有多少个= 素数,并输出所有素= 5968;。
经典C语言法式设计100例之欧侯瑞魂创作45.使用register界说变量方法46.宏#define命令练习(1)47.宏#define命令练习(2)48.宏#define命令练习(3)49.#if #ifdef和#ifndef的综合应用50.#include 的应用练习51.学习使用按位与 &52.学习使用按位或 |61.打印杨辉三角形62.学习putpixel画点63.画椭圆ellipse64.利用ellipse and rectangle画图73.反向输出链表74.连接两个链表75.算一道简单题目76.调用函数求1/2+1/4+...+1/n85.判断一个素数能被几个9整除86.两个字符串联接法式87.结构体变量传递88.读取数字的整数值并打印出该值个数的*--------------------------------------------------------------------------------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后再开方,如果开方后的结果满足如下条件,即是结果.请看具体分析:2.法式源代码:#include "math.h"main(){long int i,x,y,z;for (i=1;i<100000;i++){ x=sqrt(i+100); /*x为加上100后开方后的结果*/ y=sqrt(i+268); /*y为再加上168后开方后的结果*/ if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方即是该数,这说明此数是完全平方数*/printf("\n%ld\n",i);}}========================================================= =====【法式4】题目:输入某年某月某日,判断这一天是这一年的第几天?1.法式分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即今年的第几天,特殊情况,闰年且输入月份年夜于3时需考虑多加一天.2.法式源代码:main(){int day,month,year,sum,leap;printf("\nplease input year,month,day\n");scanf("%d,%d,%d",&year,&month,&day);switch(month)/*先计算某月以前月份的总天数*/{case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf("data error");break;}sum=sum+day; /*再加上某天的天数*/if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/leap=1;elseleap=0;if(leap==1&&month>2)/*如果是闰年且月份年夜于2,总天数应该加一天*/sum++;printf("it is the %dth day.",sum);}========================================================= =====【法式5】题目:输入三个整数x,y,z,请把这三个数由小到年夜输出.1.法式分析:我们想法子把最小的数放到x上,先将x与y进行比力,如果x>y则将x与y的值进行交换,然后再用x与z进行比力,如果x>z则将x与z的值进行交换,这样能使x最小.2.法式源代码:main(){int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if (x>y){t=x;x=y;y=t;} /*交换x,y的值*/if(x>z){t=z;z=x;x=t;}/*交换x,z的值*/if(y>z){t=y;y=z;z=t;}/*交换z,y的值*/printf("small to big: %d %d %d\n",x,y,z);}========================================================= =====【法式6】题目:用*号输出字母c的图案.1.法式分析:可先用'*'号在纸上写出字母c,再分行输出.2.法式源代码:#include "stdio.h"main(){printf("hello c-world!\n");printf(" ****\n");printf(" *\n");printf(" * \n");printf(" ****\n");}========================================================= =====【法式7】题目:输出特殊图案,请在c环境中运行,看一看,very beautiful!1.法式分析:字符共有256个.分歧字符,图形纷歧样.2.法式源代码:#include "stdio.h"main(){char a=176,b=219;printf("%c%c%c%c%c\n",b,a,a,a,b);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",a,a,b,a,a);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",b,a,a,a,b);}========================================================= =====【法式8】题目:输出9*9口诀.1.法式分析:分行与列考虑,共9行9列,i控制行,j控制列.2.法式源代码:#include "stdio.h"main(){int i,j,result;printf("\n");for (i=1;i<10;i++){ for(j=1;j<10;j++){result=i*j;printf("%d*%d=%-3d",i,j,result);/*-3d暗示左对齐,占3位*/}printf("\n");/*每一行后换行*/}}========================================================= =====【法式9】题目:要求输出国际象棋棋盘.1.法式分析:用i控制行,j来控制列,根据i+j的和的变动来控制输出黑方格,还是白方格.2.法式源代码:#include "stdio.h"main(){int i,j;for(i=0;i<8;i++){for(j=0;j<8;j++)if((i+j)%2==0)printf("%c%c",219,219);elseprintf(" ");printf("\n");}}========================================================= =====【法式10】题目:打印楼梯,同时在楼梯上方打印两个笑脸.1.法式分析:用i控制行,j来控制列,j根据i的变动来控制输出黑方格的个数.2.法式源代码:#include "stdio.h"main(){int i,j;printf("\1\1\n");/*输出两个笑脸*/for(i=1;i<11;i++){for(j=1;j<=i;j++)printf("%c%c",219,219);printf("\n");}}【法式11】题目:古典问题:有一对兔子,从出身后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为几多?1.法式分析:兔子的规律为数列1,1,2,3,5,8,13,21....2.法式源代码:main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf("%12ld %12ld",f1,f2);if(i%2==0) printf("\n");/*控制输出,每行四个*/f1=f1+f2; /*前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第三个月*/}}========================================================= =====【法式12】题目:判断101-200之间有几多个素数,并输出所有素数.1.法式分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则标明此数不是素数,反之是素数.2.法式源代码:#include "math.h"main(){int m,i,k,h=0,leap=1;printf("\n");for(m=101;m<=200;m++){ k=sqrt(m+1);for(i=2;i<=k;i++)if(m%i==0){leap=0;break;}if(leap) {printf("%-4d",m);h++;if(h%10==0)printf("\n");}leap=1;}printf("\nthe total is %d",h);}========================================================= =====【法式13】题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和即是该数自己.例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方.1.法式分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位.2.法式源代码:main(){int i,j,k,n;printf("'water flower'number is:");for(n=100;n<1000;n++){i=n/100;/*分解出百位*/j=n/10%10;/*分解出十位*/k=n%10;/*分解出个位*/if(i*100+j*10+k==i*i*i+j*j*j+k*k*k){printf("%-5d",n);}}printf("\n");}========================================================= =====【法式14】题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5.法式分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步伐完成:(1)如果这个质数恰即是n,则说明分解质因数的过程已经结束,打印出即可.(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k 的商,作为新的正整数你n,重复执行第一步.(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步.2.法式源代码:/* zheng int is divided yinshu*/main(){int n,i;printf("\nplease input a number:\n");scanf("%d",&n);printf("%d=",n);for(i=2;i<=n;i++){while(n!=i){if(n%i==0){ printf("%d*",i);n=n/i;}elsebreak;}}printf("%d",n);}========================================================= =====【法式15】题目:利用条件运算符的嵌套来完成此题:学习成果>=90分的同学用a暗示,60-89分之间的用b暗示,60分以下的用c暗示.1.法式分析:(a>b)?a:b这是条件运算符的基本例子.2.法式源代码:main(){int score;char grade;printf("please input a score\n");scanf("%d",&score);grade=score>=90?'a':(score>=60?'b':'c');printf("%d belongs to %c",score,grade);}========================================================= =====【法式16】题目:输入两个正整数m和n,求其最年夜公约数和最小公倍数.1.法式分析:利用辗除法.2.法式源代码:main(){int a,b,num1,num2,temp;printf("please input two numbers:\n");scanf("%d,%d",&num1,&num2);if(num1 { temp=num1;num1=num2;num2=temp;}a=num1;b=num2;while(b!=0)/*利用辗除法,直到b为0为止*/{temp=a%b;a=b;b=temp;}printf("gongyueshu:%d\n",a);printf("gongbeishu:%d\n",num1*num2/a);}========================================================= =====【法式17】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数.1.法式分析:利用while语句,条件为输入的字符不为'\n'.2.法式源代码:#include "stdio.h"main(){char c;int letters=0,space=0,digit=0,others=0;printf("please input some characters\n");while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='a'&&c<='z')letters++;else if(c==' ')space++;else if(c>='0'&&c<='9')digit++;elseothers++;}printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,space,digit,others);}========================================================= =====【法式18】题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制.1.法式分析:关键是计算出每一项的值.2.法式源代码:{int a,n,count=1;long int sn=0,tn=0;printf("please input a and n\n");scanf("%d,%d",&a,&n);printf("a=%d,n=%d\n",a,n);while(count<=n){tn=tn+a;sn=sn+tn;a=a*10;++count;}printf("a+aa+...=%ld\n",sn);}========================================================= =====【法式19】题目:一个数如果恰好即是它的因子之和,这个数就称为“完数”找出1000以内的所有完数.1. 法式分析:请参照法式<--上页法式14.2.法式源代码:main(){static int k[10];int i,j,n,s;for(j=2;j<1000;j++){n=-1;s=j;for(i=1;i {if((j%i)==0){ n++;s=s-i;k[n]=i;}if(s==0){printf("%d is a wanshu",j);for(i=0;i printf("%d,",k[i]);printf("%d\n",k[n]);}}}========================================================= =====【法式20】题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过几多米?第10次反弹多高?1.法式分析:见下面注释2.法式源代码:main(){float sn=100.0,hn=sn/2;int n;for(n=2;n<=10;n++){sn=sn+2*hn;/*第n次落地时共经过的米数*/hn=hn/2; /*第n次反跳高度*/}printf("the total of road is %f\n",sn);printf("the tenth is %f meter\n",hn);}题目:猴子吃桃问题:猴子第一天摘下若干个桃子,立即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃失落一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,见只剩下一个桃子了.求第一天共摘了几多.1.法式分析:采用逆向思维的方法,从后往前推断.2.法式源代码:{int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/x2=x1;day--;}printf("the total is %d\n",x1);}========================================================= =====【法式22】题目:两个乒乓球队进行角逐,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定角逐名单.有人向队员探听角逐的名单.a说他和睦x比,c 说他和睦x,z比,请编法式找出三队赛手的名单.1.法式分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则标明此数不是素数,反之是素数.2.法式源代码:main(){char i,j,k;/*i是a的敌手,j是b的敌手,k是c的敌手*/for(i='x';i<='z';i++)for(j='x';j<='z';j++){if(i!=j)for(k='x';k<='z';k++){ if(i!=k&&j!=k){ if(i!='x'&&k!='x'&&k!='z')printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);}}}========================================================= =====【法式23】题目:打印出如下图案(菱形)****。
学会用c语言解决生活中的问题【程序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语言是一种广泛应用于计算机程序设计领域的编程语言。
在学习C语言的过程中,有一些经典的程序例子可以帮助我们更好地理解和掌握编程的基本原理和技巧。
本文将介绍C语言程序设计的经典100例,帮助读者提升编程技能,并展示C语言的强大功能和灵活性。
第一例:Hello World这是C语言程序设计中最经典的例子,也是入门的第一步。
它用最简单的代码实现了打印输出一句"Hello World!"的功能。
代码如下:```c#include <stdio.h>int main() {printf("Hello World!\n");return 0;}```在这段代码中,首先包含了头文件`stdio.h`,这个头文件中定义了输入输出的函数。
然后,在`main`函数中使用`printf`函数打印输出"Hello World!",`\n`表示换行。
最后,`return 0`表示程序正常结束。
第二例:求和这个例子演示了C语言的基本运算。
代码如下:```c#include <stdio.h>int main() {int a = 1;int b = 2;int sum = a + b;printf("The sum of %d and %d is %d\n", a, b, sum);return 0;}```在这段代码中,首先定义了三个整型变量`a`、`b`和`sum`,分别表示两个操作数和它们的和。
然后,使用`printf`函数打印输出计算结果。
第三例:判断奇偶数这个例子展示了C语言中使用条件语句的方法。
代码如下:```c#include <stdio.h>int main() {int num;printf("Enter a number: ");scanf("%d", &num);if (num % 2 == 0) {printf("%d is an even number.\n", num);} else {printf("%d is an odd number.\n", num);}return 0;}```在这段代码中,首先定义了一个整型变量`num`,用于存储用户输入的数字。
C语言程序设计100个经典例子C语言作为一门广泛使用的高级编程语言,是计算机科学领域中最具影响力和应用广泛的语言之一。
对于学习C语言的人来说,掌握一些经典的例子是非常重要的,它们可以帮助初学者理解C语言的基本概念和语法,培养编程思维和解决问题的能力。
下面将介绍100个经典的C语言程序设计例子,涵盖了C语言的各个方面,旨在帮助读者快速入门和提高编程水平。
1. Hello World程序```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```2. 输出整数```c#include <stdio.h>int main() {int num = 123;printf("The number is: %d\n", num);return 0;}```3. 输入输出```c#include <stdio.h>int main() {int num;printf("Enter a number: ");scanf("%d", &num);printf("The number you entered is: %d\n", num); return 0;}```4. 计算两个数的和```c#include <stdio.h>int main() {int num1 = 5, num2 = 3;int sum = num1 + num2;printf("The sum of %d and %d is: %d\n", num1, num2, sum); return 0;}```5. 判断奇偶数```c#include <stdio.h>int main() {int num;printf("Enter a number: ");scanf("%d", &num);if(num % 2 == 0) {printf("%d is even.\n", num);} else {printf("%d is odd.\n", num);}return 0;}```6. 计算阶乘```c#include <stdio.h>int main() {int num, i;unsigned long long factorial = 1;printf("Enter a positive integer: ");scanf("%d", &num);for(i = 1; i <= num; ++i) {factorial *= i;}printf("The factorial of %d is: %llu\n", num, factorial); return 0;}```7. 斐波那契数列```c#include <stdio.h>int main() {int n, i;unsigned long long t1 = 0, t2 = 1, nextTerm; printf("Enter the number of terms: ");scanf("%d", &n);printf("Fibonacci Series: %llu, %llu, ", t1, t2); for(i = 3; i <= n; ++i) {nextTerm = t1 + t2;printf("%llu, ", nextTerm);t1 = t2;t2 = nextTerm;}return 0;}```8. 判断素数```c#include <stdio.h>int main() {int num, i, flag = 0;printf("Enter a positive integer: ");scanf("%d", &num);for(i = 2; i <= num/2; ++i) {if(num % i == 0) {flag = 1;break;}}if (flag == 0) {printf("%d is a prime number.", num);} else {printf("%d is not a prime number.", num); }return 0;}```9. 字符串反转```c#include <stdio.h>#include <string.h>int main() {char str[100];printf("Enter a string: ");gets(str);strrev(str);printf("Reversed string: %s\n", str); return 0;}```10. 数组求和```c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int n = sizeof(arr) / sizeof(arr[0]);int sum = 0, i;for(i = 0; i < n; ++i) {sum += arr[i];}printf("Sum of array elements: %d\n", sum);return 0;}```...(中间省略部分内容)这是其中的10个例子,涵盖了C语言的输入输出、条件语句、循环语句、函数、数组等多个方面。
Contest - 2011级C语言课程大作业Start Time: 2012-02-19 16:25:00 End Time: 2012-03-01 22:00:00 Current Time: 2012-2-23 15:51:18 Status:Running Public写在最前:本文档中的题目;在不不同的编译器中可能会有提示错误,呵呵,小小的动动手改下变量的定义就可以运行了………………..由于能力不足..有题目未解决的…或者有错误的我会…认真听取大家的..意见的….呵呵……..有一两个….偷了下懒哦………提供原题目还有本人自己的解答的源代码。
感谢大家的。
建议…………….问题A: 趣味程序设计_狼追兔子时间限制: 1 Sec 内存限制: 128 MB提交: 341 解决: 63[提交][状态][讨论版]题目描述一只兔子躲进了n个环形分布的洞的某一个中。
狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。
以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?输入有多组测试数据,读取到文件结尾符为止。
每组测试数据输入n(2≤n≤100),即洞穴个数。
输入到文件结尾符为止。
输出兔子可能藏匿的洞。
如果不止一个,按从小到大的顺序输出。
如果不存在,输出空行。
样例输入10815样例输出2 4 7 92 4 5 7 8 9 11 12 14提示用一个数组a[10],对应的元素a[0],a[1],a[2]……a[9]对应表示10个洞,初值均置1。
通过一个循环用“穷举法”找兔子,第n次查找对应第(n-1)%10个洞,如果在第(n-1)%10个洞中没有找到兔子,因此将数组元素a[(n-1)%10]置0值。
循环完成后,检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。
#include<stdio.h>#include<string.h>int ok[110];int main(){int n,s,i,find;while(scanf("%d",&n)!=EOF){memset(ok,0,sizeof(ok));for(i=1;i<=200;i++)if(!ok[find=(i*(i+1)/2)%n])if(find==0)ok[n]=1;elseok[find]=1;for(s=0,i=1;i<=n;i++)s+=ok[i];for(i=1,find=0;i<=n;i++)if(!ok[i]){if(find!=(n-s-1)){printf("%d ",i);find++;}elseprintf("%d",i);}printf("\n");}return 0;}问题B: 趣味程序设计_巧夺偶数时间限制: 1 Sec 内存限制: 128 MB提交: 174 解决: 73[提交][状态][讨论版]题目描述桌子上有25颗棋子。
游戏双方轮流取子,每人每次最少取走一颗棋子,最多可取走3颗棋子。
双方照这样取下去,直到取光所有的棋子。
于是双方手中必然一方为偶数,一方为奇数,偶数方为胜者。
请编程实现人机游戏。
人先走,计算机后走。
若游戏结束,则输出“Game over!”。
输入输入人取走棋子的个数。
输入一次,按一次回车。
游戏不止一轮。
按下文件结尾符,退出游戏。
必须在完成一轮后退出游戏。
不得中途退出游戏。
输出输出计算机取走的个数,每次输出最优解。
样例输入11111112132131样例输出333333Game over!231231Game over!#include<stdio.h>int main(){int n,sum=25;loop:while(scanf("%d",&n)!=EOF){sum-=n;if(sum==1){printf("1\nGame over!\n");sum=25;goto loop;if(sum==3||sum==2){printf("1\n");sum--;}}else{if(sum<=0){printf("Game over!\n");sum=25;goto loop;}else{printf("%d\n",4-n);if(n==1)sum-=3;if(n==2)sum-=2;if(n==3)sum-=1;}}}return 0;}问题C: 趣味程序设计_五猴分桃时间限制: 1 Sec 内存限制: 128 MB提交: 186 解决: 102[提交][状态][讨论版]题目描述5只猴子一起摘了1堆桃子。
因为太累了,它们商量决定,先睡一觉再分。
过了不知多久,1只猴子来了。
它见别的猴子没来,便将这1堆桃子平均分成5份,结果多了1个,就将多的这个吃了,拿走其中的1堆。
又过了不知多久,第2只猴子来了。
它不知道有1个同伴已经来过,还以为自己是第1个到的呢。
于是将地上的桃子堆起来,平均分成5份,发现也多了1个,同样吃了这1个,拿走其中的1堆。
第3只、第4只、第5只猴子都是这样……问这5只猴子至少摘了多少个桃子?第5个猴子走后还剩下多少个桃子?输入无输出输出5只猴子至少摘了多少个桃子,第5个猴子走后还剩下多少个桃子。
中间用空格隔开。
样例输入样例输出3121 1020提示思路一:“分”——假设至少摘了first_num个桃子,则令first_num=6,7,8,9,10,……这样不断的试,如果那个数能按规则(first_num=(first_num-1)/5*4)被5只猴子顺利的吃1个并分5组,则为所求。
思路二:“凑”——假设最后剩下last_num个桃子,则令last_num=4,5,6,7,8,9,10,……这样不断的试,如果那个数能按规则(last_num%4==0则last_num =last_num / 4 * 5 + 1)凑5次,则为所求。
#include<stdio.h>#include<time.h>int main(){int first,i,t;for(i=1;i<5000;i+=5){first=i;for(t=1;t<=5;t++){if(first%5==1){first=(first-1)/5*4;if(t==5)printf("%d %d\n",i,first);}elsebreak;}}// printf("time:%.2lf\n",(double)clock() / CLOCKS_PER_SEC);return 0;}问题D: 趣味程序设计_高次方数时间限制: 1 Sec 内存限制: 128 MB提交: 559 解决: 80[提交][状态][讨论版]题目描述求13的n次方(12<n≤130000000000)的最后三位数。
例如:13的13次方的最后三位数是253,13的20次方的最后三位数是801。
输入有多组测试数据,每组测试数据一行,即整数n。
以文件结尾符结束。
输出输出13的n次方的最后三位数样例输入1320样例输出25380164位整型用 long long 表示,格式串为"%lld"#include<stdio.h>int fun(long long n){int k=13,t=1;while(n>0){if(n%2==1)t=t*k%1000;k=k*k%1000;n>>=1;}return t;}int main(){long long n;while(scanf("%lld",&n)!=EOF)printf("%03d\n",fun(n));return 0;}问题E: 趣味程序设计_借书方案时间限制: 1 Sec 内存限制: 128 MB提交: 429 解决: 154[提交][状态][讨论版]题目描述小明有n本新书,要借给A、B、C三位小朋友。
只借一次。
若每人每次只能借一本,则可以有多少种不同的借法?输入有多组测试数据,输入整数n (5≤n≤1000),输入到文件结尾符为止。
借法总数。
样例输入5678样例输出60120210336#include<stdio.h>int main(){long long n;while(scanf("%lld",&n)!=EOF)printf("%lld\n",n*(n-1)*(n-2));return 0;}问题F: 趣味程序设计_过桥问题时间限制: 1 Sec 内存限制: 128 MB提交: 102 解决: 19[提交][状态][讨论版]题目描述过桥问题。
有N(N≥2)个人在晚上需要从X地到达Y地,中间要过一座桥,过桥需要手电筒(而他们只有1个手电筒),每次最多两个人一起过桥(否则桥会垮)。
N个人的过桥时间依次存入数组t[N]中,分别为:t[0], t[1], ……, t[N-1]。
过桥的速度以慢的人为准!注意:手电筒不能丢过桥!问题是:编程求这N个人过桥所花的最短时间。
输入有多组测试数据,每组数据先输入一个人数N,然后输入这N个人过桥所花的时间。
输出输出对应的最短时间。
样例输入4 1 25 104 5 2 10 1样例输出1717#include<stdio.h>void fun(int *a,int n){int i,j,t,k;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++){if(a[j]<a[k])k=j;}if(i!=k){t=a[i];a[i]=a[k];a[k]=t;}}}int main(){int a[100],i,n,time,k;while(scanf("%d",&n)!=EOF){time=0;for(i=0;i<n;i++)scanf("%d",&a[i]);fun(a,n);k=n-1;while(1){if(k<=2){if(k==0)time+=a[0];if(k==1)time+=a[1];if(k==2)time+=(a[0]+a[1]+a[2]);printf("%d\n",time);break;}else{if(2*a[1]>=a[0]+a[k])time+=(2*a[0]+a[k-1]+a[k]);if(2*a[1]<a[0]+a[k])time+=(a[0]+2*a[1]+a[k]);k-=2;}}}return 0;}问题G: 趣味程序设计_数制转换时间限制: 1 Sec 内存限制: 128 MB提交: 265 解决: 110[提交][状态][讨论版]题目描述将任一整数转换为二进制数形式并输出。