注册 登录
编程论坛 C++教室

求C语言高手帮忙解体..小弟感激不不尽

jjshu520 发布于 2011-09-05 16:19, 340 次点击
题目1、报数问题(数组解决)
任务:编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。
 
 
题目2、密码编码问题
编写一个函数,原型为string fun(string code){},完成功能为,由键盘任意输入一组密码,对其进行加密并输出,规则如下:如果是大写字母,将其转换为对应小写字母之后的第二个字母;如果是小写字母,将其转换为对应大写字母之后的第二个字母;如果是数字,对其加5后开方取整值。(如果到了字母的结束,则轮转回字母的开头,比如字母z,加密后为B)
例如,输入aFY67B,则输出加密后的密码为:Cha33d
编写函数及调用函数的完整程序
2 回复
#2
czsbc2011-09-05 18:07
程序代码:
#include<iostream>
#include<string>
#include<cmath>

using namespace std;
string fun(string code);

int main()
{
    string code;
    cout<<"input a string:";
    cin>>code;
    code=fun(code);
    cout<<"Encoded:"<<code<<endl;
    return 1;
}
string fun(string code)
{
    for(string::iterator iter=code.begin();
            iter!=code.end();++iter)
            {
                if(*iter>='a'&&*iter<='z')
                {
                    *iter-=32;
                    *iter=(*iter-'A'+2)%26+'A';
                }
                else if(*iter>='A'&&*iter<='Z')
                {
                    *iter+=32;
                    *iter=(*iter-'a'+2)%26+'a';
                }
                else if(*iter>='0'&&*iter<='9')
                {
                    *iter=(int)(sqrt(*iter-'0'+5))+'0';
                }
            }
    return code;
}
第二题,用C++写的,因为你给的函数是string类型的。
#3
lucky5635912011-09-06 12:26
约瑟夫问题,比较简单,用链表做。
1