怎样在C语言中查找数字

Python011

怎样在C语言中查找数字,第1张

#include<stdio.h>

void search(int x[],int y,int n)

void main()

{

int a[10],i,key,n

printf("How many numbers you want to input(n<=10):\n")

scanf("%d",&n)

printf("Please input the array!\n")

for(i=0i<ni++)

scanf("%d",&a[i])

puts("The key you want to search:")

scanf("%d",&key)

search(a,key,n)

getch()

}

void search(int x[],int y,int n)

{

int i,j=-1

for(i=0i<ni++)

if(y==x[i])

j=i

if(j!=-1)

{

printf("下标为:%d\n",j)

printf("它是该数列中的第 %d 个数。",j+1)

}

else

printf("NOT FOUNDED!")

}

#include <stdio.h>

int main(void) 

{

int m,n,i,t,sum,cnt

while(scanf("%d%d",&m,&n)!=EOF)

{

for(i=m,cnt=0i<=n++i)

{

for(t=i,sum=0tt/=10)

{

sum+=t%10

}

for(t=itt/=10)

{

if(sum-t%10==t%10)

{

cnt++

printf("%d\n",i)

}

}

}

if(!cnt)

{

printf("No output\n")

}

}

return 0

}

按照你的题目要求,输入一行数字空格分割,回车确认。找出1~最大输入数字间没有出现的数字。

由于输入个数不确认,所以需要动态数组。

下面我的代码,输入任意个数字,输出没有出现的数字。(如果输入了非数字字符,会被程序过滤掉)。代码已详细备注。

#include<stdio.h>

#include<malloc.h>

typedef struct nList

{

  int *nums//输入的数组

  int len//数组的长度

  int maxN//数组中的最大数

}NLIST

NLIST *input()//动态数组输入任意个数的数字,空格分割,回车确认,忽略非数字字符。成功返回包含数组的结构,失败返回NULL

int main()

{

  int i,j,flag

  NLIST *nlist=NULL

  nlist=input()

  if(!nlist)

      printf("异常!,程序终止!\n")

  for(i=1i<nlist->maxNi++)

  {

      flag=1

      for(j=0j<nlist->lenj++)

          if(i==nlist->nums[j])

          {

              flag=0

              break

          }

      if(flag)

          printf("%d ",i)

  }

  printf("\n")

  free(nlist->nums)

  free(nlist)

  return 0

}

NLIST *input()

{

  char c

  int num=0,maxN=0,len=1,*nums=NULL,*nSave=NULL,flag=0

  NLIST *nlist=NULL

  while(1)

  {

      c=getchar()

if(flag &&(c==' ' || c==10))//有输入的情况下遇到空格或回车,保存数字到数组,记录长度和最大值,并重置标识和累加变量

      {

          if(nums==NULL)

          {

              nums=(int *)malloc(sizeof(int))

              if(!nums)

                  return NULL

              nums[0]=num

              maxN=num

              len++

          }

          else

          {

              nSave=(int *)realloc(nums,sizeof(int)*len)

              if(!nSave)

                  return NULL

              nums=nSave

              nums[len-1]=num

              if(maxN<num)

                  maxN=num

              len++

          }

          num=0

          flag=0

      }

      if(c==10)//遇到回车,结束输入

          break

if(c>='0' &&c<='9')//遇到数字字符,标识输入状态并累加数值

          flag=1,num=num*10+c-'0'

  }

  if(len==1)

      return NULL

  nlist=(NLIST *)malloc(sizeof(NLIST))

  if(!nlist)

      return NULL

  nlist->len=len-1

  nlist->maxN=maxN

  nlist->nums=nums

  return nlist

}