20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises18

本文主要是介绍20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises18,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises18
  • P137
  • P219
  • P220
  • P221
  • P222

20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises18

P137

在这里插入图片描述

/*编写一程序P137.C实现以下功能通过键盘输入两个姓名(约定均为汉字且最多4个汉字),判断并输出二者是否同姓。编程可用素材:printf("请输入姓名1: ");printf("请输入姓名2: ");printf("\n“…”与“…”同姓。\n"…);printf("\n“…”与“…”不同姓。\n"…);程序的运行效果应类似地如图1和图2所示,图1和图2中的红色部分是从键盘输入的内容。请输入姓名1: 张李秀吉
请输入姓名2: 张三“张李秀吉”与“张三”同姓。
图1 程序运行效果示例请输入姓名1: 李四菊
请输入姓名2: 张三丰“李四菊”与“张三丰”不同姓。
图2 程序运行效果示例
*/#include <stdio.h>
#include <string.h>#define N 9void test01(char n1[],char n2[]);
void test02(char n1[], char n2[]);int main(void)
{char name1[N];char name2[N];printf("请输入姓名1: ");scanf("%s", name1);printf("请输入姓名2: ");scanf("%s", name2);/*     printf("%d", strlen(name1));    // 张李秀吉 === 8printf("%d", strlen(name2));    // 张三 === 4putchar('\n');for (int i = 0; i < strlen(name1);i++){printf("%c ", name1[i]);}for (int i = 0; i < strlen(name2);i++){printf("%c ", name2[i]);} */// /* //     这里,取第一个字符来比较,它是取出来的第一个字符吗?//     第一个字符是汉字字符,是一样的吗?//  */// if (name1[0] == name2[0])// {//     printf("\n“%s”与“%s”同姓。\n", name1, name2);// }// else// {//     printf("\n“%s”与“%s”不同姓。\n", name1, name2);// }// test01(name1, name2);       // 这个判断是有问题的test02(name1, name2);return 0;
}/* 应该判断第一个完整的汉字,两个字节"张"的区位码:D5C5"章"的区位码:D5C2取测试数据:“张三”   “章三”如果使用方法一test01(),则同姓如果使用方法二test02(),则不同姓*/// 只判断了一个字节,不足一个汉字,但汉字有可能刚好第一个字节一样
void test01(char n1[],char n2[])
{// 只判断了一个字符【半个中文,没有这样的表示方式,只是为了方便理解,暂时这样表述】if (n1[0] == n2[0]){printf("\n“%s”与“%s”同姓。\n", n1, n2);}else{printf("\n“%s”与“%s”不同姓。\n", n1, n2);}
}// 判断了两个字节,足够一个汉字,一定可以区别每一个汉字
void test02(char n1[],char n2[])
{// 判断了一个中文if (n1[0] == n2[0] && n1[1] == n2[1]){printf("\n“%s”与“%s”同姓。\n", n1, n2);}else{printf("\n“%s”与“%s”不同姓。\n", n1, n2);}
}

P219

在这里插入图片描述

/*编写一程序P219.C实现以下功能从键盘读入一行字符(约定:字符数≤127字节),将其中的数字字符以及这些数字字符的数量在屏幕上显示,注意:要求先显示这些数字字符的数量。编程可用素材:printf("Please input string: ");printf("\nshu zi ge shu wei: …);printf("\nshu zi wei: …);程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwafl faf32535as3bf0是从键盘输入的内容。Please input string: gfaskl45623cvsac,53dwafl faf32535as3bf0shu zi ge shu wei: 14
shu zi wei: 45623533253530
图1 程序运行效果示例
*/#include <stdio.h>
#include <string.h>
#define N 127int main(void)
{char str[N];char strData[N] = {'\0'};int i, j = 0;printf("Please input string: ");gets(str);for (i = 0; i < (int)strlen(str); i++)  // 注意,这样的写法,效率很差,因为strlen是跑一个循环后给结果{if (str[i] >= '0' && str[i] <= '9'){strData[j++] = str[i];}}printf("\nshu zi ge shu wei: %d", (int)strlen(strData));printf("\nshu zi wei: %s", strData);return 0;
}

P220

在这里插入图片描述

/*编写一程序P220.C实现以下功能从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Please input string: ");printf("\nzimu=…,shuzi=…,kongge=…,qita=…\n"…);程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。Please input string: gfAskl45623cvsac,53Dwafl faf32535zimu=19,shuzi=12,kongge=1,qita=1
图1 程序运行效果示例
*/#include <stdio.h>#include <stdio.h>
#include <string.h>
#define N 127int main(void)
{char str[N];int i;int zimu = 0, shuzi = 0, kongge = 0, qita = 0;printf("Please input string: ");gets(str);// 统计及输出其中的字母、数字、空格和其他符号的个数for (i = 0; i < (int)strlen(str); i++){if (str[i] >= '0' && str[i] <= '9'){shuzi++;} else if ( (str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')){zimu++;} else if (str[i] == ' '){kongge++;}else{qita++;}}printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n", zimu, shuzi, kongge, qita);return 0;
}

P221

在这里插入图片描述

/*编写一程序P221.C实现以下功能从键盘读入一个字符串(约定:字符数≤127字节),检查该字符串是否是回文。所谓回文即正向与反向的拼写都一样,例如:adgda。编程可用素材:printf("Please input string: ");printf("\n… shi hui wen.");printf("\n… bu shi hui wen.");程序的运行效果应类似地如图1和图2所示,图1中的asdfghjhgfdsa和图2中的asdfghjhgfdsaa是从键盘输入的内容。Please input string: asdfghjhgfdsaasdfghjhgfdsa shi hui wen.
图1 程序运行效果示例(回文)Please input string: asdfghjhgfdsaaasdfghjhgfdsaa bu shi hui wen.
图2 程序运行效果示例(非回文)
*/#include <stdio.h>
#include <string.h>
#define N 127int main(void)
{char str[N];int i;int flag = 1; // 假设是回文int length;printf("Please input string: ");gets(str);length = (int)strlen(str); //这是一种遍历得结果的函数,外置,只做一次,效率更高// 业务判断for (i = 0; i < length / 2; i++){/* 这里用的算法:1. 从串首开始,i正向增长2. 从串尾开始,length - 1 - i负向增长3. 回文则必然相同,若不同,则不是回文注意:串最后一个字符,索引值是“长度减1”    */if (str[i] != str[length - 1 - i]) {flag = 0; // 不是回文标记break;}}// 业务输出if (flag){printf("\n%s shi hui wen.", str);}else{printf("\n%s bu shi hui wen.", str);}return 0;
}

P222

在这里插入图片描述

/*编写一程序P222.C实现以下功能从键盘上读入一行字符(约定:字符数≤127字节),按以下方法将其加密变换:A->Z    a->zB->Y    b->yC->X    c->x……    ……Z->A    z->a即字母A变成Z、字母B变成Y、…,非字母字符不变。最后在屏幕上先显示这一行字符的长度,再显示生成的密文。编程可用素材:printf("Please input string: ");printf("\nzi fu chuan chang du: …);printf("\nmi wen: …);程序的运行效果应类似地如图1所示,图1中的sfasfk,lmw4tywerysfcvasgewr xfasftg是从键盘输入的内容。Please input string: sfasfk,lmw4tywerysfcvasgewr xfasftgzi fu chuan chang du: 35
mi wen: huzhup,ond4gbdvibhuxezhtvdi cuzhugt
图1 程序运行效果示例友情提示:注意引入函数的顺序【1】函数声明【2】函数实现【3】函数调用
*/#include <stdio.h>
#include <string.h>#define N 127void alphaEncipher(char s[],int len);   // 【1】函数声明int main(void)
{char str[N];int length;// 输入printf("Please input string: ");gets(str);// 求长度length = (int)strlen(str);printf("\nzi fu chuan chang du: %d", length);// 调用功能函数,实现加密alphaEncipher(str, length); // 【3】函数调用// 输出密文printf("\nmi wen: ");puts(str);return 0;
}/* 逐个字母加密功能 【2】函数实现*/
void alphaEncipher(char s[],int len)
{char cl[26], sl[26];    // 密码表int i, j, k;// 初始化密码表for (i=0, j='A', k='a'; i<26; cl[i]=j++, sl[i]=k++, i++);/* 上面的代码,也可以写成如下形式:for (i=0, j='A', k='a'; i<26; i++){cl[i]=j++;sl[i]=k++;}读解:1. 最上面的代码是一种简洁形式,但不易读2. i控制循环次数3. j,k在自增过程中完成码表赋值*/// 逐个字符变换for (i=0; i<len; i++)       // 外层循环,遍历每一个字符// 对每一个字母【 A-Z  or a-z 】进行转换,非字母字符不变。for (j=0; j<26; j++){   // 内层循环,查密码表,进行字符转换【A-->Z,B-->Y,...,Z-->A,小写亦然如斯】if (s[i]==cl[j]){   // 大写字母表s[i]=cl[25-j]; break;}if (s[i]==sl[j]){   // 小写字母表s[i]=sl[25-j]; break;}}
}

这篇关于20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises18的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/612333

相关文章

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

基于Go语言实现一个压测工具

《基于Go语言实现一个压测工具》这篇文章主要为大家详细介绍了基于Go语言实现一个简单的压测工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理客户端模块Http客户端处理Grpc客户端处理Websocket客户端

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英