❶ c语言 有特点的数
争取用清晰的思路和简短的代码给你写一个:
代码如下:
#include "stdio.h"
#include "conio.h"
main()
{
int a=0,b=0,c=0;
int x=10;
int count=0;
int pingfang=0;
for (x=10 ;x<=31;x++)
{
pingfang=x*x;
a=pingfang%10;
b=(pingfang/10)%10;
c=pingfang/100;
if((a==b&&a!=c)||(a==c&&a!=b)||(b==c&&b!=a))
{
printf("%3d\n",x*x);
count++;
}
}
printf("num is %d",count);
getch();
}
思路:10的平方=100,也一直到31的平方就可以了。所以满足100-999
然后每个数的个,十,百位分别放在a,b,c中
接着判断一定要有2个位数相等,而第3个不等于相等的那两个
统计个数,打印 OK
Dev_C++ 编译通过
运行结果:
100
121
144
225
400
441
484
676
900
num is 9
祝你好运!
❷ c语言中n个数比大小,然后在从大或者从小输出该怎么写
因n未知,所以得用动态数组完成。举例代码如下:
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
intmain(void){
intn,*p,i,j,k,l;
printf("Inputn(intn>0)... n=");
scanf("%d",&n);
if((p=(int*)malloc(sizeof(int)*n))==NULL){
printf("Applicationmemoryfailure... ");
exit(0);
}
srand((unsigned)time(NULL));
for(i=0;i<n;p[i++]=rand()%1000);
printf("MintoMax: ");
for(l=i=0;i<n;i++){
for(k=i,j=k+1;j<n;j++)
if(p[k]>p[j])
k=j;
if(i!=k){
j=p[k];
p[k]=p[i];
p[i]=j;
}
printf(++l%10?"%-4d":"%-4d ",p[i]);
}
if(l%10)printf(" ");
printf("MaxtoMin: ");
for(l=0,i=n-1;i>=0;printf(++l%10?"%-4d":"%-4d ",p[i--]));
free(p);
if(l%10)printf(" ");
return0;
}
❸ (c语言)如何判断输入的一个整数是否为完全平方数且至少有两位数相同如144 676.....
#include<stdio.h>
voidmain()
{
inti,j,t,k=0,m=0,n,a[100];
scanf("%d",&n);
t=n;
while((float)(t)>=1)
{a[m]=t%10;t=t/10;m++;}
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(a[i]=a[j]){k=1;break;}
if(k==1&&sqrt(double(n))==(int)sqrt(double(n)))
printf("%d满足条件",n);
elseprintf("%d不满足条件",n);
}
❹ 用c语言编
运行通过...
#include<stdio.h>
void main()
{
int i,j,i1,j1,k,m;
float a;
i=2;j=3;
i1=1;j1=2;
a=(float)i/i1+(float)j/j1;
for(k=0;k<18;k++)
{
i=i+j;
i1=i1+j1;
a+=(float)i/i1;
//printf("\ni/i1==%d/%d",i,i1);
m=i;i=j;j=m;
m=i1;i1=j1;j1=m;
}
printf("%5.3f\n",a);
}
i/i1==2/1
i/i1==3/2
i/i1==5/3
i/i1==8/5
i/i1==13/8
i/i1==21/13
i/i1==34/21
i/i1==55/34
i/i1==89/55
i/i1==144/89
i/i1==233/144
i/i1==377/233
i/i1==610/377
i/i1==987/610
i/i1==1597/987
i/i1==2584/1597
i/i1==4181/2584
i/i1==6765/4181
i/i1==10946/6765
i/i1==17711/10946
32.660
Press any key to continue
❺ 将一个数分成几份 C语言
#include <stdio.h>
int main()
{
int a[144],i,s;
double n;
printf("请输入n\n");
scanf("%lf",&n);
for(i=1,s=0;i<=144;)
{
a[i-1]=i;
i*=2;
s+=a[i-1];
}
for(i=1;i<=144;i++)
{
a[i-1]*=n/s;
}
return 0;
}
❻ c语言编程:编程统计数字4在一个数中出现的次数。比如4在144中出现了2次。
#include<stdio.h>
intmain(){
longintn;
intcount,i=0;
while(scanf("%ld",&n)!=EOF){
count=0;
while(n){
if(n%10==4)count++;
n/=10;
}
printf("%d ",count);
}
}
❼ C语言入门好简144第16有ABCDE参加一项比赛
最终的排名顺序:E,D,A,C,B 。分别用12345表示ABCDE的话,是 54132
代码:
#include<stdio.h>
//穷举所有比赛名次的可能
voidgetAll(int[120]);
//在5位数z中是否含有2位数n在其中,例如:12345总含有12、23、34、45,不含有21、25、89、。。。
//借以判断猜测结果中是否有对的相邻名次
intfun1(intz,intn);
//当前可能性z是否符合对甲的猜测的分析条件:不等于甲的猜测、并且没有相邻名次
intfun2(intz);
//是否没猜中任何一个名次12345
//intfun3(intright,intguess);
//当前可能性z是否符合乙猜测的情况:猜中2个名次,且猜测中含有(真实情况中)两队相邻名次
intfun4(intz);
//返回猜对的名次个数
intfun5(intright,intguess);
intmain(){
inti=0;
//求5!=5*4*3*2*1=120(5的阶乘,总共有这么多可能)
intn=120;
intarr[n];//总共有n中可能
getAll(arr);
for(i=0;i<n;i++){
if(fun2(arr[i])==1){//先满足甲未猜中的条件
if(fun4(arr[i])==1){//同时满足乙猜测的情况
printf("result:%d ",arr[i]);
}
}
}
return0;
}
intfun1(intz,intn){
if(z/1000==n)
return1;
if((z/100)%100==n)
return1;
if((z/10)%100==n)
return1;
if(z%100==n)
return1;
return-1;
}
intfun2(intz){
if(fun5(z,12345)!=0)return-1;//猜中的名次不等于0,则不符合甲的情况
if(fun1(z,12)==1)return-1;
if(fun1(z,23)==1)return-1;
if(fun1(z,34)==1)return-1;
if(fun1(z,45)==1)return-1;//甲没有猜到相邻名次
return1;
}
voidgetAll(intarr[120]){
inti=0,j=0,k=0,l=0,m=0;
charA='A';
intindex=0;//数组下标
for(;i<5;i++){
j=k=l=m=0;
for(;j<5;j++){
k=l=m=0;
for(;k<5;k++){
l=m=0;
for(;l<5;l++){
m=0;
for(;m<5;m++){
if(!(i==j||i==k||i==l||i==m||j==k||j==l||j==m||k==l||k==m||l==m)){
arr[index]=(i+1)*10000+(j+1)*1000+(k+1)*100+(l+1)*10+(m+1);
//printf("%d ",arr[index]);
index++;
/*
putchar(A+(char)i);putchar('');
putchar(A+(char)j);putchar('');
putchar(A+(char)k);putchar('');
putchar(A+(char)l);putchar('');
putchar(A+(char)m);putchar('');
putchar(' ');
*/
}
}
}
}
}
}
}
/*
intfun3(intright,intguess){
if(right/10000==guess/10000)return1;//猜中第一名
if((right/1000)%10==(guess/1000)%10)return1;
if((right/100)%10==(guess/100)%10)return1;
if((right/10)%10==(guess/10)%10)return1;
if(right%10==guess%10)return1;
return-1;//没猜中任何一个名次
}*/
intfun5(intright,intguess){
intretval=0;
if(right/10000==guess/10000)retval++;//猜中第一名
if((right/1000)%10==(guess/1000)%10)retval++;
if((right/100)%10==(guess/100)%10)retval++;
if((right/10)%10==(guess/10)%10)retval++;
if(right%10==guess%10)retval++;
returnretval;//没猜中任何一个名次
}
//DAECB41532猜中2个名次,两对学生名次相邻
intfun4(intz){
if(fun5(z,41532)!=2)return-1;//猜中2个名次
intnum=0;//有num对相邻名次
if(fun1(z,41)==1)num++;
if(fun1(z,15)==1)num++;
if(fun1(z,53)==1)num++;
if(fun1(z,32)==1)num++;
if(num!=2)return-1;//两对学生名次相邻
return1;
}
❽ C语言进制转换
计算机中常用的数的进制主要有:二进制、八进制、十进制、十六进制。
2进制,用两个阿拉伯数字:0、1;
8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;
10进制,用十个阿拉伯数字:0到9;
16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
下面用余数短除法把十进制数转化为二进制数为例进行说明
1、明确问题。举个例子,我们现在是要将一个十进制数字156转换成二进制数字。先将这个十进制数作为被除数写在一个倒着的“长除法”的符号里。把目标数系的基数(在这里二进制是“2”)作为除数写在这个除法符号的外面。用这个方法将计算过程可视化会更方便理解,因为整个计算过程只需将数字一直除以2。
活用这个方法可以将所有十进制数字转换成任何进制表达。除数为2是因为我们最终想得到的以2为基数的数(即二进制数值) 。如果最终想得到其他数系的数字,用目标数系的基数代替这个方法里二进制的基数2 就可以了。例如,要得到基数为9的数,就用9来代替2作为除数 。最终的结果就是目标数系的数字表达。
(8)c语言中i144扩展阅读:
十进制--->二进制
对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。
对于小数部分,采用连续乘以基数2,并依次取出的整数部分,直至结果的小数部分为0为止。故该法称“乘基取整法”
十进制--->八进制
10进制数转换成8进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成8。
❾ C语言,已知程序,写出流程图和NS结构图(题目:既是完全平方数,又有两位数字相同的三位正整数,如144)
给,严格按照源码画的NS流程图!