作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码,我的代码中有很多需要改进的地方,但我现在关心的是阻止程序崩溃。提前致谢!
#include <stdio.h>
int IsPalindrome(int a);
int dec[20];
int a = 0;
int main()
{
printf("Please insert your number:\n");
scanf("%d", a);
IsPalindrome(a);
return 0;
}
int IsPalindrome(int a)
{
int temp = 0;
int count = 1;
int p = 1;
temp = a;
while(temp > 10)
{
dec[count] = temp % 10;
count = count+1;
temp = temp / 10;
printf("%d", count);
}
for(int i = 1; i < count; i++)
{
if (dec[i] != dec[count-i])
{
printf("Your number is not a Palindrome");
return 1;
}
}
}
附带问题:
最佳答案
int a = 0; scanf("%d", a);
会导致crush,因为这意味着它应该将数据存储到无效的地方。void
。请注意,根据标准,main()
的返回类型应为 int
。试试这个:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define BUFFER_SIZE 512
char* ReadNumber(void);
void IsPalindrome(const char* a);
int main(void)
{
char* a;
printf("Please insert your number:\n");
a = ReadNumber();
IsPalindrome(a);
free(a);
return 0;
}
char* ReadNumber(void) {
char* ret = malloc(BUFFER_SIZE);
size_t allocatedSize = BUFFER_SIZE;
size_t readLen = 0;
if (ret == NULL)
{
perror("malloc");
exit(1);
}
for (;;)
{
int c = getchar();
if (!isdigit(c))
{
if (c != EOF) ungetc(c, stdin);
break;
}
ret[readLen++] = c;
if (readLen >= allocatedSize)
{
ret = realloc(ret, allocatedSize += BUFFER_SIZE);
if (ret == NULL)
{
perror("realloc");
exit(1);
}
}
}
ret[readLen] = '\0';
return ret;
}
void IsPalindrome(const char* a)
{
size_t count = strlen(a);
/* can't write as i < count - i - 1 because size_t may be unsigned */
for(size_t i = 0; i + i + 1 < count; i++)
{
if (a[i] != a[count - i - 1])
{
printf("Your number is not a Palindrome");
return;
}
}
}
关于c - c中的回文数检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34472434/
我是一名优秀的程序员,十分优秀!