数字操作.docx
《数字操作.docx》由会员分享,可在线阅读,更多相关《数字操作.docx(83页珍藏版)》请在冰豆网上搜索。
![数字操作.docx](https://file1.bdocx.com/fileroot1/2023-7/7/af775ac4-5d4b-48b5-ba80-e59bd27a28fb/af775ac4-5d4b-48b5-ba80-e59bd27a28fb1.gif)
数字操作
第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或03).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或02).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;iprintf("%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;jif(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以内