一个程序主要包括对数据的描述和对操作的描述,对数据的描述是指在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式。这就是数据结构(data structure),对操作的描述。即要求计算机进行操作的步骤,也就是算法(algorithm),数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式
算法+数据结构=程序
我们可以通过一些基本的简单的例子来提高我们编写程序的能力。
对一个正整数逆序输出,比如12345,我们输出54321,我们可以采用循环递归等等多种方法,来提示我们对程序的实现,我们先看一个对三位数逆序的输出。我们知道
逆序输出三位数
固定的三位数,我们不需要循环。
#include <stdio.h> //逆序输出一个三位数,比如123,输出321 int main() { int a=0; int b,c,d; printf("请输入一个三位数:\n"); scanf("%d",&a); printf("%d\n",(a%10)*100+((a%100)/10)*10+a/100) ; return 0; }
逆序输出任意正整数
分析:首先,输入的是一个整数,因此最前面一位数不是零,所以我们可以用除10取余法
a = num % 10;
就是输出数字的最后一位
然后除10剔除数字最后一位,这样数字倒数第二位就会输出。以此类推,就能逆序输出数字。
方法一
#include <stdio.h> int main() { int n ; scanf("%d",&n); while(n>0) { printf("%d",n%10); n = n/10; } printf("\n"); return 0; }
方法二
#include <stdio.h> void oppsite(int n);//逆序输出函数 int main() { int m; scanf("%d",&m); oppsite(m); return 0; } void oppsite(int n) { //逆序输出函数 if(n==0) return; else printf("%d",n%10); oppsite(n/10); //递归调用 return; }
方法三
#include<stdio.h> int main() { int a; while(scanf("%d",&a)!= EOF) { while(a>0) { printf("%d",a%10); a=a/10; } printf("\n"); } return 0; }
方法四
#include<stdio.h> #include<string.h> int main() { int i,j,t,n; char a[10]; gets(a); n=strlen(a); for(i=0; i<=n/2; i++) { t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t; } for(j=0; j<n; j++) printf("%c",a[j]); printf("\n"); return 0; }
方法五
#include <stdio.h> void print(int n);//声明 int main() { int a; scanf("%d",&a); print(a); return 0; } void print(int n) { while(n!=0) { printf("%d",n%10); n=n/10; } }
方法六
#include <stdio.h> void main( ) { int x,d; scanf("%d",&x); do { d=x%10; printf("%d",d); x=x/10; } while(x!=0); }