用c语言编程实现,别出心裁的情侣拍照

作者&投稿:姚发 (若有异议请与网页底部的电邮联系)
c语言的 写一下 拍照给我~

#include int main(void){ int x,y; scanf("%d",&x); if(x = 10) y = 3x -11; else y = 2x -1; printf("%d",y);}

/*解决本题算法思想:用a=1表示新郎a和x结婚,同理如果新郎a不与x结婚,则写成a!=1,因此依题意有a!=1 a不与x结婚c!=1 c不与x结婚c!=3 c不与z结婚另外还有三个隐含条件:3个新郎不能互为配偶,所以有如下三条件:a!=bb!=ca!=b此题用穷举,同时满足以上六个条件即可*/#include main(){ int a, b, c; for (a = 1; a <= 3; a++)/*穷举a的所有可能*/ for (b = 1; b <= 3; b++) /*穷举b的所有可能*/ for (c = 1; c <= 3; c++)/*穷举c的所有可能*/ if (a != 1 && c != 1 && c != 3 && a != b && a != c && b != c)/*如果表达式为真,则输出结果,否则继续下次循环*/ { printf("%c will marry to a
", 'x' + a - 1); printf("%c will marry to b
", 'x' + b - 1); printf("%c will marry to c
", 'x' + c - 1); }}

另一种简单的思路:

将情侣的空间位置要求转换为

101 1001 10001 100001四个数各自左移,然后或运算得到11111111的要求。

#include <stdio.h>
#define LOVERS_PAIR_1    (0b101)
#define LOVERS_PAIR_2    (0b1001)
#define LOVERS_PAIR_3    (0b10001)
#define LOVERS_PAIR_4    (0b100001)
#define LOVERS_PAIR_TARGET   (0b11111111)
int main()
{
    int x=0, y=0, z=0, t=0;
    unsigned char result=0;
    char order[8+1]={'\0'};
    printf("符合:情侣Aa中间隔一个人,情侣Bb中间隔两个人,情侣Cc中间隔三个人,情侣Dd中间隔四个人的情况:
");
    for(x=0,result=0; x<6; x++)//x表示情侣Aa组合从右到左需空出的位置
    {
        result = LOVERS_PAIR_1<<x;
        for(y=0; y<5; y++)//y表示情侣Bb组合从右到左需空出的位置
        {
            if (result&(LOVERS_PAIR_2<<y))
                continue;
            result = result|(LOVERS_PAIR_2<<y);
            for (z=0; z<4; z++)//z表示情侣Cc组合从右到左需空出的位置
            {
                if (result&(LOVERS_PAIR_3<<z))
                    continue;
                result = result|(LOVERS_PAIR_3<<z);
                for(t=0; t<3; t++)//t表示情侣Dd组合从右到左需空出的位置
                {
                    if (result&(LOVERS_PAIR_4<<t))
                        continue;
                    result = result|(LOVERS_PAIR_4<<t);
                    if (LOVERS_PAIR_TARGET==result)//找到了!转换后打印
                    {
                        order[8-x-1]='a';
                        order[8-(x+2)-1]='A';
                        order[8-y-1]='b';
                        order[8-(y+3)-1]='B';
                        order[8-z-1]='c';
                        order[8-(z+4)-1]='C';
                        order[8-t-1]='d';
                        order[8-(t+5)-1]='D';
                        order[8]='\0';
                        printf("%s
", order);
                    }
                }
            }
        }
    }
}

程序输出:

 符合:情侣Aa中间隔一个人,情侣Bb中间隔两个人,情侣Cc中间隔三个人,情侣Dd中间隔四个人的情况:
DACaBdcb
能拆一对是一对啊 -.-!



#include<stdio.h>
int a[8]={0};
int go(int i);

void bprintf(){
    int k=0;
    for(;k<8;k++)
        printf("%d ",a[k]);
    printf("
");
}

int go(int i)
{

    int j=0;
    int ret=0;
    while(j<7-i){ //尝试符合条件的所有座位          
        if(a[j]==0&&a[j+i+1]==0){//can sit

            a[j]=i;//坐下
            a[j+i+1]=i+4;
            if(i==4)
                bprintf();//全部坐下
            else
                go(i+1);//下一对
            a[j]=a[j+i+1]=0;//离开尝试下一可以坐的座位
        }
        j++;
    }
    return ret;
}

int main()
{
    go(1);
return 0;
}


/*************************************************************************************************************************
通过编写这个程序领悟到的几点:
1、编写程序不要急于着手写代码,必须先把算法设计出来,考虑清楚所有情况,在算法上先做到无懈可击才能编出完美的没有错误的代码。
2、子函数及其递归调用相当重要,如果没有子函数及其递归调用,本来一个很简单的程序将会变得复杂无序。
3、加深了对全局变量和局部变量的理解。
4、必须保证程序已经考虑到所有的情况,不能因为得到了结果就停止优化。这样会导致不可预料的bug,会对后期维护造成很大的难度。
5、注释是十分必要的,它极大地增强了代码的可读性,对程序的维护和修改有极大的帮助作用。
编写者:michelle
Q Q:824607076
日期:13.10.22
************************************************************************************************************************/
#include <stdio.h>
int a[4][2];//情侣数组用来存放情侣序号例如a[0][0]表示第一对情侣的男孩
int b[8];//位置数组,八个按顺序排列的位置,如b[0]表示第一个位置,b[0]=0表位置没有被占,1表示被占
int num=0;//找到的可能结果总数
//第i对情侣男孩从第p位开始坐的排列
void arrange(int i ,int p)
{
int j;
int m;
int n;
int q;
for(j=p;j<8;j++)
{
//有适合的位置
if((i+j+2<8)&&(0==b[j])&&(0==b[i+j+2]))
{

a[i][0]=j;//男孩获得座位序号
b[j]=1;//男孩坐上座位
a[i][1]=i+j+2;//女孩获得座位序号
b[i+j+2]=1; //女孩坐上座位
if(3!=i)//如果不是最后一对情侣就让下一对情侣找座位
{
arrange(i+1,0);
}
else//如果是最后一对情侣,公布结果,并寻找下一种可能性
{
//公布结果
num++;//结果个数加1
for(m=0;m<4;m++)
for(n=0;n<2;n++)
{
printf("%d",a[m][n]+1);
}
printf("\n");
//寻找下一种可能性
b[a[i-1][0]]=0;//前一对情侣男孩离开座位
b[a[i-1][1]]=0;//前一对情侣女孩离开座位
q=a[i-1][0];//获得前一对情侣男孩上一次的座位号
a[i-1][0]=0;//前一对情侣男孩上交座位序号
a[i-1][0]=0;//前一对情侣女孩上交座位序号
arrange(i-1,q+1);//上一对情侣接着上次找的位置往下找座位
}
break;//这一对情侣停止找座位
}
}
//没有找到座位
if(8==j)
{
//如果是第一对情侣已经找不到座位,公布可能结果个数,结束找座位,准备照相
if(0==i)
{
printf("共找到的结果个数为%d\n",num);
// *********程序结束于这里**********
}
//如果不是第一对情侣已经找不到座位,让上一对情侣重新找座位
else
{
b[a[i-1][0]]=0;//前一对情侣男孩离开座位
b[a[i-1][1]]=0;//前一对情侣女孩离开座位
q=a[i-1][0];//获得前一对情侣男孩上一次的座位号
a[i-1][0]=0;//前一对情侣男孩上交座位序号
a[i-1][0]=0;//前一对情侣女孩上交座位序号
arrange(i-1,q+1);//上一对情侣接着上次找的位置往下找座位
}
}
}
//主函数 **********程序开始于这里************
main()
{
printf("各对情侣男女的位置编号分别为(情侣内部男女可互换,默认男士在前):\n");
arrange(0,0);
}


C语言编程:键盘输入10个数,用函数实现计算数据中最大值、最小值,并返 ...
ms记录最小值位置。自定义一个函数void Input_Max_Min(int *p,int *pl,int *ps)来完成题设要求,其中p是数组首指针,pl是最大值位置(下标)变量指针,ps是最小值位置(下标)变量指针。在主函数中输出结果。代码如下:

c语言,编程实现,输入一行字符,分别统计其中英文字母,空格 ,数字和其它...
main(){ int zm=0,kg=0,sz=0,qt=0;char c;while((c = getchar())!= '\\n')\/\/c=getchar是从键盘获取一个字符并赋值给c,\\n是换行的意思 { if((c>='a'&&c<='z')|| (c>='A'&&c<='Z'))zm++;else if(c>='0'&&c<='9')sz++;else if(c=='')kg++;else qt++;}...

c语言 编程实现求n!要求用定义求阶乘的函数
1、打开vs2017软件,新建c语言的工程,首先开头引入头文件,然后调用先调用一下求阶乘的函数和空的主函数,最下方定义prime函数用来求阶乘:2、主函数中用scanf函数接受用户输入的的数字,接着将输入的数传入处理阶乘的函数中完成计算,最后输出打印结果。prime函数有一个参数,首先判断是否为正数,然后用pr...

C语言编程:编程实现将一个数组逆序输出
1、首先打开软件VC++6.0软件,准备一个空白的C语言文件,引入头文件并写好主函数:2、然后输入代码,首先定义数组,接着用一个for循环接受用户输入的数组元素并将其打印到屏幕上,并保存到前面的数组中,然后用第二个for循环逆序排序,方法就是前面的元素和后面的元素比较大小,前面比后面小就交换顺序...

C语言:请用自定义函数的形式编程实现,求s=m!+n!+k! m、n、k从键盘输入...
1、打开Dev-c++软件,点击“新建源代码”。2、具体程序如下。3、编写完程序之后,点击运行即可得出结果。最后的结果是根据自己输入的n值和a值为基础来进行运行的,每次输入的值不同,结果也会不同。4、for表示循环结构,i 表示循环条件,在编写程序时,注意给赋予增值变量的条件。5、term=term*10+a ...

急求C语言编程:求1到100所有偶数之和,三种循环语句分别实现
1、首先在桌面上,点击“Microsoft Visual Studio 2010”图标。2、然后在该界面中,输入到100所有偶数之和的for循环语句“int sum,i; for(i=1;i<=100;i++){if(i%2==0) {sum = sum+i;}printf ("%d\\n",sum);}”。3、之后在该界面中,输入到100所有偶数之和的while循环语句“int sum,...

用C语言编程实现有一个偶数,当它分别被3、4、5、6除时,余数均为2,编 ...
include<stdio.h>int main(){int n=0;while(!(n%3==2 && n%4==2 && n%5==2 && n%6==2))n+=2;printf("满足分别被3、4、5、6除时,余数均为2的最小偶数为:%d\\n",n); } 2被3、4、5、6除时,均等于0余2。请采纳 ...

C语言编程:如何实现布尔类型返回值?
需要准备的材料分别有:电脑、C语言编译器。1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:bool fun(){ return true;} 3、编译器运行test.cpp文件,此时打印出了布尔类型函数返回结果的打印结果。

C语言,编程实现:输出以下图形
include <stdio.h>#include <math.h>int main(){int i,j;for(i=-2; i<=2; i++){for( j=2; j>=-2; j--){if(abs(i)+abs(j)<=2)printf("*");elseprintf(" ");}printf("\\n");}return 0;} 把整个图形看成直角坐标系 ...

C语言编程,输入10个学生5门课的成绩,分别用函数实现以下功能:
include<windows.h> main(){ int i,j,li=0,lj=0;float score[10][5],average[10],a1,a2,a3,a4,a5,largest=0,fc=0,a=0;\/\/score是50个学生的成绩,average是5门课的平均成绩,a1-a5分别是5门课的平均成绩,li是最高分的学生 \/\/lj是最高分的学科,largest是最高分,fc是平均分方差...

晋中市13072889423: 用c语言编程实现,别出心裁的情侣拍照 -
惠淑双倡: /************************************************************************************************************************* 通过编写这个程序领悟到的几点:1、编写程序不要急于着手写代码,必须先把算法设计出来,考虑清楚所有情况,在算法上先做到无懈可...

晋中市13072889423: 恋人之间完美C语言? -
惠淑双倡: 我是一个最求完美的人,我希望我和我的另一半都能接近完美.可我发现我的女朋友很自私,总是把自己和自己的感受放在第一位,却忽视了我的感受,也很少在感情上和我主动沟通```开始我总热血沸腾和她沟通``最近突然发现我累了``我不想老是我主动```导致了我们没有了多的语言``有的时候就连和一个并不很了解的朋友聊天都要跟她聊天心情好的多```我到底该怎么办?

晋中市13072889423: VB别出心裁两个人拍 -
惠淑双倡: Sub main() Dim n%, m%, i%, j%, t%, k%, a%(20), s% n = InputBox("n") m = 2 * n i = 1 Do t = 1 For j = 1 To i - 1 If a(i) = a(j) Or a(j) Mod n = a(i) Mod n And (a(j) > a(i) Or a(j) + 2 <> i - j) Then t = 0: Exit For Next If t And i = m And a(1) Mod n < a(m) ...

晋中市13072889423: 关于爱的c语言 -
惠淑双倡: #include <stdio.h> int main() {for (float y = 1.5f; y > -1.5f; y -= 0.1f) {for (float x = -1.5f; x < 1.5f; x += 0.05f) {float a = x * x + y * y - 1;putchar(a * a * a - x * x * y * y * y <= 0.0f ? '*' : ' ');}putchar('\n');} } //这就是一个大大的爱

晋中市13072889423: 用c语言编写程序,要求男女共用一个浴池,当男生进去洗澡时,女生不能进去,但是男生能进去,反之亦然 -
惠淑双倡: int main(){ int 泳池状态=0; while(1){ 男生进去洗澡(泳池状态); 女生进去洗澡(泳池状态);...

晋中市13072889423: c语言问题 帮帮忙吧,用c语言编程,解决以下问题: 3对情侣参加婚礼,3个新郎分别为A,B,C, -
惠淑双倡: /*解决本题算法思想: 用a=1表示新郎a和x结婚,同理如果新郎a不与x结婚,则写成a!=1,因此依题意有 a!=1 a不与x结婚 c!=1 c不与x结婚 c!=3 c不与z结婚 另外还有三个隐含条件:3个新郎不能互为配偶,所以有如下三条件: a!=b b!=c a!=b 此...

晋中市13072889423: C语言编程,统计男女生人数 -
惠淑双倡: 少年…………可以边输入边判断^__^ 下面代码加解释:#include<iostream> using namespace std;int main() {bool sex; //性别输入为1,0int n,male=0,fema=0;cin>>n; //人数while (n--){cin>>sex; //输入性别if (sex==1) male++; //判断累加男还是女else fema++;}cout<<"man="<<male<<" women="<<fema<<endl;return 0; } 明白否?^_______^

晋中市13072889423: 我 的C语言问题 请你们帮一下!!谢谢\
惠淑双倡: 为思维方便,把你的W改成了Y(如果觉得不好理解就把题目中的W都换成Y来看题目和看解答). 正确的配对关系是: X--B Y--C Z--A 即:新娘X的和B结婚,新Y的和C结婚,新娘Z的和A结婚 C语言程序如下: #include&lt;stdio.h&gt; main() ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网