putchar(3) 递归求解思路如下,构造递归函数 void convert(intn);用以将n转化为字符串输出: (1)当n为个位数即n10==0时直接输出该数字对应的字符即可 if(n/10==0) putchar(n+0);/*如 butchart(8输出ASCⅡ码为8的字符,而 putchan(8)输出数字字符8, 显然8的 ASCII码值等于0的ASCI码加8*/ (2)降阶:假设 convert(n/10)能正确将n10转化并输出,则对于n分两步: 先用 convert(n/10)将n/10转化并输出,之后输出n%10对应的字符。 #include<stdio. h> void maino void convert( int n),/函数声明,此时函数返回值类型和形参类型不可省,但形参变量名可省* printI("input n.n”); scanf("%d", &n) convert(n); /*函数调用,此时不可有函数返回值类型和形参类型,写上实参即可* void convert(int n)/*函数定义,此时函数返回值类型、形参类型和形参变量名均不可省* if(n/10==0) putchar(n%10+0);/" putchar(8)输出ASCI码为8的字符,而 putcha(8)输出数字字符8, 显然8的 ASCII码值等于0的ASCI码加8*/ har(n%10+0) 输入123,程序执行过程如下,注意箭头方向与缩进意义 convert(123)/*第一次调用函数时形参为123*/ >n=123;i=12; convert(12),/*第二次调用时形参为12.,返回后执行 putchar(123%10+0)* >n=12;i=l; convert);/第三次调用时形参为1,返回后执行 putchai(12%10+0)* >n=1;=0; putchar(1%10+0);*第三次调用结束* putchar(12%10+0)x<--/*返回执行 putchar((12%10+0°),第二次调用结束* putchar(123%10+0) /*返回执行 butchart(123%10+0)第一次调用结束,返回主函数 思考二: Gauss消去法化矩阵为阶梯形/*注意模块的划分及函数参数的确定* # define Rownum4/代表矩阵行数,注意见名知意* # define COLUM4/*代表矩阵列数* #include<stdio. h> *输入矩阵子函数* void inputmatrix( float a[ I COLUM)/只有第一维大小可省略,形参名可改* printf("input the matrix: In") for(i=0 i<ROWNUM: 1++) for(=0: j<COLNUM: j++) scanf("%f, &ajD; /*foat型变量在输入输出时不可用%d,int型不可用%f*/ *输出矩阵子函数* void outputmatrix(float aDICOLNUMD) int 1,J printf("the matrix is: In"); for(i=0 i<ROWNUM; i++) for(=0; j<COLNUM j++)printf("%5.2f " a[[: printf("n") /寻找非零行函数若a[订为0,则找其正下方非零元素所在行找不到返回-1,否则返回行号* nt findnzero(float a[[ COLNUM,inti)/函数起名也要见名知义 int j result=-1 for(i+l:j<ROWNUM: j++)putchar(‘3’) 递归求解思路如下,构造递归函数 void convert(int n);用以将 n 转化为字符串输出: (1) 当 n 为个位数即 n/10==0 时直接输出该数字对应的字符即可 if(n/10==0) putchar(n+'0'); /*如 putchar(8)输出 ASCII 码为 8 的字符,而 putchar(‘8’)输出数字字符 8, 显然 8 的 ASCII 码值等于 0 的 ASCII 码加 8*/ (2) 降阶:假设 convert(n/10)能正确将 n/10 转化并输出,则对于 n 分两步: 先用 convert(n/10)将 n/10 转化并输出,之后输出 n%10 对应的字符。 #include<stdio.h> void main() { int n; void convert(int n); /*函数声明,此时函数返回值类型和形参类型不可省,但形参变量名可省*/ printf(“input n:\n”); scanf(“%d”,&n); convert(n); /*函数调用,此时不可有函数返回值类型和形参类型,写上实参即可*/ } void convert(int n) /*函数定义,此时函数返回值类型、形参类型和形参变量名均不可省*/ { int i; if(n/10==0) putchar(n%10+'0'); /*putchar(8)输出ASCII 码为8的字符,而putchar(‘8’)输出数字字符8, 显然 8 的 ASCII 码值等于 0 的 ASCII 码加 8*/ else { convert(n/10); putchar(n%10+'0'); } 输入 123,程序执行过程如下,注意箭头方向与缩进意义 convert(123) /*第一次调用函数时形参为 123*/ -->n=123;i=12;convert(12); /*第二次调用时形参为 12,返回后执行 putchar(123%10+’0’)*/ -->n=12; i=1; convert(1); /*第三次调用时形参为 1,返回后执行 putchar(12%10+’0’)*/ -->n=1;i=0;putchar(1%10+'0'); /*第三次调用结束*/ putchar(12%10+'0');<-- /*返回执行 putchar(12%10+’0’),第二次调用结束*/ putchar(123%10+'0');<-- /*返回执行 putchar(123%10+’0’)第一次调用结束,返回主函数*/ 思考二:Gauss 消去法化矩阵为阶梯形/*注意模块的划分及函数参数的确定*/ #define ROWNUM 4 /*代表矩阵行数,注意见名知意*/ #define COLNUM 4 /*代表矩阵列数*/ #include<stdio.h> /*输入矩阵子函数*/ void inputmatrix(float a[][COLNUM]) /*只有第一维大小可省略,形参名可改*/ { int i,j; printf("input the matrix:\n"); for(i=0;i<ROWNUM;i++) for(j=0;j<COLNUM;j++) scanf("%f",&a[i][j]); /*float 型变量在输入输出时不可用%d,int 型不可用%f*/ } /*输出矩阵子函数*/ void outputmatrix(float a[][COLNUM]) { int i,j; printf("the matrix is:\n"); for(i=0;i<ROWNUM;i++) { for(j=0;j<COLNUM;j++)printf("%5.2f ",a[i][j]); printf("\n"); } } /*寻找非零行函数,若 a[i][i]为 0,则找其正下方非零元素所在行,找不到返回-1,否则返回行号*/ int findnzero(float a[][COLNUM],int i) /*函数起名也要见名知义*/ { int j,result=-1; for(j=i+1;j<ROWNUM;j++)