回复 3楼 voidx
你好像没读懂我的程序。我的程序绝对没有错。呵呵,你不要误导别人。对比一下你程序和我的程序的运行结果。就知道我的是对的。
回复 8楼 hjywyj
啊,是我看错了,不好意思
/*--------------------------------- 输入一个英文句子,如何才能把这个句子中的每个单子的首字母都变成大写的呢? (如we are student使它成为 We Are Student) -----------------------------------*/ #include<stdio.h> void main() { int m,n,k,i,sum,s[10]={0}; //数组s是标志数组,初始值都是0,如果i在m,2*m,3*m的某个数位中,则使得a[i]=1 (i:从1取到9). for(m=123;m<329;m++) //因为各数位数字不同,而且3m<999 { n=2*m; k=3*m; s[m/100]=s[m%100/10]=s[m%10]=1; //其中m/100、m%100/10、m%10分别是m三个数位上的数字,如,m/100=5,则左边赋值语句使得a[5]=1,下边类似 s[n/100]=s[n%100/10]=s[n%10]=1; s[k/100]=s[k%100/10]=s[k%10]=1; sum=0; for(i=1;i<10;i++)sum+=s[i]; //累加a[1]到a[9],如果sum==9,说明从1到9都取到了,满足要求,输出结果。 if(sum==9)printf("%5d%5d%5d\n",m,n,k); for(i=1;i<10;i++)s[i]=0; //将标志数组s重新置为0,准备下一个m的验证 } } /*----------- 运行结果: 192 384 576 219 438 657 273 546 819 327 654 981 -----------*/
#include <stdio.h> bool fun(int n) { int a,b,c; a=n%10; b=(n/10)%10; c=n/100; if(a!=0&&b!=0&&c!=0&&a!=b&&a!=c&&b!=c) return true; else return false; } bool fun1(int n,int m) { int a,b,c,a1,b1,c1; a=n%10; b=(n/10)%10; c=n/100; a1=m%10; b1=(m/10)%10; c1=m/100; if(fun(n)&&fun(m)&&a!=a1&&a!=b1&&a!=c1&&b!=a1&&b!=b1&&b!=c1&&c!=a1&&c!=b1&&c!=c1) return true; else return false; } int main() { int i; for (i=100;i<1000;i++) { if(fun(i)) { int m=2*i; if(fun((m))&&fun1(i,m)&&m<1000) { int n = 3*i; if(fun(n)&&fun1(i,n)&&fun1(m,n)&&n<1000) { printf("%d\n",i); } } } } return 0; }