| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 498 人关注过本帖
标题:来自初学者的求助~~~~~~~~~~~
只看楼主 加入收藏
我爱C爱我
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-10-16
结帖率:0
收藏
已结贴  问题点数:10 回复次数:1 
来自初学者的求助~~~~~~~~~~~
#include<stdio.h>
#include<string.h>
int main()
{
     int   a[1000],b[1000],c[1000];
     int   i,j,k,n,m,w,p,g;
     while(scanf("%d%d",&m,&n)!=EOF)
     {
         for(i=0;i<m;i++)
         {
             scanf("%d",&a[i]);
         }
         for(i=0;i<n;i++)
         {
             scanf("%d",&b[i]);
         }
         w=0;p=0;k=0;
         for(i=0;i<m;i++)
         {   
             for(j=0;j<n;j++)
             {
                 if(a[i]!=b[j])  k++;
                 if(a[i]==b[j])  w++;
             }
             if(k==n) {c[p]=a[i];p++;}
         }
         if(w==m)  printf("NULL");
         else {       for(i=0;i<p-1;i++)
                      {
                          for(j=0;j<p-1-i;j++)
                          {
                              if(c[j]>c[j+1])  {g=c[j];c[j]=c[j+1];c[j+1]=g;}
                          }
                        }
                        for(i=0;i<p;i++)
                        {
                            printf("%d ",c[i]);
                        }
              }
         printf("\n");
     }
     return 0;}
 1. if(k==n) {c[p]=a[i];p++;}这句话是什么意思?  2 else {       for(i=0;i<p-1;i++)
                      {
                          for(j=0;j<p-1-i;j++)
                          {
                              if(c[j]>c[j+1])  {g=c[j];c[j]=c[j+1];c[j+1]=g;}
                          }
                        }
                        这段代码的意思是什么?
3.怎样学好C语言? 通过视频还是书?求推荐!!!总觉得有好多东西都不清楚

[此贴子已经被作者于2016-12-5 20:22编辑过]

2016-12-05 20:21
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:10 
你这个程序是从哪里弄来的??如果是标准程序库里弄出来,我就彻底无语了~

程序代码:
/*大概明白意思了,程序大意就是有两个数组,找出两个数组互异的元素并排序输出,但程序代码有些问题*/
/*这个程序主体没弄好就搞样例输入,这样只会增加混乱,好不容易分割程序模块,却发现程序内容不知所云~
原程序排版很不理想,变量标识不明确,结构似乎和原意表达有出入,最好用函数分开处理*/
/*以下是我把原程序整理后的结果*/
#include<stdio.h>
#include<string.h>
int main()
{
     int   a[1000],b[1000],c[1000];
     int    n,m;               

/*-------------------------------------------------*/

     printf("请输入第一组案例个数和第二组案例个数\n");
     while(scanf("%d%d",&m,&n)!=EOF)     //m,n为案例个数
     {
         int i,j;     //用到什么声明什么,原贴把一大堆变量写到循环体外面会影响程序可读性
         int w,p,k;

         w=0;  
         p=0;
         k=0;

         

         printf("请输入第一组数据\n");

         for(i=0;i<m;i++)      
             scanf("%d",&a[i]);

         printf("请输入第二组数据\n");

         for(i=0;i<n;i++)
             scanf("%d",&b[i]);

/*-------------------------------------------------*/

         for(i=0;i<m;i++)  
             for(j=0;j<n;j++)  
             {
                 if(a[i]!=b[j])    //k两个数组出现不同元素次数
                     k++;

                 if(a[i]==b[j])   //w两个数组出现不同元素次数
                     w++;
             }

    /*-------------------------------------------------*/
         printf("两个数组大小分别为%4d%4d\n",m,n);    //调试输出结果显示~这里m,n与k,w之间的关系较为混乱,规律性很低~
         printf("两个数组出现不同元素次数为%d\n",k);
         printf("两个数组出现相同元素次数为%d\n",w);
     /*-------------------------------------------------*/
             if(k==n)    //如果两个数组出现元素不同次数等于第一个数组
             {
                 c[p]=a[i];
                 p++;        //不管怎么说,每次满足条件p的值都只能加1,这个原意猜测应该是个循环结构
             }

/*-------------------------------------------------*/

         if(w==m)  //如果两个数组出现不同元素次数等于第二个数组
             printf("NULL\n");
         else       
             for(i=0;i<p-1;i++)     //这个程序猜测有个bug,p始终不是0就是1~不会大于1的~
                      for(j=0;j<p-1-i;j++)
                          if(c[j]>c[j+1])      //典型的冒泡法排序,排序输出
                          {
                            int g;

                            g=c[i];
                            c[j]=c[j+1];
                            c[j+1]=g;
                          }

/*-------------------------------------------------*/
              for(i=0;i<p;i++)  //输出数据
                  printf("%d \n",c[i]);

/*-------------------------------------------------*/

         printf("请输入第一组案例个数和第二组案例个数\n");
     }

/*-------------------------------------------------*/
     printf("\n");

     return 0;
}


[此贴子已经被作者于2016-12-5 21:25编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-05 21:23
快速回复:来自初学者的求助~~~~~~~~~~~
数据加载中...
 
   



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

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