找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2618|回复: 23
收起左侧

有大佬让我重新把整个C语言学一遍

  [复制链接]
ID:886945 发表于 2021-5-31 03:04 来自手机 | 显示全部楼层 |阅读模式
         当初在学校的时候,开的C语言的课,基本也就只是学一学if else for这些加上一些思维逻辑方面的基础的东西,现在自学单片机,一套32的入门视频下来,跟着单片机学的C,整套视频里边关于C的知识也都能看懂.指针结构体什么的还是能看简单用一用.
         结果这两天去面试,大佬给我一份基本纯C的笔试题,结果好像只能做出不到一半的题目...
         他让我回去重新把整套C学一遍直到自己能够调试到单链表的增、删、改、写 为止,有大佬有推荐哪个视频嘛!
回复

使用道具 举报

ID:155507 发表于 2021-5-31 08:22 | 显示全部楼层
可供参考

C语言学习资料推荐
http://www.51hei.com/bbs/dpj-198731-1.html
回复

使用道具 举报

ID:844772 发表于 2021-5-31 08:24 | 显示全部楼层
会结构和指针,就应该会操作单链表,不用老是浪费时间看视频,太慢了,顶多看看例程,关键是自己在脑子里多想,自己给自己出题。链表操作,无论单双还是树都是基本操作,没有技术含量。
回复

使用道具 举报

ID:414556 发表于 2021-5-31 23:08 | 显示全部楼层
买本C语言的书。结合视频巩固知识。
回复

使用道具 举报

ID:930497 发表于 2021-6-1 10:01 | 显示全部楼层
直接去b站找吧,c语言教程多的是,建议直接看书,边学边做,两三周就差不多
回复

使用道具 举报

ID:930641 发表于 2021-6-1 14:17 | 显示全部楼层
可以去mooc上看看浙江大学的c语言基础课程,单链表的增删查改涉及到一些数据结构的知识,可以去看一下王道考研数据结构
回复

使用道具 举报

ID:155507 发表于 2021-6-2 08:28 | 显示全部楼层
我给你来个程序试试
单链表的增、删

  1. /*
  2. 单链表的增、删
  3. */
  4. #include<stdlib.h>
  5. #include <stdio.h>

  6. void create();
  7. void display();
  8. void insert_begin();
  9. void insert_end();
  10. void insert_pos();
  11. void delete_begin();
  12. void delete_end();
  13. void delete_pos();


  14. struct node
  15. {
  16.         int info;
  17.         struct node *next;
  18. };
  19. struct node *start=NULL;
  20. int main()     
  21. {
  22.         int choice;
  23.         while(1){
  24.                
  25.                 printf("n                MENU                             n");
  26.                 printf("n 1.Create     n");
  27.                 printf("n 2.Display    n");
  28.                 printf("n 3.Insert at the beginning    n");
  29.                 printf("n 4.Insert at the end  n");
  30.                 printf("n 5.Insert at specified position       n");
  31.                 printf("n 6.Delete from beginning      n");
  32.                 printf("n 7.Delete from the end        n");
  33.                 printf("n 8.Delete from specified position     n");
  34.                 printf("n 9.Exit       n");
  35.                 printf("n--------------------------------------n");
  36.                 printf("Enter your choice:t");
  37.                 scanf("%d",&choice);
  38.                 switch(choice)
  39.                 {
  40.                 case 1:
  41.                         create();
  42.                         break;
  43.                 case 2:
  44.                         display();
  45.                         break;
  46.                 case 3:
  47.                         insert_begin();
  48.                         break;
  49.                 case 4:
  50.                         insert_end();
  51.                         break;
  52.                 case 5:
  53.                         insert_pos();
  54.                         break;
  55.                 case 6:
  56.                         delete_begin();
  57.                         break;
  58.                 case 7:
  59.                         delete_end();
  60.                         break;
  61.                 case 8:
  62.                         delete_pos();
  63.                         break;
  64.                        
  65.                 case 9:
  66.                         exit(0);
  67.                         break;
  68.                        
  69.                 default:
  70.                         printf("n Wrong Choice:n");
  71.                         break;
  72.                 }
  73.         }
  74.         return 0;
  75. }
  76. void create()
  77. {
  78.         struct node *temp,*ptr;
  79.         temp=(struct node *)malloc(sizeof(struct node));
  80.         if(temp==NULL)
  81.         {
  82.                 printf("nOut of Memory Space:n");
  83.                 exit(0);
  84.         }
  85.         printf("nEnter the data value for the node:t");
  86.         scanf("%d",&temp->info);
  87.         temp->next=NULL;
  88.         if(start==NULL)
  89.         {
  90.                 start=temp;
  91.         }
  92.         else
  93.         {
  94.                 ptr=start;
  95.                 while(ptr->next!=NULL)
  96.                 {
  97.                         ptr=ptr->next;
  98.                 }
  99.                 ptr->next=temp;
  100.         }
  101. }
  102. void display()
  103. {
  104.         struct node *ptr;
  105.         if(start==NULL)
  106.         {
  107.                 printf("nList is empty:n");
  108.                 return;
  109.         }
  110.         else
  111.         {
  112.                 ptr=start;
  113.                 printf("nThe List elements are:n");
  114.                 while(ptr!=NULL)
  115.                 {
  116.                         printf("%dt",ptr->info );
  117.                         ptr=ptr->next ;
  118.                 }
  119.         }
  120. }
  121. void insert_begin()
  122. {
  123.         struct node *temp;
  124.         temp=(struct node *)malloc(sizeof(struct node));
  125.         if(temp==NULL)
  126.         {
  127.                 printf("nOut of Memory Space:n");
  128.                 return;
  129.         }
  130.         printf("nEnter the data value for the node:t" );
  131.         scanf("%d",&temp->info);
  132.         temp->next =NULL;
  133.         if(start==NULL)
  134.         {
  135.                 start=temp;
  136.         }
  137.         else
  138.         {
  139.                 temp->next=start;
  140.                 start=temp;
  141.         }
  142. }
  143. void insert_end()
  144. {
  145.         struct node *temp,*ptr;
  146.         temp=(struct node *)malloc(sizeof(struct node));
  147.         if(temp==NULL)
  148.         {
  149.                 printf("nOut of Memory Space:n");
  150.                 return;
  151.         }
  152.         printf("nEnter the data value for the node:t" );
  153.         scanf("%d",&temp->info );
  154.         temp->next =NULL;
  155.         if(start==NULL)
  156.         {
  157.                 start=temp;
  158.         }
  159.         else
  160.         {
  161.                 ptr=start;
  162.                 while(ptr->next !=NULL)
  163.                 {
  164.                         ptr=ptr->next ;
  165.                 }
  166.                 ptr->next =temp;
  167.         }
  168. }
  169. void insert_pos()
  170. {
  171.         struct node *ptr,*temp;
  172.         int i,pos;
  173.         temp=(struct node *)malloc(sizeof(struct node));
  174.         if(temp==NULL)
  175.         {
  176.                 printf("nOut of Memory Space:n");
  177.                 return;
  178.         }
  179.         printf("nEnter the position for the new node to be inserted:t");
  180.         scanf("%d",&pos);
  181.         printf("nEnter the data value of the node:t");
  182.         scanf("%d",&temp->info) ;

  183.         temp->next=NULL;
  184.         if(pos==0)
  185.         {
  186.                 temp->next=start;
  187.                 start=temp;
  188.         }
  189.         else
  190.         {
  191.                 for(i=0,ptr=start;i<pos-1;i++) { ptr=ptr->next;
  192.                         if(ptr==NULL)
  193.                         {
  194.                                 printf("nPosition not found:[Handle with care]n");
  195.                                 return;
  196.                         }
  197.                 }
  198.                 temp->next =ptr->next ;
  199.                 ptr->next=temp;
  200.         }
  201. }
  202. void delete_begin()
  203. {
  204.         struct node *ptr;
  205.         if(ptr==NULL)
  206.         {
  207.                 printf("nList is Empty:n");
  208.                 return;
  209.         }
  210.         else
  211.         {
  212.                 ptr=start;
  213.                 start=start->next ;
  214.                 printf("nThe deleted element is :%dt",ptr->info);
  215.                 free(ptr);
  216.         }
  217. }
  218. void delete_end()
  219. {
  220.         struct node *temp,*ptr;
  221.         if(start==NULL)
  222.         {
  223.                 printf("nList is Empty:");
  224.                 exit(0);
  225.         }
  226.         else if(start->next ==NULL)
  227.         {
  228.                 ptr=start;
  229.                 start=NULL;
  230.                 printf("nThe deleted element is:%dt",ptr->info);
  231.                 free(ptr);
  232.         }
  233.         else
  234.         {
  235.                 ptr=start;
  236.                 while(ptr->next!=NULL)
  237.                 {
  238.                         temp=ptr;
  239.                         ptr=ptr->next;
  240.                 }
  241.                 temp->next=NULL;
  242.                 printf("nThe deleted element is:%dt",ptr->info);
  243.                 free(ptr);
  244.         }
  245. }
  246. void delete_pos()
  247. {
  248.         int i,pos;
  249.         struct node *temp,*ptr;
  250.         if(start==NULL)
  251.         {
  252.                 printf("nThe List is Empty:n");
  253.                 exit(0);
  254.         }
  255.         else
  256.         {
  257.                 printf("nEnter the position of the node to be deleted:t");
  258.                 scanf("%d",&pos);
  259.                 if(pos==0)
  260.                 {
  261.                         ptr=start;
  262.                         start=start->next ;
  263.                         printf("nThe deleted element is:%dt",ptr->info  );
  264.                         free(ptr);
  265.                 }
  266.                 else
  267.                 {
  268.                         ptr=start;
  269.                         for(i=0;i<pos;i++) { temp=ptr; ptr=ptr->next ;
  270.                                 if(ptr==NULL)
  271.                                 {
  272.                                         printf("nPosition not Found:n");
  273.                                         return;
  274.                                 }
  275.                         }
  276.                         temp->next =ptr->next ;
  277.                         printf("nThe deleted element is:%dt",ptr->info );
  278.                         free(ptr);
  279.                 }
  280.         }
  281. }
复制代码
回复

使用道具 举报

ID:932858 发表于 2021-6-4 14:12 | 显示全部楼层
我觉得学C看书蛮快的,我觉得视频比较拖,耽误时间,楼主已经有基础来了。看书完全可以胜任
回复

使用道具 举报

ID:883242 发表于 2021-6-4 15:37 | 显示全部楼层
看大佬的意思不是说你c语言不行,而是没看过《数据结构》这种编程基础知识。
回复

使用道具 举报

ID:933203 发表于 2021-6-5 09:23 | 显示全部楼层
推荐The_C_Programming_Language这本书,有电子中文版的
回复

使用道具 举报

ID:933229 发表于 2021-6-5 14:55 来自手机 | 显示全部楼层
慕课里就有
回复

使用道具 举报

ID:934580 发表于 2021-6-8 08:32 | 显示全部楼层
要快。我觉得边做题边学更好。去乐扣刷题。不会的就研究。有点基础的话不怕
回复

使用道具 举报

ID:940357 发表于 2021-6-19 12:30 | 显示全部楼层
看书加看视频 效果更好
回复

使用道具 举报

ID:937320 发表于 2021-6-20 07:28 | 显示全部楼层
c的primer 书就可以了。C语言有技术,再重新学一下也很快 。但不重学的话,知识不全。其实有针对性的,学不会的就好
回复

使用道具 举报

ID:886945 发表于 2021-12-23 04:09 | 显示全部楼层
angmall 发表于 2021-6-2 08:28
我给你来个程序试试
单链表的增、删

哈哈,半年后才重新回来看帖子...粗略的看了一下,虽然这半年也没怎么写程序,但是结构体指针这些都还算能接受了...主要还是需要多看看别人代码...
回复

使用道具 举报

ID:139866 发表于 2021-12-23 09:44 | 显示全部楼层
sdarling 发表于 2021-12-23 04:09
哈哈,半年后才重新回来看帖子...粗略的看了一下,虽然这半年也没怎么写程序,但是结构体指针这些都还算 ...

你以为你懂了,其实没有,程序是写出来的不是看出来的
回复

使用道具 举报

ID:748788 发表于 2021-12-23 14:13 | 显示全部楼层
对源程序做一些修改,看自己能否再独立写出完整的程序
回复

使用道具 举报

ID:996200 发表于 2021-12-23 19:42 | 显示全部楼层
你去慕课上看各大高校的课
回复

使用道具 举报

ID:996353 发表于 2021-12-23 23:29 | 显示全部楼层
会结构和指针,就应该会操作单链表,基本上哔哩哔哩可以自学
回复

使用道具 举报

ID:86450 发表于 2021-12-24 08:11 | 显示全部楼层
都会指针了,好强。  我写单片机逻辑业务简单的 ,从来不用指针。  看多一个多级菜单程序用过指针。看了好久才明白怎么回事。
回复

使用道具 举报

ID:514901 发表于 2021-12-24 17:56 | 显示全部楼层
数据结构而已,本质还是结构体与指针
回复

使用道具 举报

ID:415064 发表于 2021-12-24 19:47 | 显示全部楼层
直接去B站找郝斌C语言和数据结构,你现在是ifelseswitch, 那么你缺的是精华部分->指针,内存,数据结构的链表队列,算法里面的排序、滤波,代码规范、再来点实际应用的PID,wifi这些就基本就差不多
回复

使用道具 举报

ID:816989 发表于 2021-12-24 20:57 | 显示全部楼层
建议看C Primer,这本书对学习C语言新手有帮助的。而且,常用的代码函数会在这本书上找,还可以当作查字典。
回复

使用道具 举报

ID:382454 发表于 2021-12-24 21:13 来自手机 | 显示全部楼层
买书,买学习版,看例程,自己开发多实操练练就上手快。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表