代码咋写啊,用C语言循环语句

、输出2,4,6,8,10,12,14,16八个数中选2个的所有排列及排列数目。


int main(){
    int base[8] = {2,4,6,8,10,12,14,16};
    int count=0;
    for (int i=0;i<8;i++){
        for (int j=0;j<8;j++){
            if (i != j){
                printf("%d,%d\n",base[i],base[j]);
                count++;
            }
        }
    }
    printf("排列数:%d",count);
    return 0;
}

#include <stdio.h>
using namespace std;
int main(){
    int cnt=0;
    int list[8]={2,4,6,8,10,12,14,16};
    for (int i=0;i<8;i++){
        for (int j=0;j<8;j++){
            printf("[%d %d] ",list[i],list[j]);
        }
        printf("\n");
    }
} 

从第一个元素开始,将其与其它的元素组合,因为自身不能与自身组合,所以使用(i!=j)判断是否为自身

#include<stdio.h>
int main()
{
    int a[8]={2,4,6,8,10,12,14,16};
    int i,j,count=0;
    for(i=0;i<8;i++)
       for(j=0;j<8;j++)
       {
             if(i!=j)
          {
              printf("%d %d\n",a[i],a[j]);
              count++;
          }
       }
    printf("%d\n",count);
    return 0;
}

所有排列这个问题可以用双循环来解决问题
至于排列数目,那倒是可以使用计数解决,提供参考代码如下:

#include<stdio.h>
int main()
{
    int array[8] = { 2,4,6,8,10,12,14,16 };
    int i ,j ;
    int len = (sizeof(array) / sizeof(int));
    int size = 0;
    for (i = 0; i < len; i++)
    {
        for (j = 0; j < len; j++)
        {
            if (i != j) {
                printf("排列组合信息 (%d,%d)\n", array[i], array[j]);
                size++;
            }
        }
    }
    printf("所有排列共计:%d", size);
}