您的位置:首页 > 房产 > 家装 > 常用 behance 全球设计师的作品展示平台_备案号_seo免费培训教程_百度搜索引擎优化相关性评价

常用 behance 全球设计师的作品展示平台_备案号_seo免费培训教程_百度搜索引擎优化相关性评价

2024/12/23 16:18:20 来源:https://blog.csdn.net/chenynan_/article/details/144300871  浏览:    关键词:常用 behance 全球设计师的作品展示平台_备案号_seo免费培训教程_百度搜索引擎优化相关性评价
常用 behance 全球设计师的作品展示平台_备案号_seo免费培训教程_百度搜索引擎优化相关性评价

1.查找指定字符

输入格式:

输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。

输出格式:

如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。

输入样例1:

m
programming

输出样例1:

index = 7

输入样例2:

a
1234

输出样例2:

Not Found
#include <stdio.h>
int main()
{char ch, a[81];int i = 0, index = 0, flag = 0;scanf("%c\n", &ch);//问题1:这里为什么要加\nwhile ((a[i] = getchar()) != '\n'){i++;}a[i] = '\0';for (i = 0; a[i] != '\0'; i++){if (a[i] == ch){index = i;flag = 1;}}if (flag){printf("index = %d\n", index);}else{printf("Not Found\n");}return 0;
}

问题1的解答 :

scanf("%c", &ch); 这行代码会读取一个字符,但是它不会读取换行符 \n。因此,如果输入的字符后面直接跟着换行符,getchar() 将会读取换行符而不是用户想要输入的字符串。

2.字符串逆序

输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。

输入格式:

输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。

输出格式:

在一行中输出逆序后的字符串。

输入样例:

Hello World!

输出样例:

!dlroW olleH

 

#include <stdio.h>
#include <string.h>
int main()
{char arr[80];int i = 0;while ((arr[i] = getchar()) != '\n'){i++;}arr[i] = '\0';int s = strlen(arr);for (i = s-1; i >= 0; i--){printf("%c", arr[i]);}return 0;
}

注意strlen计算的是\0之前的数组长度,i=s时已经超过了数组的范围,硬要讲的话arr[s]对应的应该是\0,但不是我们想要的,故应该是s-1 。

 3.打印杨辉三角

本题要求按照规定格式打印前N行杨辉三角。

输入格式:

输入在一行中给出N(1≤N≤10)。

输出格式:

以正三角形的格式输出前N行杨辉三角。每个数字占固定4位。

输入样例:

6

输出样例:

        11   11   2   11   3   3   11   4   6   4   11   5  10  10   5   1

 

#include <stdio.h>
int main()
{int i, j,k, a[10][10], n;scanf("%d", &n);for (i = 0; i < n; i++){//赋值为1;for (j = 0; j <= i; j++){a[i][j] = 1;}}for (i = 2; i < n; i++){for (j = 1; j < i; j++){a[i][j] = a[i - 1][j - 1] + a[i - 1][j];}}for (i = 0; i < n; i++){//打印空格for (k = 0; k < n - 1 - I; k++){printf(" ");}//打印三角形for (j = 0; j <= i; j++){printf("%4d", a[i][j]);}printf("\n");}return 0;
}

思路:

第一步:设一个全为1的数组

第二步:从第i = 2,j = 1开始a[i][j] = a[i - 1][j - 1] + a[i - 1][j];

 j<i ---> 结束

 第三步:6*6的矩阵的下半部分j<=i,加上空格
比如n = 6
i    空格
0    5        --->n - 1 - i -----数空格要减去3个,因为输出形式是%4d,在a[i][j]<10有三个空格在前7
1    4
2    3
3    2
4    1
5    0

 第四步:打印三角形

4.判断回文字符串

输入一个字符串,判断该字符串是否为回文。回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。

输入格式:

输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。

输出格式:

输出在第1行中输出字符串。如果它是回文字符串,在第2行中输出Yes,否则输出No

输入样例1:

level

输出样例1:

level
Yes

输入样例2:

1 + 2 = 2 + 1 =

输出样例2:

1 + 2 = 2 + 1 =
No

  

如果不相等就退出循环,---》left<=right--不是回文(循环中止)
left>right--(循环正常结束,没有中间跳出循环)---是回文

#include <stdio.h>
int main()
{char a[10];int i = 0, left, right;while ((a[i] = getchar()) != '\n'){i++;}a[i] = '\0';left = 0, right = i - 1;while (left <= right){if (a[left] != a[right]){break;}left++, right--;}for (i = 0; a[i] != '\0'; i++){putchar(a[i]);}printf("\n");if (left <= right)printf("No");elseprintf("Yes");return 0;
}

5.凯撒密码

为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。

输入格式:

输入第一行给出一个以回车结束的非空字符串(少于80个字符);第二行输入一个整数offset。

输出格式:

输出加密后的结果字符串。

输入样例1:

Hello Hangzhou
2

输出样例1:

Jgnnq Jcpibjqw

输入样例2:

a=x+y
-1

输出样例2:

z=w+x

 

 思路:offset>0
A-Z  a[i]=(a[i]-'A'+offset)%26+'A'---向后偏移
offset<0  a[i] = (a[i] - 'A' + offset+26) % 26 + 'A' ---向前偏移

#include <stdio.h>
int main()
{char a[80];int i, offset;i = 0;while ((a[i] = getchar()) != '\n'){i++;}a[i] = '\0';scanf("%d", &offset);offset %= 26;for (i = 0; a[i] != '\0'; i++){if (a[i] >= 'a' && a[i] <= 'z'){if (offset >= 0)putchar((a[i] - 'a' + offset) % 26 + 'a');elseputchar((a[i] - 'a' + offset + 26) % 26 + 'a');}else if (a[i] >= 'A' && a[i] <= 'Z'){if (offset >= 0)putchar(a[i] = (a[i] - 'A' + offset) % 26 + 'A');elseputchar(a[i] = (a[i] - 'A' + offset + 26) % 26 + 'A');}else{putchar(a[i]);}}return 0;
}

 

6.字符串转换成十进制整数

输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。

输入格式:

输入在一行中给出一个以#结束的非空字符串。

输出格式:

在一行中输出转换后的十进制数。题目保证输出在长整型范围内。

输入样例:

+-P-xf4+-1!#

输出样例:

-3905
#include <stdio.h>
int main()
{int i = 0, j, k, k1, flag = 1,num;char a[80], b[80];//输入while ((a[i] = getchar()) != '#'){i++;}a[i] = '\0';//找出‘-’的下标kfor (i = 0; a[i] != '\0'; i++){if (a[i] == '-'){k = i;break;}}//找出第一个十六进制数的下标k1for (i = 0; a[i] != '\0'; i++){if ((a[i] >= 'a' && a[i] <= 'f') || (a[i] >= 'A' && a[i] <= 'F') || (a[i] >= '0' && a[i] <= '9')){k1 = i;break;}}//比较k1,kif (k < k1){flag = 0;}//存放十六进制i = 0, j = 0;while (a[i] != '\0'){if ((a[i] >= 'a' && a[i] <= 'f') || (a[i] >= 'A' && a[i] <= 'F') || (a[i] >= '0' && a[i] <= '9')){b[j] = a[i];j++;}i++;}b[j] = '\0';num = 0;//转换for (j = 0; b[j] != '\0'; j++){if (b[j] >= '0' && b[j] <= '9')num = num * 16 + b[j] - '0';else if (b[j] >= 'A' && b[j] <= 'F')num = num * 16 + b[j] - 'A' + 10;else if (b[j] >= 'a' && b[j] <= 'f')num = num * 16 + b[j] - 'a' + 10;}//若为负数if (flag == 0)num = -num;//打印printf("%d\n", num);return 0;
}

思路都在//里,比较清晰了

7.统计大写辅音字母

英文辅音字母是除AEIOU以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。

输入格式:

输入在一行中给出一个不超过80个字符、并以回车结束的字符串。

输出格式:

输出在一行中给出字符串中大写辅音字母的个数。

输入样例:

HELLO World!

输出样例:

4

 

#include <stdio.h>
int main()
{char a[80];int i = 0, count = 0;//输入while ((a[i]=getchar())!='\n'){i++;}a[i] = '\0';for (i = 0; a[i] != '\0'; i++){if (a[i] >= 'A' && a[i] <= 'Z'){if (a[i] != 'A' && a[i] != 'E' && a[i] != 'I' && a[i] != 'O' && a[i] != 'U')count++;}}printf("%d\n", count);return 0;
}

 8.字符串替换

本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:

原字母对应字母
AZ
BY
CX
DW
XC
YB
ZA

输入格式:

输入在一行中给出一个不超过80个字符、并以回车结束的字符串。

输出格式:

输出在一行中给出替换完成后的字符串。

输入样例:

Only the 11 CAPItaL LeTtERS are replaced.

输出样例:

Lnly the 11 XZKRtaO OeGtVIH are replaced.

 

#include <stdio.h>
int main()
{char a[80];int i = 0;//输入while ((a[i] = getchar()) != '\n'){i++;}a[i] = '\0';//在大写字母中进行转换for (i = 0; a[i] != '\0'; i++){if (a[i] >= 'A' && a[i] <= 'Z'){putchar('Z' - (a[i] - 'A'));}elseputchar(a[i]);}return 0;
}

 如何理解式子 'Z'-(a[i]-'A')?

---先看a[i]-'A'  求出偏移量

例如a[i]=='B',偏移量==1,'Z'-1='Y'

把26字母看成一个圆圈

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com