首页
社区
课程
招聘
[旧帖] [讨论]DEV C++中初学者编程 共同学习者顶起来 0.00雪花
发表于: 2010-5-22 17:40 74242

[旧帖] [讨论]DEV C++中初学者编程 共同学习者顶起来 0.00雪花

2010-5-22 17:40
74242
【讨论】DEV C++中初学者编程注意的地方

说明: 我是因为教学才来这里寻求帮助。所以开这样一个讨论贴,希望新人们在学C时和我一起进步。 我会在这里面将教学中用到的一些小编程题目的源程序一起分享,也会将编程过程中学生出现的问题予以说明。

最近在教线性表,出了几道小作业题来编程帮助理解。
1、从输入文件读取一组N个数据(N<=100),从中找出最大的一个,并输出其值以及是第几个数据,然后进行删除操作。(用数组作线性表,完成删除操作)
首先准备好输入文件:in.txt 其中用空隔符间隔输入100个以内的任务自然数。
源程序:
#include "stdio.h"

int a[100];
int main()
{
   int n,i,max,t;
   freopen("out.txt","w",stdout);
   scanf("%d",&n);                      /*学生常少了&号 */
   FILE *IP;
   IP=freopen("in.txt","r",stdin);
   for(i=0;i<n;i++)
   fscanf(IP,"%d",&a[i]);               /*学生常少了&号 */   
    /* 以上程序准备好了长度为n的线性表,并输入了线性表中的各元素值 */
  
   max=a[0];
   for(i=0;i<n;i++)
       if(max<a[i])   
      {
        max=a[i];
        t=i+1;
       }
    /*  以上程序将线性表中的最大一个数组元素找出来,max保存其值t保存序号  */
   
    for(i=t-1;i<n-1;i++)
         a[i]=a[i+1];
         n=n-1;
    /* 以上程序将线性表中最大元素删除,并将线性表长度减1  */
   
   
   printf("Max=%d The long n=%d",max,n);
   fclose(IP);
    /* 以上程序输出线性表中删除的最大元素值与线性表的长度  */
}

    发此贴在于开一个讨论学习C的初学位置,版主若是认为开得好也发个邀请码给我啊

     大家有任何C语言编程出现的问题可将源码贴上来提问!!!
   有发现自己常出错的地方,也发个例子出来,大家共勉!!!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (280)
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
沙发也没人坐 我来

再向后我会继续将一系列例题放入这个贴子
2010-5-22 18:20
0
雪    币: 49
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
顶一个,有问题一定想到你
2010-5-22 18:34
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有小题目源程序的也发过来啊  让我们有更多的读程序学习的机会
2010-5-22 19:28
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我改了改就成线性表插入操作了
for(i=n;i>t;i--)
         a[i]=a[i-1];
         a[t]=m;
         n=n+1;
这是原程序中的删除部分那位改成上面的就成插入操作了,不过插入的数值m要你另外输入
2010-5-22 19:31
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
线性表练习题2
N个猴子站成一排报数,报数为1的出列;继续报数至最后剩下的为猴王。

/* M个猴子站一排报数N选猴王问题,去掉报数时报1的猴子          */
#include <stdio.h>

int a[100];                         /* 设定数据输入范围 100                  */

int ddel(int m1,int n1)
{
    int x,i,j;                        
         d1:;
         a[0]=0;
         for(i=1;i<=m1;i++)
             {
               x=i%n1;
               if(x==0) a[i]=0;        /* 对数组中报数合条件者打标记0         */
               printf("a[i-1]=%d  i=%d\n",a[i-1],i);
             }  
         
         for(i=0;i<m1;i++)     
              {
               if(a[i]==0)              
               {for(j=i;j<m1;j++)      /* 删标0的数组元素 后面值放前一位      */
               {a[j]=a[j+1];printf("a[j]=%d j=%d\n",a[j],j); }      
               m1--; }                 /* 删一个元素 总长减一                 */
               else
               printf("m1=%d a[4]=%d\n",m1,a[4]);  /* 检查测试m1是否合要求    */
              }  
               if(m1>=n1) goto d1;     /* 一队完成,回头重新报数              */  
            
     return m1;
}

int  main()
{
    int m,n,i,x;
    scanf("%d%d",&m,&n);               /* 输入猴子数m<=100 报数数值n<=100    */
    for(i=1;i<=m;i++) a[i-1]=i;        /* 对数组a[m]赋值即猴子的编号         */
    printf("%d\n%d\n",m,n);
    x=m/n;
    printf("%d\n",x);
    if (x!=0)                          /* 判断是否选出猴王                   */
    getchar();
    m=ddel(m,n);                       /* 删除不是猴王的数组元素             */
    printf("%d\n",m);
    getchar();
    for(i=0;i<=m-1;i++)                /* 对选出的猴王编号进行输出           */
    printf("%d",a[i]);
    getchar();
     }

    若题目改一下:改成站一个圈,有哪位来改改这个源程序啊!!??
2010-5-22 20:24
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
若题目改一下:改成站一个圈,有哪位来改改这个源程序啊!!??  一个动归!
2010-5-22 21:42
0
雪    币: 1582
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
始学者的努力是大家要学习的,所以我们共同努力@@@@
2010-5-22 22:38
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢楼上的支持  
2010-5-23 08:04
0
雪    币: 93
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
顶一个   不过不打算C++了  直接汇编
2010-5-23 08:41
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
有想法啊,  不过我觉得都得学一下才行,  毕竟汇编不能很容易的制作东东!!
2010-5-23 08:47
0
雪    币: 77
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
飞云兄!狂**!我以后保证每次都做!
2010-5-23 11:47
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
虽然看不太懂 还是要谢谢楼主分享
2010-5-23 12:59
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
这个贴对初学者有用 高手要闪过了 呵呵

谢谢支持!  我会继续放入题目的
2010-5-23 13:02
0
雪    币: 173
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
还是要多练习啊~~
2010-5-23 13:31
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
这是我一同事上课时留在教师机上的 发来给大家借鉴

例题3, 已知一元二次方程组系数,用C写出求解程序.

/* 一元二次方程求解 */
#include "stdio.h"
#include "math.h"
int main()
{     
      freopen("matches.out","w",stdout);
      int a,b,c;
      float x1,x2,t;                                      /* t 表示的儿塔   x1 x2为方程两个解 */
      scanf("%d%d%d",&a,&b,&c);
      
      t=b*b-4*a*c;
      printf("t=%f\n",t);      
      
      if(t>0.0)
            {
              x1=(-b+sqrt(t))/(2*a);
              x2=(-b-sqrt(t))/(2*a);
              printf("t>0\n");
            }
      else if(t==0.0)                                /*  学生易把=号只写一个 */
            {
              x1=-b/(2*a);
              x2=x1;
              printf("t=0\n");
            }
      else if(t<0.0)
              printf("t<0 No anwser!");
        
      printf("x1=%f\nx2=%f\n",x1,x2);
}

纯为提供初学者参阅 ,   高手们飘过了 !   
2010-5-23 15:04
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Sii
17
主要是不熟练
2010-5-23 15:44
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
环形表分析

分析:要解决这问题,首先需要构造一个环表,构造环的方法很简单,只要存储每个人的下一个即可,当然,最后一个人的下一个就是第一个人,这样就构成了一个环,构造环以后,就可进行删除操作,直到环剩下一个人为止。

2010-5-24 09:35
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
虽然看不太懂 还是要谢谢楼主分享
2010-5-24 16:59
0
雪    币: 407
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
一起学习,一起进步!
2010-5-24 17:39
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
选猴王环状一圈的 没人做吗???   

我先写一个看看

选猴王的题目是:M个猴子没了王,站一圈报数N,报到N的不是猴王要离开圈子,一直报下去,到最后M小于N时去掉报数最大的,最后剩下的就是唯一的猴王.  谁也做一做啊 相互借鉴
2010-5-24 20:03
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
请高手指正我哪里错了!!!  输出结果不对!!!!!

#include <stdio.h>

int a[100];                           /* 猴子的取值范围                       */

int  main()
{
    int m,n,i,x=0,j,y;
    scanf("%d%d",&m,&n);               /* 输入猴子数m<=100 报数数值n<=100    */
    for(i=1;i<=m;i++) a[i-1]=i;        /* 对数组a[m]赋值即猴子的编号         */
    printf("m=%d\nn=%d\n",m,n);
    freopen("out.txt","w",stdout);
   
    dd:;
    if (m>=n)                           /* 判断是否选出猴王  m比n小就不去删   */
      
    for(i=x;i<m;i=i+n-1)               /* x表示环跳回来时从几开始            */
    {
        for(j=i+n-1;j<m-1;j++)         /* 用m-1是因最后数组为a[m-1]          */
            a[i+n-1]=a[i+n];           /* 第一个报数合条件的是a[i+n-1]       */
        m--;
        
        x=n-m+i-1;
        if(m-i<n)
        {
         for(j=x;j<m-1;j++)
            a[j]=a[j+1];
         goto dd;   
        }
    }
    else printf("a[x]=%d",a[x]);
}
2010-5-24 22:04
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
m=3
n=3
a[x]=2  正确应为:  a[x]=1

m=5
n=3
a[x]=4  正确应为:  a[x]=2
2010-5-24 22:08
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
看雪我很久知道了,只不过那时候我还没开窍
2010-5-24 22:15
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
顶一个。。。。。。。
2010-5-25 13:31
0
游客
登录 | 注册 方可回帖
返回
//