成品网站w灬源码999交友,企业招聘,建设一个功能简单的网站,注册个app要多少钱这两天怎么做的这么别扭#xff0c;为什么我的vs 的strlen函数包括终止字符了#xff1b; 哦哦#xff0c;明白了#xff0c;fgets函数读取在未达到指定字长#xff0c;或者遇见空白符之前#xff0c;会读取前面的所有字符#xff0c;所以会读取换行符#xff0c;而get… 这两天怎么做的这么别扭为什么我的vs 的strlen函数包括终止字符了 哦哦明白了fgets函数读取在未达到指定字长或者遇见空白符之前会读取前面的所有字符所以会读取换行符而gets不会所以在strlen函数计数的时候对于fgets读入的会多一个换行符所以是四学艺不精学艺不精。 这个学来一个新东西字母的判断大小写字母的判断以及大小写字母的转换
它们都是在同一个库函数 ctype.h
判断是否是字母的函数是 isalpha
大小写字母的判断分别是 isupper 和 islower 前者是大写判断
大小写字母转换是 toupper 和 tolower 前者是小写转大写
上面函数括号里面放的都是需要判断的字符 是的话返回真。
大小写转换的话。如果满足大小写则转换成对应的大写或小写然后返回如果不满足的话则不做改变返回原来值。 这个题说的长度小于50可是我把数组长度扩大到100它才给我全过这个又是为什么
#includestdio.h
#includestring.h
#includectype.h
int main()
{char ch[100] { 0 };fgets(ch, 100, stdin);int i 0;int n strlen(ch);for (i 0; i n; i){if (islower(ch[i])){ch[i] (ch[i] - a 3) % 26 a;ch[i] toupper(ch[i]);}else{ch[i] (ch[i] - A 3) % 26 A;ch[i] tolower(ch[i]);}}for (i n-1; i 0; i--){printf(%c, ch[i]);}return 0;
}
昨天的那个成了把时间复杂度从n^2变成了n我真的感觉我把 数组里的字符减去A 当作其他数组的下标还蛮厉害的hh。 #includestring.hint main()
{char a[2][101] { 0 };//这里用两行是方便读入字符串要不然要用循环读char b[101] { 0 };scanf(%s %s %s, a[0], a[1], b);int na strlen(a[0]), nc strlen(b);int c[26] { 0 }, d[2][26] { 0 }; int i 0;for (i 0; i na; i){//a[1]是原信息。c[(a[1][i] - A)];//记录每个字母是否都出现过。出现则加一A对应的是c[0],Z对应的是c[25]。if (d[0][(a[0][i] - A)] ! a[1][i])//这里是判断是否满足不同字母对应不同密字//这里用a[0][i]-A当下标是即使位置不一样但存储的字母一样的话那么下标就是一样的//那么就判断同一个字母对应的原信息一样不一样{d[0][(a[0][i] - A)] a[1][i];d[1][(a[0][i] - A)];}}//判断是否满足两个条件for (i 0; i 26; i){if (c[i] 0){printf(Failed\n); return 0;}if (d[1][i] 1){printf(Failed\n); return 0;}}//解密打印for (i 0; i nc; i){printf(%c, d[0][(b[i] - A)]);//上面在判断是否相等的时候存了每个加密字符对应的原信息}return 0;
}