出道编程题,有兴趣的做一下
[color=Maroon]已知一个int型数组USER[30],其中每一个元素或为0或是其下标数加1。要求以字符串形式打印其中不为零的元素。规则:1)不连续元素以逗号分割如:1,4,6,27,30
2)连续元素用连字符形式,并用逗号分割每个区段,如:1-4,7,19-30
示例数组:USER[30] = {0,0,3,0,5,0,7,8,9,10,11,12,0,0,0,0,0,0,0,0,0,0,0,24,25,0,0,0,29,0}
写出算法或程序。[/color]
[color=Blue][color=Beige][color=Brown][color=Beige][color=Blue]这是一个function中的一小部分功能实现[/color][/color][/color][/color][/color] 呵呵
这是我工作以后解决的第一个问题的一小部分抽象出来的一个问题 回去想想 void function()
{
int nCon=0;//是否连续,>=2连续.<2不连续
bool bfirst=true;//是否第一次打印。
for(int i=0;i<30;i++){
if(0==USER[i]){
if(nCon!=0){//存在非0元素
if(!bfirst){
printf(",");//非第一次打印,打印逗号,否则不打印.
}
bfirst=false;
}
if(nCon>=2){
printf("%d",i+1-nCon);//min
printf("-%d",i);//连续,当前元素为0,打印前一元素(max)
}
if(nCon==1){
printf("%d",i);//不连续,当前元素为0,打印前一元素。
}
nCon=0;
}else{
nCon++;
}
}
printf("\n");
}
[[i] Last edited by Webmaster on 2005-2-24 at 11:08 [/i]] 还好
看了一下, 如果最后一个元素不为0 ,你怎么处理, 考虑一下边界条件
还有 应该是(0==USER[i]) 吧 呵呵,真没考虑最后一个不为0.
改一下吧.
if(0==USER[i]){
//....
}else{
nCon++;
if(29==i){//最后不为0,i为当前max位,值为i+1
printf(",");
if(nCon>1){
printf("%d",i+1+1-nCon);//min
printf("-%d",i+1);//max
}else{
printf("%d",i+1);
}
} 我怎么感觉我写的这么麻烦呢?
要是能这样就好了:
lsakdjflsa d
asdfjkl;asdj
ok
bye
呵呵。 合起来.
[code]
void function()
{
int nCon=0;//是否连续,>=2连续.<2不连续
bool bfirst=true;//是否第一次打印。
for(int i=0;i<30;i++){
if(0==USER[i]){
if(nCon!=0){//存在非0元素
if(!bfirst){
printf(",");//非第一次打印,打印逗号,否则不打印.
}
bfirst=false;
}
if(nCon>=2){
printf("%d",i+1-nCon);//min
printf("-%d",i);//连续,当前元素为0,打印前一元素(max)
}
if(nCon==1){
printf("%d",i);//不连续,当前元素为0,打印前一元素。
}
nCon=0;
}else{
nCon++;
if(29==i){//最后不为0,i为当前max位,值为i+1
printf(",");
if(nCon>1){//连续
printf("%d",i+1+1-nCon);//min
printf("-%d",i+1);//max
}else{
printf("%d",i+1);
}
}
}
}
printf("\n");
}
[/code]欢迎大家批评指正.
[[i] Last edited by Webmaster on 2005-2-24 at 14:21 [/i]] [color=blue]没反映了?我怎么感觉我在帮人家做作业啊?[/color] 怎么没考虑用指针做呢
这可是c语言的精髓的一部分呀 你用指针做吧.
因为容易出现内存泄露和访问非法地址的原因,我习惯了能不用指针就不用指针。
指针是个很好的方式,但用不好也会造成很大的麻烦。 你只是听说把
可能还没体验过什么叫内存泄露
几千甚至几万行的程序可能还感觉不到内存泄露
这样的问题往往在大的project中才会出现
况且 现在已经有检测程序代码是否存在内存泄露的工具
呵呵
不必担心 呵呵.你知我干嘛的? 斑竹阿
呵呵 哈哈
你怎么不用指针做呢?我看看。 哇,看两个高人讨论那么深奥的问题,好崇拜啊,我很努力的学,C语言仍然只是学到皮毛而已,惭愧啊 楼上,你挖苦我们呢?不就是一个小题目大家玩玩么。
页:
[1]