数字操作.docx

上传人:b****8 文档编号:28034131 上传时间:2023-07-07 格式:DOCX 页数:83 大小:30.43KB
下载 相关 举报
数字操作.docx_第1页
第1页 / 共83页
数字操作.docx_第2页
第2页 / 共83页
数字操作.docx_第3页
第3页 / 共83页
数字操作.docx_第4页
第4页 / 共83页
数字操作.docx_第5页
第5页 / 共83页
点击查看更多>>
下载资源
资源描述

数字操作.docx

《数字操作.docx》由会员分享,可在线阅读,更多相关《数字操作.docx(83页珍藏版)》请在冰豆网上搜索。

数字操作.docx

数字操作

第40题(10.0分)题号:

473

功能:

输出1到100之间每位数的乘积大于每位数的和的数。

例如:

数字26,数位上数字的乘积12大于数字之和8。

main()

{

intn,k=1,s=0,m;

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

{

k=1;

s=0;

/***********SPACE***********/

【?

】;

/***********SPACE***********/

while(【?

】)

{

k*=m%10;

s+=m%10;

/***********SPACE***********/

【?

】;

}

if(k>s)

printf("%d",n);

}

}

答案:

1).m=n

2).m>0或0

3).m=m/10或m/=10

 

第41题(10.0分)题号:

32

功能:

计算并输出500以内最大的10个能被13或17整除的自然数之和。

#include

#include

/***********SPACE***********/

intfun(【?

】)

{

intm=0,mc=0,j,n;

/***********SPACE***********/

while(k>=2&&【?

】)

{

/***********SPACE***********/

if(k%13==0||【?

】)

{

m=m+k;

mc++;

}

k--;

}

/***********SPACE***********/

【?

】;

}

main()

{

clrscr();

printf("%d\n",fun(500));

}

答案:

1).intk

2).mc<10或10>mc或mc<=9或9>=mc

3).k%17==0或!

(k%17)或k/17*17==k

4).returnm或return(m)

 

第57题(10.0分)题号:

14

功能:

输出100到1000之间的各位数字之和能被15整除的所有数,

输出时每10个一行。

main()

{

intm,n,k,i=0;

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

{

/***********SPACE***********/

【?

】;

n=m;

do

{

/***********SPACE***********/

k=k+【?

】;

n=n/10;

}

/***********SPACE***********/

【?

】;

if(k%15==0)

{

printf("%5d",m);i++;

/***********SPACE***********/

if(i%10==0)【?

】;

}

}

}

答案:

1).k=0

2).n%10或n-n/10*10或n-10*(n/10)

3).while(n>0)或while(0

=0)或while(0!

=n)

4).printf("\n")

 

第52题(10.0分)题号:

441

功能:

从低位开始取出长整型变量s中奇数位上的数,依次构成一

个新数放在t中。

#include

#include

voidfun(longs,long*t)

{

longsl=10;

s/=10;

/***********SPACE***********/

*t=s【?

】10;

while(s>0)

{

/***********SPACE***********/

s=【?

】;

/***********SPACE***********/

*t=s%10*sl【?

】;

/***********SPACE***********/

sl=sl【?

】10;

}

}

main()

{longs,t;

clrscr();

printf("\nPleaseenters:

");scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:

%ld\n",t);

}

答案:

1).%

2).s/100

3).+*t

4).*

第54题(10.0分)题号:

8

功能:

以每行5个数来输出300以内能被7或17整除的偶数,并求出

其和。

#include

#include

main()

{

inti,n,sum;

sum=0;

/***********SPACE***********/

【?

】;

/***********SPACE***********/

for(i=1;【?

】;i++)

/***********SPACE***********/

if(【?

】)

if(i%2==0)

{

sum=sum+i;

n++;

printf("%6d",i);

/***********SPACE***********/

if(【?

】)

printf("\n");

}

printf("\ntotal=%d",sum);

}

答案:

1).n=0

2).i<=300或i<300或300>=i或300>i

3).i%7==0||i%17==0或!

(i%7)||!

(i%17)或!

(i%17)||!

(i%7)或!

(i%7&&i%17)

4).n%5==0或!

(n%5)或n/5*5==n

 

第72题(10.0分)题号:

478

功能:

如果整数A的全部因子(包括1,不包括A本身)之和等

于B;且整数B的全部因子(包括1,不包括B本身)

之和等于A,则将整数A和B称为亲密数。

求3000以内

的全部亲密数。

#include

#include

main()

{

inta,i,b,n;

printf("Friendly-numberspairsamllerthan3000:

\n");

for(a=1;a<3000;a++)

{

for(b=0,i=1;i<=a/2;i++)

/***********SPACE***********/

if(!

(a%i))【?

】;

for(n=0,i=1;i<=b/2;i++)

/***********SPACE***********/

if(!

(b%i))【?

】;

/***********SPACE***********/

if(【?

】&&a

printf("%4d~%4d\n",a,b);

}

}

答案:

1).b+=i或b=b+i

2).n+=i或n=n+i

3).n==a

 

第84题(10.0分)题号:

477

功能:

编写程序,输出1000以内的所有完数及其因子。

说明:

所谓完数是指一个整数的值等于它的因子之和。

例如“6的因子是1、2、3,而6=1+2+3,故6是

一个完数。

#include

main()

{

inti,j,m,s,k,a[100];

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

{

m=i;s=0;k=0;

for(j=1;j

/***********SPACE***********/

if(【?

】)

{

s=s+j;

/***********SPACE***********/

【?

】=j;

}

if(s!

=0&&s==m)

{

/***********SPACE***********/

for(j=0;【?

】;j++)

printf("%4d",a[j]);

printf("=%4d\n",i);

}

}

}

答案:

1).m%j==0

2).a[k++]

3).jj

 

第97题(10.0分)题号:

442

功能:

将长整型数中每一位上为奇数的数依次取出,构成一个新数

放在t中。

高位仍在高位,低位仍在低位。

#include

#include

voidfun(longs,long*t)

{

intd;

longsl=1;

/***********SPACE***********/

【?

】=0;

while(s>0)

{

/***********SPACE***********/

d=【?

】;

if(d%2)

{

/***********SPACE***********/

*t=【?

】+*t;

/***********SPACE***********/

sl【?

】10;

}

s/=10;

}

}

main()

{

longs,t;

clrscr();

printf("\nPleaseenters:

");scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:

%ld\n",t);

}

答案:

1).*t

2).s%10

3).d*sl或sl*d

4).*=或=s*

 

第108题(10.0分)题号:

28

功能:

将十进制数转换成十六进制数。

#include"stdio.h"

#include"string.h"

main()

{

inta,i;

chars[20];

printf("inputainteger:

\n");

scanf("%d",&a);

c10_16(s,a);

/***********SPACE***********/

for(【?

】;i>=0;i--)

printf("%c",s[i]);

printf("\n");

}

c10_16(charp[],intb)

{

intj,i=0;

/***********SPACE***********/

while(【?

】)

{

j=b%16;

if(j>=0&&j<=9)

/***********SPACE***********/

【?

】;

elsep[i]=j+55;

b=b/16;

i++;

}

/***********SPACE***********/

【?

】;

}

答案:

1).i=strlen(s)-1或i=-1+strlen(s)

2).b>0或0

=0或0!

=b或b

3).p[i]=j+'0'或p[i]=j+48或*(p+i)=j+'0'或*(p+i)=j+48

4).p[i]='\0'或p[i]=0或p[i]=NULL或*(p+i)='\0'或*(p+i)=0或*(p+i)=NULL

 

第111题(10.0分)题号:

24

功能:

对任一整数N(N≠0),它都可以分解成1(或-1)和一些质数(素

数)因子的形式。

例如:

当N=150时,可分解成1×2×3×5×5;

当N=-150时,可分解为-1×2×3×5×5。

下边程序能实现这种分解过程。

当N=150,输出以下分解结

果:

N=1*2*3*5*5

main()

{

intn,i,j,r;

scanf("%d",&n);

if(n==0)

{

printf("dataerror\n");

exit(0);

}

/***********SPACE***********/

elseif(【?

】)

printf("n=1");

else

{

printf("n=-1");

n=-n;

}

/***********SPACE***********/

for(【?

】;i<=n;i++)

{

/***********SPACE***********/

【?

】;

while(r==0)

{

printf("*%d",i);

/***********SPACE***********/

【?

】;

r=n%i;

}

}

printf("\n");

}

答案:

1).n>0或0

2).i=2

3).r=n%i

4).n=n/i或n/=i

 

第113题(10.0分)题号:

471

功能:

给出一个正整数,找到一组连续的数,使之累加和等于给

定的正整数。

输出存在多少组这样连续的数,及每组的左

右边界。

例如:

15=1+2+3+4+5

15=4+5+6

15=7+8

所以结果有3组值分别是1->5,4->6,7->8

#include

#include

voidmain(void)

{

longleft,right;

longsum;

longGIVEN;

intcount=0;

charline[100];

printf("\nConsecutivesumtoafixedgivennumber");

printf("\n=======================================\n");

printf("\nYournumber(>0)please--->");

gets(line);

GIVEN=atol(line);

for(sum=0,right=1;sum

;

for(left=1,right--;left<=GIVEN/2;)

if(sum>GIVEN)

{

sum-=left;

/***********SPACE***********/

【?

】;

}

else

{

if(sum==GIVEN)

{

printf("\n%ld=sumfrom%ldto%ld",

GIVEN,left,right);

/***********SPACE***********/

【?

】;

}

/***********SPACE***********/

【?

】;

sum+=right;

}

if(count>0)

printf("\n\nThereare%dsolutionsintotal.",count);

else

printf("\n\nSorry,thereisNOsolutionatall.");

}

答案:

1).left++或left=left+1或++left

2).count++或count=count++或++count或count=count+1

3).right++或right=right++或++right或right=right+1

 

第117题(10.0分)题号:

487

功能:

输入一个整数,计算它可能是哪两个整数的平方和,并打印

结果数据。

如:

34是5和3或3和5的平方和。

 

#include/*forI/Ofunctions*/

#include/*foratoi()*/

#include/*forsqrt()*/

voidmain(void)

{

intgiven;/*thegivennumber*/

introw,column;/*rowandcolumnindicators*/

intcount;/*numberofsolutions*/

charline[100];

printf("\nRepresentingaGivenNumberastheSumofTwoSquares");

printf("\n=====================================================\n");

printf("\nAnIntegerPlease--->");

gets(line);

given=atoi(line);

printf("\nCountXY");

printf("\n---------------");

row=1;/*startsfromfarenough*/

column=(int)(sqrt((double)given)+0.5);

count=0;/*sosolutionyet*/

while(row<=given&&column>0)/*scandown...*/

if(row*row+column*column==given)

{

/***********SPACE***********/

【?

】;

printf("\n%5d%7d%7d",count,row,column);

row++;

column--;

}

elseif(row*row+column*column>given)

/***********SPACE***********/

【?

】;

else

/***********SPACE***********/

【?

】;

if(count==0)

printf("\n\nSorry,NOANSWERfound.");

else

printf("\n\nThereare%dpossibleanswers.",count);

}

答案:

1).count++或++count或count=count++1

2).column--或--column或column=column-1

3).row++或++row或row=row+1

 

第120题(10.0分)题号:

11

功能:

求100-999之间的水仙花数

说明:

水仙花数是指一个三位数的各位数字的立方和是这个数本身。

例如:

153=1^3+5^3+3^3)。

intfun(intn)

{inti,j,k,m;

m=n;

/***********SPACE***********/

【?

】;

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

{

/***********SPACE***********/

【?

】;

m=(m-j)/10;

k=k+j*j*j;

}

if(k==n)

/***********SPACE***********/

【?

】;

else

return(0);}

main()

{

inti;

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

/***********SPACE***********/

if(【?

】==1)

printf("%disok!

\n",i);

}

答案:

1).k=0

2).j=m%10或j=m-m/10*10或j=m-10*(m/10)

3).return

(1)

4).fun(i)

 

第129题(10.0分)题号:

488

功能:

有一组基数值(正整数),输入一个正整数(小于100),

问:

如果该数由基数值相加构成(每个基数可以重复使用)

,那么最少可能利用的基数是多少个。

#include

#include

#defineMAXSIZE100

#definemin(a,b)((a)<=(b)?

(a):

(b))

voidmain(void)

{

intnum[MAXSIZE+1];

intbase[]={1,3,4};

intk=sizeof(base)/sizeof(int);

intn;

inti,j,MIN;

charline[100];

printf("\n============================");

printf("\n\nBaseValues:

");

for(i=0;i

printf("%d",base[i]);

printf("\n\nYourinputplease-->");

gets(line);

n=atoi(line);

num[0]=0;

num[1]=1;

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

{

/***********SPACE***********/

【?

】;

for(j=0;j

if(i>=base[j])

MIN=min(num[i-base[j]]+1,MIN);

/***********SPACE***********/

【?

】;

}

/***********SPACE***********/

printf("\n\nMinimum=%d",【?

】);

}

答案:

1).MIN=n

2).num[i]=MIN

3).num[n]

 

━━━━━━━━━━━━━━━━━━

一、程序改错共137题(共计1370分)

━━━━━━━━━━━━━━━━━━

第21题(10.0分)题号:

402

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

编写函数fun求20以内

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

当前位置:首页 > 解决方案 > 学习计划

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

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