1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > c语言课外作业答案 c语言程序设计课后习题答案

c语言课外作业答案 c语言程序设计课后习题答案

时间:2019-10-15 14:52:02

相关推荐

c语言课外作业答案 c语言程序设计课后习题答案

课后作业是为巩固学习效果而安排的作业,是课堂教学过程中的非常重要的组成部分,是巩固新授知识,形成技能技巧,培养良好的思维品质,发展学生智力的重要途径,是课堂教学过程中不可跨越的一环。今天小编分享了,一起来学习。

例1、求100到999之间的所有水仙花数。

#include

void main***void***

{

int n,b,s,g;

for***n=100;n<=999;n++***{

b = n/100;

s = ***n-b*100***/10;

g = ***n%100***%10;

if*** b*b*b+s*s*s+g*g*g == n***printf***"%d\n",n***;

}

}

例2、求两个整数的最大公约数和最小公倍数

gcd***x,y*** = gcd***x, x% y ***

lcm***x,y*** =***x×y***/gcd***x,y***

#include

void main***void***

{

int x,y,r,n,gcd,lcm;

scanf***"%d%d",&x,&y***;

n = x*y;

r=x%y;

gcd=y;

while***r!=0***

{

x=y;

y=r;

r=x%y;

gcd=y;

}

lcm = n/gcd;

printf***"gcd=%d lcm=%d\n",gcd,lcm***;

}

例3、将一张面值是100元的钱等值转换为5元、1元和0.5元的零钞,要求每种零钞至少一张,求所有的兑换方式。

#include

void main***void***

{

int i,j,k;

for***i=1;i<=20;i++***{

for***j=1;j<=100;j++***{

for***k=1;k<=200;k++***{

if*** i*5+j+0.5*k == 100 ***

printf***"%d %d %d\n",i,j,k***;

}

}

}

}

例4、求爱因斯坦数学问题:有一条长台阶,若每步跨2阶,则最后剩余1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶,则最后剩5阶,若每步跨7阶,则最后正好一阶不剩。求台阶长度。

#include

void main***void***

{

int n;

n=7;

while***1***{

if*** ***n%2==1*** && ***n%3==2*** &&

***n%5==4*** && ***n%6==5*** ***break;

n=n+7;

}

printf***"%d\n",n***;

}

例5、验证歌德巴赫猜想***任意一个大于6的偶数都可以分解为两个素数之和***,验证范围是6~2000的偶数。

#include

#include

void main***void***{

int n,i,k1,k2;

int isPrimeFlag1,isPrimeFlag2;

for***n=6;n<=100;n+=2***{

for***k1=3;k1

isPrimeFlag1=1; //假设是素数

for***i=3;i<=sqrt***k1***;i+=2***{

if***k1%i==0***{isPrimeFlag1=0;break;}

}

if*** isPrimeFlag1==0 ***continue;

k2=n-k1;

isPrimeFlag2=1; //假设k2是素数

for***i=3;i<=sqrt***k2***;i+=2***{

if***k2%i==0***{isPrimeFlag2=0;break;}

}

if***isPrimeFlag1 && isPrimeFlag2 ***{

printf***"%d=%d+%d\n",n,k1,k2***;

break;

}

}

}

}

例6、已知一正整数递增等差数列,前5项的和是25,前5项的积是945,根据上述条件,输出该数列的前10项。

#include

void main***void***

{

int a,d,i,s,r,x;

for***a=1;a<5;a++***{

for***d=1;d<5;d++***{

s=0; r=1;

for***i=0;i<5;i++***{

x=a+d*i; s=s+x; r=r*x;

}

if***s==25 && r==945 ***goto loop_exit;

}

}

loop_exit:

for***i=0;i<19;i++***{

x=a+d*i; printf***"%d\n",x***;

}

}

例7、A、B、C、D和E合伙捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方休息。日上三竿,A第一个醒来,他将鱼分为五份,把多余的一条扔掉,拿走自己的一份。B第二个醒来,也将鱼分为五份,把多余的一条扔掉,拿走自己的一份。C、D、E依次醒来,也按同样的方法分鱼。求他们合伙至少捕了多少鱼。

#include

void main***void***

{

int zs,n,i,flag;

zs=6;

while***1***{

flag=1;n=zs;

for***i=0;i<5;i++***{

if*** n%5 !=1 ***{flag=0;break;}

n=n-***n-1***/5;

}

if***flag==1***break;

n = ++zs;

}

printf***"%d\n",zs***;

}

例8、一辆卡车违反交通规则,撞人逃跑。现场有三个目击证人,但没有记住车号,只记下一些车号的特征。甲说:牌照的前两位数字相同;乙说:牌照的后两位数字是相同的;丙说:四位的车号刚好是一个整数的平方。根据上述线索求车号。

#include

#include

void main***void***

{

int n,x,k1,k2,k3,k4;

for***n=1000;n<=9999;n++***{

x=***int***sqrt***n***;

if***x*x != n***continue;

k1 = n/1000;

k2 = ***n-k1*1000***/100;

k3 = ***n-k1*1000-k2*100***/10;

k4 = ***n-k1*1000-k2*100-k3*10***;

if***k1==k2 && k3==k4 ***printf***"%d\n",n***;

}

}

例9、某数组有20个元素,编程序将该数组中的所有元素逆序存储并输出。即用第一元素和最后一个元素对调,第二和最后一个对调。

#include

#include

void main***void***

{

int a[20],i,j,t;

for***i=0;i<20;i++***a[i]=i+1;

for***i=0,j=19;i

t=a[i];a[i]=a[j];a[j]=t;

}

for***i=0;i<20;i++***printf***"%d\n",a[i]***;

}

例10、编程序,输入一个十进制数,将其转换为二进制后存储到一个字符数组中。

#include

#include

void main***void***{

int x,r,i=0,j;

char a[100]={0},t;

scanf***"%d",&x***;

while***1***{

r=x%2; a[i++]=48+r; x=x/2;

if***x==0***break;

}

for***i=0,j=strlen***a***-1;i

t=a[i];a[i]=a[j];a[j]=t;

}

printf***"%s\n",a***;

}

例11、编程序求二维数组中最小元素所在的行和列。

#include

#include

#include

void main***void***

{

int a[4][5],i,j,max,row,col;

srand*** ***unsigned***time*** NULL *** ***;

for***i=0;i<4;i++ ***

for***j=0;j<5;j++***a[i][j]=rand******;

max=a[0][0];row=0;col=0;

for***i=0;i<4;i++***{

for***j=0;j<5;j++***{

if***max>a[i][j]***{max=a[i][j];row=i;col=j;}

}

}

printf***"i=%d j=%d\,",i,j***;

}

例12、编程产生3×4的矩阵A,并输出他经过行列互换后的矩阵B。

#include

#include

#include

void main***void***

{

int a[3][4],b[4][3],i,j;

srand*** ***unsigned***time*** NULL *** ***;

for***i=0;i<3;i++ ***

for***j=0;j<4;j++***a[i][j]=rand******;

for***i=0;i<3;i++***{

for***j=0;j<4;j++***{

b[j][i]=a[i][j];

}

}

for***i=0;i<3;i++***{

printf***"\n"***;

for***j=0;j<4;j++***{

printf***"%6d",a[i][j]***;

}

}

printf***"\n"***;

for***i=0;i<4;i++***{

printf***"\n"***;

for***j=0;j<3;j++***printf***"%6d",b[i][j]***;

}

}

例13、不使用字符串比较函数strcmp,实现两个字符串的比较。

#include

#include

void main******{

char s1[300], s2[300];

int result, i=0;

scanf***"%s%s",s1, s2 ***;

while*** s1[i] && s2[i] && s1[i] == s2[i] *** i++;

result = s1[i]-s2[i];

if *** result == 0 *** printf***" s1等于s2 "***;

else if*** result > 0 *** printf***" s1大于s2 "***;

else printf***" s1小于s2 "***;

}

例14、判断字符串s1中是否包含字符串s2。

#include

#include

void main***void***{

char s1[100],s2[100];

int i,j,len,flag;

gets***s1***;gets***s2***;

len = strlen***s2***;

for***i=0;i<=strlen***s1***-len;i++***{

flag=1;

for***j=0;j

if*** s1[i+j]!=s2[j] ***{flag=0;break;}

}

}

if***flag==1***printf***"包含!\n"***;

else printf***"不包含!\n"***;

}

以上是小编整理了,有帮助到你吗?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。