输入多个数(用回车隔开),求它们的反序数的和,输入非数字时结束。
对键盘输入的任意一组正整数(位数任意),求所有数的反序数之和,这里的反序数是指对该数从右向左顺序读得到的数,例如123的反序数是321,1200的反序数是21。输入非数字时结束程序。
#include <stdio.h> int foo(int n) { int sum = 0; while(n) { int temp = n % 10; sum = sum * 10 + temp; n /= 10; } return sum; } int main(void) { int a; int value = 0; int status = scanf("%d", &a); while(status==1){ value += foo(a); status = scanf("%d", &a); } printf("value is %d\n", value); return 0; }
#include <stdio.h> #include <stdlib.h> int main() { char **array,ch; int num=0,i=1,j; int start=0; array=(char**)calloc(num+1,sizeof(char*)); *(array+num)=(char*)calloc(i+1,sizeof(char)); while(1) { ch=getchar(); if(ch>='0'&&ch<='9') { *(*(array+num)+i)=ch; i++; *(array+num)=(char*)realloc(*(array+num),(i+1)*sizeof(char)); } else if(ch=='\n') { *(*(array+num))=i; //上一个数据计长度 num++; i=1; array=(char**)realloc(array,(num+1)*sizeof(char*)); *(array+num)=(char*)calloc(i+1,sizeof(char)); } else { *(*(array+num))=i; //上一个数据计长度 break; } } //printf("num=%d\n",num); for(i=0; i<=num; i++) { for(j=*(*(array+i))-1; j>0; j--) { if(*(*(array+i)+j)=='0'&&start==0) continue; start=1; printf("%c",*(*(array+i)+j)); } start=0; printf("\n"); } for(i=0; i<=num; i++) free(*(array+i)); free(array); return 0; }
[此贴子已经被作者于2020-5-27 18:07编辑过]