Tom数
题目
正整数的各位数字之和被Tom称为Tom数。求输入数(<2^32)的Tom数!
输入:每行一个整数(<2^32).
输出:每行一个输出,对应该数的各位数之和.
分析
- 本题可以用输入整数取余来求每个数字的数字和,但我觉得通过字符串来求是最容易的
#include<stdio.h>
#include<string.h>
int main()
{
int sum;
char s[11];
while(~scanf("%s",&s)){
sum=0;
for(int i=0;i<strlen(s);i++){
sum += s[i]-'0'; //计算每位数字之和
}
printf("%d\n",sum);
}
return 0;
}
字符逆序
样例输入
I am a student
样例输出
tneduts a ma I
分析
- 因为输入的字符串中含有空格,所以不能用字符串中的strlen来存储字符串长度,因为他遇到空格后,后面的就不会统计了
这段代码运行时能够逆序输出,但不知道为什么不通过(运行错误)
#include<stdio.h>
#define N 101
int main()
{
char s[N];
int n=0;
while(1){
scanf("%c",&s[n]);
if(s[n]=='\n'){
break;
}
n++;
}
for(int i=n-1;i>=0;i--){
printf("%c",s[i]);
}
return 0;
}
修改后
#include<stdio.h>
#define N 101
int main()
{
char s[N];
int n=0,c;
while((c=getchar())!=EOF && c!='\n'){
s[n]=c;
n++;
}
for(int i=n-1;i>=0;i--){
printf("%c",s[i]);
}
return 0;
}
EOF作为文件结束的表示,读完文件或者文件错误返回-1