
第六章
Bona Fides
.
展开
-
6.11 电文 字母的转换
//电文//总体上://它是正数的第几个,对应倒数的第几个,//如果为小写字母,//ch-'a'为正着数的位置。比如,若为a,则减完为0,即第0个//倒数:26-(ch-'a')-1,-1是因为数组从0开始,//26-(ch-'a')-1+'a',得转换后的数。#include<stdio.h>int main(){ char a[128] = { 0 }; gets(a); int i = 0; while (a[i]) { if (a[i] >= 'a.原创 2021-11-29 18:31:51 · 166 阅读 · 0 评论 -
6.7 魔方阵
////6.7 魔方阵!横竖斜的数和相同。//8 1 6//3 5 7//4 9 2//总体上://以当前数的下一个数的位置的确定为目标,找出当前数的下一个数的位置的规律,来判断其位置!//具体://(空间上理解为一个卷起来的球!)//情况1,一般情况下(即不在第一行,也不在最后一列),则下一个数位于当前数的上一行,下一列!//情况2,当前数位于第一行,则下一个数的行位于最后一行,列仍为当前数的下一列;//情况3,当前数位于最后一列,则下一个数的列位于第一列;行.原创 2021-11-29 18:18:09 · 189 阅读 · 0 评论 -
6.15 复制字符串 不用函数
//复制//将2给1,注意末尾的0#include<stdio.h>int main(){ int a[10] = { 0 }, b[10] = { 0 }; gets(a); gets(b); int i = 0; while (b[i]) { a[i++] = b[i++]; a[i] = '\0'; } puts(a);}原创 2021-10-15 19:47:00 · 147 阅读 · 0 评论 -
6.14 字符串比大小 不用函数
//比较字符串大小,不用函数//可能有几种情况,都要考虑到//and和and, // and和an,an和and,and和aid,//整体上,如果字母相等,继续走;//如果均走到了'\0',则说明两个串相等,返回0;//其余情况均返回差值即可。#include<stdio.h>int main(){ char a[10] = { 0 },b[10] = { 0 }; gets(a); gets(b); int i = 0,r; while (a[i] == b[i].原创 2021-10-15 19:41:47 · 688 阅读 · 0 评论 -
6.13 字符串连接 不用函数
//字符串连接 不用strcat//定义两个字符串,设计两个变量,一个找a的结尾,一个遍历b给a添加//遍历1到末尾,将2从1末尾连接,注意结尾的‘\0’#include<stdio.h>int main(){ char a[10] = { 0 }, b[5] = { 0 }; gets(a); gets(b); int i = 0, j= 0; while (a[i]) i++; while (b[j]) a[i++] = b[j++]; a[i] = '\.原创 2021-10-15 18:54:56 · 474 阅读 · 0 评论 -
6.12 电文转换
//电文转换//已经给出字母和转换后的字母之间的数字关系转换公式,即从第i个变成第26-i+1个// 主要解决第某个字母和ascii之间的关系问题;即字符与数字之间的转换。从i着手。// 如果为小写,i=字母-'a';转换为a[i] = 'a' + (26 - (a[i] - 'a') - 1);// 如果为大写,i=字母-'A';转换为a[i] = 'A' + (26 - (a[i] - 'A') - 1);// - 1因为数组下标从0开始,防止转变后下标越界。// 注意考虑数字与字符间的..原创 2021-10-15 18:41:31 · 201 阅读 · 0 评论 -
6.9 折半查找找数是否在数组中,并输出其位置(这个没纠错)
#include<stdio.h>int main(){ int a[15] = { 0 }; int i, left, right, mid; int x = 4; for (i = 0; i < 15; i++) a[i] = i + 1; int sz = sizeof(a) / sizeof(a[0]); left = 0; right = sz - 1; while (left <= right) { mid = (left + right).原创 2021-10-14 19:27:22 · 165 阅读 · 0 评论 -
6.8 鞍点问题
//一行一行遍历//找到每行最大值,标记列,//遍历列上的值,如果列上有任一一个数比该数小,则说明不是鞍点,//继续遍历下一行,如果遍历完了没有符合的数,则没有鞍点//判断没有鞍点的情况,需标记,如果找到鞍点,标记变为1,否则为0;//最后判断标记的值,根据值判断是否有无鞍点。#include<stdio.h>int main(){ int a[3][4] = {9,6,8,70,10,23,55,66,15,67,4,69}; int i, j, flag, k,max,.原创 2021-10-14 19:12:03 · 179 阅读 · 0 评论 -
6.1 筛选法求素数
//筛选法求100以内素数//筛选的原理://采用两个循环,将100个数存到数组中,如果只考虑数字,无法完成操作。//用当前数后的数除以该数,若能整除,说明不是素数,置零,即将数的倍数筛掉//在接下来的每次遍历中,跳过置零的数,//继续遍历其余的没有置零的数。//最后将没有置零的数输出。#include<stdio.h>#include<math.h>int main(){ int i, j, a[100]; for (i = 1; i <100; i.原创 2021-10-13 16:25:07 · 240 阅读 · 0 评论 -
6.4 插入数到一个有序数组中
//逆序遍历,将数组中的数依次和x比较;//如果该数比某个数大,说明应该放在其后;程序break;//将该数之后的数一一往后移,空出a[i+1]给x;#include<stdio.h>int main(){ int a[7] = { 1,2,4,6,8,9 }; int i, j; int x =0; for (i = 5; i >= 0; i--)//找位置 if (x > a[i]) break; for (j = 5; j >= i + 1.原创 2021-10-13 17:09:09 · 401 阅读 · 0 评论