C语言随笔:求10000以内的回文数


前言

一个数的各位数字倒过来所得到的新数叫原数的反序数。如果一个数等于它的反序数,则称它为对称数或回文数。


一、题意

一个数的各位数字倒过来所得到的新数叫原数的反序数。如果一个数等于它的反序数,则称它为对称数或回文数。求10000以内的对称数。简单的说就是求10000以内的回文数。

输入样例
无需输入

输出样例
1
2
3
4
.
.
.
9889
9999

二、代码

1.代码的实现




#include<stdio.h>
int main()
{
	int i;
	int k;
	int sum;
	for(i=1;i<10000;i++)
	{
		sum=0;
		k=i;
		do
		{
			sum=sum*10+k%10;//对数字i进行逆排列
			k=k/10;
		}while(k>0);
		if(sum==i)
			printf("%d\n",i);
	}
	return 0;
} 

2.读入数据


无需输入
若代码正确则输出1-10000中的所有回文数(见上方输出样例)


总结

回文数是编程中较为常见的基本问题,直接求数字的逆序,判断逆序是否等于原来的数即可,
if(逆序==原来的数)是回文数
else 不是回文数。
此类知识点较为薄弱的同学需要多加关注本题代码,回文数问题在后面的编程学习中会经常用到。

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会为你提供这些问题的C语言程序实现。 1. 删除重复字符 ```c #include <stdio.h> #include <string.h> void remove_duplicate_chars(char str[]) { int len = strlen(str); int i, j, k; for (i = 0; i < len; i++) { for (j = i + 1; j < len; j++) { if (str[j] == str[i]) { for (k = j; k < len; k++) { str[k] = str[k + 1]; } len--; j--; } } } } int main() { char str[100]; printf("请输入一个字符串:"); gets(str); remove_duplicate_chars(str); printf("删除重复字符后的字符串为:%s\n", str); return 0; } ``` 2. 回文数判断 ```c #include <stdio.h> #include <string.h> int is_palindrome(int num) { char str[10]; sprintf(str, "%d", num); int len = strlen(str); int i; for (i = 0; i < len / 2; i++) { if (str[i] != str[len - i - 1]) { return 0; } } return 1; } int main() { int num; printf("请输入一个整数:"); scanf("%d", &num); if (is_palindrome(num)) { printf("%d是回文数\n", num); } else { printf("%d不是回文数\n", num); } return 0; } ``` 3. 单词统计 ```c #include <stdio.h> #include <string.h> int count_words(char str[]) { int len = strlen(str); int i, count = 0; for (i = 0; i < len; i++) { if (str[i] == ' ' || str[i] == '\n' || str[i] == '\t') { count++; } } return count + 1; } int main() { char str[1000]; printf("请输入一段文本:\n"); fgets(str, sizeof(str), stdin); int count = count_words(str); printf("单词数为:%d\n", count); return 0; } ``` 4. 合法C标识符 ```c #include <stdio.h> #include <string.h> #include <ctype.h> int is_valid_identifier(char str[]) { int len = strlen(str); int i; if (!isalpha(str[0]) && str[0] != '_') { return 0; } for (i = 1; i < len; i++) { if (!isalnum(str[i]) && str[i] != '_') { return 0; } } return 1; } int main() { char str[100]; printf("请输入一个标识符:"); scanf("%s", str); if (is_valid_identifier(str)) { printf("%s是合法的C标识符\n", str); } else { printf("%s不是合法的C标识符\n", str); } return 0; } ``` 5. 奖学金 ```c #include <stdio.h> int main() { int n, i; double score, sum = 0, max = 0; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%lf", &score); sum += score; if (score > max) { max = score; } } double avg = sum / n; if (avg >= 80 && max >= 90) { printf("奖励1000元\n"); } else if (avg >= 80) { printf("奖励800元\n"); } else if (avg >= 60) { printf("奖励500元\n"); } else { printf("很遗憾,没有奖励\n"); } return 0; } ``` 6. 密码翻译 ```c #include <stdio.h> #include <string.h> #include <ctype.h> int main() { char str[100]; printf("请输入需要翻译的字符串:"); fgets(str, sizeof(str), stdin); int len = strlen(str); int i; for (i = 0; i < len; i++) { if (isalpha(str[i])) { if (isupper(str[i])) { str[i] = 'A' + ('Z' - str[i]); } else { str[i] = 'a' + ('z' - str[i]); } } } printf("翻译后的字符串为:%s\n", str); return 0; } ``` 希望这些程序能够帮助到你,如果有任何问题欢迎提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值