| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 424 人关注过本帖
标题:有2个问题的程序
取消只看楼主 加入收藏
★红狼
Rank: 2
等 级:论坛游民
帖 子:190
专家分:17
注 册:2006-7-12
结帖率:100%
收藏
 问题点数:0 回复次数:2 
有2个问题的程序

问题有2个。。

#define N 10
void del(int *shu,int *n) //删除函数
{
int i,j,m;
int con=0;
printf("qing shu ru ni yao sanchu de shu: ");
scanf("%d",&m); //输入要删除的数
i=0;
while(i<(*n-con)) //问题1 。con 没起作用
{ // 也就是底下输出。把一个数删除后以其他数填充了。
if (shu[i]==m)
{
for (j=i;j<*n;j++)
shu[j]=shu[j+1];
con++; //这里有增加
}
i++;
}
}

main()
{
int sum[N];
int i,j,n=0;
int m;
for(i=0;i<N;i++)
{
printf("shuru yizu shuzi 'q'wei quit xianzai shuru: ");

if (scanf("%d",&sum[i])!=1) //如果输入是Q。或者是说非法字符。
break; //那么就退出
n++; //问题2。 如果这里中断后。del 函数中。不执行scanf 函数。
}
printf("\nni shuru de shu wei :");
for (i=0;i<n;i++)
printf(" %d ",sum[i]);

printf("\n");
del(sum,&n); //难道n 值 没返回?! 也不对,我把 del 函数 放这里,也就是不用函数
printf("\nsan chu hou de shu you : "); //也一样的。删除后的数组结尾。就是被其他数值填充。
for (i=0;i<n;i++)
printf(" %d",sum[i]);
}
就是说。问题1 如果 我输入中 输入了个 Q。那么就不会提示 输入你要删除的数。
输出变为,刚输入正常的数。
问题2 如果全部输入。那么 比如 11 22 23 24 22 25 26 27 22 20
提示你要删除的数 比如22
那么 输出就会。
11 23 24 25 26 27 10 10 10
这3个10 就是填充的。

我不是一出问题。就贴的。我也自己想了很久了。 谢谢大家能帮我。

2006-09-12 12:21
★红狼
Rank: 2
等 级:论坛游民
帖 子:190
专家分:17
注 册:2006-7-12
收藏
得分:0 
以下是引用nuciewth在2006-9-12 12:47:41的发言:

#include<stdio.h>
#define N 10
void del(int *shu,int *n)
{
int i,j,m;

printf("qing shu ru ni yao sanchu de shu: ");
scanf("%d",&m);
i=0;
while(i<(*n))
{
if (shu[i]==m)
{
for (j=i;j<*n-1;j++)
shu[j]=shu[j+1];
shu[j]=10; //这个什么意思?我的意思不是用10填充。
//删除了就少了, shu [10]删了个shu[9]了
i--;//删除一个数,i要往下移 //下移了这个*n的值可没变。那么不是会多一次循环?
}
i++;
}
}

main()
{
int sum[N];
int i,j,n=0,flag=0;
int m;
for(i=0;i<N;i++)
{
printf("shuru yizu shuzi 'q'wei quit xianzai shuru: ");

if (scanf("%d",&sum[i])!=1)
{
flag=1;
break;
}
n++;
}
printf("\nni shuru de shu wei :");
for (i=0;i<n;i++)
printf(" %d ",sum[i]);

printf("\n");
if(flag!=1) //那不是变的不是每次执行 del 函数了。
{
del(sum,&n); //这个要每次都要执行啊
}
printf("\nsan chu hou de shu you : ");
for (i=0;i<n;i++)
printf(" %d",sum[i]);
}


我的意思是: 不确定的输入n个数(比如100。1000个数)。能中断(输入q或其他字符)。 然后输出刚输入的数
再然后 删除n个 相同的数。再输出删除后的数。

2006-09-12 13:24
★红狼
Rank: 2
等 级:论坛游民
帖 子:190
专家分:17
注 册:2006-7-12
收藏
得分:0 

我知道你没看清楚。。我的问题是,那里出了错误。不是怎么要加这个。

不过你的倒也是个 不错的新题目。

2006-09-12 14:55
快速回复:有2个问题的程序
数据加载中...
 
   



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

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