千杯不醉的关关 发表于 2018-6-20 14:06:30

求助:二维数组删除数据后的输出问题

#include <stdio.h>
#include "stdlib.h"
#include "time.h"
int main(int argc,char *argv[])
{
    int a,i,j,k,t,*p;
    printf("排序前:\n");
    srand((unsigned)time(NULL));
    for(i=0;i<10;i++)
        {
      for(j=0;j<10;j++)
                printf("%3d",a=rand()%100);
      printf("\n");
    }
        int d,n=0;
        p=(int *)a;//降为一维
        printf("请输入需要删除的数:");
        scanf("%d",&d);
        for(i=0;i<100;i++)
                if(d==p)
                        break;
        if(i<100)
        { for(;i<99;i++)
                p=p;
                n--;
                printf("新数组:\n");
                for(i=0;i<100;i++)
                        printf (++n%10 ? "%3d" : "%3d\n",p);
                putchar('\n');
        }
        else printf("无此数!\n");
}

关键是感觉 发表于 2018-6-20 14:29:19

#include <stdio.h>
#include "stdlib.h"
#include "time.h"

int main(int argc,char *argv[]){
        int d,n=0;
    int a,i,j,k,t,*p;
    printf("排序前:\n");
    srand((unsigned)time(NULL));
    for(i=0;i<10;i++){
      for(j=0;j<10;j++)
                printf("%3d",a=rand()%100);
      printf("\n");
    }
      
    p=(int *)a;//降为一维
    printf("请输入需要删除的数:");
    scanf("%d",&d);
    for(i=0;i<100;i++){
                if(d==p){
                        break;
                }
        }
    if(i<100){
                printf("删除下标:%d\n",i);
                while(i<99){
                  p=p;                                //最大下标是99,假设删除的下标是99,其实不需要操作,因为既然删除了一位,那么所有操作数组都是原来到数组-1
                }
      printf("新数组: \n");
               
      for(i=0,n=0;i<99;i++){                        //因为删除了一位,少循环一轮
               printf (++n%10 ? "%3d" : "%3d\n",p);
                }
            putchar('\n');
    }else{
                printf("无此数!\n");
        }
        return 0;
}
页: [1]
查看完整版本: 求助:二维数组删除数据后的输出问题