首页 > 其他分享 >【趣学C语言和数据结构100例】

【趣学C语言和数据结构100例】

时间:2024-10-13 21:17:49浏览次数:8  
标签:字母 mid 趣学 low 数组 100 C语言 鞍点 array

【趣学C语言和数据结构100例】

问题描述

  1. 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。

  2. 有 15 个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。

  3. 有一篇文章,共有 3 行文字,每行有 80 个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。

  4. 有一行电文,已按下面规律译成密码:A->Z a->z B->Y b->y C->X c->x 即第 1 个字母变成第 26 个字母,第 i 个字母变成第(z-(i-a))个字母,非字母字符不变。要求编程序将密码译回原文,并输出密码和原文。

  5. 编一程序,将两个字符串连接起来,不要用 strcat 函数

代码分析

16.找鞍点
分析:鞍点:该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
思路:创造二维数组,且初始化数组全为0 。两个for循环嵌套,在第一个循环找到第i行最大,并记录在第几列col,然后找到第i行第col列最小,判断条件max == min && col < Y,则为找到鞍点。

17.折半查查找
输入数组和需要找到的数,使用双下标,low,high,初始指向起点和终点,使用while查找,只要low <= high,则进行,进行折半,使用mid = low + (high - low) / 2; // 改进后的 mid 计算方式,(mid=(low+high)/2; //改进前的 mid 计算方式,可能存在溢出风险。)进行num == array[mid],如果找到,则输出,如果array[mid] > num,则进行high = mid - 1;,如果array[mid] < num,则进行low = mid + 1;。

18.统计字符的个数
输入3行文字,每行有 80 个字符,则创造array[3][80]。每一行,fgets(array[i], 80, stdin);进行输入。对于每一行的每一个字符进行判断,直接使用函数/区间判断。

19. 找规律
观察规律,A->Z a->z B->Y b->y C->X c->x,第 1 个字母变成第 26 个字母,第 i 个字母变成第(z-(i-a))个字母,非字母字符不变
创造两个数组,分别存储密文和原文。先输入密文fgets(密文, 100, stdin);使用for循环遍历,如果是字母,即isalpha(cipher[i]),如果在A到Z,则进行’Z’ - (cipher[i] - ‘A’);,如果在a到x,则进行’a’ - (cipher[i] - ‘z’);

20.字符串连接,不用 strcat 函数
使用while循环找到 s1 字符串的末尾,把s2依次赋值给s1。

代码实现

#include <stdio.h>
#include <ctype.h>
#define N 15
#define X 3
#define Y 4 

int main()
{
   
//	16.找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
    int array[X][Y];
    int max, min, row, col, i, j, flag = 0; 
    printf("输入%d到%d的二维数组\n", X, Y); 
    for (i = 0; i < X; i++) {
   
        for (j = 0; j < Y; j++) {
   
            scanf("%d", &array[i][j]); // 初始化数组全为0 
        }
    }
    for (i = 0; i < X; i++) {
   
//    	找到第i行最大 
        max = array[i][0];
        col = 0; 
        f

标签:字母,mid,趣学,low,数组,100,C语言,鞍点,array
From: https://blog.csdn.net/lwcwam/article/details/142903905

相关文章

  • PTA C语言 7-1 字符串比对 单位 郑州轻工业大学输入两个长度相同的字符串,字符串长度小
    7-1字符串比对分数10作者 zzuli单位 郑州轻工业大学输入两个长度相同的字符串,字符串长度小于20,且只包含英文字符。将两个字符串逐字符对比的结果输出(由+和-构成的一行字符),具体规则如下:如果两个字符串对应字符是同一字母则输出+如果两个字符串对应字符不是同一字母......
  • c语言栈-回文
    include<stdio.h>include<stdlib.h>defineMAXSIZE7//定义结构体structStack{charworld[MAXSIZE];inttop;};//定义栈structtemp{structStacks;};intmain(){Stacks{};//入栈charc1[MAXSIZE]={0};printf("输入字符串,最多%d个字符\n",MAXSI......
  • C语言中以下概念,以及这些概念之间的关系: 1.代码段 2.数据段 3.堆栈 4.全局变量 5.局部
    在C语言程序中,内存布局通常被分为几个主要的区域,每个区域都有不同的用途。以下是关于代码段、数据段、堆栈、全局变量、局部变量和函数的详细描述,以及它们之间的关系。1.代码段(TextSegment)代码段(也称为textsegment)是程序的只读部分,存储的是程序的指令(即代码)。这是可执行文......
  • C语言在Linux上编程的步骤
    如果对你有帮助,请点个免费的赞吧,谢谢汪。(点个关注也可以!)如果以下内容需要补充和修改,请大家在评论区交流~让大家都看见1.编程前的准备1.1新建文件夹mkdir【选项】【文件名】1.2选择编程工具1.使用VScode:code【文件或者目录】2.使用vi编译器(这里先不使用)1.3打开编......
  • height:100%,height:100vh什么区别呢
    height:100%; 和 height:100vh; 是设置元素高度的两种不同方式height:100%;:这个属性会使元素的高度等于其父元素的高度。也就是说,元素的高度将会占据其父元素的百分之百高度。值为百分比时,实际的高度取决于其父元素的高度。如果父元素没有显式地设置高度,则 height:......
  • 实验2 c语言分支与循环基础应用编程1
    #include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5#defineN1397#defineN2476#defineN321intmain(){intcnt;intrandom_major,random_no;srand(time(NULL));cnt=0;while(cnt<......
  • 实验2 C语言分支与循环基础应用编程-1
    实验任务1:task1.c源代码:1#include<stdio.h>2#include<stdlib.h>3#include<time.h>45#defineN56#defineN13977#defineN24768#defineN321910intmain(){11intcnt;12intrandom_major,random_no;1314......
  • 用第二客户端远程连接hive报错Failed to connect to node1:10000
    报错内容:24/10/1315:08:35[main]:WARNjdbc.HiveConnection:Failedtoconnecttonode1:10000Error:CouldnotopenclienttransportwithJDBCUri:jdbc:hive2://node1:10000:Failedtoopennewsession:java.lang.RuntimeException:org.apache.hadoop.ipc.Remo......
  • 实验2 C语言分支与循环基础应用编程
    #include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5#defineN1397#defineN2476#defineN321intmain(){intcnt;intrandom_major,random_no;srand(time(NULL));//以当前系统时间作为随机种子cnt=0;wh......
  • 实验2 c语言分支与循环基础应用编程-1
    实验任务1task1.c1#include<stdio.h>2#include<stdlib.h>3#include<time.h>45#defineN56#defineN13977#defineN24768#defineN321910intmain(){11intcnt;12intrandom_major,random_no;1314s......