Java教程

2021-10-09

本文主要是介绍2021-10-09,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

每日一题_____

从键盘输入一个可带空格的字符串,
判断该字符串是否是回文(回文指正向读与逆向读相同的字符串,如 abcddcba或abcba等)。如果字符串是回文,输出"Yes",否则输出"No"。
.
.

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

void judge(char str[]);
int main(){
char str[50];
int size;
printf("请输入一个可带空格的字符串,判断是否是回文:\n");
gets(str);  //因为空格也要输进去,不能用scanf
judge(str);
return 0;
}

void judge(char str[]){
int i=0;
int size=strlen(str);
for(;i<size;i++){
    if(str[i]!=str[size-i-1])  //例如:abc d cba    str[i]和str[size-i-1]对应第一个和最后一个字符,如果不等就跳出。
      break;
}
if(i==strlen(str))         //看是否i进行到了最后
    printf("YES\n");
    else printf("NO\n");
}



上面是会问字符,还有回文数的判断,即12321是回文数。
下面是回文数:(输入任意位数字)
.

感觉写的好麻烦,寻找好的方法是多么重要 ……

#include <stdio.h>
void main(){
	int num,yu,i=0,j=0,count=0; //num是输入的数, yu余数, i是store[i]下标, count是计数store有多少个元素
	int store[10];          //用于存余数
	printf("Please input numbers: ");
	scanf("%d", &num);      //要判断的数据
	while(num!=0){         //例如:如果是121,除以10余数为*1*,值为12......重复,余数为*2*,值为1,再重复,余数为*1*     store里就是1 2 1
        yu=num%10;
        store[i]=yu;    //余数存入
        num=num/10;
        i++;
        count++;       //每次进行count加1,计数store有多少个元素
	}
   for(j=0;j<count;j++){          //往下和字符回文一样了
    if(store[j]!=store[count-j-1])
        break;

   }
   if(j==count)
        printf("YES\n");
    else
        printf("NO\n");

}

我们将原数倒置后与原数比较,判断是否相同,相同即为回文数,反之不是。

int judge(int num);
void main(){
	int num;
	printf("Please input numbers: ");
	scanf("%d", &num);
	if(judge(num))   //返回判断
	printf("YES");
	else
    printf("NO");

}

int judge(int num){
    int temp,sum=0,i; //temp是存原有的数  sum是最后倒置的数
    temp=num;         //先将原数存起来
    while(num){       //当num不为0时
        i=num%10;     //比如121   num%10余数为*1*,值为12  再重复 余数为*2* 值为1,然后再..余数*1*  值为0
        num=num/10;   
        sum=sum*10+i; 
    }
    if(sum==temp)
        return 1;
        else return 0;
}
这篇关于2021-10-09的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!