c语言题把1,2,3,4,5,6,7,8,9组合成三个三位数,要求每个数字仅用一次,并且每个三位数均是完全平方数

作者&投稿:永炕 (若有异议请与网页底部的电邮联系)
用C语言编程求1234四个数能组成多少互不相同且不重复的三位数~

  三位数有三个位置,每一个位置看作一个变量,假设为i、j、k,
  互不相同且不重复的三位数,即i不等于j且j不等于k且i不等于j,用C语言逻辑表达式描述为:
i!=j&&j!=k&&i!=k  三个位置,每一个位置有1、2、3、4,四种可选值,因此其排列数为4^3 = 64种排列组合方法,三个位置互不相同,按分步乘法原理得一共有4x3x2 = 24种排列方法。编写示例代码如下:
#include int main(){int i,j,k,n=0; //n用于统计个数for(i=1;i<5;i++)for(j=1;j<5;j++)for(k=1;k<5;k++)//保证三位数不重复if(i!=j&&i!=k&&j!=k){n++;printf("%d%d%d ",i,j,k);if(n%4==0)printf("
");}printf("
一共:%d
",n);return 0;}

百位数有4种选择,为与百位数不重复,十位数就只有3种选择了;同样道理,个位数就只有2种选择。所以1、2、3、4等4个数字能组成4x3x2共24种互不相等且没有重复数字的3位数。根据上述原理,可用一个3层嵌套for循环来完成,代码如下:
#include "stdio.h"int main(int argc,char *argv[]){
int i,j,k,t;printf("A total of %d no repeat number 3-digits, they are as follows:
",4*3*2);
for(t=0,i=1;i<=4;i++)//百位数字有4种选择for(j=1;j<=4;j++)//十位数字有3种选择
if(j!=i)//遇到十位数字等于百位数字时跳过
for(k=1;k<=4;k++)//个位数字只有2种选择了
if(k!=i && k!=j)//个位数字与十位或百位数字相等时跳过
printf(++t%10 ? "%4d" : "%4d
",i*100+j*10+k);//输出该三位数
if(t%10)printf("
");
return 0;
}

扩展资料
#include
main()
{
int i, j, k;
int m=0;
for(i=1;i<5;i++)
for(j=1;j<5;j++)
for(k=1;k<5;k++)
{
if(i!=j&&k!=j&&i!=k)
{
printf("%d%d%d
",i,j,k);
m++;
}
}
printf("%d
",m);
getch();
}
参考资料:百度百科 for循环

C语言程序如下:

int main(){

char temp[3];

for(int i = 123;i<=987;i++){

itoa(i, temp, 10);//转换成string

if(temp[0] != temp[1] && temp[0] != temp[2] && temp[1] != temp[2]){

int a = sqrt(i);

if(a * a == i){

std::cout << i << std::endl;

}
}
}
return 0;

扩展资料:

完全平方数性质如下:

(1)、平方数的个位数字只能是 0, 1,4,5,6,9 。

(2)、任何偶数的平方一定能被 4 整除;任何奇数的平方被 4(或 8)除余 1,即被4 除余 2 或 3 的数一定不是完全平方数。

(3)、完全平方数的个位数字是奇数时,其十位上的数字必为偶数。完全平方数的个位数字是 6 时,其十位数字必为奇数。

(4)、凡个位数字是 5 但末两位数字不是 25 的自然数不是完全平方数;末尾只有奇数个 0 的自然数不是完全平方数;个位数字是 1,4,9 而十位数字为奇数的自然数不是完全平方数。

(5)、除 1 外,一个完全平方数分解质因数后,各个质因数的指数都是偶数,如果一个数质分解后, 各个指数都为偶数, 那么它肯定是个平方数。 完全平方数的所有因数的总个数是奇数个。因数个数为奇数的自然数一定是完全平方数。

参考资料:百度百科-完全平方数



#include<stdio.h>

int main(void)
{
    int i, j, k, n, m;
    for (i = 1; i <= 9; ++i)
    {
        for (j = 1; j <= 9; ++j)
        {
            if (i == j)
            {
                continue;
            }
            for (k = 1; k <= 9; ++k)
            {
                if (i == k || j == k)
                {
                    continue;
                }
                n = i * 100 + j * 10 + k;
                m = 1;
                while (m * m <= n)
                {
                    if (m * m == n)
                    {
                        printf("%d
", n);
                    }
                    m++;
                }
            }
        }
    }
    return 0;
}


#include <iostream>
#include <string>
int main(){
char temp[3];

for(int i = 123;i<=987;i++){
itoa(i, temp, 10);//转换成string
if(temp[0] != temp[1] && temp[0] != temp[2] && temp[1] != temp[2]){
int a = sqrt(i);
if(a * a == i){
std::cout << i << std::endl;
}
}
}
return 0;
}


C语言问题表达式:i=1,2,3的值?
表达式的值为3,但I的值为1, 因为1,2,3,为逗号表达式,逗号表达式的运算法则为:表达式1,表达式2,...,表达式N。求解顺序为先求解1,再求解2...最后求解N。最终结果为表达式N的值。所以I的值为1,表达式的值为3

1,2,3。C语言的题目
return 0;} 第二个:include<stdio.h>int main(){ int a,i=2,j; scanf("%d",&a); for(j=2;j<=32;j+=2){ a = a & ~i; i = i << 2; } printf("%d",a); return 0;} 第三个:include<stdio.h>typedef struct{ int num; char name[20...

C语言的问题:表达式i=1,2,3值是多少?
(2) 逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。(3) 逗号运算符的优先级别在所有运算符中最低。例题1:若已定义x和y为double类型,则表达式:x=1,y=x+3\/2的值是 A) 1 B) 2 C) 2.0 D) 2.5 分析:该表达式是一个逗号表达式,所以先运算x=1,结果变量x...

...老是输出不正确。谢谢了。用1,2,3,4,5,6,7,8,9组成3个三位数...
a=x\/100;b=(x\/10)%10;c=x%10; \/\/把三位数的每一位数字截下来,a,b,c分别为百,十,个位 d=y\/100;e=(y\/10)%10;f=y%10;g=z\/100;h=(z\/10)%10;i=z%10;str[0]=a;str[1]=b;str[2]=c;str[3]=d;str[4]=e;str[5]=f;str[6]=g;str[7]=h;str[8]=i;count=...

关于C语言的一个问题:问题是1,2,3,4四个数字,将所有可以组成的且数字不...
void main(){ int a, b, c, d, e;for ( a = 1; a <= 4; a ++ ){ for ( b = 1, e = 1; b <= e && e <= 4; b ++ , e ++ ){ for ( c = 1, d = 1; c <= d && d <= 4; c ++, d ++ ){ if ( a != b&& b != c && a!=c){ printf("...

C语言作业,求大神助攻,1,2,3这三个题能做多少是多少,不胜感激
void input(int* grades,int*len){ int i = 0;int grade=0;printf("please input ten student grade:\\n");while(1){ scanf("%d",&grade);if(grade<0||grade>100)continue;grades[i++]=grade;len=i;if(i==10)break;} } int qpartition(int* grades,int low,int high){ int ...

求大哥 解c语言问题 这个程序为什么我输入1,2,3时结果是312??_百度...
汗,你这个程序能输出312?正解:include "stdio.h"void main(){ printf("请输入三个整数: ");int a,b,c;scanf("%d%d%d",&a,&b,&c); \/\/这里,把%d之间的逗号去掉 if(c>b||b>a) \/\/这里,加上“||b”,以下作类同修改 printf("%d%d%d",c,b,a);else if(a>b||b>c...

2道c语言问题求教 !
第一题 第一个循环的时候,把x[i].a(i取0 1 2)分别赋值为1,2,3,x[i].b分别赋值为5,6,7 而x[i].next总是指向下一个数值,最后一个则指向第一个,是一个循环 第二个循环里输出一个x[0].a,然后输出下一个数x[1].b,然后是下一个x[2].a,然后是x[0].b...以此循环...

用java语言编程:有1、2、3、4四个数字,能组成多少个互不相同且无重复...
int i=0; \/\/保存百位上的数int j=0; \/\/保存十位上的数int k=0; \/\/保存各位上的数int t=0; \/\/保存数字个数 for(i=1;i<=4;i++){ for(j=1;j<=4;j++){ for(k=1;k<=4;k++){if(i!=j && j!=k && i!=k){ t+=1;System.out.println(i*100+j*...

C语言题 给出步骤解释. 计算s=1+2+3+..….+n,直到s的值大于1000为止,输 ...
void main(){ int n,s;__s=0__ ;\/*第一空*\/\/\/这里写成中文分号了.for( n=1;;n++){\/\/这里写成中文分号了.s=s+n;if( s>1000);__break;__\/*第二空*\/\/\/并把前面的分号去掉.} printf ("s %d n=%d\\n",);_s,n_\/*第三空*\/ \/\/应在)前,s后应有=,应为: printf...

广饶县18227654459: c语言编程将字符序列{1,2,3,4,5,6,a,b,c,d}转化为{a,b,c,d,1,2,3 -
寿终标准: #include <stdio.h> #include <stdlib.h>int main() {char ch[]={"123456abcd"};char temp;int i,j,k;for(i=0;i<10;i++){k=i;for(j=i;j<10;j++)if(ch[k]>ch[j])k=j;if(k!=i){temp=ch[i];ch[i]=ch[k];ch[k]=temp;}for(i=0;i<9;i++)printf("%c,",ch[i]);printf("%c\n",ch[i]);}return 0; }

广饶县18227654459: c语言题把1,2,3,4,5,6,7,8,9组合成三个三位数,要求每个数字仅用一次,并且每个三位数均是完全平方数 -
寿终标准: C语言程序如下: int main(){ char temp[3];for(int i = 123;i<=987;i++){ itoa(i, temp, 10);//转换成string if(temp[0] != temp[1] && temp[0] != temp[2] && temp[1] != temp[2]){ int a = sqrt(i); if(a * a == i){ std::cout << i << std::endl; } } } return 0; } 扩展资...

广饶县18227654459: c语言. 编程将字符序列(1,2,3,4,5,6,a,b,c,d)转化为(a,b,c,d,1,2, -
寿终标准: #include #includeint main() {char ch[]={"123456abcd"};char temp;int i,j,k;for(i=0;i<10;i++){int k=i;for(j=i;j<10;j++)if(ch[k]>ch[j])k=j;if(k!=i){temp=ch[i];ch[i]=ch[k];ch[k]=temp;}for(i=0;i<9;i++)printf("%c,",ch[i]);printf("%c\n",ch[i]);}return 0; }

广饶县18227654459: 在c语言中把"123456"变成{1,2,3,4,5,6} -
寿终标准: 1234567891011 char*input = "123456"; charoutput[256]; intlen = strlen(input); output[0] = '{'; for(inti = 0; i < len; i++) { output[i*2 + 1] = input[i]; output[i*2 + 2] = ','; } output[len * 2] = '}'; output[len * 2 + 1] = 0; printf(output);

广饶县18227654459: C语言a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}表示把里面的数字分成 -
寿终标准: main() {int a[5]={1,2,3,4,5},b[4]={6,7,8,9},*p=a,*q=b//p指向a的首地址,即1,q指向b,即6 p+=2;q+=3;//p地址后移2位,指向3,q同理指向9 *p=*(q)+3;//赋值语句,将q指向的内容加3赋给p,则p指向的值3变成12,q依旧为9 q--;//q地址前移1位,即8 *(...

广饶县18227654459: C语言排列问题写出 从“1,2,3,4,5,6,7,8,9” 9个数中选出9个数组成无重复数字的所有排列 -
寿终标准:[答案] #include int a[10]; int ji[10]; void search(int k) { int s,i; if(k>9) { for(s=1;s

广饶县18227654459: 关于C语言的一个问题:问题是1,2,3,4四个数字,将所有可以组成的且数字不重复的三位数全部输出. -
寿终标准: 按照你说的改是可以的啊 程序如下#include <stdio.h> void main() { int a, b, c, d, e; for ( a = 1; a <= 4; a ++ ) { for ( b = 1, e = 1; b <= e && e <= 4; b ++ , e ++ ) { for ( c = 1, d = 1; c <= d && d <= 4; c ++, d ++ ) { if ( a != b&& b != c && a!=c) { printf("%d\...

广饶县18227654459: C语言编程: 把1、2、3、4、5、6、7、8、9这九个数组合成三个三位数.要求:每个数字仅用一次 -
寿终标准: 3位数的平方数就那么多,从11^2到31^2穷举判断就好/// <summary>/// 轮询3位平方数/// </summary>static void searchNum(){for (int i = 11; i <= 29; i++){for (int j = i + 1; j <= 30; j++){for (int k = j + 1; k <= 31; k++){if (checkNum(i * i, j * j, k *...

广饶县18227654459: 急求C语言程序:将1,2,3,4,5,6,7,8,9共9个数分成三组,组成3个三位数,且使这3个三 -
寿终标准: int check(int a,int b,int c) { int test[9]={0},i; long num = a*1000000+b*1000+c; if(b>1000 || c>1000)return 0;//确保是三位数 for(i = 0;i < 10;i++) { int temp = num%10; num/=10; temp--; if(test[temp] == 0) { test[temp] = 1; } else return 0; } return 1; } int ...

广饶县18227654459: C语言中:a=(1,2,3),(4,5,6)请问a值和表达式值都是多少,为什么? -
寿终标准: 答案应该是3,原理: 优先级是括号最大其次是赋值运算符,然后是逗号运算符,所以先运算:a=(1,2,3)的括号,由于逗号运算符是从左到右运算所以值应该是3,然后再把3赋值给a,所以a值应该是3,再运算后面括号(4,5,6),值同理是6,然后整个表达式的值就可以简化成 3,6 ,按照逗号的运算值是6,所以整个表达式值是6

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