数字操作.docx
- 文档编号:28034131
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:83
- 大小:30.43KB
数字操作.docx
《数字操作.docx》由会员分享,可在线阅读,更多相关《数字操作.docx(83页珍藏版)》请在冰豆网上搜索。
数字操作
第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).j 第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 #include #include 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以内
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 操作