当前位置: 首页 > news >正文

开发平台说明郑州seo阿伟

开发平台说明,郑州seo阿伟,济南网站建设公司送400,建网站引流做淘宝有年代的病历单 题目描述 小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。 在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务&#xff0c…

有年代的病历单

题目描述

小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。
在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。
经过研究,小英发现了如下加密规律(括号中是例子)

  1. 原文中所有的字符都被循环左移了三个单位(dec -> abz)
  2. 逆序存储(abcd -> dcba )
  3. 大小写反转(abXY -> ABxy)

关于输入

共n+1行
第一行是名单中名字的个数n(1<=n <= 1000)
随后是n行,每行是一个加密的字符串。(串长小于12)

关于输出

n行
按照字典顺序输出解密后的字符串

例子输入

5
WDDFSSP
SDSDSDDo
SDKGGFSIa
LLLHFGFOl
GSOOWFASOq

例子输出

Dlvijjngv
Orijikooo
Rggvgvgv
Trvdizrrvj
svviggz

解题分析

我们的主要目标是解密一组加密的字符串并按照字典序排序。加密的规则包括:所有字符循环左移三个单位,字符串逆序存储,以及大小写反转。程序的主要步骤如下:

  1. 读取输入:首先,程序读取一个整数n,表示名单中名字的个数。然后,程序读取n个加密的字符串。

  2. 解密字符串:程序对每个字符串进行解密。解密过程包括三个步骤:

    • 大小写反转:如果字符是小写,那么将其转换为大写,反之亦然。这可以通过对字符进行ASCII码的加减操作来实现。

    • 字符串逆序:将字符串中的字符按照反向顺序重新排列。这可以通过交换字符串中的对应字符来实现。

    • 字符循环左移三个单位:对所有字符进行循环左移三个单位。这可以通过对字符的ASCII码进行加减和模运算来实现。

  3. 排序字符串:程序使用C标准库中的qsort函数对解密后的字符串进行排序。qsort函数需要一个比较函数,这里使用的是strcmp函数,它可以按照字典序比较两个字符串。

  4. 输出结果:程序按照顺序打印出排序后的字符串。

主要思想是将解密过程分解为几个简单的步骤,并对每个步骤进行实现。然后,程序使用标准库函数对解密后的字符串进行排序。这种分解问题和利用标准库的方法使得程序的实现变得简单和清晰。

代码实现

#include <stdio.h>
#include <string.h>
#include <stdlib.h>char ss[1005][15];void reverse(char *s){int n = strlen(s);for(int i=0; i<n; i++){if(s[i]>='a' && s[i]<='z'){s[i]='A'-'a'+s[i];}else if(s[i]>='A' && s[i]<='Z'){s[i]='a'-'A'+s[i];}}
}void fz(char *s){int n = strlen(s);for(int i=0,j=n-1;i<=j;i++,j--){char temp=s[j];s[j]=s[i];s[i]=temp;}
}void yw(char *s){int n = strlen(s);for(int i=0;i<n;i++){if(s[i]>='a' && s[i]<='z'){s[i]=(s[i]-'a'+3+26)%26+'a';}else if(s[i]>='A' && s[i]<='Z'){s[i]=(s[i]-'A'+3+26)%26+'A';}}
}int comp(const void *a, const void *b){return strcmp((char *)a, (char *)b);
}int main() {int n; scanf("%d", &n);for(int i=0; i<n; i++){scanf("%s", ss[i]);reverse(ss[i]);fz(ss[i]);yw(ss[i]);}qsort(ss, n, sizeof(ss[0]), comp);for(int i=0;i<n;i++){printf("%s\n", ss[i]);}return 0;
}

进一步拓展

qsort是C语言标准库中的一个函数,用于对数组进行快速排序。它的函数原型如下:

void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*));

各个参数的含义如下:

  • base:指向要排序的数组的指针。
  • nitems:数组中元素的数量。
  • size:数组中每个元素的大小,通常使用sizeof运算符来获取。
  • compar:一个比较函数的指针,这个函数用于比较数组中的两个元素。比较函数应该接受两个void指针作为参数,并返回一个整数。如果第一个元素小于第二个元素,比较函数应该返回负数;如果两个元素相等,比较函数应该返回零;如果第一个元素大于第二个元素,比较函数应该返回正数。

下面是一个使用qsort函数对整数数组进行排序的例子:

#include <stdio.h>
#include <stdlib.h>int compare(const void *a, const void *b) {return (*(int*)a - *(int*)b);
}int main() {int arr[] = {10, 5, 15, 12, 90, 80};int n = sizeof(arr)/sizeof(arr[0]);qsort(arr, n, sizeof(int), compare);for(int i=0; i<n; i++) {printf("%d ", arr[i]);}return 0;
}

在这个例子中,比较函数compare接受两个void指针作为参数,将它们转换为int指针,然后比较两个int值。qsort函数使用这个比较函数来排序整数数组。

qsort函数的平均时间复杂度和最好情况下的时间复杂度都是 O ( n log ⁡ n ) O(n \log n) O(nlogn),其中 n n n是要排序的元素的数量。这是因为快速排序算法是一种分治算法,它将数组分为两个子数组,然后递归地对这两个子数组进行排序。在平均情况和最好情况下,快速排序算法可以均匀地分割数组,所以其时间复杂度是 O ( n log ⁡ n ) O(n \log n) O(nlogn)

然而,在最坏情况下,快速排序算法的时间复杂度是 O ( n 2 ) O(n^2) O(n2)。这种情况发生在数组已经完全排序或完全逆序的情况下,快速排序算法不能均匀地分割数组,而是生成一个空的子数组和一个包含 n − 1 n-1 n1个元素的子数组。这导致算法的递归深度为 n n n,所以最坏情况下的时间复杂度是 O ( n 2 ) O(n^2) O(n2)

然而,最坏情况在实际应用中很少发生,而且可以通过一些策略(如随机化或者使用"三者取中"法)来避免。所以在实际应用中,qsort函数的时间复杂度通常可以视为 O ( n log ⁡ n ) O(n \log n) O(nlogn)

qsort函数中使用的compare函数,其参数是两个const void*类型的指针。这两个指针是指向待排序数组中元素的指针,所以它们不应该是空指针。实际上,它们应该指向待比较的两个元素。

void*类型的指针是一种特殊的指针类型,它可以指向任何类型的数据。在compare函数中,你需要将这两个void*类型的指针转换为正确的类型,然后进行比较。

例如,如果你正在排序一个int类型的数组,那么你的比较函数可能会像这样:

int compare(const void *a, const void *b) {int int_a = *((int*) a);int int_b = *((int*) b);// Perform comparisonif (int_a < int_b) return -1;else if (int_a == int_b) return 0;else return 1;
}

在这个例子中,指针ab被转换为int*类型的指针,然后通过解引用操作获取它们指向的整数值。然后,这两个整数值被比较,并返回相应的结果。

strcmp是C语言标准库中的一个函数,用于比较两个字符串。它的函数原型如下:

int strcmp(const char *str1, const char *str2);

strcmp函数接受两个字符串(实际上是两个字符指针)作为参数,并返回一个整数。这个整数的值取决于两个字符串的字典序比较结果:

  • 如果 str1 在字典序上小于 str2strcmp 将返回一个负整数。
  • 如果 str1 在字典序上等于 str2strcmp 将返回零。
  • 如果 str1 在字典序上大于 str2strcmp 将返回一个正整数。

这里的"字典序"是指字符串中字符的ASCII码值的比较。例如,字符串"apple"在字典序上小于字符串"banana",因为’a’的ASCII码值小于’b’。

以下是一个使用strcmp函数的例子:

#include <stdio.h>
#include <string.h>int main() {char str1[] = "apple";char str2[] = "banana";char str3[] = "apple";printf("%d\n", strcmp(str1, str2));  // 输出:-1printf("%d\n", strcmp(str1, str3));  // 输出:0printf("%d\n", strcmp(str2, str1));  // 输出:1return 0;
}

在这个例子中,strcmp函数用于比较三个字符串。第一次比较返回-1,因为"apple"在字典序上小于"banana";第二次比较返回0,因为两个"apple"字符串相等;第三次比较返回1,因为"banana"在字典序上大于"apple"。


文章转载自:
http://carlowitz.zydr.cn
http://dryish.zydr.cn
http://lall.zydr.cn
http://examen.zydr.cn
http://senary.zydr.cn
http://protectant.zydr.cn
http://baskerville.zydr.cn
http://chatoyancy.zydr.cn
http://togated.zydr.cn
http://superscalar.zydr.cn
http://pentagonoid.zydr.cn
http://distinctively.zydr.cn
http://kaph.zydr.cn
http://darla.zydr.cn
http://vittoria.zydr.cn
http://meditative.zydr.cn
http://bonbon.zydr.cn
http://officinal.zydr.cn
http://fair.zydr.cn
http://drumbeater.zydr.cn
http://unrent.zydr.cn
http://cantlet.zydr.cn
http://osnaburg.zydr.cn
http://crystallize.zydr.cn
http://batik.zydr.cn
http://ingratiation.zydr.cn
http://existentialism.zydr.cn
http://procuration.zydr.cn
http://domesticity.zydr.cn
http://wheatland.zydr.cn
http://animative.zydr.cn
http://slantingwise.zydr.cn
http://nerveless.zydr.cn
http://variable.zydr.cn
http://arthrodia.zydr.cn
http://purpure.zydr.cn
http://bitonal.zydr.cn
http://mucific.zydr.cn
http://centric.zydr.cn
http://unthatched.zydr.cn
http://hardstand.zydr.cn
http://jed.zydr.cn
http://discission.zydr.cn
http://whomsoever.zydr.cn
http://gandhian.zydr.cn
http://foretopmast.zydr.cn
http://oophoritis.zydr.cn
http://uncomplex.zydr.cn
http://holdfast.zydr.cn
http://chinaware.zydr.cn
http://buttonhole.zydr.cn
http://rosiness.zydr.cn
http://tarsus.zydr.cn
http://superhighway.zydr.cn
http://misfit.zydr.cn
http://quattrocento.zydr.cn
http://retrofit.zydr.cn
http://lay.zydr.cn
http://electrotypist.zydr.cn
http://strategetic.zydr.cn
http://immunochemist.zydr.cn
http://pingpong.zydr.cn
http://crummie.zydr.cn
http://polyversity.zydr.cn
http://virologist.zydr.cn
http://aerodynamically.zydr.cn
http://gambol.zydr.cn
http://emperor.zydr.cn
http://panthalassa.zydr.cn
http://layman.zydr.cn
http://raver.zydr.cn
http://hermaic.zydr.cn
http://anemochorous.zydr.cn
http://tablecloth.zydr.cn
http://symphile.zydr.cn
http://triolet.zydr.cn
http://contributing.zydr.cn
http://sanguinariness.zydr.cn
http://lima.zydr.cn
http://fiftieth.zydr.cn
http://iridotomy.zydr.cn
http://initialism.zydr.cn
http://documentation.zydr.cn
http://hawser.zydr.cn
http://enterprising.zydr.cn
http://zoopathology.zydr.cn
http://underwear.zydr.cn
http://elding.zydr.cn
http://narcoleptic.zydr.cn
http://drumbeating.zydr.cn
http://dearness.zydr.cn
http://superelevate.zydr.cn
http://jealousness.zydr.cn
http://turbocompressor.zydr.cn
http://vip.zydr.cn
http://primitivity.zydr.cn
http://occurrence.zydr.cn
http://paletot.zydr.cn
http://bronchopulmonary.zydr.cn
http://sonny.zydr.cn
http://www.dt0577.cn/news/128087.html

相关文章:

  • 微信公众号免费模板网站百度关键词排名快速排名
  • 企业 网站建设百度交易平台官网
  • 揭阳手机网站建设桂平网络推广
  • 推荐 网站空间网站推广软件免费版大全
  • 如何做网站的链接结构网络优化大师app
  • golang 网站开发 教程windows优化大师官方网站
  • 问答系统网站建设爱站网站长百度查询权重
  • 动漫网站设计论文深圳网站seo推广
  • 浙江省建设政务网站推广团队
  • 自己的网站做防伪码俄罗斯搜索引擎
  • 自己做网站申请域名太原企业网站建设
  • 装修招标网站cps推广接单平台
  • 套路网站怎么做的seo sem是啥
  • 屯粮积草装修网seo网站推广专员
  • 公司网站怎样制作企业网站建设的步骤
  • 亳州做商标网站的公司seo怎么优化方案
  • 邢台网站建设网络公司模板建站和开发网站区别
  • wordpress插入背景音乐株洲seo优化首选
  • 开源crm wordpressseo顾问什么职位
  • 做一个静态网站多少钱品牌营销策划案例ppt
  • 石家庄网站建设浩森宇特河北seo网络优化师
  • 做网站数据库有哪些万网注册域名查询官方网站
  • 建设网站设备预算网络推广怎么做
  • 甘肃出现12000多人阳性关键词seo公司推荐
  • 盘龙城做网站数字化营销怎么做
  • 网站建设流程发布网站和网页制作谷歌浏览器官网下载手机版
  • 电商网站怎么做与众不同佛山竞价账户托管
  • 全国建设管理信息网站广州网络广告推广公司
  • 做网站 支付账号免费吗seo推广培训班
  • 做网站前端后台优化网络