标题:[求助]一道C题一直错,希望大家帮帮忙
只看楼主
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
 问题点数:0 回复次数:10 
[求助]一道C题一直错,希望大家帮帮忙

一道竞赛题,但是应该不难
Waterloo ACM Programming Contest Oct 5, 1996
这里是链接
http://acm.hit.edu.cn/ojs/show.php?Proid=1536&Contestid=0

我的代码, 如果有空,麻烦大家帮我看看,谢谢了

#include <stdio.h>
#include <stdlib.h>
#define SIZE 27

void scan_data (char*, int);
void scan_and_change_text (char*, char*);
void print_result (char*, int);

int main (void)
{
char org_alp[SIZE]; /*原始字母表*/
char sub_alp[SIZE]; /*替换后的字母表*/

scan_data (org_alp, SIZE);
scan_data (sub_alp, SIZE);
print_result(sub_alp, SIZE);
print_result(org_alp, SIZE);
scan_and_change_text (org_alp, sub_alp);

return 0;
}

/*
*define scan_data
*该函数用于读取数据
*/

void scan_data (char* w_arr, int size)
{
int i;

for (i = 0; i <= size - 1; i++)
{
scanf ("%c", &w_arr[i]);
}
}

/*
*define scan_and_change_text
*该函数用于读取并加密(改变)text
*/

void scan_and_change_text (char *org_alp, char *sub_alp)
{
char c;
int i,counter = 0;

while( (scanf ("%c", &c) ) != EOF)
{
for (i = 0; i <= SIZE - 2; i++)
{
if (c == org_alp[i])
{
c = sub_alp[i];
break;
}
}
putchar(c);
counter++;
if (counter == 64)
printf ("\n");
if (c == '\n')
counter = 0;
}
printf ("\n");
}

/*
*define print_result
*该函数用于打印最后的结果
*第一个参数为数组首元素的地址,第二个参数为数组大小
*/

void print_result (char *w_arr, int side)
{
int i;

for (i = 0; i <= side - 1; i++)
{
printf ("%c", w_arr[i]);
}
}

如果有空,麻烦大家帮我看看,谢谢了
搜索更多相关主题的帖子: 竞赛题 blank target include 
2007-02-07 19:45
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
得分:0 
英文的啊帮不了你了

羊肉串 葡萄干 哈密瓜!!
2007-02-07 21:34
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
得分:0 
我可以翻译~~
在线等很久了

题目的大致意思就是:
按照你输入的第一行和第二行对应的字符来改变接下来输入的text
比如:
abc
cba
aaa

那么输出就是
cba
abc
ccc

2007-02-07 21:47
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
得分:0 
着是啥意思啊?
没看懂。。
讲的在详细点好不

羊肉串 葡萄干 哈密瓜!!
2007-02-07 21:53
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
得分:0 

其实就是我们一直用的文件加密(最简单版)
输入:
abcdefg
1234567(这是前两行)
aabbccddeeffgg(这是TEXT)

好了,该输出了:
1234567 (按照输入的前两行一一对应输出,a就舒服1,b就是2,等等)
abcdefg (同理, 1就输出a,等等)
11223344556677 (同理)


2007-02-07 22:02
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
得分:0 

给你改完了
#include <stdio.h>
#include <stdlib.h>
#define SIZE 27

void scan_data (char*, int);
void scan_and_change_text (char*, char*);
void print_result (char*, int);

int main (void)
{
char org_alp[SIZE]; /*原始字母表*/
char sub_alp[SIZE]; /*替换后的字母表*/

scan_data (org_alp, SIZE);
scan_data (sub_alp, SIZE);
print_result(sub_alp, SIZE);
print_result(org_alp, SIZE);
scan_and_change_text (org_alp, sub_alp);

return 0;
}

/*
*define scan_data
*该函数用于读取数据
*/

void scan_data (char* w_arr, int size)
{

scanf ("%s", w_arr);
}

/*
*define scan_and_change_text
*该函数用于读取并加密(改变)text
*/

void scan_and_change_text (char *org_alp, char *sub_alp)
{
char c;
int i,counter = 0;

while( (scanf ("%c", &c) )&&c != '1')
{
for (i = 0; i <= SIZE - 2; i++)
{
if (c == org_alp[i])
{
c = sub_alp[i];
break;
}
}
putchar(c);
counter++;
if (counter == 64)
printf ("\n");
if (c == '\n')
counter = 0;
}
printf ("\n");
}

/*
*define print_result
*该函数用于打印最后的结果
*第一个参数为数组首元素的地址,第二个参数为数组大小
*/

void print_result (char *w_arr, int side)
{
int i;

for (i = 0; i <= side - 1; i++)
{
printf ("%c", w_arr[i]);
}
}

[此贴子已经被作者于2007-2-7 22:18:32编辑过]


羊肉串 葡萄干 哈密瓜!!
2007-02-07 22:17
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
得分:0 
没啥问题 就是输入的问题 还有结束的问题
这个程序必须输入26个字母 不然输出的时候可能会有乱码

羊肉串 葡萄干 哈密瓜!!
2007-02-07 22:20
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
得分:0 
恩,谢谢!
但是好象还是错了,你可以在上面提交一下.
我觉得你是对的~
那可能就是我理解错了~~那就太不好意思啦~~~~~

2007-02-07 22:21
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
得分:0 
以下是引用davidloves在2007-2-7 22:21:49的发言:
恩,谢谢!
但是好象还是错了,你可以在上面提交一下.
我觉得你是对的~
那可能就是我理解错了~~那就太不好意思啦~~~~~

没有错啊 。就是你说的答案啊



羊肉串 葡萄干 哈密瓜!!
2007-02-07 22:27
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
得分:0 

当然如果是输入这些不行拉
abc
cba
aaa
那还要在改程序
因为你着数组是有27个存储单元 如果少输入了 肯定会输出乱码的


羊肉串 葡萄干 哈密瓜!!
2007-02-07 22:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-120123-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.714917 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved