⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c语言经典程序100例.htm

📁 文件包含100个经典C语言程序文件
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0049)http://218.7.193.187/freesite/zoyusky/study/c.htm -->
<HTML><HEAD><TITLE>C语言经典程序100例</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1528" name=GENERATOR></HEAD>
<BODY text=#000000 
bgColor=#ffffff><BR>    经典c程序100例==1--10<BR>【程序1】<BR>题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?<BR>1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去<BR>      掉不满足条件的排列。 
<BR>2.程序源代码:<BR>#include "stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>int 
i,j,k;<BR>printf("\n");<BR>for(i=1;i&lt;5;i++) 
/*以下为三重循环*/<BR>for(j=1;j&lt;5;j++)<BR>for (k=1;k&lt;5;k++)<BR>{<BR>if 
(i!=k&amp;&amp;i!=j&amp;&amp;j!=k) 
/*确保i、j、k三位互不相同*/<BR>printf("%d,%d,%d\n",i,j,k);<BR>}<BR>getch();<BR>}<BR>==============================================================<BR>【程序2】<BR>题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高<BR>   于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提<BR>   成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于<BR>   40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于<BR>   100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?<BR>1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。      <BR>2.程序源代码:<BR>#include 
"stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>long int i;<BR>int 
bonus1,bonus2,bonus4,bonus6,bonus10,bonus;<BR>scanf("%ld",&amp;i); 
<BR>bonus1=100000*0. 
1;<BR>bonus2=bonus1+100000*0.75;<BR>bonus4=bonus2+200000*0.5;<BR>bonus6=bonus4+200000*0.3;<BR>bonus10=bonus6+400000*0.15;<BR>if(i&lt;=100000)<BR>bonus=i*0.1;<BR>else 
if(i&lt;=200000)<BR>bonus=bonus1+(i-100000)*0.075;<BR>else 
if(i&lt;=400000)<BR>bonus=bonus2+(i-200000)*0.05;<BR>else 
if(i&lt;=600000)<BR>bonus=bonus4+(i-400000)*0.03;<BR>else 
if(i&lt;=1000000)<BR>bonus=bonus6+(i-600000)*0.015;<BR>else<BR>bonus=bonus10+(i-1000000)*0.01;<BR>printf("bonus=%d",bonus);<BR>getch(); 
<BR>}<BR>==============================================================<BR>【程序3】<BR>题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?<BR>1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后<BR>      的结果满足如下条件,即是结果。请看具体分析:<BR>2.程序源代码:<BR>#include 
"math.h"<BR>#include "stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>long int 
i,x,y,z;<BR>for (i=1;i&lt;100000;i++)<BR>{<BR>x=sqrt(i+100); 
/*x为加上100后开方后的结果*/<BR>y=sqrt(i+268); 
/*y为再加上168后开方后的结果*/<BR>if(x*x==i+100&amp;&amp;y*y==i+268) 
/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/<BR>printf("\n%ld\n",i);<BR>}<BR>getch();<BR>}<BR>==============================================================<BR>【程序4】<BR>题目:输入某年某月某日,判断这一天是这一年的第几天?<BR>1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊<BR>      情况,闰年且输入月份大于3时需考虑多加一天。<BR>2.程序源代码:<BR>#include 
"stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>int 
day,month,year,sum,leap;<BR>printf("\nplease input 
year,month,day\n");<BR>scanf("%d,%d,%d",&amp;year,&amp;month,&amp;day);<BR>switch(month) 
/*先计算某月以前月份的总天数*/<BR>{<BR>case 1:sum=0;break;<BR>case 2:sum=31;break;<BR>case 
3:sum=59;break;<BR>case 4:sum=90;break;<BR>case 5:sum=120;break;<BR>case 
6:sum=151;break;<BR>case 7:sum=181;break;<BR>case 8:sum=212;break;<BR>case 
9:sum=243;break;<BR>case 10:sum=273;break;<BR>case 11:sum=304;break;<BR>case 
12:sum=334;break;<BR>default:printf("data error");break;<BR>}<BR>sum=sum+day; 
/*再加上某天的天数*/<BR>if(year%400==0||(year%4==0&amp;&amp;year%100!=0)) 
/*判断是不是闰年*/<BR>leap=1;<BR>else<BR>leap=0;<BR>if(leap==1&amp;&amp;month&gt;2) 
/*如果是闰年且月份大于2,总天数应该加一天*/<BR>sum++;<BR>printf("It is the %dth 
day.",sum);<BR>getch(); 
<BR>}<BR>==============================================================<BR>【程序5】<BR>题目:输入三个整数x,y,z,请把这三个数由小到大输出。<BR>1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x&gt;y则将x与y的值进行交换,<BR>      然后再用x与z进行比较,如果x&gt;z则将x与z的值进行交换,这样能使x最小。<BR>2.程序源代码:<BR>#include 
"stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>int 
x,y,z,t;<BR>scanf("%d%d%d",&amp;x,&amp;y,&amp;z);<BR>if 
(x&gt;y)<BR>{t=x;x=y;y=t;} /*交换x,y的值*/<BR>if(x&gt;z)<BR>{t=z;z=x;x=t;} 
/*交换x,z的值*/<BR>if(y&gt;z)<BR>{t=y;y=z;z=t;} /*交换z,y的值*/<BR>printf("small to big: 
%d %d %d\n",x,y,z);<BR>getch(); 
<BR>}<BR>==============================================================<BR>【程序6】<BR>题目:用*号输出字母C的图案。<BR>1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。<BR>2.程序源代码:<BR>#include 
"stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>printf("Hello 
C-world!\n");<BR>printf(" ****\n");<BR>printf(" *\n");<BR>printf(" * 
\n");<BR>printf(" ****\n");<BR>getch(); 
<BR>}<BR>==============================================================<BR>【程序7】<BR>题目:输出特殊图案,请在c环境中运行,看一看,Very 
Beautiful!<BR>1.程序分析:字符共有256个。不同字符,图形不一样。      <BR>2.程序源代码:<BR>#include 
"stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>char 
a=176,b=219;<BR>printf("%c%c%c%c%c\n",b,a,a,a,b);<BR>printf("%c%c%c%c%c\n",a,b,a,b,a);<BR>printf("%c%c%c%c%c\n",a,a,b,a,a);<BR>printf("%c%c%c%c%c\n",a,b,a,b,a);<BR>printf("%c%c%c%c%c\n",b,a,a,a,b);<BR>getch(); 
<BR>}<BR>==============================================================<BR>【程序8】<BR>题目:输出9*9口诀。<BR>1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。<BR>2.程序源代码:<BR>#include 
"stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>int 
i,j,result;<BR>printf("\n");<BR>for 
(i=1;i&lt;10;i++)<BR>{<BR>for(j=1;j&lt;10;j++)<BR>{<BR>result=i*j;<BR>printf("%d*%d=%-3d",i,j,result); 
/*-3d表示左对齐,占3位*/<BR>}<BR>printf("\n"); 
/*每一行后换行*/<BR>}<BR>getch();<BR>}<BR>==============================================================<BR>【程序9】<BR>题目:要求输出国际象棋棋盘。<BR>1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。<BR>2.程序源代码:<BR>#include 
"stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>int 
i,j;<BR>for(i=0;i&lt;8;i++)<BR>{<BR>for(j=0;j&lt;8;j++)<BR>if((i+j)%2==0)<BR>printf("%c%c",219,219);<BR>else<BR>printf(" 
");<BR>printf("\n");<BR>}<BR>getch(); 
<BR>}<BR>============================================================== 
<BR>【程序10】<BR>题目:打印楼梯,同时在楼梯上方打印两个笑脸。 
<BR>1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。<BR>2.程序源代码:<BR>#include 
"stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>int i,j;<BR>printf("\1\1\n"); 
/*输出两个笑脸*/<BR>for(i=1;i&lt;11;i++)<BR>{<BR>for(j=1;j&lt;=i;j++)<BR>printf("%c%c",219,219);<BR>printf("\n");<BR>}<BR>getch(); 
<BR>} 
<P><BR>    经典c程序100例==11--20<BR>【程序11】<BR>题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月<BR>   后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 
<BR>1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....<BR>2.程序源代码:<BR>#include 
"stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>long f1,f2;<BR>int 
i;<BR>f1=f2=1;<BR>for(i=1;i&lt;=20;i++)<BR>{<BR>printf("%12ld 
%12ld",f1,f2);<BR>if(i%2==0) printf("\n"); /*控制输出,每行四个*/<BR>f1=f1+f2; 
/*前两个月加起来赋值给第三个月*/<BR>f2=f1+f2; 
/*前两个月加起来赋值给第三个月*/<BR>}<BR>getch();<BR>}<BR>==============================================================<BR>【程序12】<BR>题目:判断101-200之间有多少个素数,并输出所有素数。<BR>1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,<BR>      则表明此数不是素数,反之是素数。 
      <BR>2.程序源代码:<BR>#include "stdio.h"<BR>#include "conio.h"<BR>#include 
"math.h"<BR>main()<BR>{<BR>int 
m,i,k,h=0,leap=1;<BR>printf("\n");<BR>for(m=101;m&lt;=200;m++)<BR>{<BR>k=sqrt(m+1);<BR>for(i=2;i&lt;=k;i++)<BR>if(m%i==0)<BR>{<BR>leap=0;<BR>break;<BR>}<BR>if(leap)<BR>{<BR>printf("%-4d",m);<BR>h++;<BR>if(h%10==0)<BR>printf("\n");<BR>}<BR>leap=1;<BR>}<BR>printf("\nThe 
total is 
%d",h);<BR>getch();<BR>}<BR>==============================================================<BR>【程序13】<BR>题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数<BR>   本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。<BR>1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。<BR>2.程序源代码:<BR>#include 
"stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>int i,j,k,n;<BR>printf("'water 
flower'number 
is:");<BR>for(n=100;n&lt;1000;n++)<BR>{<BR>i=n/100;/*分解出百位*/<BR>j=n/10%10;/*分解出十位*/<BR>k=n%10;/*分解出个位*/<BR>if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)<BR>printf("%-5d",n);<BR>}<BR>getch();<BR>}<BR>==============================================================<BR>【程序14】<BR>题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。<BR>程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 
<BR>(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。<BR>(2)如果n&lt;&gt;k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,<BR> 重复执行第一步。<BR>(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。<BR>2.程序源代码:<BR>/* 
zheng int is divided yinshu*/<BR>#include "stdio.h"<BR>#include 
"conio.h"<BR>main()<BR>{<BR>int n,i;<BR>printf("\nplease input a 
number:\n");<BR>scanf("%d",&amp;n);<BR>printf("%d=",n);<BR>for(i=2;i&lt;=n;i++)<BR>while(n!=i)<BR>{<BR>if(n%i==0)<BR>{<BR>printf("%d*",i);<BR>n=n/i;<BR>}<BR>else<BR>break;<BR>}<BR>printf("%d",n);<BR>getch();<BR>}<BR>==============================================================<BR>【程序15】<BR>题目:利用条件运算符的嵌套来完成此题:学习成绩&gt;=90分的同学用A表示,60-89分之间的用B表示,<BR>   60分以下的用C表示。<BR>1.程序分析:(a&gt;b)?a:b这是条件运算符的基本例子。<BR>2.程序源代码:<BR>#include 
"stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>int score;<BR>char 
grade;<BR>printf("please input a 
score\n");<BR>scanf("%d",&amp;score);<BR>grade=score&gt;=90?'A':(score&gt;=60?'B':'C');<BR>printf("%d 
belongs to 
%c",score,grade);<BR>getch();<BR>}<BR>==============================================================<BR>【程序16】<BR>题目:输入两个正整数m和n,求其最大公约数和最小公倍数。<BR>1.程序分析:利用辗除法。<BR>2.程序源代码:<BR>#include 
"stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>int 
a,b,num1,num2,temp;<BR>printf("please input two 
numbers:\n");<BR>scanf("%d,%d",&amp;num1,&amp;num2);<BR>if(num1&lt;num2)/*交换两个数,使大数放在num1上*/<BR>{<BR>temp=num1;<BR>num1=num2;<BR>num2=temp;<BR>}<BR>a=num1;b=num2;<BR>while(b!=0)/*利用辗除法,直到b为0为止*/<BR>{<BR>temp=a%b;<BR>a=b;<BR>b=temp;<BR>}<BR>printf("gongyueshu:%d\n",a);<BR>printf("gongbeishu:%d\n",num1*num2/a);<BR>getch();<BR>}<BR>==============================================================<BR>【程序17】<BR>题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。<BR>1.程序分析:利用while语句,条件为输入的字符不为'\n'.<BR>      <BR>2.程序源代码:<BR>#include 
"stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>char c;<BR>int 
letters=0,space=0,digit=0,others=0;<BR>printf("please input some 
characters\n");<BR>while((c=getchar())!='\n')<BR>{<BR>if(c&gt;='a'&amp;&amp;c&lt;='z'||c&gt;='A'&amp;&amp;c&lt;='Z')<BR>letters++;<BR>else 
if(c==' ')<BR>space++;<BR>else 
if(c&gt;='0'&amp;&amp;c&lt;='9')<BR>digit++;<BR>else<BR>others++;<BR>}<BR>printf("all 
in all:char=%d space=%d digit=%d 
others=%d\n",letters,<BR>space,digit,others);<BR>getch();<BR>}<BR>==============================================================<BR>【程序18】<BR>题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时<BR>   共有5个数相加),几个数相加有键盘控制。<BR>1.程序分析:关键是计算出每一项的值。<BR>2.程序源代码:<BR>#include 
"stdio.h"<BR>#include "conio.h"<BR>main()<BR>{<BR>int a,n,count=1;<BR>long int 
sn=0,tn=0;<BR>printf("please input a and 
n\n");<BR>scanf("%d,%d",&amp;a,&amp;n);<BR>printf("a=%d,n=%d\n",a,n);<BR>while(count&lt;=n)<BR>{<BR>tn=tn+a;<BR>sn=sn+tn;<BR>a=a*10;<BR>++count;<BR>}<BR>printf("a+aa+...=%ld\n",sn);<BR>getch();<BR>}<BR>==============================================================<BR>【程序19】<BR>题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程<BR>   找出1000以内的所有完数。<BR>1. 
程序分析:请参照程序&lt;--上页程序14. <BR>2.程序源代码:<BR>#include "stdio.h"<BR>#include 
"conio.h"<BR>main()<BR>{<BR>static int k[10];<BR>int 
i,j,n,s;<BR>for(j=2;j&lt;1000;j++)<BR>{<BR>n=-1;<BR>s=j;<BR>for(i=1;i&lt;j;i++)<BR>{<BR>if((j%i)==0)<BR>{<BR>n++;<BR>s=s-i;<BR>k[n]=i;<BR>}<BR>}<BR>if(s==0)<BR>{<BR>printf("%d 
is a 
wanshu",j);<BR>for(i=0;i&lt;n;i++)<BR>printf("%d,",k[i]);<BR>printf("%d\n",k[n]);<BR>}<BR>}<BR>getch();<BR>}<BR>============================================================== 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -