一个十分诡异的问题,路过请进。

oaiei 2008-03-23 05:56:07
一个同学写了这么一个代码,后来出现了问题,解决不了,希望大家能够予以帮助。

代码如下:
#include <stdio.h>
#include <math.h>
bool equl(int s)
{
int test[10],k = 0;
int i = 0;
while(s)
{
test[k++] = s % 10;
s /= 10;
}
int j = k/2;
while(i <= j)
{
if(test[i++] != test[--k])
return false;
}
return true;

}
int main()
{ freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int i,temp;
int test[10];
int a,b,count = 0;

scanf("%d%d",&a,&b);
int num = 0;
for (i = a; i <= b; i++)
{
if(i % 2 == 0)
continue;
int j = 3;
temp = (int)sqrt(i);
bool flag = false;
while(j <= temp){
if(i % j == 0)
{
flag = true;
break;
}
j += 2;
}
if(!flag && equl(i))
{
count++;
num++;
printf("%d ",i);
if(num % 10 == 0)
printf("\n");
}
}
printf("\n%d",count);
return 0;
}
主要意思就是对input.txt内的两个数a,b,计算a,b之间的素数的个数,输出时,每行10个输出。
最后输出a,b之间一共有多少个素数。

先不考虑代码的正确性,因为主要问题不是这个。
比如在input.txt里面输入两个数:5 100000
运行后output.txt用记事本打开出现乱码。

‵‷ㄱㄠ㄰ㄠㄳㄠㄵㄠㄸㄠㄹ㌠㌱㌠㌵ഠ㌊㌷㌠㌸㜠㜲㜠㜵㜠㜸㜠㜹㤠㤱㤠㤲ㄠ㌰㄰ㄠ㔰㄰ഠㄊ㘰㄰ㄠ㌱ㄱㄠ㐱ㄱㄠ㐲ㄲㄠ㜲ㄲㄠ㠲ㄲㄠ㌳ㄳㄠ㠳ㄳㄠ㤳ㄳㄠ㌴ㄴഠㄊ㜴ㄴㄠ㐵ㄵㄠ㔵ㄵㄠ〶ㄶㄠ㌶ㄶㄠ㔶ㄶㄠ㘶ㄶㄠ㐷ㄷㄠ㤷ㄷㄠㄸㄸഠㄊ㐸ㄸㄠ㌹ㄹㄠ㠹ㄹㄠ㤹ㄹ㌠㄰㌰㌠㈰㌰㌠㐰㌰㌠㜰㌰㌠㠰㌰㌠〱㌱ഠ㌊㔱㌱㌠㌲㌲㌠㐲㌲㌠㔳㌳㌠㔴㌴㌠㠴㌴㌠〵㌵㌠ㄵ㌵㌠㌵㌵㌠㜵㌵ഠ㌊㈶㌶㌠㔶㌶㌠㈷㌷㌠㔷㌷㌠〸㌸㌠ㄸ㌸㌠㜸㌸㌠㈹㌹㜠㈰㜰㜠㔰㜰ഠ㜊㘰㜰㜠㌱㜱㜠㤱㜱㜠㈲㜲㜠㜲㜲㜠〳㜳㜠㈳㜳㜠㘳㜳㜠〴㜴㜠㜴㜴ഠ㜊㔵㜵㜠㌶㜶㜠㘶㜶㜠㌷㜷㜠㐷㜷㜠㤷㜷㜠㐸㜸㜠㜸㜸㜠㠸㜸㜠㌹㜹ഠ㜊㘹㜹㜠㤹㜹㤠㜰㤰㤠〱㤱㤠ㄳ㤳㤠㈳㤳㤠㜳㤳㤠〴㤴㤠㌴㤴㤠㘴㤴ഠ㤊㠴㤴㤠㤴㤴㤠㤵㤵㤠㈶㤶㤠㐶㤶㤠㜶㤶㤠㌷㤷㤠㔷㤷㤠㠷㤷㤠㌸㤸ഠ㤊㘸㤸ഠㄊㄱ

但用UE或editplus打开却会出现数字,

5 7 11 101 131 151 181 191 313 353
373 383 727 757 787 797 919 929 10301 10501
10601 11311 11411 12421 12721 12821 13331 13831 13931 14341
14741 15451 15551 16061 16361 16561 16661 17471 17971 18181
18481 19391 19891 19991 30103 30203 30403 30703 30803 31013
31513 32323 32423 33533 34543 34843 35053 35153 35353 35753
36263 36563 37273 37573 38083 38183 38783 39293 70207 70507
70607 71317 71917 72227 72727 73037 73237 73637 74047 74747
75557 76367 76667 77377 77477 77977 78487 78787 78887 79397
79697 79997 90709 91019 93139 93239 93739 94049 94349 94649
94849 94949 95959 96269 96469 96769 97379 97579 97879 98389
98689
111

首先怀疑是不是printf("\n%d",count);
这句出错了,删除后用记事本打开没有问题-_-

不知道是什么问题,MS是编码出现了错误?

望高手予以解决。。
...全文
238 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
arong1234 2008-03-23
  • 打赏
  • 举报
回复
文本文件是没编码的,除非这个文件的开头两个字节碰巧是0xFF0xFE,使得notepad以为它是Unicode文件
星羽 2008-03-23
  • 打赏
  • 举报
回复

换行的问题,把printf("\n") 换成printf("\r\n");就好了


#include <stdio.h>
#include <math.h>
bool equl(int s)
{
int test[10],k = 0;
int i = 0;
while(s)
{
test[k++] = s % 10;
s /= 10;
}
int j = k/2;
while(i <= j)
{
if(test[i++] != test[--k])
return false;
}
return true;

}
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int i,temp;
int test[10];
int a,b,count = 0;

scanf("%d%d",&a,&b);
int num = 0;
for (i = a; i <= b; i++)
{
if(i % 2 == 0)
continue;
int j = 3;
temp = (int)sqrt((float)i);
bool flag = false;
while(j <= temp){
if(i % j == 0)
{
flag = true;
break;
}
j += 2;
}
if(!flag && equl(i))
{
count++;
num++;
printf("%d ", i);
if(num % 10 == 0)
printf("\r\n");
}
}
printf("\r\n%d",count);
fclose(stdin);
fclose(stdout);
return 0;
}



oaiei 2008-03-23
  • 打赏
  • 举报
回复
想起一个笑话是,在记事本里写"联通"两个字,保存后用记事本打开是乱码。

哈哈。。
yuannan 2008-03-23
  • 打赏
  • 举报
回复
也遇到过这种事,
但是后来运行就好了
诡异
oaiei 2008-03-23
  • 打赏
  • 举报
回复
回一楼,程序写数据的时候怎么控制编码格式?

我要选哪种格式才会看得到数字?
canybox 2008-03-23
  • 打赏
  • 举报
回复
同意1楼
NamelessOnePS 2008-03-23
  • 打赏
  • 举报
回复
应该是记事本的Bug,
通过记事本打开去掉printf("\n%d",count)的输出的文件;
显示正常.
然后记事本进行操作:到文件尾,一个回车,输出111,储存.
重新打开文件,也会显示乱码.
独孤过儿 2008-03-23
  • 打赏
  • 举报
回复
记事本的编码选的是什么?
做一门精致,全面详细的 java数据结构与算法!!!让天下没有难学的数据结构,让天下没有难学的算法,不吹不黑,我们的讲师及其敬业,可以看到课程视频,课件,代码的录制撰写,都是在深夜,如此用心,其心可鉴,他不掉头发,谁掉头发???总之你知道的,不知道的,我们都讲,并且持续更新,走过路过,不要错过,不敢说是史上最全的课程,怕违反广告法,总而言之,言而总之,这门课你值得拥有,好吃不贵,对于你知识的渴求,我们管够管饱话不多说,牛不多吹,我们要讲的本门课程内容:稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序、基数排序(桶排序)、堆排序、排序速度分析、二分查找、插值查找、斐波那契查找、散列、哈希表、二叉树、二叉树与数组转换、二叉排序树(BST)、AVL树、线索二叉树、赫夫曼树、赫夫曼编码、多路查找树(B树B+树和B*树)、图、图的DFS算法和BFS、程序员常用10大算法、二分查找算法(非递归)、分治算法、动态规划算法、KMP算法、贪心算法、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法马踏棋盘算法。

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧