C语言经典实例
更新时间:2023-12-29 12:08:01 阅读量: 教育文库 文档下载
【程序1】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码:
#include \#include \main() {
int i,j,k; printf(\
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(\ } getch(); }
============================================================== 【程序2】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后
的结果满足如下条件,即是结果。请看具体分析: 2.程序源代码: #include \#include \#include \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(\ }
getch(); }
============================================================== 【程序3】
题目:输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
情况,闰年且输入月份大于3时需考虑多加一天。 2.程序源代码:
#include \#include \main() {
int day,month,year,sum,leap;
printf(\ scanf(\
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(\ }
sum=sum+day; /*再加上某天的天数*/
if(year@0==0||(year%4==0&&year0!=0)) /*判断是不是闰年*/ leap=1; else
leap=0;
if(leap==1&&month>2) /*如果是闰年且月份大于2,总天数应该加一天*/ sum++;
printf(\ getch(); }
============================================================== 【程序4】
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与
y的值进行交换,
然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
2.程序源代码:
#include \#include \main() {
int x,y,z,t;
scanf(\ 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(\ getch(); }
============================================================== 【程序5】
题目:用*号输出字母C的图案。
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。 2.程序源代码:
#include \#include \main() {
printf(\ printf(\ printf(\ printf(\ printf(\ getch(); }
============================================================== 【程序6】
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful! 1.程序分析:字符共有256个。不同字符,图形不一样。 2.程序源代码:
#include \#include \main() {
char a=176,b=219;
printf(\ printf(\ printf(\ printf(\ printf(\ getch(); }
============================================================== 【程序7】
题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 2.程序源代码:
#include \#include \main() {
int i,j,result; printf(\
for (i=1;i<10;i++) {
for(j=1;j<10;j++) {
result=i*j;
printf(\表示左对齐,占3位*/ }
printf(\每一行后换行*/ }
getch(); }
============================================================== 【程序8】
题目:要求输出国际象棋棋盘。
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
2.程序源代码:
#include \#include \main() {
int i,j;
for(i=0;i<8;i++) {
for(j=0;j<8;j++)
if((i+j)%2==0)
printf(\ else
printf(\ printf(\ }
getch(); }
============================================================== 【程序9】
题目:打印楼梯,同时在楼梯上方打印两个笑脸。
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 2.程序源代码:
#include \#include \main() {
int i,j;
printf(\输出两个笑脸*/ for(i=1;i<11;i++) {
for(j=1;j<=i;j++)
printf(\ printf(\ }
getch(); }
.:.:经典c程序100例==11--20 :.:.
经典c程序100例==11--20【程序12】
题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 2.程序源代码:
#include \#include \#include \main() {
int m,i,k,h=0,leap=1; printf(\
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(\ h++;
if(h==0)
printf(\ }
leap=1; }
printf(\ getch(); }
============================================================== 【程序10】
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 2.程序源代码:
#include \#include \main() {
int i,j,k,n;
printf(\ for(n=100;n<1000;n++) {
i=n/100;/*分解出百位*/ j=n/10;/*分解出十位*/ k=n;/*分解出个位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) printf(\ }
getch(); }
============================================================== 【程序11】
题目:将一个正整数分解质因数。例如:输入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*/ #include \#include \main() {
int n,i;
printf(\ scanf(\ printf(\ for(i=2;i<=n;i++) while(n!=i) {
if(n%i==0) {
printf(\ n=n/i; } else
break; }
printf(\ getch(); }
============================================================== 【程序12】
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
60分以下的用C表示。
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 2.程序源代码:
#include \#include \main() {
int score; char grade;
printf(\ scanf(\
grade=score>=90?'A':(score>=60?'B':'C'); printf(\ getch(); }
============================================================== 【程序13】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:利用辗除法。 2.程序源代码:
#include \#include \main() {
int a,b,num1,num2,temp;
printf(\ scanf(\
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(\ printf(\ getch(); } ============================================================== 【程序14】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 1.程序分析:利用while语句,条件为输入的字符不为'\\n'. 2.程序源代码: #include \ #include \main() { char c; int letters=0,space=0,digit=0,others=0; printf(\ 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++; else others++; } printf(\ space,digit,others); getch(); } ============================================================== 【程序15】 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时 共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。 2.程序源代码: #include \#include \main() { int a,n,count=1; long int sn=0,tn=0; printf(\ scanf(\ printf(\ while(count<=n) { tn=tn+a; sn=sn+tn; a=a*10; ++count; } printf(\ getch(); } ============================================================== 【程序16】 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程 找出1000以内的所有完数。 1. 程序分析:请参照程序<--上页程序14. 2.程序源代码: #include \#include \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(\ for(i=0;i 题目:打印出如下图案(菱形) * *** ***** ******* ***** *** * 1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列。 2.程序源代码: #include \#include \main() { int i,j,k; for(i=0;i<=3;i++) { for(j=0;j<=2-i;j++) printf(\ for(k=0;k<=2*i;k++) printf(\ printf(\ } for(i=0;i<=2;i++) { for(j=0;j<=i;j++) printf(\ for(k=0;k<=4-2*i;k++) printf(\ printf(\ } getch(); } ============================================================== 【程序18】 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 1.程序分析:请抓住分子与分母的变化规律。 2.程序源代码: #include \#include \main() { int n,t,number=20; float a=2,b=1,s=0; for(n=1;n<=number;n++) { s=s+a/b; t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/ } printf(\ getch(); } ============================================================== 【程序19】 题目:求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成了累乘。 2.程序源代码: #include \#include \main() { float n,s=0,t=1; for(n=1;n<=20;n++) { t*=n; s+=t; } printf(\ getch(); } ============================================================== 【程序20】 题目:利用递归方法求5!。 1.程序分析:递归公式:fn=fn_1*4! 2.程序源代码: #include \#include \main() { int i; int fact(); for(i=0;i<5;i++) printf(\ getch(); } int fact(j) int j; { int sum; if(j==0) sum=1; else sum=j*fact(j-1); return sum; } ============================================================== 【程序21】 题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 1.程序分析: 2.程序源代码: #include \#include \main() { int i=5; void palin(int n); printf(\ palin(i); printf(\ getch(); } void palin(n) int n; { char next; if(n<=1) { next=getchar(); printf(\ putchar(next); } else { next=getchar(); palin(n-1); putchar(next); } } ============================================================== 【程序22】 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供) 2.程序源代码: #include \#include \main( ) { long a,b,c,d,e,x; scanf(\ a=x/10000;/*分解出万位*/ b=x000/1000;/*分解出千位*/ c=x00/100;/*分解出百位*/ d=x0/10;/*分解出十位*/ e=x;/*分解出个位*/ if (a!=0) printf(\ else if (b!=0) printf(\ else if (c!=0) printf(\ else if (d!=0) printf(\ else if (e!=0) printf(\ getch(); } ============================================================== 【程序23】 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 1.程序分析:同29例 2.程序源代码: #include \#include \main( ) { long ge,shi,qian,wan,x; scanf(\ wan=x/10000; qian=x000/1000; shi=x0/10; ge=x; if(ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/ printf(\ else printf(\ getch(); } .:.:经典c程序100例==31--40:.:. 经典c程序100例==31--40 【程序24】 题目:Press any key to change color, do you want to try it. Please hurry up! 1.程序分析: 2.程序源代码: #include \#include \void main(void) { int color; for (color = 0; color < 8; color++) { textbackground(color);/*设置文本的背景颜色*/ cprintf(\ cprintf(\ getch();/*输入字符看不见*/ } } ============================================================== 【程序25】 题目:学习gotoxy()与clrscr()函数 1.程序分析: 2.程序源代码: #include \#include \void main(void) { clrscr();/*清屏函数*/ textbackground(2); gotoxy(1, 5);/*定位函数*/ cprintf(\ textbackground(3); gotoxy(20, 10); cprintf(\ getch(); } ============================================================== 【程序26】 题目:练习函数调用 1. 程序分析: 2.程序源代码: #include \#include \ void hello_world(void) { printf(\} void three_hellos(void) { int counter; for (counter = 1; counter <= 3; counter++) hello_world();/*调用此函数*/ } void main(void) { three_hellos();/*调用此函数*/ getch(); } ============================================================== 【程序27】 题目:文本颜色设置 1.程序分析: 2.程序源代码: #include \#include \void main(void) { int color; for (color = 1; color < 16; color++) { textcolor(color);/*设置文本颜色*/ cprintf(\ } textcolor(128 + 15); cprintf(\ getch(); } ============================================================== 【程序28】 题目:求100之内的素数 1.程序分析: 2.程序源代码: #include \#include \#define N 101 main() { int i,j,line,a[N]; for(i=2;i if(a!=0&&a[j]!=0) if(a[j]%a==0) a[j]=0; } printf(\ for(i=2,line=0;i if(a!=0) { printf(\ line++; } if(line==10) { printf(\ line=0; } } getch(); } ============================================================== 【程序29】 题目:对10个数进行排序 1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。 2.程序源代码: #include \#include \#define N 10 main() { int i,j,min,tem,a[N]; /*input data*/ printf(\ for(i=0;i printf(\ scanf(\ } printf(\ for(i=0;i min=i; for(j=i+1;j /*output data*/ printf(\ for(i=0;i ============================================================== 【程序30】 题目:求一个3*3矩阵对角线元素之和 1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。 2.程序源代码: #include \#include \ /* 如果使用的是TC系列编译器则可能需要添加下句 */ static void dummyfloat(float *x){ float y; dummyfloat(&y);} main() { float a[3][3],sum=0; int i,j; printf(\ for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(\ for(i=0;i<3;i++) sum=sum+a; printf(\ getch(); } ============================================================== 【程序31】 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后 此元素之后的数,依次后移一个位置。 2.程序源代码: #include \#include \main() { int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number,end,i,j; printf(\ for(i=0;i<10;i++) printf(\ printf(\ printf(\ scanf(\ end=a[9]; if(number>end) a[10]=number; else { for(i=0;i<10;i++) { if(a>number) { temp1=a; a=number; for(j=i+1;j<11;j++) { temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } } for(i=0;i<11;i++) printf(\ getch(); } ============================================================== 【程序32】 题目:将一个数组逆序输出。 1.程序分析:用第一个与最后一个交换。 2.程序源代码: #include \#include \#define N 5 main() { int a[N]={9,6,5,4,1},i,temp; printf(\ for(i=0;i temp=a; a=a[N-i-1]; a[N-i-1]=temp; } printf(\ for(i=0;i .:.:经典c程序100例==41--50:.:. 经典c程序100例==41--50 【程序33】 题目:学习static定义静态变量的用法 1.程序分析: 2.程序源代码: #include \#include \varfunc() { int var=0; static int static_var=0; printf(\ printf(\ printf(\ var++; static_var++; } void main() { int i; for(i=0;i<3;i++) varfunc(); getch(); } ============================================================== 【程序34】 题目:学习使用auto定义变量的用法 1.程序分析: 2.程序源代码: #include \#include \main() { int i,num; num=2; for(i=0;i<3;i++) { printf(\ num++; { auto int num=1; printf(\ num++; } } getch(); } ============================================================== 【程序35】 题目:学习使用static的另一用法。 1.程序分析: 2.程序源代码: #include \#include \main() { int i,num; num=2; for(i=0;i<3;i++) { printf(\ num++; { static int num=1; printf(\ num++; } } getch(); } ============================================================== 【程序36】 题目:学习使用external的用法。 1.程序分析: 2.程序源代码: #include \#include \int a,b,c; void add() { int a; a=3; c=a+b; } void main() { a=b=4; add(); printf(\ getch(); } ============================================================== 【程序37】 题目:学习使用register定义变量的方法。 1.程序分析: 2.程序源代码: #include \#include \void main() { register int i; int tmp=0; for(i=1;i<=100;i++) tmp+=i; printf(\ getch(); } ============================================================== 【程序38】 题目:宏#define命令练习(1) 1.程序分析: 2.程序源代码: #include \#include \#define TRUE 1 #define FALSE 0 #define SQ(x) (x)*(x) void main() { int num; int again=1; printf(\ while(again) { printf(\ scanf(\ printf(\ if(num>=50) again=TRUE; else again=FALSE; } getch(); } ============================================================== 【程序39】 题目:宏#define命令练习(2) 1.程序分析: 2.程序源代码: #include \#include \ /*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上\#define exchange(a,b) { \\ int t;\\ t=a;\\ a=b;\\ b=t;\\ } void main(void) { int x=10; int y=20; printf(\ exchange(x,y); printf(\ getch(); } ============================================================== 【程序40】 题目:宏#define命令练习(3) 1.程序分析: 2.程序源代码: #define LAG > #define SMA < #define EQ == #include \#include \void main() { int i=10; int j=20; if(i LAG j) printf(\ else if(i EQ j) printf(\ else if(i SMA j) printf(\ else printf(\ getch(); } ============================================================== 【程序41】 题目:#if #ifdef和#ifndef的综合应用。 1. 程序分析: 2.程序源代码: #include \#include \#define MAX #define MAXIMUM(x,y) (x>y)?x:y #define MINIMUM(x,y) (x>y)?y:x void main() { int a=10,b=20; #ifdef MAX printf(\#else printf(\#endif #ifndef MIN printf(\#else printf(\#endif #undef MAX #ifdef MAX printf(\#else printf(\#endif #define MIN #ifndef MIN printf(\#else printf(\#endif getch(); } ==============================================================
正在阅读:
C语言经典实例12-29
(进口食品收货人备案)——企业食品安全质量管理制度05-29
认识立体图形02-08
实施军民融合的重要意义 文档02-27
推动甘肃区域经济协调发展(教案)04-16
2016年电力勘察设计现状及发展趋势分析05-07
心得体会——抓好安全生产、防灾减灾救灾和森林草原防灭火09-14
广州南沙开发区环岛路、进港大道和港前大道路灯采用合同能源管理04-29
河北省现代物流业十二五发展规划06-21
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实例
- 语言
- 经典
- 国际金融危机对中国房地产经济的影响及对策研究
- 九年级语文下册 热爱生命学案1 人教新课标版
- 基于java的网上招聘系统的设计与实现本科毕业设计
- 柴胡加龙骨牡蛎汤诊治乳腺癌术后失眠的临床体会
- 江苏省苏州市高新区2018届初中毕业暨升学考试英语模拟试题
- 平仄原理和对联贴法指南 - 图文
- 中班幼儿个案跟踪观察记录
- 最新-中学生感恩教育的研究课题实施方案 精品
- 2018年长沙市初中毕业学业水平考试模拟试卷数学四(word版 无答案)
- 设施设备验证和校准管理制度
- 诗、词赏析
- 北师大版一元一次方程最终复习
- 有关爱的教育好词好句
- 2018最新中国的企业文化特征都有哪些-范文word版(3页)
- 2019年中考化学 复分解反应应用专题练习卷 doc
- 软件工程经济学-课程学习报告
- 广播广告文稿类型的小品式
- 钻孔灌注桩监理细则2
- 房产证英文翻译模板-重庆
- 读书心得体会3