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

求助答案, 十万火急,请大哥大姐帮帮忙。。谢谢啦

哈哈嘻嘻 发布于 2010-05-25 13:07, 567 次点击
1。将N个人围成一圈,每数到M出来一个人,问最后出来的这个人的编码是多少 ?(两种方法)
2。对于输入的字符 串进行加密和解密操作?例如china变成ejkpc每行字母加二.
3. 偏写如下菜单,输入相关字数完成相应功能。
   1插入
   2删除
   3查询
   4退出
4。构成一个从M*N的矩阵,将1到M*N个数按顺时针顺序由外到内填入到矩阵中去?
5。从键盘上输入一个字符串将里面有数字字符转变成数值存储到数组中并输出?

[ 本帖最后由 哈哈嘻嘻 于 2010-5-25 17:09 编辑 ]
3 回复
#2
ciweitou1632010-05-25 14:01
1.使用循环链表,将其填充1~n,然后按照每隔m次删除结点!
2.(char[i]+n)%97+97(n为你要移动的位数)  解密(char[i]+97-n)%97+97(凯撒加密)
3.这个使用个判断,就行!
4. 这个可以只是给行的前M-1个赋值,然后使用转置函数,变换矩阵!每4次,行数+1(也是起始的行地址),(M-1)--
5.这个使用ascii码来过滤。
提供下思路,有不正确的还请指出来!
#3
最近不在2010-05-25 14:39
程序代码:
// Note:Your choice is C++ IDE
#include <iostream>
using namespace std;

void Fun(int N, int M)
{
    int k = 0;
    for(int i = 1; i <= N; i++)
    {
        k = (k + M)%i;     //每次提走一个元素
    }
    cout<<k+1<<endl;
}

void Change(char a[], int b[], int n)  //n为字符串长度
{
    for(int i = 0; i != n-1; i++)
    {
        b[i] = (int)a[i];   //强制类型装换
        cout<<a[i]<<" to "<<b[i]<<endl;
    }
}

void Secret(char a[], char b[], int n, int N)  //n为字符串长度,N为移动个数
{
    for(int i = 0; i != n-1; i++)
    {
        if((a[i]>'a' && a[i]<='z'-N) || (a[i]>'A' && a[i]<='Z'-N))   //控制为字母
        {
            b[i] = a[i] + N;      
        }
        if((a[i]<='z' && a[i]>'z'-N) || (a[i]<='Z' && a[i]>'Z'-N))
        {
            b[i] = a[i] + N - 32;     //最后的N个字符往前N个字符换
        }
    }
}

void Menu()
{
    int n;
    cin>>n;
    while(1)
    {
        switch(n)
        {
            case 1:  功能函数........break;
            case 2:
            .............
        }
    }
}
#4
哈哈嘻嘻2010-05-25 16:44
谢 谢 拉!
1