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

相关文章

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

C语言:柔性数组

数组定义 柔性数组 err int arr[0] = {0}; // ERROR 柔性数组 // 常见struct Test{int len;char arr[1024];} // 柔性数组struct Test{int len;char arr[0];}struct Test *t;t = malloc(sizeof(Test) + 11);strcpy(t->arr,

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

C 语言的基本数据类型

C 语言的基本数据类型 注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。 有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢? 如果写了一句: int a; 那么执行的时候在内存中会有什么变化呢? 橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。 上

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(