C语言期末程序复习基础题(二)

简介: C语言期末程序复习基础题(二)

第一题

请编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数

例如:**假定输入的字符串为“asd asasdfg asd as zx67 asd mklo”,子字符串为“as”,则应当输出6。

思路

第一步:自己输入两个字符串

第二步:字符串的结束为’/0’,这也是循环结束的条件

第三步:由于比较的子串,长度为2 , 如果字符串的一个元素等于子串的而第一个元素,然后字符串的下一个元素,等于子串的第二个元素,那么就找到了,次数加1

代码

#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
int fun(char* str, char* substr)
{ 
  int j = 0;
  for (int i = 0; str[i + 1] != '\0'; i++)
  {
    if (str[i] == substr[0] && str[i + 1] == substr[1])
    {
      j++;
    }
  }
  return j;
}
void main()
{
  char str[81], substr[3];
  int n;
  system("CLS");
  printf("输入主字符串");
  gets(str);
  printf("输入子字符串");
  gets(substr);
  puts(str);
  puts(substr);
  n = fun(str, substr);
  printf("n=%d\n", n);
  return 0;
}

第二题

请编写函数fun,其功能是:求出1~1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。

思路

思路

这道题主要解决两个判断条件

第一个判断条件

能被7或者11整除, 假设这个数为n ,

n % 7 ==0 || n % 11 == 0;

第二个判断条件

不能同时被7和11整除的所有整数

不能同时被7和11整除,那么就算这两个之间的最小公倍数, n % 77 == 0

由于这两个条件都要满足就用&&连接

( n % 7 ==0 || n % 11 == 0) && n % 77 == 0

代码

# include <stdio.h>
void fun(int* a, int* n)
{
  int j = 0;
  for (int i = 0; i < 1001; i++)
  {
    if ((i % 7 == 0 || i % 10 == 0) && i % 77 != 0)
    {
      a[j++] = i;
    }
  }
  *n = j;
}
void main()
{
  int aa[1000], n, k;
  fun(aa, &n);
  for (k = 0; k < n; ++k)
  {
    printf("%5d", aa[k]);
  }
  printf("个数为%d", n);
}

第三题

下列给定程序中,函数fun的功能是进行数字字符的转换。若形参ch中是数字字符’0’ ~‘9’,

则将’0’转换成’9’,‘1’转换成’8’,‘2’转换成’7’, …, ‘9’转换成’0’;

若是其他字符则保持不变;并将转换后的结果作为函数值返回

思路

这里考察的主要是字符的运算规则

  1. ’9’ - ‘0’ = 9
    ‘8’ - ‘0’ = 8
    任何字符 - ’0‘ = 字符相对应的整形数据
  2. ’9‘ - 2 = ’7‘
    ’9‘ - 7 = ’2‘

    规律如上

这里就进行一个字符的转换
例如
'8‘ 转换成 ’1‘
就先让 ’8‘ - ’0‘ = 8
然后 ‘9’ - 8 = ‘1’

当然这道题也有范围, 在’0‘与 ‘9’ 之间

代码

# include <stdio.h>
 char fun(char ch)
{
  if (ch >= '0' && ch <= '9')
    return '9' - (ch - '0');
  return ch;
}
int main()
{
  char c1, c2;
  c1 = '2'; c2 = fun(c1);
  printf("c1 = %c, c2 = %c\n", c1, c2);
  c1 = '8'; c2 = fun(c1);
  printf("c1 = %c, c2 = %c\n", c1, c2);
  c1 = 'a'; c2 = fun(c1);
  printf("c1 = %c, c2 = %c\n", c1, c2);
  return 0;
}
相关文章
|
2月前
|
存储 自然语言处理 编译器
【C语言】编译与链接:深入理解程序构建过程
【C语言】编译与链接:深入理解程序构建过程
|
4月前
|
存储 算法 C语言
"揭秘C语言中的王者之树——红黑树:一场数据结构与算法的华丽舞蹈,让你的程序效率飙升,直击性能巅峰!"
【8月更文挑战第20天】红黑树是自平衡二叉查找树,通过旋转和重着色保持平衡,确保高效执行插入、删除和查找操作,时间复杂度为O(log n)。本文介绍红黑树的基本属性、存储结构及其C语言实现。红黑树遵循五项基本规则以保持平衡状态。在C语言中,节点包含数据、颜色、父节点和子节点指针。文章提供了一个示例代码框架,用于创建节点、插入节点并执行必要的修复操作以维护红黑树的特性。
111 1
|
4月前
|
编译器 C语言 计算机视觉
C语言实现的图像处理程序
C语言实现的图像处理程序
182 0
|
19天前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
42 5
|
19天前
|
C语言
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性。本文探讨了C语言中的错误类型(如语法错误、运行时错误)、基本处理方法(如返回值、全局变量、自定义异常处理)、常见策略(如检查返回值、设置标志位、记录错误信息)及错误处理函数(如perror、strerror)。强调了不忽略错误、保持处理一致性及避免过度处理的重要性,并通过文件操作和网络编程实例展示了错误处理的应用。
54 4
|
18天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
47 1
|
19天前
|
网络协议 物联网 数据处理
C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势
本文探讨了C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势。文章详细讲解了使用C语言实现网络通信程序的基本步骤,包括TCP和UDP通信程序的实现,并讨论了关键技术、优化方法及未来发展趋势,旨在帮助读者掌握C语言在网络通信中的应用技巧。
32 2
|
19天前
|
程序员 C语言
C语言中的指针既强大又具挑战性,它像一把钥匙,开启程序世界的隐秘之门
C语言中的指针既强大又具挑战性,它像一把钥匙,开启程序世界的隐秘之门。本文深入探讨了指针的基本概念、声明方式、动态内存分配、函数参数传递、指针运算及与数组和函数的关系,强调了正确使用指针的重要性,并鼓励读者通过实践掌握这一关键技能。
33 1
|
2月前
|
C语言
大学生期末C语言实验(学生成绩和鞍点)
大学生期末C语言实验(学生成绩和鞍点)
230 0
大学生期末C语言实验(学生成绩和鞍点)
|
2月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序