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语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

Go 语言中的 Struct Tag 的用法详解

《Go语言中的StructTag的用法详解》在Go语言中,结构体字段标签(StructTag)是一种用于给字段添加元信息(metadata)的机制,常用于序列化(如JSON、XML)、ORM映... 目录一、结构体标签的基本语法二、json:"token"的具体含义三、常见的标签格式变体四、使用示例五、使用

Go语言使用slices包轻松实现排序功能

《Go语言使用slices包轻松实现排序功能》在Go语言开发中,对数据进行排序是常见的需求,Go1.18版本引入的slices包提供了简洁高效的排序解决方案,支持内置类型和用户自定义类型的排序操作,本... 目录一、内置类型排序:字符串与整数的应用1. 字符串切片排序2. 整数切片排序二、检查切片排序状态: