七、程序设计题(本题15分)

字符串处理函数strmap(s1,s2)可以比较两个字符串的大小,其字符的大小是以ASCII码表上的顺序决定的。该函数首先将s1第一个字符值减去s2的第一个字符值,若相差值为0则继续比较对应的下一个字符,若不为0则该差值就是函数的最终结果。

请参照改函数的实现原理,写出一个新的字符串比较函数strcmp_nc(s1,s2),该函数的功能与strcmp类似,但不区分字符串中的大小写字母,例如字符a和字符A相等。

要求:实现过程中不得使用任何已有的关于字符和字符串处理的库函数。

首先我们看看下原生strcmp函数的参数方法。

C 库函数 - strcmp()

描述

C 库函数 **int strcmp(const char str1, const char str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。

声明

下面是 strcmp() 函数的声明。

参数

str1 -- 要进行比较的第一个字符串。

str2 -- 要进行比较的第二个字符串。

返回值

该函数返回值如下:

如果返回值 < 0,则表示 str1 小于 str2。

如果返回值 > 0,则表示 str2 小于 str1。

如果返回值 = 0,则表示 str1 等于 str2。

python3.7版

#!/usr/bin/env python

# -*- coding: utf-8 -*-

def strcmp_nc(s1,s2):

#取出两字符串的长度

s1_num = len(s1)

s2_num = len(s2)

#循环两字符串并做比较

while s1_num and s2_num:

s1_ch = s1[-s1_num]

s2_ch = s2[-s2_num]

num = A_a(s1_ch) - A_a(s2_ch)

if num == 0:

s1_num -= 1

s2_num -= 1

else:

return num

#循环结束仍然没有返回值,然后对长度判断

if s1_num == s2_num:

return 0

elif s1_num > s2_num :

s=s1_num - s2_num

s1_ch = s1[-s]

A_a(s1_ch)

return A_a(s1_ch)

elif s1_num < s2_num:

s = s2_num - s1_num

s2_ch = s2[-s]

return 0 - A_a(s2_ch)

else:

return False

#定义函数,大写变小写

def A_a(str):

if str >= "A" and str <= "Z":

return ord(str) + 32

elif str >= "a" and str <= "z":

return ord(str)

else:

print('请输入字母')

return False

if __name__ == '__main__':

s1 = input("请输入s1字符串\n")

s2 = input("请输入s2字符串\n")

b=strcmp_nc(s1,s2)

print(b)

执行结果1

请输入s1字符串

XiAoPeng

请输入s2字符串

xiaopENg

0

执行结果2

请输入s1字符串

XiaoPengPeng

请输入s2字符串

Xiaopeng

112

C语言版本

#include

#include

//定义函数,大写变小写

int A_a(char str){

if (str >= 'A' && str <= 'Z')

return str + 32;

if (str >= 'a' && str <= 'z')

return str;

else

return false;

}

//定义比较字符串函数

int strcmp_nc(char s1[],char s2[]){

//定义两个指针

char *p1 = s1;

char *p2 = s2;

int num,s1_num,s2_num;

//取出两个字符串长度,以便在不等长的情况下比较。

s1_num = strlen(s1);

s2_num = strlen(s2);

//当两个字符相等的时候,指针后移,直到"\0"

while (*p1 && *p2){

num = A_a(*p1)-A_a(*p2);

if (num == 0){

p1++;

p2++;

}

else

return num;

}

if (s1_num == s2_num)

return 0;

if (s1_num > s2_num){

return A_a(*p1);

}

if (s1_num < s2_num){

return (0- A_a(*p2));

}

else

return false;

}

int main(void){

char s1[10];

char s2[10];

int num;

scanf("%s",s1);

scanf("%s",s2);

num = strcmp_nc(s1,s2);

printf("%d",num);

return 0;

}

执行结果1

XiAoPeng

xiaopENg

0

执行结果2

XiaoPengPeng

Xiaopeng

112

北航c语言程序设计大一期末题库,北航2016C语言|程序设计题七相关推荐

  1. c语言二级考试程序设计题难吗,计算机二级考试:题库抽的不是题是“命”!附赠考试通关全攻略!...

    原标题:计算机二级考试:题库抽的不是题是"命"!附赠考试通关全攻略! 四六级的报名刚截止不久, 考研复试如火如荼地进行, 计算机二级考试如约而至. 今天是考试第一天 老新猜你一定有 ...

  2. 全国计算机等级考试无纸化专用题库二级c语言答案,全国计算机等级考试真题汇编与专用题库二级C语言2017年无纸化考试专用...

    内容提要 < 2017年 全国计算机等级考试真题汇编与专用题库 二级C语言>依据教育部考试中心新颁布的<全国计算机等级考试大纲>及新无纸化真考题库编写而成.本书内容充分考虑考生 ...

  3. 计算机二级考试非选择题攻略,计算机二级考试:题库抽的不是题是“命”!附赠考试通关全攻略!...

    原标题:计算机二级考试:题库抽的不是题是"命"!附赠考试通关全攻略! 四六级的报名刚截止不久, 考研复试如火如荼地进行, 计算机二级考试如约而至. 今天是考试第一天 老新猜你一定有 ...

  4. 网课查题php接口,题库API_大学题库API网课查题题库接口API-在线授权

    题库API_大学题库API网课查题题库接口API-在线授权 更多相关问题 阅读理解. Sunny English Club For students16:00 ~ 18:00Every Saturda ...

  5. 考研政治题库,考研政治1000题之每日一题

    骐骥一跃,不能十步:驽马十驾,功在不舍.--出自<荀子·劝学> 考研政治刷题神器,微信搜一搜小程序:考研刷题小博士.考研政治题库,考研政治1000题之每日一题. · 今日习题 ·

  6. H3CSE-WLAN GB0-342题库最新十月高分通过题库VCE GB0342 华三无线中级

    WLAN GB0342题库最新十月高分通过题库VCE加微:lyh511419 全网最低 可谈

  7. 计算机vf知识题库,计算机二级VF上机题库及答案

    计算机二级VF上机题库及答案 第1题: 1. 建立菜单QUERY_MENU.该菜单只有"查询"和"退出"两个主菜单项(条形菜单), 其中单击菜单项"退 ...

  8. 考研c 语言程序设计题库,温州大学c语言程序设计考研复试核心题库(23页)-原创力文档...

    2017年温州大学C语言程序设计考研复试核心题库 (一) 说明:本资料为学员内部使用,整理汇编了 2017考研复试重点题及历年复试常考题 . _.选择题 1 ,在以下给出的表达式中,与while ( ...

  9. 东北大学c语言及程序设计题库,东北大学c语言编程试题及其答案

    东北大学C语言程序设计题库 第一部分( 选择题 ) 1.构成C语言的基本单位是________.你的答案是:正确答案是:B 过程 函数 语句 命令 2.设x为整型变量,不能正确表达数学关系:5 5&l ...

  10. 东北大学c语言及程序设计题库,东北大学c语言编程试题及其答案.doc

    东北大学c语言编程试题及其答案.doc 东北大学C语言程序设计题库第一部分(选择题)1.构成C语言的基本单位是________.你的答案是:正确答案是:B过程函数语句命令2.设x为整型变量,不能正确表 ...

最新文章

  1. SAP WM初阶事务代码LX29 - List of Fixed Storage Bins
  2. CCF201612-1 中间数(100分)
  3. JDBC驱动程序的四种方式
  4. 微信JS-SDK使用步骤(以微信扫一扫为例)
  5. equals java的用法_Java ConcurrentLinkedDeque equals()用法及代码示例
  6. Qt5中文乱码解决方案
  7. 关键词SEO相关搜索/下拉框/优化系统/按天扣费系统全开源
  8. 关于使用电脑命令开启无线热点的那点事。。。
  9. linux系统 nvme驱动模块,Linux 5.5最终通过HWMON公开NVMe驱动器温度
  10. dirent struct_struct dirent中d_name长度问题
  11. SSH工具连接谷歌云VPS实例
  12. 数据科学导引——租车人数预测模型 线性回归模型
  13. oppo android多大内存,OPPO R15使用感受,大内存真的很有必要
  14. 小程序通过三元运算符设置样式
  15. keras搭建简单CNN模型实现kaggle比赛数字识别
  16. 数学中的术语与常用表达
  17. 关键词排名查询工具主要有哪些?
  18. 工业4.0时代,怎样为孩子筹备未来的教育?
  19. 如何在ArcGIS中应用七参数对影像进行坐标投影变换
  20. 我们的管理:绩效薪酬福利制度体系

热门文章

  1. dict后缀_基本数据类型(dict)
  2. 前端获取QQ音乐(mp3+m4a)
  3. C#使用iTextSharp合并pdf,添加页码
  4. iceberg Flink操作
  5. 触碰岁月——土楼潇洒穷游记
  6. 一个不错的shell 脚本教程 (国)
  7. Material UI 带复选框表格获取选中值(索引)
  8. 统计学方差,中位数,方差,标准差,协方差等的计算
  9. java计算机毕业设计快滴预约平台源码+mysql数据库+系统+lw文档+部署
  10. Android对话框和帧动画