① c语言原题 寻找并输出11到999之间的回文数.
#include<stdio.h>
void main()
{int i,j,k;int a[3],b[4];
for(i=11;i<1000;i++)
{j=0;b[j]=i;
while(b[j]!=0)
{a[j]=b[j]%10;j++;
b[j]=b[j-1]/10;}
if(a[0]=a[j-1])
printf("%d",i);
}
② c语言编程求解
大概的思路就是将传入的数字n转换为字符串,然后比较第一个字符与倒数第一个字符,第二个字符与倒数第二个字符... 是否相等,如果都相等则return 1;
i>=half表示上边的for循环是正常退出,并不是中途跳出,即字符串左右两侧对称相等。
不可以修改为下边的那种写法,他仅仅是比较了第一个与倒数第一个字符,不能保证完全对称,他会认为12341也应该return 1。
③ c语言中把大写字母像金字塔排列,一行中左右对称,如ABCDCBA.请高手写出程序
#include<stdio.h>
void main()
{
int a , n , i ;
char m ;
printf("请输入一个整数(1~26):"); //输入行数由你确定
scanf("%d", &n);
printf("\n");
for(i=1 ; i<=n ; i++)
{
m='A';
for(a=1;a<=n-i;a++)
printf(" ");
for(a=1 ; a<=2*i-1 ; a++)
{
if (a<i)
{
printf("%c",m);
m++;
}
else if (a==i)
{
printf("%c",m) ;
}
else if (a>i&&i>0)
{
m--;
printf("%c",m);
}
}
printf("\n");
}
}
是不是要这样的
④ C语言编程:求回文数的和 大神求解。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int fun(char *s) //判断是否回文
{
int i=0,n;
n=strlen(s);
n--;
while(n>i)
{
if(s[n]!=s[i])
return 0;
i++;
n--;
}
return 1;
}
int main()
{
int i,m,n,sum=0;
char a[10];
scanf("%d%d",&n,&m);
for(i=n;i<=m;i++)
{
itoa(i,a,10);
if(fun(a))
sum+=i;
}
if(sum!=0)
printf("%d\n",sum);
return 0;
}
⑤ c语言对称数252程序怎么设计
大致的思路是把这是数最低位变成最高位最高位变成最低位
就这样变换
变形后的数字和原来的数相等就是对称数了。
例子:判断252是不是对称数
#include<stdio.h>
intmain(void)
{
intn1=252;
intn=n1;
intan=0;
inti;
while(n){
i=n%10;
n=n-i;
n/=10;
an*=10;
an+=i;
}
if(an==n1){
printf("%d是对称数字",n1);
}else{
printf("%d不是对称数字",n1);
}
}
这个问题是算法有点绕了。 了解这个问题的算法 和程序的执行顺序用的你大脑运行一遍这个程序你就会明白了。 这个方法对00012321 这样的前面有0的数字组合不适用
⑥ C语言判断一个整数是否为对称数
main()
{long int x,y,a,b,c=0,n;
int i;
scanf("%ld",&x);
y=0;
a=b=n=x;
while(n!=0)
{n=n/10;
y++;
}
y=y/2;
for(i=1;i<=y;i++)
a=a/10;
for(i=1;i<=y;i++)
{c=c*10+b%10;
b=b/10;
}
if (a==b) printf("yes\n") ;
else printf("NO\n");
}
思想就是将整数分成2半,后一半倒序,然后判断是否相等,例如52125 :前一半为52,后一半为25,倒序为52,与前一半相等,为对称数^_^
⑦ 寻找并输出11~999之间的数m,它满足m、m的平方、m的立方均为回文数。怎么用c语言编程
结果是下面三个数:
11 101 111
程序如下:
int svalue(long m){
int i,j,n[10],ok=1;
for (i=0;i<10;i++)n[i]=0;
i=0;
while(m>0) {n[i]=m%10; m/=10; i++;}
i--;
for(j=0;j<i/2;j++) if (n[j]!=n[i-j]) ok=0;
return ok;
}
main(){
long i;
for (i=11;i<=999;i++)
if(svalue(i) && svalue(i*i) && svalue(i*i*i))
printf("%d\t",i);
}
以上程序在TURBO-C 2.0上调试通过。
⑧ 解释一下程序(C语言)
float countValue() /*标准答案*/
{float x0,x1=0.0;
while(1) //表示循环条件始终为真。
{x0=x1; // x1值赋给x0;
x1=cos(x0); //x0的余弦值给x1
if(fabs(x0-x1)<1e-6) break; 这里fabs()是求绝对值函数,看x0-x1是否小0.000001,如果是,则执行break; 退出while循环。
}
return x1; //循环出来再执行这一步,返回x1值。
}
或者:
float countvalue()
{ double x0,x1;
x1=0.0;
do //这里只是用了do-while循环;
{ x0=x1;
x1=cos(x0); }
while(fabs(x0-x1)>=0.000001); //退出循环条件也是一样。
return x1; }
===========================================
#include<stdio.h>
int jsValue(int a[10][9]) /*标准答案*/ //这个答案也有错的时候 ,特别有些是多余的,估计是其他类似题目,拿来修改一下。
{int I,j,k=0;
int hun,ten,data ,bb[100]; // 按答案,这里声明一个数组bb[100];
for(I=100;I<=999;I++) //
{j=10;
while(j*j<=I)
{if (I==j*j)
{hun=I/100;data=I-hun*100; //这里hun是百位数字,data除去百位的两位数 这里 data可以 I%100直接得到
ten=data/10;data=data-ten*10; //ten十位数字,data就个位了。个位可以 I%10 直接求得
if(hun==ten||hun==data||ten==data) //任意2个数字相等。
{bb[k]=I;k++;} //这里用到数组bb[],用来存放符合要求的数。题目只要求个数,bb[k]=I可以略去,k++累计个数。
}
j++;} }
return k; //返回 个数;
}
=================================
int jsValue(long n) /*标准答案*/
{int I,strl,half;
char xy[20];
ltoa(n,xy,10); //这里用到itoa() 应该是个自定函数 ,这里没写,我不知道干嘛。。
strl=strlen(xy); // strl 数组长。
half=strl/2; //数组半长,
for(I=0;I<half;I++)
if(xy[I]!=xy[--strl]) break; //第i个和第 --strl是否相等。 本来strl是数组结束符,前一个就是数组最后一个元素
if(I>=half) return 1;
else return 0;
}
或者:
int jsvalue(long n)
{int i,aa[10],j=0,b=1;
while(n)
{ aa[j++]=n%10;
n=n/10; }
for(i=0;i<j/2;i++)
if(aa[i]!=aa[j-i-1])
b=0;
return b; }
⑨ c语言 编写函数int fun(int n) 判断整数是否为左右对称数
int fun(int n)
{
int result = -1;
int t,s=0;
t=n;
while(t)
{
s=s*10+t%10;
t/=10;
}
if(s==n)
printf("是对称数\n");
else
printf("不是对称数\n");
return result;
}
⑩ C语言 程序输出100到999之间所有能被三整除且左右对称的数如303就是符合条件
您好,很高兴回答。
#include<stdio. h
>
void main()
{int m,a,b;
for(m=100;m<1000;m++)
{a=m/100;
b=m%10;
if(a==b&&m%3==0 )
printf("%5d ",m);}
}