當前位置:首頁 » 編程語言 » c語言尋找最近對稱數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言尋找最近對稱數

發布時間: 2022-06-05 20:23:26

A. 編程c語言程序,輸入一個五位數,判斷是否為對稱說,如:12321,20202都是對稱數

供參考……
#include "stdio.h"//
void main(void){
int nDec;
printf("請輸入一個十進制五位整數...\nnDec=");
for(;;){
scanf("%d",&nDec);
if(nDec>9999 && nDec<100000) break;
printf("錯了!請輸入10000~99999間的整數...\nnDec=");
}
printf("%d",nDec);
if((nDec%10000)/1000!=(nDec%100)/10 || nDec/10000!=nDec%10) printf("不");
printf("是對稱數!\n");
}

B. 求對稱數的最佳解法(c語言即可)

除了O(n)時間的,還有更好的演算法?

C. c語言 統計100到1000之間的對稱數的個數

#include<stdio.h>

intmain(intargc,char*argv[])
{
inti,cnt=0;
for(i=100;i<1000;i++)
if(i%10==i/100)++cnt;

printf("%d ",cnt);
return0;
}

D. c語言求對稱數

這個根據你的意思改的!我不知道具體的題目,所以。。。
#include<stdio.h>
void main()
{
void f(int A);
int a1,a3;
scanf("%d",&a1);
for(a3=1;a3<=a1;a3++)
f(a3);
}

void f(int A)
{
int i,t1,t2,A2=A*A,a[20];
// printf("%d\n",A);
for(i=0,t1=0;A2!=0&&i<20;i++)
{
a[i]=A2%10;
A2/=10;
t1++;
}
t2=t1-1;
i=0;
while(a[i]==a[t2])
{
i++;
t2--;
if(i>=t2)
{
printf("%d\n",A*A);
break;
}
}
}

E. C語言編程,求五位正整數中所有對稱數如78787

void
main()
{
int
long
i;
printf("%d\n",15%4);
for
(i=10000;i<=99999;i++)
if
((int)(i/10000)==(i%10))
if
((((int)(i/1000))%10)==(((int)(i/10))%10))
printf("%ld\n",i);
}

F. c語言 對稱數

不是很理解你的意思 但還是編了個
#include<stdio.h>
void main()
{
int i,w,k;
for(i=1993; i>=10; i--)
{
for(k=0,w=i; w>0; w/=10)
k=w%10+k*10;
if(k==i) {printf("%d\n",i);break;}
}
}

G. c語言程序設計--對稱數

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
char str[10]={0};
int a,b, num,i,j;
gets(str);
num=strlen(str);

a=atoi(str);
if(num%2==0)
{
if(str[num/2-1]<str[num/2])//未考慮str[num/2-1]==str[num/2]的情況,比如2443
str[num/2-1]=str[num/2-1]+1;
for(i=0,j=num-1;i<=num/2;i++,j--)
{
str[j]=str[i]; //2443算出來變2442,錯誤
}
if(str[num/2-1]<str[num/2])
//str[num/2]=str[num/2]+1;
for(i=0,j=num-1;i<=num/2;i++,j--)
{
str[j]=str[i];
}

}

if(num%2!=0)
{

str[num/2]=str[num/2]+1; //不需要上來就+1,未必有這個必要,
//比如231,應是232,不是242
for(i=0,j=num-1;i<=num/2;i++,j--)
{
str[j]=str[i];

}
}

b=atoi(str);
printf("%d,%d,%d\n",a,b,b-a);
return 0;

}

===============================================
按照你的演算法,我寫了個實現:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
char str[10]={0};
int a,b, num,i,j;
int index;
do{
gets(str);
num=strlen(str); //如果直接輸入回車,str是空字元串,下面的計算無法進行
}while(num==0);

a=atoi(str);
index=num/2-1;

/*找出離數字「中心」最近的第一個不對稱的位置*/
while(index>=0 && str[index]==str[num-index-1])
{
index--;
}
if(index>=0)
{
if(str[index]<str[num-index-1])
{
int index2=num/2;
/*如果是9,不能再累加了,必須往高位找*/
while(str[index2]=='9')
{
index2--;
}
/*由於str[index]<str[num-index-1]<='9'
* 所以index2肯定能找到,不會出現index2<0的情形
*/
str[index2]=str[index2]+1;
str[num-index2-1]=str[index2];

/*高位累加後,中間位置可以清零,數會比較小*/
for(i=index2+1; i<num-index2-1; ++i){
str[i]='0';
}
}
for(i=0,j=num-1; i<=index; i++,j--)
{
str[j]=str[i];
}
}

b=atoi(str);
printf("%d,%d,%d\n",a,b,b-a);
return 0;
}

H. 一道C語言題目,求解 判斷二進制對稱數

你在代碼中調用了itoa函數。
但是這個函數並不是標准庫函數,雖然很多平台都支持。
很不幸,你在線判定的平台不支持這個函數,建議改一下。
或者自己實現一個itoa。

I. 用C語言編譯:輸入一個數,編譯判斷它是否為對稱數(用for循環語句來做)

#include <stdio.h>

int main(void)
{
int i = 0, j;
int num, num1;
int buf[128];
int flag = 1;

printf("input a integer:");
scanf("%d", &num);
num1 = num;

while (num)
{
buf[i++] = num % 10;
num /= 10;
}

for (j = 0; j < i / 2; j++)
{
if (buf[j] != buf[i - 1 -j])
{
flag = 0;
break;
}
}

if (flag) printf("%d 是對稱數\n", num1);
else printf("%d 不是對稱數\n", num1);

return 0;
}