『壹』 c語言,我寫的算出來的有重復的,怎麼寫沒重的
#include<stdio.h>
inta[6];
intf()
{
inti,b,c,d;
b=0;c=0;d=0;
// b=a[0]+a[1]+a[2];
// c=a[2]+a[3]+a[4];
// d=a[4]+a[5]+a[0];
for(i=0;i<3;i++)
{
b+=a[i];
c+=a[i+2];
d+=a[(i+4)%6];
}
if((d==b&&b==c)&&c==d)return1;
elsereturn0;
}
voidexch(int*a,int*b)
{
intt;
t=*a;
*a=*b;
*b=t;
}
intf1(intm,intn)
{
inti,j;
if(m<n)
{
for(i=m;i<n;i++)
{
exch(&a[i],&a[m]);
f1(m+1,n);
exch(&a[m],&a[i]);
}
if(m==n-1)
{
if(f()==1)
{
for(j=0;j<n;j++)
printf("%d",a[j]);
printf(" ");
}
}
}
}
voidmain()
{
intn=6;
inti=0;
for(i=0;i<n;i++)
a[i]=i+1;
f1(0,n);
}
『貳』 請c語言大神解惑 編寫一程序,實現從鍵盤輸入兩個字元串str1和str2,要求各串中無重復的字元,求
#include <stdio.h>
#include <string.h>
int repeated(char* str)/*檢查字元串內是否有重復的字元,有就返回1,無就返回0*/
{
int i=0, len=strlen(str)-1;//調用strlen得到字元串的長度
for(i=0; i<len; i++)/*依次查看每個字元在後面是否重復出現*/
if(strchr(str+i+1, str[i]))
return 1;/*一旦發現就立即返回*/
return 0;
}
int main()
{
int i, len, j=0;
char s1[100], s2[100], s3[100];/*保存兩個字元串和交集串*/
char* s[2]={s1,s2};/*用一個數組s來管理s1和s2以便在下面用for循環處理*/
for(i=0; i<2; i++){/*依次輸入兩個字元串*///這里使用do,while循環!因為至少要輸出一次!
do{
printf("請輸入第%d個字元串: ", i+1);
scanf("%s",s[i]);
}while(repeated(s[i])&&printf("串內有重復字元! "));/*檢查是否有重復*/
}
len = strlen(s1);
for(i=0; i<len; i++)/*依次查找s1中的每一個字元是否在s2中存在*/
if(strchr(s2,s1[i]))
s3[j++] = s1[i];/*存在的字元就加入到交集中*/
s3[j] = '