2020-12-07

                                                        大创工联部第四次考核
    从来到学校到现在学习c语言有两个多月了,我一开始跟着老师的进度走,后来发现一些工作室的题目基本上都超纲了,我才意识到要超前学习,但是我超前学习很慢,也就比老师讲的快一点点,学了后面的就忘了前面的怎么做,知识点记得不牢固,练的题目也比较少。c语言学习了三种结构,数组,函数,和现在正在学的指针。最近也学习了几种方法:
    **选择排序法**:首先要明确选择排序是如何来排的,设定以从小到大的顺序输出我输入的数,先选定第一个数,记下它的标号,然后将其与后面的数进行比较, 若后面有某个数比它小那么记下它的标号,将此数继续与剩下的数进行比较,最后将那个最小的数与一开始记下的那个数对换,依次类推即可。
      代码如下:
#include<stdio.h>
int main()
{
    int a[10],i,j,k,t;
    printf("请输入十个数:");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
      for(i=0;i<9;i++)
      {
          k=i;
         for(j=i+1;j<10;j++)
           if(a[j]<a[k])
             k=j;
             t=a[k];a[k]=a[i];a[i]=t;
      }
    printf("按从小到大的顺序排列:");
    for(i=0;i<10;i++)
        printf("%d ",a[i]);
  return 0;
}

函数的嵌套调用
例如输入4个整数,找出其中最大的数。要用函数来解决这个问题,首先想到的是用两个函数,一个是比较其中的两个数,另一个是通过前一个函数来跟第三数比,再把前三个数中的最大值记下来,再与第四个数比较。若要求我们求n个数的最大数也可以这样子求解。
代码如下:

#include<stdio.h>
int main()
{
    int i(int a,int b,int c,int d);
    int s,d,f,g,k;
    scanf("%d %d %d %d",&s,&d,&f,&g);
    k=i(s,d,f,g);
    printf("%d",k);
    return 0;
}
int i(int a,int b,int c,int d)
 {
     int j(int a,int b);
     int m;
     m=j(a,b);
     m=j(m,c);
     m=j(m,d);
     return(m);
 }
 int j(int a,int b)
     {
         return(a>b?a:b);
     }

用指针将数组中n个数按相反顺序输出:
首先可以想到的是不用指针如何来求,如果不用指针的话就是选定一个对称轴,把我要输入的数对半分,然后将前一半的下标与后一半下标依次对应,然后将各个对应的数互换,即实现了将输入的n个数按相反顺序输出,如果遇见输入的n为单数也是一样的,只不过最中间那个数可以不用换。如果用指针来求解的话就得先记下第一个数与最后一个数的地址,然后取他们的内容,逐个互换,当换到最中间那个数的时候停止互换。
代码如下:

#include<stdio.h>
int main()
{
  int s(int*x,int n);
  int i,a[10],*p;
  for(i=0;i<10;i++)
  scanf("%d",a+i);
  p=a;
  s(p,10);
  for(p=a;p<a+10;p++)
    printf("%d ",*p);
  return 0;
}
int s(int*x,int n)
{
   int t,*p,*i,*j,m=(n-1)/2;
    j=x+n-1;p=x+m;
   for(i=x;i<=p;i++,j--)
    {
      t=*i;*i=*j;*j=t;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值