c语言设计递归算法,将一个由数字组成的字符串转换成一个整数,并分
要从命令行接受数据就在main后面的括号写上参数(int a等)。置于说要把字符串的数字转化求和。首先,判断是不是数字,a[i]>=0x30&a[i]<0x40就是数字了。因为是存的ascii码,所以就用ascii码判断就是。每个字符串的每个元素都判断,有一个不是数字就略过或者剔除该元素就随你了。其次,求和。比如,已经判断完毕a[3]字符串为数字,且全部元素有效。那么,
while (a[i]!='\0')
{ i++; }这样可以判断出字符串内有几个有效数字。然后temp=i,保存这个有效个数,for (i;i>=0;i--) { sum+=(a[i]-0x30)*(pow(10,temp-i)); } 其中,a[1]-0x30把字符串转化成数字,pow(10,temp-i)计算的是10的(temp-i)次方,就是做的个十百位的转换。sum+=就是求和。这样就把a[]字符串转换为一个数字,然后就可以用于求和了
12345678910111213141516171819202122#includeint charTonumber(char *s){ char *tmp; int num = 0; tmp = s; while(*tmp) { if(*tmp '9') break;//遇到非数字字符结束 num = num*10 + (*tmp) - '0';//转换为数字 tmp++; } return num;} int main(int argc,char **argv){ char numstr[11]; scanf("%s",numstr); printf("%s::%d
", numstr,charTonumber(numstr)); return 0;}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int fun(char *s)
{
if (*(s+1) != '\0')
{
return pow((double)10,(double)strlen(s)-1)*(*s-'0')+fun(s+1);
}
else
{
return (*s-'0');
}
}
int main(void)
{
printf("%d", fun("123456789"));
}
用递归求表达式1-2+3-4……-100的和(注:C语言)
可以使用递归来实现对表达式 `1-2+3-4……-100` 求和。递归算法的基本思路是将一个大问题分解成多个相同或类似的小问题,然后将这些小问题按照一定规律组合成大问题的解。对于这道题,可以将表达式 `1-2+3-4……-100` 分解成两个子问题:- 1-2+3-4……-98-99+100 - -99+100 然后对每...
C语言如何用递归算法求1!+2!+3!+...n!
include\\x0d\\x0afloat fun(int n)\\x0d\\x0a{\\x0d\\x0aif(n==1) return 1;\/\/如果n=1则直接返回1\\x0d\\x0areturn n*fun(n-1);\/\/否则返回n*fun(n-1),以此计算n的阶乘,这条语句就是递归体\\x0d\\x0a}\\x0d\\x0avoid main()\\x0d\\x0a{\\x0d\\x0a int i;\\x0d\\x0a...
C语言怎样用递归方法编写程序 求s=1!+2!+3!+...10!
思路:先通过程序获得阶乘的值,之后再将阶乘相加,求阶乘时和相加时都用递归的写法 首先是求阶乘:int factorial(int index){ int sum = 0;if (index == 1){ sum = 1;}else{ sum = index * factorial(index-1);} return sum;} 之后再求和:int add_recursion(int maxnum){ int sum =...
C语言用递推和递归两种算法完成斐波那契数列的计算,给一下代码_百度知...
\/\/递归法 int fibo1(int n){ if( n == 1 || n == 2) return 1;else return fibo1(n-1)+fibo1(n-2);} \/\/递推法 int fibo2(int n){ int f0=1,f1=1,f;if (n<2)return 1;for(int i=2;i<n-1;i++){ f=f0+f1;f0=f1;f1=f;} return f;} 区别:递推是直接使...
编写用C语言实现的求n阶阶乘问题的递归算法
long int fact(int n){ int x;long int y;if(n<0){ printf(“error!”);} if(n==0)return 1;x=n-1;y=fact(x);return (n*y);} 拓展阅读:特点 递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法...
用C语言编程实现(递归算法):数组a[n]若为非递增则返回1,否则返回0
用递归算法判断数组a[N]是否为一个递增数组。递归的方法,记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回false结束:bool fun( int a[], int n ){ if( n= =1 )return true;if( n= =2 )return a[n-1] >= a[n-2];return fun( a,n-1) && ( a[n-1] >=...
用C++语言编写一个递归算法,返回一个数组A中前n项和
int sum(int *A, int n) { if (n==1) { return A[0]; } return sum(A, n-1) + A[n-1];}用数学来表示,就是:S1 = A1 Sn = Sn-1 + An 但c++数组是从0计数的,所以 S1 = A0 Sn = Sn-1 + An-1
java中递归算法是什么怎么算的?
一、递归算法基本思路:Java递归算法是基于Java语言实现的递归算法。递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法表示问题的解。递归往往能给我们带来非常简洁非常直观的代码形式,从而使我们的编码大大简化,然而递归的思维...
递归算法是什么?
递归算法(英语:recursion algorithm)在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。递归式方法可以被用于解决很多的计算机科学问题,因此它是计算机科学中十分重要的一个概念。绝大多数编程语言支持函数的自调用,在这些语言中函数可以通过调用自身来进行递归。计算理论可以证明递归...
c语言输入一个整数,用递归算法将整数倒序输出.
voidorder_print(intn){ if(n<10){ printf("%d",n);return;} order_print(n/10);printf("%5d",n%10);} void reverse_print(intn){ if(n<10){ printf("%-5d",n);return;} printf("%-5d",n%10);reverse_print(n/10);} int...
泰利亚叶:[答案] #include int ans[1000]; void dfs(int l,int n,int last,int sum) { if(sum==n) \x09{ printf("%d=",n); \x09\x09for (int i=0;i
拱墅区15576222866: c语言:将递归的方法将一个正整数逆序输出 - ?
泰利亚叶: 可以参考下面的代码: #include <stdio.h> #include <stdlib.h> void print_order_number(unsigned number) { printf("%d",number%10);fflush(NULL); if ( number >= 10 ) { print_order_number(number/10); } } int main(int argc, char**argv) { if ( argc !...
拱墅区15576222866: 用C语言递归法将一个整数化为字符串 - ?
泰利亚叶: 只告诉你思路,自己写代码.1. 为简单,弄个足足够大的字符数组 因为整数最大是9还还是10个数了,忘了,你可以申请数组长度11或者更大都行. 申请两个.一个存倒序,一个存正序.2. 在while循环中,首先对整数除以10求余数,C语言是...
拱墅区15576222866: 设计一个程序 用递归的方法求出一个数组中十个数字的最大值,十个值已知 不能用全局变量 用C语言,谢了, - ?
泰利亚叶: #include int max(int a[],int n); int main() { int a[10] = {2, 5, 8, 1, 3, 6, 9, 0, 7, 4}; printf("max is %d\n", max(a,10)); } int max(int a[],int n) { int ret; if(n==2) { ret = a[0]>a[1]?a[0]:a[1]; } else { ret = a[0]>max(a+1,n-1)?a[0]:max(a+1,n-1); } return ret; }1. 找出...
拱墅区15576222866: C语言程序:用递归法将一个整数n转化成字符串 - ?
泰利亚叶: 下面是程序代码:#include int gnn(int e) { int j; int last=1; for(j=0;j { last=10*last; } return last; } void fun(long int n,int N) {int next;if(N {printf("\"");return; }else{next=n/gnn(N-1); printf("%d",next);fun(n%gnn(N-1),N-1);} } void main() {...
拱墅区15576222866: C语言编程,用递归法将一个正整数n的每个数字都拆分出来,数字前后都标记“*”. - ?
泰利亚叶: 给你个代码:#include<stdio.h> void f(int n) { if (n) { if(n<10) { printf("*%d*",n); return; } f(n / 10); printf("%d*", n % 10); } } int main() {int n; printf("输入一个正整数:"); scanf("%d", &n); f(n);return 0; }
拱墅区15576222866: C语言,求一组整数数组中的最大值,用递归调用,,谢谢 - ?
泰利亚叶: #include <stdio.h> #define MAXLENGTH 5void main() {int Input[MAXLENGTH] = {0}, i = 0;int _GetMax(int *Input,int Index);printf("请输入%d个整数:\n",MAXLENGTH);for (i = 0; i< MAXLENGTH; i++){scanf("%d",&Input[i]);} int ...
拱墅区15576222866: C语言数据结构:定义一个数组 随机赋值 递归打印 - ?
泰利亚叶: #include #define DATA_LENGTH 100 void Print(int *data, int pos) { if((DATA_LENGTH-1) != pos) { Print(data, pos+1); } printf("%d ", data[pos]); } int main() { int i; int data[DATA_LENGTH] = {0}; srand(time(0)); for(i=0; i { data[i] = rand() % DATA_LENGTH; } Print(data, 0); printf("\n"); return 0; }
拱墅区15576222866: C语言设计一个递归函数,该函数功能为,把一个整数从高位到低位逐个数出,一个数一行. - ?
泰利亚叶: #include<stdio.h>//不懂可追问,已经测试过.int output(int k,int c) { if(k/c>0) printf("%d\n",k/c); if(c==1) return 1; else output(k%c,c/10); } int main() {int k; int c=1000000000;//没有交代数据范围,根据int类型定义了. scanf("%d",&k); output(k,c); getchar(); getchar(); return 0; }
拱墅区15576222866: c语言:用递归函数将数字转换成字符串输出 - ?
泰利亚叶: #include <stdio.h>void foo(int *a, int n) {if (n){putchar(*a + '0');return foo(a + 1, n - 1);} }int main(void) {int b[5] = {1, 2, 3, 4, 5};foo(b, 5);return 0; }