关键词不能为空

当前您在: 主页 > 英语 >

最新最新版c语言经典习题100例(最全面)

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-12 21:35
tags:

-

2021年2月12日发(作者:视听语言)


1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


17


18


19


20


C


语言习题

100


例(最新整理版)



习题目 录:


(


按住


Ctrl

< br>点击可以快速跳转到对应页面


)


【程序


1




....................................... .................................................. . 12



题目:有


1



2



3


4


个数字,能组成多少个互不相同且无重复数字的三位数 ?都是多


少?



.......... .................................................. .........


12



【程序


2




....................................... .................................................. . 14



题目:企业发放的奖金根据利润提成。利润


(I)


低于或等于


10


万元时,奖金可提


10%



利润高于< /p>


10


万元



低于


20


万元时



低于


10


万元的部分按


10%


提成



高于


10


万元的部分,


可可提成


7.5%



20


万到


40

< p>
万之间时,高于


20


万元的部分,可提成


5%



40


万到


60


万之


间时高于


4 0


万元的部分,可提成


3%



60


万到


100


万之间 时,高于


60


万元的部分,可提



1.5%


,高于


100

万元时,超过


100


万元的部分按


1%


提成,从键盘输入当月利润


I


,求


应发放奖金总数?



........ .................................................


14



【程序


3



.................................................. ...............


16


题目:一个整数,它加上


100


后是一个完全平方数,再加 上


168


又是一个完全平方数,


请问该 数是多少?



...................... ...................................


16



【程序


4



.................................................. ...............


17



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



.


...................


17



【程序


5



.................................................. ...............


19


题目:输入三个整数


x,y,z


,请把这三个数由小到大输 出。



....................


19



【程序


6



.................................................. ...............


20



1


21


22


23


24


25


26


27


28


29


30


31


32


33


34


35


36


37


38


39


题目:用


*


号输出字母


C


的图案。



............................. .............


20



【程序


7



.................................................. ...............


21


题目:输出特殊图案,请在


c


环境中运行,看一看,


VeryBeautiful!


.


...........


21



【程序


8



.................................................. ...............


21


题目:输出


9*9


口诀。



.......................................... .........


21



【程序


9



.................................................. ...............


22



题目:要求输出国际象棋棋盘。



.. .........................................


22



【程序


10



.................................................. ..............


24



题目:打印楼梯,同时在楼梯上方打印两个笑脸。


...........................


24



【程序


11



.................................................. ..............


25



题目:古典问题:有一对兔子,从出生后第


3


个月起每个月都 生一对兔子,小兔子长


到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的 兔子总数为多少?


25



【程序


12



.................................................. ..............


26



题目:判断


101-200


之间有多少个素数,并输出所有素 数。



.


...................


26



【程序


13



.................................................. ..............


27



题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字


立 方和等于该数本身。例如:


153


是一个“水仙花数”,因为< /p>


153=1


的三次方+


5


的三次


方+


3


的三次方。


........................................ .................


27



【程序


14



.................................................. ..............


28



2


40


41


42


43


44


45


46


47


48


49


50


51


52


53


54


55


56


57


58


59

< br>题目:将一个正整数分解质因数。例如:输入


90,


打印 出


90=2*3*3*5




.


.........


28



【程序


15



.................................................. ..............


30



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


>=90


分的同学用


A


表示,


60-89


分之间的用


B


表示,


60


分以下的用


C


表示。



...................................


30



【程序


16



.................................................. ..............


31



题目:输入两个正整数


m



n


,求其最大公约数和最小公倍数。



................


31



【程序


17



.................................................. ..............


32



题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。


32



【程序


18



.................................................. ..............


33







s =a+aa+aaa+aaaa+aa...a



< p>




a









2+22+222+2222+22222(


此时共有


5


个数相加


)


,几个数相加有键盘控制。



.


..........


33



【程序


19



.................................................. ..............


34



题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如


6=1



2



3.


编程找出


1000


以内的所有完数。

< p>
1.


程序分析:请参照程序


<--


上页程序


14. .......


34



【程序


20



.................................................. ..............


36



题目:一球从


100


米高度自由落下,每次落地后反跳回原高 度的一半;再落下,求它


在第


10


次落 地时,共经过多少米?第


10


次反弹多高?

.........................


36



【程序


21



.................................................. ..............


37



题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃


了 一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一


3


60


61


62


63


64


65


66


67


68


69


70


71


72


73


74


75


76


77


78


79


天剩下的一半零一个。到 第


10


天早上想再吃时,见只剩下一个桃子了。求第一天共摘了


多少。



............. .................................................. ....


37



【程序


22



.................................................. ..............


38



题目:两个乒乓球队进行比赛,各出三人。甲队为


a,b,c


三人,乙队为


x,y,z


三人。


已抽签 决定比赛名单



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


a


说他不和


x

< br>比



c


说他不和


x,z


比,


请编程序找出三队赛手的名单。

< p>


................................ .............


38



【程序


23



.................................................. ..............


39



题目:打印出如下图案(菱形)


************************ ****


.


...............


39



【程序


24



.................................................. ..............


41



题目:有一分数序列:


2/1



3/ 2



5/3



8/5



13/8


< br>21/13...


求出这个数列的前


20



之和。



........ .................................................. .........


41



【程序


25



.................................................. ..............


42



题目:求


1+2!+3!+...+20!


的和



.


..................... ......................


42



【程序


26



.................................................. ..............


42



题目:利用递归方法求


5!




.


............................. .................


42



【程序


27



.................................................. ..............


44



题目:利用递归函数调用方式,将所输入的


5


个字符,以相反 顺序打印出来。



....


44



【程序


28



.................................................. ..............


46



题目:有


5


个人坐在一起,问第五个人多少岁?他说比第


4


个人大


2


岁。问 第


4


个人


岁数,他说比第


3


个人大


2


岁。问第三个人 ,又说比第


2


人大两岁。问第


2


个人,说比


4


80


81


82


83


84


85


86


87


88


89


90


91


92


93


94


95


96


97


98


99


第一个人大两岁。最后问第一个人,他说是


10


岁。请问第五个人多大?



...........


46



【程序


29



.................................................. ..............


47



题目:给一个不多于


5


位的正整数,要求:一、求它是几位数 ,二、逆序打印出各位


数字。


1.


程 序分析:学会分解出每一位数,如下解释:


(


这里是一种简单的 算法,师专



002


班赵鑫提供


)


............................. ...........................


47



【程序


30



.................................................. ..............


48



题目:一个


5


位数,判断它是不是回文数。即


12321


是回文数,个位与万位相同,十


位与千位相 同。



......................... ..................................


48



【程序


31



.................................................. ..............


49



题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继


续 判断第二个字母。



................... ....................................


49



【程序


32



.................................................. ..............


51



题目:


Pressanykeytochangecolor,hurryup!


.


.........


51



【程序


33



.................................................. ..............


52



题目:学习


gotoxy()



cl rscr()


函数


......................................


52



【程序


34



.................................................. ..............


53



题目:练习函数调用


1.


程序分析:



........... .............................


53



【程序


35



.................................................. ..............


54



题目:文本颜色设置



....... ..............................................


54



【程序


36



.................................................. ..............


55



5


100


101


102


103


104


105


106


107


108


109


110


111


112


113


114


115


116


117


118


题目:求

< p>
100


之内的素数



.. ...............................................


55



【程序


37



.................................................. ..............


56



题目:对


10


个数进行排序



.......................................... ......


56



【程序


38



.................................................. ..............


58



题目:求一个


3*3


矩阵对角线元素之和

.....................................


58



【程序


39



.................................................. ..............


59



题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。


1.


程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况, 插


入后



............. .................................................. ......


59



【程序


40



.................................................. ..............


61



题目:将一个数组逆序输出。



... ..........................................


61



【程序


51



.................................................. ..............


62



题目:学习使用按位与


&




.......................................... ......


62



【程序


52



.................................................. ..............


63



题目:学习使用按位或


|




.......................................... ......


63



【程序


53



.................................................. ..............


64



题目:学习使用按位异或


^




......................................... .....


64



【程序


54



.................................................. ..............


65



题目:取一个整数


a


从右端开始的


4



7


位。


................................


65



6


119


120


121


122


123


124


125


126


127


128


129


130


131


132


133


134


135


136


【程序


55



.................................................. ..............


66



题目:学习使用按位取反


~




......................................... .....


66



【程序


56



.................................................. ..............


66



题目:画图,学用


circle


画圆形。

........................................


66



【程序


57



.................................................. ..............


68



题目:画图,学用


line


画直线。



....................................... ...


68



【程序


58



.................................................. ..............


70



题目:画图,学用


rectangle


画方形。


.....................................


70



【程序


59



.................................................. ..............


71



题目:画图,综合例子。



..... ............................................


71



【程序


60



.................................................. ..............


74



题目:画图,综合例子。



..... ............................................


74



【程序


61



.................................................. ..............


77



题目:打印出杨辉三角形(要求打印出


10


行如下图)


.........................


77



【程序


62



.................................................. ..............


78



题目:学习


putpixel


画点。



....................................... .......


78



【程序


63



.................................................. ..............


79



题目:画椭圆


ellipse


.


......................................... ..........


79



7


137


138


139


140


141


142


143


144


145


146


147


148


149


150


151


152


153


154


155


156


【程序


64



.................................................. ..............


81



题目:利用


ellipseandrectangle


画图。


...................................


81



【程序


65



.................................................. ..............


82



题目:一个最优美的图案。



.... ...........................................


82



【程序


66



.................................................. ..............


85



题目:输入


3


个数


a,b,c


,按大小顺序输出。



................................


85



【程序


67



.................................................. ..............


86



题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。



....................................... ..................................


86



【程序


68



.................................................. ..............


89



题目:有


n


个整数,使其前面各数顺序向后移


m


个位置,最后


m


个数变成最 前面的


m


个数



................................................. ....................


89



【程序


69



.................................................. ..............


90



题目:有


n


个人围成一圈,顺序排号。从第一个人开始报数( 从


1



3


报数 )


,凡报到


3


的人退出圈子,问最后留 下的是原来第几号的那位。


1.


程序分析:



.............


90



【程序


70



.................................................. ..............


92



题目:写一个函数,求一个字符串的长度,在


main


函数中 输入字符串,并输出其长度。



.............. .................................................. .........


92



【程序


71



.................................................. ..............


93



题目:编写


input()



out put()


函数输入,输出


5


个学生的 数据记录。



.


.........


93



8


157


158


159


160


161


162


163


164


165


166


167


168


169


170


171


172


173


174


175


【程序


72



.................................................. ..............


96



题目:创建一个链表。



...... .............................................


96



【程序


73



.................................................. ..............


98



题目:反向输出一个链表。



.... ...........................................


98



【程序


74



.................................................. .............


100



题目:连接两个链表。



...... ............................................


100



【程序


75



.................................................. .............


104



题目:放松一下,算一道简单的题目。


....................................


104



【程序


76



.................................................. .............


105



题目:编写一个函数,输入


n


为偶数时,调用函数求


1/2+1/4+...+1/n,


当输入


n< /p>


为奇


数时,调用函数


1/1+1/3+. ..+1/n(


利用指针函数


)


.............................


105



【程序


77



.................................................. .............


108



题目:填空练习(指向指针的指针)


......................................


108



【程序


78



.................................................. .............


109



题目:找到年龄最大的人,并输出。请找出程序中有什么问题。



.


..............


109



【程序


79



.................................................. .............


110



题目:字符串排序。



....... .............................................


110



【程序


80



.................................................. .............


111



题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多


9


176


177


178


179


180


181


182


183


184


185


186


187


188


189


190


191


192


193


194


了一个,这只猴子把多的一个扔入海中,拿走了一份。 第二只猴子把剩下的桃子又平均


分成五份,又多了一个,它同样把多的一个扔入海中,拿 走了一份,第三、第四、第五


只猴子都是这样做的,问海滩上原来最少有多少个桃子?< /p>



.


......................


111



【程序


81



.................................................. .............


113



题目:


809*??=800*??+9*??+1


其中


??


代表的两位数


,8*??


的结果为两位数,


9*??


的结果

< br>为


3


位数。求


??


代表的两位数,及


809*??


后的结果。



..........................


113



【程序


82



.................................................. .............


114



题目:八进制转换为十进制



.... ..........................................


114



【程序


83



.................................................. .............


115



题目:求


0



7

所能组成的奇数个数。


.....................................


115



【程序


84



.................................................. .............


116



题目:一个偶数总能表示为两个素数之和。


................................


116



【程序


85



.................................................. .............


117



题目:判断一个素数能被几个


9


整除


......................................


117



【程序


86



.................................................. .............


118



题目:两个字符串连接程序



.... ..........................................


118



【程序


87



.................................................. .............


119



题目:回答结果(结构体变量传递)


......................................


119



【程序


88



.................................................. .............


121



10


195


196


197


198


199


200


201


202


203


204


205


206


207


208


209


210


211


212


213


题目:读取


7


个数(


1



50


)的整数值,每读取一个值,程序打印出该值个数的*。

< p>


................................ ........................................


121



【程序


89



.................................................. .............


122



题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,


加密规则如下:每位数字都加上


5,


然后用和除以


10


的余数代替该数字,再将第一位和第


四位交换, 第二位和第三位交换。



................. .........................


122



【程序


90



.................................................. .............


123



题目:专升本一题,读结果。



... .........................................


123



【程序


91



.................................................. .............


124



题目:时间函数举例


1


.

< p>
............................................ ......


124



【程序


92



.................................................. .............


125



题目:时间函数举例


2


.

< p>
............................................ ......


125



【程序


93



.................................................. .............


126



题目:时间函数举例


3


.

< p>
............................................ ......


126



【程序


94



.................................................. .............


127



题目:时间函数举例


4,


一个猜数游戏,判断一个人反应快慢 。


(版主初学时编的)



127



【程序


95



.................................................. .............


129



题目:家庭财务管理小程序



.... ..........................................


129



【程序


96



.................................................. .............


138



11


214


215


216


217


218


219


220


221


222


223


224


225


226


227


228


229


230


231


232


题目:计算字符串中子串出现的次数


......................................


138



【程序


97



.................................................. .............


140



题目:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个


#


为止。



..


140



【程序


98



.................................................. .............


141



题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁


盘 文件“


test


”中保存。输入的字符串以!结束。

< p>
............................


141



【程序


99



.................................................. .............


142



题目


:


有两个磁盘文件


A

< p>


B,


各存放一行字母


,


要求把这两个文件中的信息合并


(


按字 母


顺序排列


),


输出到一个新文件


C



.


.... .....................................


142



【程序


100



...................... ........................................


145



题目


:


有五个学生


,


每个学生有

< p>
3


门课的成绩


,


从键盘输 入以上数据


(


包括学生号


,

< p>
姓名


,


三门课成绩


),< /p>


计算出平均成绩


,


况原有的数据和计算出 的平均分数存放在磁盘文件




.


......................................... ......................


145


< /p>


标准


C


语言头文件



..................................... .....................


147




【程序


1




题目:有


1



2



3



4< /p>


个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?



1.


程序分析:可填在百位、十位、个位的数字都是


1



2


< p>
3



4


。组成所有的排列 后再去









掉不满足条件的排列。



12


233


234


235


236


2.


程序源代码:



#include



main(void)


237



238


{


239



240



241



242



243



244



245



246



247



248



249



250



251



int x,y,z,sum;


sum=0;


printf(


正在计 算中


n


printf(


for(x=1 ;x<5;++x)



for(y=1;y<5;++y)




for(z=1;z<5;++z)




{





if(x!=y&&x!=z&&y!=z)





{





printf(


13


252


253


254


255


256


257


258


259


260


261


262


263


264


265


266


267


268


269


270


271







}











}


++sum;


}


printf(


==================== ==========================================


【程序


2





题目:企业发放的奖金根据利润提成。利润

< br>(I)


低于或等于


10


万元时, 奖金可提


10%


;利润


高于

< p>
10


万元,低于


20


万元 时,低于


10


万元的部分按


10%


提成,高于


10


万元的部分,可可提



7.5%



20< /p>


万到


40


万之间时,高于


20


万元的部分,可提成


5%



40


万到


60


万之间时高于


40


万元的部分,可提成


3%



60


万到

100


万之间时,高于


60


万元的 部分,可提成


1.5%


,高于


100< /p>


万元时,超过


100


万元的部分按


1%


提成,从键盘输入当月利润


I

< p>
,求应发放奖金总数?



1.

程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。









2.


程序源代码:



main()


{


long int i;


int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;


scanf(


14


272


273


274


275


276


277


278


279


280


281


282


283


284


285


286


287


288


289


bonus1=10 0000*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;















else
















bonus=bonus10+(i-1000000)*0.01;


printf(


}


15


290


291


292


293


294


295


296


297


298


299


300


301


302


303


304


305


306


307


308


309


< br>=============================================== ===============


【程序


3





题目:一个整数,它加上


100


后是一个完全平方数,再加上


168


又是一 个完全平方数,请问


该数是多少?



1 .


程序分析:



10

< br>万以内判断,


先将该数加上


100


后再开方,


再将该数加上


268


后再 开方,


如果开方后









的结果满足如下条件,即是结果。请看具体分析:



2.


程序源代码:



#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(



}


16


310


311


312


313


314


315


316


317


318


319


320


321


322


323


324


325


326


327


328


}


========================= =====================================


【程序


4





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


< /p>


1.


程序分析:以


3


5


日为例,应该先把前两个月的加起来,然后再加上


5


天即本年的第


几天,特殊









情况, 闰年且输入月份大于


3


时需考虑多加一天。


2.


程序源代码:



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;


17


329


330


331


332


333


334


335


336


337


338


339


340


341


342


343


344


345


346



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%400==0||(year%4==0& &year%100!=0))/*


判断是不是闰年


*/




leap=1;



else




leap=0;


if(leap ==1&&month>2)/*


如果是闰年且月份大于


2,< /p>


总天数应该加一天


*/


sum++;


printf(


18


347


348


349


350


351


352


353


354


355


356


357


358


359


360


361


362


363


364


365

< p>
============================================ ==================


【程序


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(


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(


19


366


367


368


369


370


371


372


373


374


375


376


377


378


379


380


381


}


========================= =====================================


【程序


6





题目:用


*


号输出字母


C


的图案。



1.


程序分析:可先用


'*'


号在纸上写出字母


C


,再分行输出。



2.


程序源代码:



#include


main()


{


printf(


printf(


printf(


printf(


pri ntf(


}


===================== =========================================


20


382


383


384


385


386


387


388


389


390


391


392


393


394


395


396


397


398


399


【程序


7





题目:输出特殊图案,请在


c


环境中运行,看一看,


VeryBeautiful!


1.


程序分析:字符共有


256

个。不同字符,图形不一样。









2.


程序源代码:



#include


main()


{


char a=176,b=219;


printf(


printf(


printf(


printf(


printf(


===== ================================================== =======


【程序


8





题目:输出


9*9

< br>口诀。



1.


程序分析:分行与 列考虑,共


9



9

列,


i


控制行,


j


控制列。



2.


程序源代码:



21


400


401


402


403


404


405


406


407


408


409


410


411


412


413


414


415


416


417


418


#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(


每一行后换行


*/




}


}


======================================= =======================


【程序


9





题目:要求输出国际象棋棋盘。


< /p>


1.


程序分析:用


i

控制行,


j


来控制列,根据


i+j


的和的变化来控制输出黑方格,还是白方


格。

< br>


22


419


420


421


422


423


424


425


426


427


428


429


430


431


432


433


434


2.


程序源代码:



#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(



}


}


=========== ================================================== =


23


435


436


437


【程序


10





题目:打印楼梯,同时在楼梯上方打印两个笑脸。


< p>
1.


程序分析:用


i


控制 行,


j


来控制列,


j

< br>根据


i


的变化来控制输出黑方格的个数。



438


2.


程序源代码:



439


#include


440


main()


441


{


442


int i,j;


443


printf(


输出两个笑脸


*/


444


for(i=1;i<11;i++)


445



{


446



for(j=1;j<=i;j++)


447




printf(


448



printf(


449



}


450


}


451



452



453



24


454


455


456


457


458


459


460


461


462


463


464


465


466


467


468


469


470


471


【程序


11





题目:古典问题:有一对兔子,从出生后第

< br>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(





if(i%2==0) printf(


控制输出,每行四个


*/





f1=f1+f2; /*


前两个月加起来赋值给第三个月


*/





f2=f1+f2; /*


前两个月加起来赋值给第三个月


*/



}


}


================================================= =============


25


472


473


474


475


476


477


478


479


480


481


482


483


484


485


486


487


488


489


【程序


12





题目:判断


101-200


之间有多少个素数,并输出所有素数。



1.< /p>


程序分析:判断素数的方法:用一个数分别去除


2



sqrt(


这个数


)


,如果能被整除,









则表明此数不是素数,反之是素数。









2.


程序源代码:



#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(










if(h%10==0)










printf(


26


490


491


492


493


494


495


496


497


498


499


500


501


502


503


504


505


506


507


508









}





leap=1;




}



printf(


}


======= ================================================== =====


【程序


13





题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一 个三位数,其各位数字立方和


等于该数本身。例如:


153


是一个“水仙花数”,因为


153=1


的三 次方+


5


的三次方+


3


的三


次方。



1.

< p>
程序分析:利用


for


循环控制

< br>100-999


个数,每个数分解出个位,十位,百位。



2.


程序源代码:



main()


{


int i,j,k,n;


printf(



for(n=100;n<1000;n++)



{




i=n/100;/*


分解出百位


*/


27


509


510


511


512


513


514


515


516


517


518


519


520


521


522


523


524


525


526


527




j=n/10%10;/*


分解出十 位


*/




k=n%10;/*


分解出个位


*/




if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)





{





printf(





}



}


printf(


}


======= ================================================== =====


【程序


14





题目:将一个正整数分解质因数。例如:输入


90,


打印出


90=2*3*3*5

< br>。




程序分析:对


n


进行分解质因数,应先找到一个最小的质数


k


,然后按下述步骤完成:



(1)


如果这个质数恰等于


n


,则说明分解质 因数的过程已经结束,打印出即可。



(2)


如果


n<>k


,但


n


能被


k


整除,则应打印出


k


的值,并用


n


除以


k


的商


,


作为新的正整数



n,



重复执行第一步。



(3)


如果


n


不能被


k


整除,则用


k+1


作为


k


的值


,


重复执行第一步。



28


528


529


530


531


532


533


534


535


536


537


538


539


540


541


542


543


544


545


546



2.


程序源代码:



/* zheng int is divided yinshu*/


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;


29


547


548


549


550


551


552


553


554


555


556


557


558


559


560


561


562


563


564


565




}


}


printf(


===================== =========================================


【程序


15





题目:


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


学习成绩


>=90


分的同学用< /p>


A


表示,


60-89

分之间


的用


B


表示,


60


分以下的用


C


表示。< /p>



1.


程序分析:


(a>b)?a:b


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



2.


程序源代码:



main()


{



int score;



char grade;



printf(



scanf(



grade=scor e>=90?'A':(score>=60?'B':'C');



printf(


}


======= ================================================== =====


30


566


567


568


569


570


571


572


573


574


575


576


577


578


579


580


581


582


583


584


【程序


16





题目:输入两个正整数


m

< p>


n


,求其最大公约数和最小公倍数。

< p>


1.


程序分析:利用辗除法。




2.


程序源代码:



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;


31


585


586


587


588


589


590


591


592


593


594


595


596


597


598


599


600


601


602


603




b=temp;



}


printf(


printf(


}


======================================= =======================


【程序


17





题目:输入一行字符,分别统计出其中英文字母、空格、数字 和其它字符的个数。



1.


程序分析: 利用


while


语句


,


条件为输入的字符不为


'n'.









2.


程序源代码:



#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')


32


604


605


606


607


608


609


610


611


612


613


614


615


616


617


618


619


620


621


622




letters++;



else if(c==' ')




space++;





else if(c>='0'&&c<='9')









digit++;







else









others++;


}


printf(


space,digit,others);


}


========================= =====================================


【程序


18





题目:



s =a+aa+aaa+aaaa+aa...a


的值,


其中


a


是一个数字。


例如


2+22+222+2222+22222(



时共有


5


个数相加


)


,几个 数相加有键盘控制。



1.


程序分析: 关键是计算出每一项的值。



2.


程序源代码:



main()


{


33


623


624


625


626


627


628


629


630


631


632


633


634


635


636


637


638


639


640


641



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(


}


======= ================================================== =====


【程序


19





题目:一个数如果恰好等于它的因子之和,这个数就称为“完 数”。例如


6=1



2



3.


编程


找出


1000


以内的所有完数。


1.

< br>程序分析:请参照程序


<--


上页程序

< br>14.


2.


程序源代码:



34


642


main()


643


{


644


static int k[10];


645


int i,j,n,s;


646


for(j=2;j<1000;j++)


647



{


648



n=-1;


649



s=j;


650




for(i=1;i



{


651





if((j%i)==0)


652





{


n++;


653






s=s-i;


654






k[n]=i;


655





}


656




}


657



if(s==0)


658



{


659



printf(


35


660


661


662


663


664


665


666


667


668


669


670


671


672


673


674


675


676


677


678



for(i=0;i


printf(



printf(



}


}


}


=========== ================================================== =


【程序


20





题目:一球从


100


米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第


10


次落地时,共经过多少米?第


10


次反弹多 高?



1.


程序分析:见下面注释



2.


程序源代码:



main()


{


float sn=100.0,hn=sn/2;


int n;


for(n=2;n<=10;n++)



{




s n=sn+2*hn;/*



n


次落地 时共经过的米数


*/




hn=hn/2; /*



n


次反跳高度


*/


36


679


680


681


682


683


684


685


686


687


688


689


690


691


692


693


694


695


696


697


698



}


printf(


printf(


}




【程序


21





题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了 一半,还不瘾,又多吃了一个


第二天早上又将剩下的桃子吃掉一半,

又多吃了一个。


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


零一 个。到第


10


天早上想再吃时,见只剩下一个桃子了。求第一天 共摘了多少。



1.


程序分析:采取逆 向思维的方法,从后往前推断。



2.


程序源代码:



main()


{


int day,x1,x2;


day=9;


x2=1;


while(day>0)



{x 1=(x2+1)*2;/*


第一天的桃子数是第


2

< p>
天桃子数加


1


后的


2



*/



x2=x1;


37


699


700


701


702


703


704


705


706


707


708


709


710


711


712


713


714


715


716


717



day--;



}


printf(


}


=========================================== ===================


【程序


22





题目:两个乒乓球队进行比赛,各出三人。甲队为

< p>
a,b,c


三人,乙队为


x,y,z


三人。已抽签


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

< br>a


说他不和


x


比,


c


说他不和


x,z


比,请编 程序


找出三队赛手的名单。



1.


程序分析:判断素数的方法:用一个数分别去除


2

< br>到


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)


38


718


719


720


721


722


723


724


725


726


727


728


729


730


731


732


733


734


735




for(k='x';k<='z';k++)




{ if(i!=k&&j!=k)





{ if(i!='x'&&k!='x'&&k!='z')





printf(





}




}



}


}


========================= =====================================


【程序


23





题目:打印出如下图案(菱形)


** **************************


1.


程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重









for


循 环,第一层控制行,第二层控制列。



2.


程序源代码:



main()


{


int i,j,k;


for(i=0;i<=3;i++)


39


736


737


738


739


740


741


742


743


744


745


746


747


748


749


750


751


752



{



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(



}


}


========================= =====================================


40


753


754


755


756


757


758


759


760


761


762


763


764


765


766


767


768


【程序


24





题目:有一分数序列:


2/1



3/2



5/3< /p>



8/5



13 /8



21/13...


求出这个数列 的前


20


项之和。


< br>1.


程序分析:请抓住分子与分母的变化规律。



2.


程序源代码:



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(


}


======= ================================================== =====


41


769


770


771


772


773


774


775


776


777


778


779


780


781


782


783


784


785


786


【程序


25





题目:求


1+2!+3!+...+ 20!


的和



1.

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



2.


程序源代码:



main()


{


float n,s=0,t=1;


for(n=1;n<=20;n++)



{



t*=n;



s+=t;



}


printf(


}


======= ================================================== =====


【程序


26





题目:利用递归方法求


5!




1.


程序分析:递 归公式:


fn=fn_1*4!


42


787


2.


程序源代码:



788


#include


789


main()


790


{


791


int i;


792


int fact();


793


for(i=0;i<5;i++)


794



printf(


795


}


796


int fact(j)


797


int j;


798


{


799


int sum;


800


if(j==0)


801



sum=1;


802


else


803



sum=j*fact(j-1);


804


return sum;


43


805


806


807


808


}


========== ================================================== ==


【程序


27





题目:利用递归函数调用方式,将所输入的

< br>5


个字符,以相反顺序打印出来。



809


1.


程序分析:



810


2.


程序源代码:



811


#include


812


main()


813


{


814


int i=5;


815


void palin(int n);


816


printf(


817


palin(i);


818


printf(


819


}


820


void palin(n)


821


int n;


822


{


44


823


824


825


826


827


828


829


830


831


832


833


834


835


836


837


char next;


if(n<=1)



{



next=getchar();



printf(



putchar(next);



}


else



{



next=getchar();



palin(n-1);



putchar(next);



}


}


=========== ================================================== =


45


838


839


840


841


842


843


844


845


846


847


848


849


850


851


852


853


854


855


856


【程序


28





题目:有


5


个人坐在一起,问第五个人多少岁?他说比第


4


个人大


2


岁。问第


4


个人岁数 ,


他说比第


3


个人大

< br>2


岁。问第三个人,又说比第


2


人大两岁。问第


2


个人,说比第一个人大两

岁。最后问第一个人,他说是


10


岁。请问第五个人多大?



1.


程序分析:利用递归的方法,递 归分为回推和递推两个阶段。要想知道第五个人岁数,


需知道









第四人的岁数,依次类推,推到第 一人(


10


岁)


,再往回推。



2.


程序源代码:



age(n)


int n;


{


int c;


if(n==1) c=10;


else c=age(n-1)+2;


return?;



}


main()


{ printf(


}


46


857


858


859


860


861


862


863


864


865


866


867


868


869


870


871


872


873


874


875


======================== ======================================


【程序


29





题目:给一个不多于


5


位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。


1. < /p>


程序分析:学会分解出每一位数,如下解释:


(

< br>这里是一种简单的算法,师专数


002


班赵鑫

< p>
提供


)


2.


程序源代码:



main( )


{


long a,b,c,d,e,x;


scanf(


a=x/1000 0;/*


分解出万位


*/


b=x% 10000/1000;/*


分解出千位


*/


c=x%1000/100;/*


分解出百位


*/


d=x%100/10;/*


分解出十位


*/


e=x%10;/*


分解出个位


*/


if (a!=0) printf(


else if (b!=0) printf(




else if (c!=0) printf(






else if (d!=0) printf(


47


876


877


878


879


880


881


882


883


884


885


886


887


888


889


890


891


892


893


894








else if (e!=0) printf(


}


========================================== ====================


【程序


30





题目:一个


5


位数,判断它是不是回文数。即


12321


是回文数,个位与 万位相同,十位与千


位相同。



1.< /p>


程序分析:同


29



2.


程序源代码:



main( )


{


long ge,shi,qian,wan,x;


scanf(


wan=x/10000;


qian=x%10000/1000;


shi=x%100/10;


ge=x%10;


if (ge==wan&&shi==qian)/*


个位等 于万位并且十位等于千位


*/



printf(


else


48


895


896


897


898


899


900


901


902


903


904


905


906


907


908


909


910


911


912


913


914



printf(


}




【程序


31





题目:


请输入星期几的第一个字母来 判断一下是星期几,


如果第一个字母一样,


则继续判断


第二个字母。



1.


程 序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或


if

< p>
语句判断


第二个字母。



2.


程序源代码:



#include


void main()


{


char letter;


printf(


while ((letter=getch( ))!='Y')/*


当所按字母为


Y


时才结束


*/


{ switch (letter)


{case 'S':printf(







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








printf(


49


915


916


917


918


919


920


921


922


923


924


925


926


927


928


929


930


931


932







else if ((letter=getch())=='u')











printf(









else printf(







break;


case 'F':printf(


case 'M':printf(


case 'T':printf(







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








printf(







else if ((letter=getch())=='h')











printf(









else printf(







break;


case 'W':printf(


default: printf(




}



}


}


50

-


-


-


-


-


-


-


-



本文更新与2021-02-12 21:35,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/645985.html

最新最新版c语言经典习题100例(最全面)的相关文章