好文档 - 专业文书写作范文服务资料分享网站

C语言编程练习题及答案

天下 分享 时间: 加入收藏 我要投稿 点赞

【程序1】 scanf(%ld,&i);

bonus1=100000*0. 1; 1、2、3、4个数字,能组成多少个互不题目:有 相同且无重复数字的三位数?都是多少? bonus2=bonus1+100000*; 程序分析:可填在百位、十位、个位的数字都是1. bonus4=bonus2+200000*; 。组成所有的排列后再去、3、41、2 bonus6=bonus4+200000*; 掉不满足条件的排列。 bonus10=bonus6+400000*; 2.程序源代码: if(i<=100000) #include \\ bonus=i*; #include \\ else if(i<=200000) main() bonus=bonus1+(i-100000)*; { else if(i<=400000) int i,j,k; bonus=bonus2+(i-200000) printf(\\ ); *;

*/for(i=1;i<5;i++) /*以下为三重循环 else if(i<=600000)

for(j=1;j<5;j++) bonus=bonus4+(i-400000)*;for (k=1;k<5;k++) { else

if(i<=1000000) 确保 if (i!=k&&i!=j&&j!=k) /*

kji、、三位互不相同*/ bonus=bonus6+(i-600000)*; printf(%d,%d,%d\\n,i,j,k); els } e

getch(); bonus=bonus10+(i-1000000)*; } printf(onus=%d,bonus);

=========================================== getch(); 】【程序2} 低题目:企业发放的奖金根据利润提成。利润(I) 10于或等于万元时,奖金可提;利润高===========================================

万元万元时,低于万元,低于102010于 【程序3】 1010%的部分按提成,高于万元的部分,可可提题目:一个整数,它加上100后是一个完全平方数,万元的 万到; 4020万之间时,高于成 再加上168又是一个完全平方数,请问该数是多 万之间时高于60405%部分,可提成;万到少?

万 10060;3@万元的部分,可提成万到1.程序分析:在10万以内判断,先将该数加上100 万元的部分,可提成之间时,高于60,高于%后再开方,再将该数加上268后再开方,如果开方后 提成,10超过万元时, 100万元的部分按 I,求应发放奖金总数?从键盘输入当月利润 的结果满足如下条件,即是结果。请看具体分析: 程序分析:请利用数轴来分界,定位。注意定义1. 时需把奖金定义成长整型。 2.程序源代码: 程序源代码:2.#include \\ #include \\#include \\ #include \\#include \\ main()main() {{

long int i; long int i,x,y,z; int

for (i=1;i<100000;i++) bonus1,bonus2,bonus4,bonus6,bonus10,bonus; { default:printf(data error);break;

为加上100后开方后 } x=sqrt(i+100); /*x 的结果*/ sum=sum+day; /*再加上某天的天数*/ 后开方168 y=sqrt(i+268); /*y为再加上 if(year@0==0||(year%4==0&&year_x0010_0!=0 */后的结果)) /*判断是不是闰年*/ 如果一 if(x*x==i+100&&y*y==i+268) /* leap=1; 个数的平方根的平方等于该数,这说明此数是完全 */平方数 else printf(\\ %ld\\n,i); leap=0;

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

sum++; } printf(It is the %dth day.,sum); =========================================== getch(); 4】【程序} 题目:输入某年某月某日,判断这一天是这一年的 第几天?===========================================【程序5】 日为例,应该先把前两个月月程序分析:以351.-天即本年的第几天,特殊然后再加上的加起来,5题目:

输入三个整数x,y,z,请把这三个数由小到 大输出。

时需考情况,闰年且输入月份大于 3 1.程序分析:我们想办法把最小的数放到x上,先 虑多加一天。将x与y进行比较,如果x>y则将x与y的值进行交换, 程序源代码:2. 然后再用x与z进行比较,如果x>z #include \\则将x与z的值进行交换,这样能使x最小。 #include \\2.程序源代码: main()#include \\ {#include \\

int day,month,year,sum,leap; main() input printf(\\

please { year,month,day\\n); int x,y,z,t; scanf(%d,%d,%d,&year,&month,&day); scanf(%d%d%d,&x,&y,&z); 先计算某月以前月份的总天 switch(month) /* 数*/ if (x>y) { {t=x;x=y;y=t;} /*交换x,y的值*/ case 1:sum=0;break; if(x>z)

case 2:sum=31;break; {t=z;z=x;x=t;} /*交换x,z的值*/ case 3:sum=59;break; if(y>z)

case 4:sum=90;break; {t=y;y=z;z=t;} /*交换z,y的值*/

case 5:sum=120;break; printf(small to big: %d %d %d\\n,x,y,z);- case 6:sum=151;break; getch(); case 7:sum=181;break; } case 8:sum=212;break;

=========================================== case 9:sum=243;break; 【程序6】 case 10:sum=273;break; 题目:用*号输出字母C的图案。 case 11:sum=304;break; 1.程序分析:可先用'*'号在纸上写出字母C,再分 行输出。 case 12:sum=334;break; 2.程序源代码: printf(\\ );

#include \\ for (i=1;i<10;i++) {#include \\

main() for(j=1;j<10;j++) { {

printf(Hello C-world!\\n); result=i*j;

printf(%d*%d=%-3d,i,j,result); printf( ****\\n);/*-3d表示左对齐,占3位*/ printf( *\\n); } printf( * \\n); printf(\\

); /*每一行后换行*/ printf( ****\\n); } getch(); getch(); }}

====================================================================================== 7】 【程序【程序c题目:输出特殊图案,请在环境中运行,看一看,9】 Very Beautiful!题目:要求输出国际象棋棋盘。 个。不同字符,图形不2561.程序分析:字符共有1.程序分析:用i控制行,j来控制列,根据i+j 一样。 的和的变化来控制输出黑方格,还是白方格。 2.程序源代码:2.程序源代码: #include \\#include \\

#include \\#include \\ main()main() {{ char a=176,b=219; int i,j; printf(%c%c%c%c%c\\n,b,a,a,a,b); for(i=0;i<8;i++)

printf(%c%c%c%c%c\\n,a,b,a,b,a); {

printf(%c%c%c%c%c\\n,a,a,b,a,a); for(j=0;j<8;j++) printf(%c%c%c%c%c\\n,a,b,a,b,a); if((i+j)%2==0)

printf(%c%c%c%c%c\\n,b,a,a,a,b); printf(%c%c,219,219);

getch(); else } printf( ); =========================================== printf(\\

); =================== } 】8【程序 getch(); 口诀。9*9题目:输出} 控制1.9行程序分析:分行与列考虑,共9i列, j行,控制列。============================================================== 程序源代码:2.【程序10】 #include \\题目:打印楼梯,同时在楼梯上方打印两个笑脸。 #include \\

main()1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 { 程序源代码:2. int i,j,result;

#include \\ ============================================================== #include \\【程序12】 main()题目:判断101-200之间有多少个素数,并输出所 {有素数。

int i,j; 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, */ printf(\\\\1\\n); /*输出两个笑脸 则表明此数不是素数,反之是素数。 for(i=1;i<11;i++) { 2.程序源代码:

for(j=1;j<=i;j++) #include \\ printf(%c%c,219,219); #include \\ printf(\\ ); #include \\ } main() getch(); {

} int m,i,k,h=0,leap=1;

100经典c程序例==11--20 :.:. .:.: printf(\\ );

经典 c程序100==11--20例 for(m=101;m<=200;m++) 11【程序】 {

个月3题目:古典问题:有一对兔子,从出生后第 k=sqrt(m+1); 起每个月都生一对兔子,小兔子长到第三个月 for(i=2;i<=k;i++) 后每个月又生一对兔子,假如兔子都不死, 问每个月的兔子总数为多少? if(m%i==0)

列数为规 序1.程分析:兔子的律 { 1,1,2,3,5,8,13,21.... leap=0; 2.程序源代码: break; #include \\ } #include \\ if(leap) main() { { printf(%-4d,m); long f1,f2; h++; int i; if(h_x0010_==0) f1=f2=1; printf(\\ ); for(i=1;i<=20;i++)

} { leap=1; printf(_x0012_ld _x0012_ld,f1,f2); } 控制输出, if(i%2==0) printf(\\ ); /*

每行四个 */printf(\\ The total is %d,h);

getch(); 前两个月加起来赋值给第三f1=f1+f2; /* */个月}

前两个月加起来赋值给第三 f2=f1+f2; /* =========================================== 个月*/【程序13】 } 题目:打印出所有的“水仙花数”,所谓“水仙花 getch();数”是指一个三位数,其各位数字立方和等于该 数 } 本身。例如:153是一个“水仙花数”,因 printf(%d=,n); 的三次方。为153=1的三次方+5的三次方+3 for(i=2;i<=n;i++) 个数,每for循环控制100-9991.程序分析:利用 while(n!=i) 个数分解出个位,十位,百位。 { 2.程序源代码: if(n%i==0) #include \\ { #include \\ printf(%d*,i); main() n=n/i; { } int i,j,k,n;

else printf('water flower'number is:); break; for(n=100;n<1000;n++) } {

printf(%d,n); i=n/100;/*分解出百位*/

getch(); */ j=n/10_x0010_;/*分解出十位} */ k=n_x0010_;/*分解出个位

=========================================== if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) 【程序15】 printf(%-5d,n);

题目:利用条件运算符的嵌套来完成此题:学习成 } 绩>=90分的同学用A表示,60-89分之间的用B表示, getch(); 60分以下的用C} 表示。

1.=========================================== 程序分析:(a>b)?a:b这是条件运算符的基本例子。 14】【程序2.程序源代码: 90,题目:将一个正整数分解质因数。例如:输入#include \\。打印出90=2*3*3*5

#include \\进行分解质因数,应先找到一个最程序分析:对n k小的质数,然后按下述步骤完成:main() 则说明分解质因数的过n(1)如果这个质数恰等于,{ 程已经结束,打印出即可。 int score; 的n,但如果(2)n<>k整除,则应打印出kk能被 n,,k除以n值,并用的商作为新的正整数你 char grade; 重复执行第一步。 printf(please input a score\\n);

重整除,则用不能被如果(3)nk的值作为k+1k, scanf(%d,&score); 复执行第一步。 grade=score>=90?'A':(score>=60?'B':'C') 2.程序源代码:;

/* zheng int is divided yinshu*/ printf(%d belongs to %c,score,grade); #include \\ getch(); #include \\}

main()=========================================== {【程序16】

int n,i;题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 printf(\\ please input a number:\\n);

1.程序分析:利用辗除法。 scanf(%d,&n); 程序源代码:2. #include \\ {

#include \\ if(c>='a'&&c<='z'||c>='A'&&c<='Z') main() letters++; { else if(c==' ')

int a,b,num1,num2,temp; space++;

else if(c>='0'&&c<='9') printf(please input two numbers:\\n); scanf(%d,%d,&num1,&num2); digit++; 交换两个 if(num1

num1上*/ others++; { } temp=num1; printf(all in all:char=%d space=%d digit=%d others=%d\\n,letters, num1=num2; space,digit,others);num2=temp; } getch(); } a=num1;b=num2;

=========================================== 0while(b!=0)/* 利用辗除法,直到b为为止 */【程序18】 {题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如temp=a%b; 2+22+222+2222+22222(此时

共有5个数相加),几个数相加有键盘控制。a=b; - b=temp; 1.程序分析:关键是计算出每一项的值。 } 2.程序源代码: printf(gongyueshu:%d\\n,a);#include \\ printf(gongbeishu:%d\\n,num1*num2/a); #include \\ getch();

main() }{ =========================================== int a,n,count=1; 17【程序】

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

printf(please input a and n\\n); 条件为输入的字符语句,while1.程序分析:利用 scanf(%d,%d,&a,&n); 不为'\\n'.

printf(a=%d,n=%d\\n,a,n);

while(count<=n) 程序源代码:2. { #include \\ tn=tn+a; #include \\ sn=sn+tn; main() a=a*10; { ++count; char c; } int letters=0,space=0,digit=0,others=0; printf(a+aa+...=%ld\\n,sn); some printf(please input characters\\n); getch(); while((c=getchar())!='\\n') }

===========================================题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 =================== 第10次落地时,共经过多少米?第10 次反弹多高? 】【程序191.程序分析:见下面注释 题目:一个数如果恰好等于它的因子之和,这个数2.程序源代码:编程 就称为“完数”。例如6=1+2+3.#include \\ 找出1000以内的所有完数。

#include \\14. 1. 程序分析:请参照程序<--上页程序main() 2.程序源代码: { #include \\

#include \\ float sn=,hn=sn/2; int n;main()

for(n=2;n<=10;n++) { { static int k[10]; sn=sn+2*hn;/*第 int i,j,n,s; n次落地时共经过的米数*/ for(j=2;j<1000;j++) hn=hn/2; /*第n次反跳高度*/ { } n=-1; printf( he total of road is %f\\n,sn); s=j;

printf( he tenth is %f meter\\n,hn); for(i=1;i

{ 1.程序分析:采取逆向思维的方法,从后往前推断。 printf(%d is a wanshu,j);2.程序源代码: for(i=0;i

main() }{ } int day,x1,x2; getch();

day=9; } x2=1; =========================================== =================== while(day>0) 【程序20】 {

x1=(x2+1)*2;/*第一天的桃子数是第2天===========================================【程序23】 桃子数加1后的2倍*/题目:打印出如下图案(菱形) x2=x1; * day--; } *** ***** printf(

he total is %d\\n,x1);******* getch();*****}

=========================================== *** *】【程序22

1.程序分析:先把图形分成两部分来看待,前四行题目:两个乒乓球队进行比赛,各出三人。甲队为一个规律,后三行一个规律,利用双重 a,b,c三人,乙队为x,y,z三人。已抽签决定 比赛名单。有人向队员打听比赛的名单。afor循环,第一层控制行,第二层控 制列。 c说他不和x比,说他不和x,z比,请编程序找出 2. 程序源代码: 三队赛手的名单。

#include \\1.程序分析:判断素数的方法:用一个数分别去除

),如果能被整除,这个数2到sqrt(#include \\ 则表明此数不是素数,反之是素数。 main()

{ 2.程序源代码: int i,j,k; #include \\ for(i=0;i<=3;i++) #include \\ { main() for(j=0;j<=2-i;j++) { printf( ); 的对手,achar i,j,k;/*i 是的对手,j是b c是的对手*/k for(k=0;k<=2*i;k++) for(i='x';i<='z';i++) printf(*);

for(j='x';j<='z';j++) printf(\\ ); { }

if(i!=j) for(i=0;i<=2;i++) for(k='x';k<='z';k++) { { for(j=0;j<=i;j++)

if(i!=k&&j!=k) printf( ); { for(k=0;k<=4-2*i;k++)

if(i!='x'&&k!='x'&&k!=' printf(*); z') printf(\\ ); is

printf(order

a--%c\\tb--%c\\tc--%c\\n,i,j,k); } } getch();

} } } =========================================== getch(); 【程序24】 },,8/513/8,,,题目:有一分数序列:2/13/25/3 项之和。20求出这个数列的前21/13... 1.程序分析:请抓住分子与分母的变化规律。 #include \\ main() 2.程序源代码:{#include \\ int i;#include \\ int fact();main() for(i=0;i<5;i++){

printf(\\ :%d!=%d\\n,i,fact(i)); int n,t,number=20; float a=2,b=1,s=0; getch(); } for(n=1;n<=number;n++)

int fact(j) {int j; s=s+a/b;{ t=a;a=a+b;b=t;/*这部分是程序的关键, */请读者猜猜t的作用 int sum; } if(j==0)

printf(sum is %\\n,s); sum=1; getch(); else } sum=j*fact(j-1);

=========================================== return sum;

】 【程序25 } 的和1+2!+3!+...+20!题目:求 =========================================== 1.程序分析:此程序只是把累加变成了累乘。 】 27【程序 2.程序源代码:个字题目:利用递归函数调用方式,将所输入的5 #include \\ 符,以相反顺序打印出来。 1.#include \\ 程序分析: 2.程序源代码:main() #include \\{ #include \\float n,s=0,t=1;

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

int i=5; t*=n;

void palin(int n); s+=t;

} printf(\\ :); palin(i); printf(+2!+3!...+20!=%e\\n,s); printf(\\ ); getch(); getch(); }

=========================================== } 】26【程序void palin(n) 题目:利用递归方法求。5! int n; {fn=fn_1*4!程序分析:递归公式:1. 程序源代码:2.char next; if(n<=1) #include \\

{ 【程序29】

题目:给一个不多于 next=getchar(); 5位的正整数,要求:一、求 它是几位数,二、逆序打印出各位数字。 printf(\\

\\0:);1. 程序分析:学会分解出每一位数,如下解释:(这 putchar(next); 里是一种简单的算法,师专数002班赵鑫提供)

} 2.程序源代码: else#include \\ {#include \\

next=getchar();main( ) palin(n-1); {

putchar(next); long a,b,c,d,e,x; } scanf(%ld,&x); } a=x/10000;/*分解出万位*/

=========================================== b=x_x0010_000/1000;/*分解出千位*/ 28【程序】 c=x_x0010_00/100;/*分解出百位*/

个人坐在一起,问第五个人多少岁?他题目:有5 d=x_x0010_0/10;/*分解出十位*/ -4个人岁数,他说比第问第4说比第个人大2岁。 e=x_x0010_;/* 分解出个位*/

if 岁。问第三个人,又说比第3个人大22人(a!=0) printf( here are

5, %ld %ld %ld %ld %ld\\n,e,d,c,b,a); 个人,说比第一个人大两岁。最后 2大两岁。问第 else if (b!=0) printf(

here are 4, %ld %ld %ld %ld\\n,e,d,c,b); 问第一个人,他说是 10岁。请问第五个人 多大? else if (c!=0)

printf( there are

3,%ld %ld %ld\\n,e,d,c);1.程序分析:利用递归的方法,递归分为回推和递 推两个阶段。要想知道第五个人岁数,需知道 else if (d!=0) printf( here are

2, %ld %ld\\n,e,d);第四人的岁数,依次类推,推到第一 人(岁),再往回推。10 else if (e!=0) printf( there are 1,%ld\\n,e);2. 程序源代码: getch(); #include \\ } #include \\

=========================================== age(n)【程序30】 int n;题目:一个5位数,判断它是不是回文数。即12321 {是回文数,个位与万位相同,十位与千位相同。 int c; 例1.程序分析:同29 if(n==1) c=10; 程序源代码:2. else c=age(n-1)+2; #include \\ return(c); #include \\ } main( ) main() { { long ge,shi,qian,wan,x; printf(%d,age(5));

scanf(%ld,&x); getch(); wan=x/10000; } qian=x_x0010_000/1000; =========================================== shi=x_x0010_0/10;

ge=x_x0010_; case 'T':printf(please input second letter\\n); 并万位个位等于 if(ge==wan&&shi==qian)/* */ if((letter=getch())=='u') 且十位等于千位 printf( huiwen\\n);- printf( uesday\\n); else if

((letter=getch())=='h') else number is not a printf(

hursday\\n); printf( his

his number is a

huiwen\\n); else printf(data error\\n); getch();

break; } 例程序经典 .:.:c100==31--40:.:. case

'W':printf(wednesday\\n);break; 100例==31--40c 经典程序 default: printf(data 】【程序31error\\n); 题目:请输入星期几的第一个字母来判断一下是星 } 期几,如果第一个字母一样,则继续 } 判断第二个字母。

C语言编程练习题及答案

【程序1】scanf(%ld,&i);bonus1=100000*0.1;1、2、3、4个数字,能组成多少个互不题目:有相同且无重复数字的三位数?都是多少?bonus2=bonus1+100000*;程序分析:可填在百位、十位、个位的数字都是1.bonus4=bonus2+200000*;。组成所有的排列后再去、3、41、2
推荐度:
点击下载文档文档为doc格式
5g7wo3qfda570pk9t8239nplx1m54t00am7
领取福利

微信扫码领取福利

微信扫码分享