1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include<stdio.h> int main() { int a,b,c,d,sum1,sum2; for(a=0;a<=9;a++) { for(b=0;b<=9;b++) { for(c=0;c<=9;c++) { for(d=0;d<=9;d++) { sum1=a*1000+b*100+c*10+d; sum2=(d*1000+c*100+b*10+a)*4; if(sum1>=1000&&a!=b&&b!=c&&c!=d&&d!=a) { if(sum1==sum2) { printf("%d ",sum1); } } } } } } return 0; }
总结:等于与赋值要区分,不能马虎。
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
#include<stdio.h> int main() { int a,b,sum=0; printf("请输入任意一个多位整数 "); scanf("%d",&a); while(a!=0) { b=a%10; a=a/10; sum=sum+b; } if(sum==1) { printf("1 Jan "); } else if(sum==2) { printf("2 Feb "); } else if(sum==3) { printf("3 Mar "); } else if(sum==4) { printf("4 Apr "); } else if(sum==5) { printf("5 May "); } else if(sum==6) { printf("6 June "); } else if(sum==7) { printf("7 July "); } else if(sum==8) { printf("8 Aug "); } else if(sum==9) { printf("9 Sept "); } else if(sum==10) { printf("10 Oct "); } else if(sum==11) { printf("11 Nov "); } else if(sum==12) { printf("12 Dec "); } else printf("%d ***",sum); return 0; }
总结:穷举虽说简单太麻烦,我想问问有没有更简单的方法。
3.给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。
#include<stdio.h> int main() { int a,b,i,j,k,sum; printf("请输入一个不超于六的正整数 "); scanf("%d",&a); for(i=a;i<=a+3;i++) { for(j=a;j<=a+3;j++) { for(k=a;k<=a+3;k++) { if(i!=j&&j!=k&&k!=i) { sum=i*100+j*10+k; printf(" %d",sum); b++; if(b%6==0) { printf(" "); } } } } } return 0; }
总结:这个用到了换行的小程序,他最后不让用空格,所以我就把空格放在了前面。
有16根火柴,可以拼出多少个形如“A+B=C”的等式,A、B、C是用火柴棍拼出的整数,且为一位数,输出该等式形式。
#include<stdio.h> int main() { int a,b,c,i,j,k,l; for(i=0;i<=9;i++) { if(i==1) { a=2; } else if(i==2) { a=5; } else if(i==3) { a=5; } else if(i==4) { a=4; } else if(i==5) { a=5; } else if(i==6) { a=6; } else if(i==7) { a=3; } else if(i==8) { a=7; } else if(i==9) { a=6; } else if(i==0) { a=6; } for(j=0;j<=9;j++) { if(j==1) { b=2; } else if(j==2) { b=5; } else if(j==3) { b=5; } else if(j==4) { b=4; } else if(j==5) { b=5; } else if(j==6) { b=6; } else if(j==7) { b=3; } else if(j==8) { b=7; } else if(j==9) { b=6; } else if(j==0) { b=6; } for(k=0;k<=9;k++) { if(k==1) { c=2; } else if(k==2) { c=5; } else if(k==3) { c=5; } else if(k==4) { c=4; } else if(k==5) { c=5; } else if(k==6) { c=6; } else if(k==7) { c=3; } else if(k==8) { c=7; } else if(k==9) { c=6; } else if(k==0) { c=6; } if(i+j==k&&a+b+c==12) { printf("%d+%d=%d ",i,j,k); } } } } return 0; }
总结:穷举法好麻烦,但我实在是想不出其他的招式了。