c语言经典问题.docx

上传人:b****6 文档编号:3833134 上传时间:2022-11-25 格式:DOCX 页数:34 大小:22.32KB
下载 相关 举报
c语言经典问题.docx_第1页
第1页 / 共34页
c语言经典问题.docx_第2页
第2页 / 共34页
c语言经典问题.docx_第3页
第3页 / 共34页
c语言经典问题.docx_第4页
第4页 / 共34页
c语言经典问题.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

c语言经典问题.docx

《c语言经典问题.docx》由会员分享,可在线阅读,更多相关《c语言经典问题.docx(34页珍藏版)》请在冰豆网上搜索。

c语言经典问题.docx

c语言经典问题

【程序1】

题目:

有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数都是多少?

1.程序分析:

可填在百位、十位、个位的数字都是1、2、3、4。

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

2.程序源代码:

main()

{

inti,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万元的部分,可可提成%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

1.程序分析:

请利用数轴来分界,定位。

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

2.程序源代码:

main()

{

longinti.

intbonus1,bonus2,bonus4,bonus6,bonus10,bonus.

scanf("%ld",&.i).

bonus1=100000*.

bonus2=bonus1100000*.

bonus4=bonus2200000*.

bonus6=bonus4200000*.

bonus10=bonus6400000*.

if(i<=100000)

bonus=i*.

elseif(i<=200000)

bonus=bonus1(i-100000)*.

elseif(i<=400000)

bonus=bonus2(i-200000)*.

elseif(i<=600000)

bonus=bonus4(i-400000)*.

elseif(i<=1000000)

bonus=bonus6(i-600000)*.

else

bonus=bonus10(i-1000000)*.

printf("bonus=%d",bonus).

}

【程序3】

题目:

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

1.程序分析:

在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

请看具体分析:

2.程序源代码:

#include

/*欢迎访问CBuilder研究-*/

main()

{

longinti,x,y,z.

for(i=1.i<100000.i)

{

x=sqrt(i100)./*x为加上100后开方后的结果*/

y=sqrt(i268)./*y为再加上168后开方后的结果*/

/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/

if(x*x==i100&.&.y*y==i268)

printf("\n%ld\n",i).

}

}

【程序4】

题目:

输入某年某月某日,判断这一天是这一年的第几天?

1.程序分析:

以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

2.程序源代码:

main()

{

intday,month,year,sum,leap.

printf("\npleaseinputyear,month,day\n").

scanf("%d,%d,%d",&.year,&.month,&.day).

switch(month)/*先计算某月以前月份的总天数*/

{

case1:

sum=0.break.

case2:

sum=31.break.

case3:

sum=59.break.

case4:

sum=90.break.

case5:

sum=120.break.

case6:

sum=151.break.

case7:

sum=181.break.

case8:

sum=212.break.

case9:

sum=243.break.

case10:

sum=273.break.

case11:

sum=304.break.

case12:

sum=334.break.

default:

printf("dataerror").break.

}

sum=sumday./*再加上某天的天数*/

if(year@0==0||(year%4==0&.&.year%100!

=0))/*判断是不是闰年*/

leap=1.

else

leap=0.

if(leap==1&.&.month>2)/*如果是闰年且月份大于2,总天数应该加一天*/

sum.

printf("Itisthe%dthday.",sum).

}

【程序11】

题目:

古典问题:

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

1.程序分析:

兔子的规律为数列1,1,2,3,5,8,13,21....

2.程序源代码:

main()

{

longf1,f2.

inti.

f1=f2=1.

for(i=1.i<=20.i)

{

printf("ldld",f1,f2).

if(i%2==0)

printf("\n")./*控制输出,每行四个*/

f1=f1f2./*前两个月加起来赋值给第三个月*/

f2=f1f2./*前两个月加起来赋值给第三个月*/

}

}

【程序12】

题目:

判断101-200之间有多少个素数,并输出所有素数。

1.程序分析:

判断素数的方法:

用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

2.程序源代码:

#include""

/*欢迎访问CBuilder研究-*/

main()

{

intm,i,k,h=0,leap=1.

printf("\n").

for(m=101.m<=200.m)

{

k=sqrt(m1).

for(i=2.i<=k.i)

if(m%i==0)

{

leap=0.break.

}

if(leap)

{

printf("%-4d",m).h.

if(h==0)

printf("\n").

}

leap=1.

}

printf("\nThetotalis%d",h).

}

【程序13】

题目:

打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

例如:

153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

1.程序分析:

利用for循环控制100-999个数,每个数分解出个位,十位,百位。

2.程序源代码:

main()

{

inti,j,k,n.

printf("waterflowernumberis:

").

for(n=100.n<1000.n)

{

i=n/100./*分解出百位*/

j=n/10%10./*分解出十位*/

k=n%10./*分解出个位*/

if(i*100j*10k==i*i*ij*j*jk*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整除,则用k1作为k的值,重复执行第一步。

2.程序源代码:

/*zhengintisdividedyinshu*/

main()

{

intn,i.

printf("\npleaseinputanumber:

\n").

scanf("%d",&.n).

printf("%d=",n).

for(i=<=)

{

while(n!

=i)

{

if(n%i==0)

{

printf("%d*",i).

n=n/i.

}

else

break.

}

}

printf("%d",n).

}

【程序15】

题目:

利用条件运算符的嵌套来完成此题:

学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

1.程序分析:

(a>b)a:

b这是条件运算符的基本例子。

2.程序源代码:

main()

{

intscore.

chargrade.

printf("pleaseinputascore\n").

scanf("%d",&.score).

grade=score>=90A:

(score>=60B:

C).

printf("%dbelongsto%c",score,grade).

}

【程序21】

题目:

猴子吃桃问题:

猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘了多少。

1.程序分析:

采取逆向思维的方法,从后往前推断。

2.程序源代码:

main()

{

intday,x1,x2.

day=9.

x2=1.

while(day>0)

{

x1=(x21)*2./*第一天的桃子数是第2天桃子数加1后的2倍*/

x2=x1.

day--.

}

printf("thetotalis%d\n",x1).

}

【程序22】

题目:

两个乒乓球队进行比赛,各出三人。

甲队为a,b,c三人,乙队为x,y,z三人。

已抽签决定比赛名单。

有人向队员打听比赛的名单。

a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

1.程序分析:

判断素数的方法:

用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

2.程序源代码:

main()

{

chari,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("orderisa--%c\tb--%c\tc--%c\n",i,j,k).

}

}

}

}

【程序23】

题目:

打印出如下图案(菱形)

*

***

******

********

******

***

*

1.程序分析:

先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。

2.程序源代码:

/*欢迎访问CBuilder研究-*/

main()

{

inti,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("\n").

}

for(i=0.i<=2.i)

{

for(j=0.j<=i.j)

printf("").

for(k=0.k<=4-2*i.k)

printf("*").

printf("\n").

}

}

【程序24】

题目:

有一分数序列:

2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

1.程序分析:

请抓住分子与分母的变化规律。

2.程序源代码:

main()

{

intn,t,number=20.

floata=2,b=1,s=0.

for(n=1.n<=number.n)

{

s=sa/b.

t=a.a=ab.b=t./*这部分是程序的关键,请读者猜猜t的作用*/

}

printf("sumis%\n",s).

}

【程序25】

题目:

求12!

3!

...20!

的和

1.程序分析:

此程序只是把累加变成了累乘。

2.程序源代码:

/*636372756E2E636F6D*/

main()

{

floatn,s=0,t=1.

for(n=1.n<=20.n)

{

t*=n.

s=t.

}

printf("12!

3!

...20!

=%e\n",s).

}

标题:

C程序开发经典实例之四作者:

出处:

更新时间:

2006年03月09日

题目:

请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

1.程序分析:

用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。

2.程序源代码:

voidmain()

{

charletter.

printf("pleaseinputthefirstletterofsomeday\n").

while((letter=getch())!

=Y)/*当所按字母为Y时才结束*/

{

switch(letter)

{

caseS:

printf("pleaseinputsecondletter\n").

if((letter=getch())==a)

printf("saturday\n").

elseif((letter=getch())==u)

printf("sunday\n").

elseprintf("dataerror\n").

break.

caseF:

printf("friday\n").break.

caseM:

printf("monday\n").break.

caseT:

printf("pleaseinputsecondletter\n").

if((letter=getch())==u)

printf("tuesday\n").

elseif((letter=getch())==h)

printf("thursday\n").

elseprintf("dataerror\n").

break.

caseW:

printf("wednesday\n").break.

default:

printf("dataerror\n").

}

}

}

【程序32】

题目:

Pressanykeytochangecolor,doyouwanttotryit.Pleasehurryup!

1.程序分析:

2.程序源代码:

#include

/*欢迎访问CBuilder研究-*/

voidmain(void)

{

intcolor.

for(color=0.color<8.color)

{

textbackground(color)./*设置文本的背景颜色*/

cprintf("Thisiscolor%d\r\n",color).

cprintf("Pressanykeytocontinue\r\n").

getch()./*输入字符看不见*/

}

}

【程序33】

题目:

学习gotoxy()与clrscr()函数

1.程序分析:

2.程序源代码:

#include

voidmain(void)

{

clrscr()./*清屏函数*/

textbackground

(2).

gotoxy(1,5)./*定位函数*/

cprintf("Outputatrow5column1\n").

textbackground(3).

gotoxy(20,10).

cprintf("Outputatrow10column20\n").

}

【程序34】

题目:

练习函数调用

1.程序分析:

2.程序源代码:

#include

voidhello_world(void)

{

printf("Hello,world!

\n").

}

voidthree_hellos(void)

{

intcounter.

for(counter=1.counter<=3.counter)

hello_world()./*调用此函数*/

}

voidmain(void)

{

three_hellos()./*调用此函数*/

}

【程序35】

题目:

文本颜色设置

1.程序分析:

2.程序源代码:

#include

voidmain(void)

/*636372756E2E636F6D*/

{

intcolor.

for(color=1.color<16.color)

{

textcolor(color)./*设置文本颜色*/

cprintf("Thisiscolor%d\r\n",color).

}

textcolor(12815).

cprintf("Thisisblinking\r\n").

}

【程序36】

题目:

求100之内的素数

1.程序分析:

2.程序源代码:

#include

#include""

#defineN101

main()

{

inti,j,line,a[N].

for(i=2.i<100.i)

for(j=i1.j<100.j)

{

if(a[i]!

=0&.&.a[j]!

=0)

if(a[j]%a[i]==0)

a[j]=0.

}

printf("\n").

for(i=2,line=0.i<100.i)

{

if(a[i]!

=0)

{

printf("]",a[i]).

line.

}

if(line==10)

{

printf("\n").

line=0.

}

}

}

【程序41】

题目:

学习static定义静态变量的用法

1.程序分析:

2.程序源代码:

#include""

varfunc()

{

intvar=0.

staticintstatic_var=0.

printf("\40:

varequal%d\n",var).

printf("\40:

staticvarequal%d\n",static_var).

printf("\n").

var.

static_var.

}

voidmain()

{

inti.

for(i=0.i<3.i)

varfunc().

}

【程序42】

题目:

学习使用auto定义变量的用法

1.程序分析:

2.程序源代码:

#include""

main()

{

inti,num.

num=2.

for(i=0.i<3.i)

{

printf("\40:

Thenumequal%d\n",num).

num.

}

for(i=0.i<3.i)

{

autointnum=1.

printf("\40:

Theinternalblocknumequal%d\n",num).

num.

}

}

【程序43】

/*欢迎访问CBuilder研究-*/

题目:

学习使用static的另一用法。

1.程序分析:

2.程序源代码:

#include""

main()

{

inti,num.

num=2.

for(i=0.i<3.i)

{

printf("\40:

Thenumequal%d\n",num).

num.

}

for(i=0.i<3.i)

{

staticintnum=1.

printf("\40:

Theinternalblocknumequal%d\n",num).

num.

}

}

【程序44】

题目:

学习使用external的用法。

1.程序分析:

2.程序源代码:

#include""

inta,b,c.

voidadd()

{

inta.

a=3.

c=ab.

}

voidmain()

{

a=b=4.

add().

printf("Thevalueofcisequalto%d\n",c).

}

【程序45】

题目:

学习使用register定义变量的方法。

1.程序分析:

2.程序源代码:

/*636372756E2E636F6D*/

voidmain()

{

registerinti.

inttmp=0.

for(i=1.i<=100.i)

tmp=i.

printf("Thesumis%d\n",tmp).

}

【程序46】

题目:

宏#define命令练习

(1)

1.程序分析:

2.程序源代码:

#include""

#defineTRUE1

#defineFALSE0

#defineSQ(x)(x)*(x)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1