题目内容
(请给出正确答案)
[主观题]
试写一个递归算法,将整数字符串转换为整数(例:“43567”→43567),算法的首部为:intstringToInt(c
试写一个递归算法,将整数字符串转换为整数(例:“43567”→43567),算法的首部为:intstringToInt(c
har*s),s为给定的整数字符串,函数返回转换的结果。
查看答案
如果结果不匹配,请 联系老师 获取答案
har*s),s为给定的整数字符串,函数返回转换的结果。
#include<stdio.h>
main()
{char*p,s[6];
int n;
p=s;
gets(p);
n=*p-'0';
while(______!='\0')
n=n*8+*p-'0';
printf("%d\n",n);
}
将一个非负十进制整数转换成八进制数,使用非递归算法实现。
算法分析:十进制转换成八进制的过程是将十进制整数除8得余数,直到商是0为止,然后倒排余数。为了得到倒排的余数,可以利用栈来实现,每次运算后将余数压入栈中,直到商为0,将栈中数据输出即是。使用顺序栈,将顺序栈的定义及其基本操作的实现写在头文件“seqstack.h”中。
用欧几里得算法可以找到两个整数的最大公因子(gcd)。用C语言写一个递归函数,计算两个整数的gcd。用下面的例子来验证你的函数(要输出最后结果):gcd(4,28),gcd(22,4),gcd(22,5),gcd(128,16),gcd(802,800)和gcd(997,19)。
算法设计:对于给定的n个正整数,设计一个优先队列式分支限界法,用最少的无优先级运算次数产生整数m.
数据输入:由文件input.txt给出输入数据.第1行有2个正整数n和m.第2行是给定的用于运算的n个正整数.
结果输出:将计算的产生整数m的最少无优先级运算次数以及最优无优先级运算表达式输出到文件output.txt.