求高手帮忙把C++代码中的cin cout改成scanf printf谢谢~ #include <iostream> using namespace std; /* 计

#include<iostream>usingnamespacestd;/*计算f[n]%m(这个程序将递归函数写成非递归的形式)*/intmain(){intm=0,n... #include <iostream>

using namespace std;

/* 计算 f [ n ] % m ( 这个程序将递归函数写成非递归的形式 ) */

int main() {

int m = 0, n = 0, i = 4, f [ 10001 ] = {0}; //定义变量

while ( cin >> n >> m ) //开始循环,当输入 m, n 时

{

if( m == 0 && n == 0 )

break; //如果 m = 0, n = 0, 跳出程序

else if( n < 0 )

cout << (n % m + m) % m << endl; //n < 0的情况

else if( n <= 10000 && 2 <= m <= 10000 )

{

f [ 1 ] = 1, f [ 2 ] = 2, f [ 3 ] = 3;

for( i = 4; i <= n; i ++ )

{

f [ i ] = f [ i - 1 ] + f [ i - 3 ];

if ( f [ i ] >= m )

f [ i ] = f [ i ] % m;

}

cout << f [ n ] % m << endl; //m,n满足条件时,计算 f [ n ] % m的值

}

else

cout << "Invalid input!" << endl; //错误处理

}

return 0;

}
展开
 我来答
天堂鸟clz
2010-10-31 · 超过21用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:59.6万
展开全部
按你的要求只改了输入输出语句,其他的请自行解决。

#include <stdio.h>

/* 计算 f [ n ] % m ( 这个程序将递归函数写成非递归的形式 ) */

int main() {

int m = 0, n = 0, i = 4, f [ 10001 ] = {0}; //定义变量

while (scanf("%d %d",&n,&m) == 2 ) //开始循环,当输入 m, n 时

{

if( m == 0 && n == 0 )

break; //如果 m = 0, n = 0, 跳出程序

else if( n < 0 )

// cout << (n % m + m) % m << endl; //n < 0的情况
printf("%d\n",(n % m + m) % m);

else if( n <= 10000 && 2 <= m <= 10000 )

{

f [ 1 ] = 1, f [ 2 ] = 2, f [ 3 ] = 3;

for( i = 4; i <= n; i ++ )

{

f [ i ] = f [ i - 1 ] + f [ i - 3 ];

if ( f [ i ] >= m )

f [ i ] = f [ i ] % m;

}

// cout << f [ n ] % m << endl; //m,n满足条件时,计算 f [ n ] % m的值
printf("%d\n",f [ n ] % m);

}

else

// cout << "Invalid input!" << endl; //错误处理
printf("Invalid input!\n");

}

return 0;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雅痞cool
2010-10-31
知道答主
回答量:18
采纳率:0%
帮助的人:28.1万
展开全部
我没看你程序是否有错 直接改了
#include <stdio.h>
/* 计算 f [ n ] % m ( 这个程序将递归函数写成非递归的形式 ) */

int main() {

int m = 0, n = 0, i = 4,c,a, f [ 10001 ] = {0};//定义变量
a=(n % m + m) % m;

while ( scanf("%d,%d",&m,&n) ) //开始循环,当输入 m, n 时

{

if( m == 0 && n == 0 )

break; //如果 m = 0, n = 0, 跳出程序

else if( n < 0 )

printf("%d",a); //n < 0的情况

else if( n <= 10000 && 2 <= m <= 10000 )

{

f [ 1 ] = 1, f [ 2 ] = 2, f [ 3 ] = 3;

for( i = 4; i <= n; i ++ )

{

f [ i ] = f [ i - 1 ] + f [ i - 3 ];

if ( f [ i ] >= m )

f [ i ] = f [ i ] % m;

}
c=f[n]%m;

printf("%d",c); //m,n满足条件时,计算 f [ 2n ] % m的值

}

else

printf( "Invalid input!" ); //错误处理

}

return 0;

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
姜桃
2010-10-31 · TA获得超过582个赞
知道小有建树答主
回答量:406
采纳率:0%
帮助的人:352万
展开全部
#include <stdio.h>

/* 计算 f [ n ] % m ( 这个程序将递归函数写成非递归的形式 ) */

int main() {

int m = 0, n = 0, i = 4, f [ 10001 ] = {0}; //定义变量
scanf("%d %d",&n,&m);
while ( m&&n ) //开始循环,当输入 m, n 时

{

if( m == 0 && n == 0 )

break; //如果 m = 0, n = 0, 跳出程序

else if( n < 0 )

printf("%d\n",(n % m + m) % m); //n < 0的情况

else if( n <= 10000 && 2 <= m <= 10000 )

{

f [ 1 ] = 1, f [ 2 ] = 2, f [ 3 ] = 3;

for( i = 4; i <= n; i ++ )

{

f [ i ] = f [ i - 1 ] + f [ i - 3 ];

if ( f [ i ] >= m )

f [ i ] = f [ i ] % m;

}

printf("%d\n",f [ n ] % m ); //m,n满足条件时,计算 f [ n ] % m的值

}

else

printf( "Invalid input!\n"); //错误处理

}

return 0;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式