头歌c语言实训项目-指针及其应用

简介: 头歌c语言实训项目-指针及其应用

 (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

第1关:数组倒置 :

题目:

本关任务:程序功能是通过调用reverse()函数按逆序重新放置数组a中的元素值,请补全程序。

测试输入:

0 1 2 3 4 5 6 7 8 9

预期输出:

9 8 7 6 5 4 3 2 1 0

代码思路:

数组倒置只需要将相应的指针交换位置即可,原题给出大部分代码,我们只需要补充细节即可

代码表示:

#include "stdio.h"
#define N 10
void reverse(int* p, int a, int b)
{
  int c;
  /***** 请在以下一行填写代码 *****/
  while (a < b)
  {
    c = *(p + a);
    /***** 请在以下一行填写代码 *****/
    *(p + a) = *(p + b);
    *(p + b) = c;
    a++;
    /***** 请在以下一行填写代码 *****/
    b--;
  }
}
int main()
{
  int a[N], i;
  for (i = 0; i < N; i++)
    /***** 请在以下一行填写代码 *****/
    scanf("%d", &a[i]);
  reverse(a, 0, N - 1);
  for (i = 0; i < N; i++)
    /***** 请在以下一行填写代码 *****/
    printf("%d ", a[i]);
  printf("\n");
  return 0;
}

第2关:字符排序:

题目:

本关任务:对某一个长度为7个字符的字符串, 除首、尾字符之外,要求对中间的5个字符按ASCII码降序排列。

例如,原来的字符串为CEAedca,排序处理后应输出为CedcEAa

代码思路:

这题和上一题很相似,只不过从原本的全部逆序变成了指定位置降序,只需要用for循环找到指针中对应的位置,然后排序即可

代码表示:

#include <stdio.h>
#include <ctype.h>
#include <string.h>
void fun(char* s)
{
  char ch;
  int i, j;
  for (i = 1; i < 6; i++)
  {
    for (j = i + 1; j < 6; j++)
    {
      /***** 请在以下一行填写代码 *****/
      if (*(s + j) > *(s + i))
      {
        ch = *(s + j);
        *(s + j) = *(s + i);
        *(s + i) = ch;
      }
    }
  }
}
int main()
{
  char s[10];
  scanf("%s", s);
  /***** 请在以下一行填写代码 *****/
  fun(s);
  printf("%s", s);
  return 0;
}

第3关:找最长串:

题目:

本关任务:给定程序中函数fun的功能是从N个字符串中找出最长的那个串,并将其地址作为函数值返回。N个字符串在主函数中输入,并放入一个字符串数组中。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试输入:

a

bb

ccc

dddd

eeeee

预期输出:

The 5 string :

a

bb

ccc

dddd

eeeee

The longest string :

eeeee

代码思路:

本题要改两个错误点,第一个就是fun函数的类型应该与longest相同,都为char*;第二个就是在返回值时应该返回的是sp而不是sq

代码表示:

#include <stdio.h>
#include <string.h>
#define N 5
#define M 81
/***** 以下一行有错误 *****/
char* fun(char(*sq)[M])
{
  int i;
    char *sp;
  sp=sq[0];
  for(i=0;i<N;i++)
    if(strlen(sp)<strlen(sq[i]))
      sp=sq[i];
/***** 以下一行有错误 *****/
  return sp;
}
int main()
{
  char str[N][M], *longest; 
    int i;
  for(i=0; i<N; i++)
    scanf("%s",str[i]);
  printf("The %d string :\n",N);
  for(i=0; i<N; i++) 
    puts(str[i]);
  longest = fun(str);
  printf("The longest string :\n");
  puts(longest);
  return 0;
}

第4关:星号转移:

题目:

本关任务:规定输入的字符串中只包含字母和*号。给定程序的功能是将字符串中的前导*号全部移到字符串的尾部。请将程序补充完整,使其能正确运行得出结果。

测试输入:

***abcd

预期输出:

abcd***

代码思路:

本题只需要填写3次代码,第一次:while循环统计*的个数,所以是p++;第二次:由第三个while循环可以看出其打印的是*,所以第二个while循环打印的就是*后面的数;第三次:因为开始打印*,所以每打印一次,n 就要 --

代码表示:

#include <stdio.h>
void  fun( char *a )
{
  int i=0,n=0;
  char *p;
  p=a;
  while (*p=='*')
  {
    n++;
  /***** 请在以下一行填写代码 *****/
    p++   ;
  }
  while(*p)
  {
  /***** 请在以下一行填写代码 *****/
    a[i]=*p   ; 
    i++; 
    p++;
  }
  while(n!=0)
  {
    a[i]='*';
    i++;
  /***** 请在以下一行填写代码 *****/
    n-- ;
  }
  a[i]='\0';
}
int main()
{
  char s[81];
  int n=0;
  scanf("%s",s);
  fun( s );
  printf("The string  after oveing: \n");
  puts(s);
  return 0;
}


相关文章
|
6月前
|
C语言
C语言中条件操作符的应用
最后,条件操作符是个超级英雄,但不是每个代码问题都需要一个超级英雄来解决。一定要在适当的时候适度的使用它,那么它将成为你的编程工具箱中的一件强力工具。
319 75
|
8月前
|
存储 人工智能 Java
一文轻松拿捏C语言的指针的基础使用
本文介绍了C语言中的指针概念,包括直接访问和间接访问内存的方式、指针变量的定义与使用、取址运算符`&`和取值运算符`*`的应用,帮助读者深入理解指针这一C语言的核心概念。君志所向,一往无前!
148 0
|
10月前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
313 7
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
10月前
|
存储 编译器 C语言
【C语言】指针大小知多少 ?一场探寻C语言深处的冒险 !
在C语言中,指针的大小(即指针变量占用的内存大小)是由计算机的体系结构(例如32位还是64位)和编译器决定的。
1181 9
|
10月前
|
安全 程序员 C语言
【C语言】指针的爱恨纠葛:常量指针vs指向常量的指针
在C语言中,“常量指针”和“指向常量的指针”是两个重要的指针概念。它们在控制指针的行为和数据的可修改性方面发挥着关键作用。理解这两个概念有助于编写更安全、有效的代码。本文将深入探讨这两个概念,包括定义、语法、实际应用、复杂示例、最佳实践以及常见问题。
294 7
|
11月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
302 5
|
11月前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
11月前
|
算法 C语言
C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项
本文深入讲解了C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项,通过实例演示了文件操作的基本流程,帮助读者掌握这一重要技能,提升程序开发能力。
623 3
|
11月前
|
网络协议 物联网 数据处理
C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势
本文探讨了C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势。文章详细讲解了使用C语言实现网络通信程序的基本步骤,包括TCP和UDP通信程序的实现,并讨论了关键技术、优化方法及未来发展趋势,旨在帮助读者掌握C语言在网络通信中的应用技巧。
242 2
|
11月前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
256 1