回复 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;
}