题目要求如上,先输入一个数字n为要输入的数字个数。然后输入数组。将输入的数组中的重复数字删除后输出重复数字个数和删除重复后的数组。以下是我自己编写的程序以及思路,运行后只输出一个和n相同的数字,也就是说t=0.
真懂的进来答我谢谢你,说不清楚的就别装逼闭嘴。那些自己也看不懂瞎答混分的我去年买了个表。
#include "stdio.h"
#include "string.h"
void main()
{
int i,k=1,j=10,a[10]={4,4,4,4,5,4,9,9,9,10};
for(k=i=1;i<10;i++)
{
for(j=0;j<k;j++)
{
if(a[j]==a[i]) break;
}
if(j==k) a[k++]=a[i];
}
printf(" \n ");
for(i=0;i<k;i++)
{
printf(" %d ",a[i]);
}
printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。
其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。
比如:
int a=1234;
printf("a=%d\n",a);
输出结果为a=1234。
scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include<stdio.h>。
int scanf(const char*restrict format,...);
函数scanf()是从标准输入流stdin(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
谢谢,那么我的原程序错在哪儿呢,为什么t总是0.
追答你的b除了b[0]别的都没有赋值吧
追问是的,我是想边比较边赋值。就是拿依次拿a中的数和b中已有的数比较,如果没有在b中发现相同的数,就把这个a中的数放进b中。
追答恩,但是你第一次循环就不会进k==j的判断,所以b就赋值不了,后面的就更不能进判断,所以t=0.
因为第一次i=1,b[0]==a[0],但是b[0]!=a[1]
还是没懂。第一次循环如果发现a[1]!=b[0]就应该K自增1。然后就进入if判断j==k吧。j==k的判断怎么会和之前j的循环有关系呢?
懂了!真聪明说的很清楚,非常感谢!
但是我修改了判断方法后还是进不了第二次的if判断。
for(i=1;i<n;i++)
{
for(j=0,k=0;b[j]!='\0';j++)
{
if(a[i]==b[j])
k++;
else
continue;
}
if(k==0)
{
b[j]=a[i];
t++;
}
}
额 楼主聪明 刚刚看到 你已经搞定了
本回答被提问者采纳我的思路在我程序的注释写清楚了啊。就是让b的首元素与a相等,然后依次拿a中元素与b中已经存放的元素比较,发现相同的就跳过,发现不同的就放进b里。按我的代码思路应该怎么改
追答那你怎么比较没放入b中的元素