本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。
今日练习题关键字:图片整理 寻找数组下标
题目一:
题目描述:
Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过代码解决。
Lily使用的图片使用字符"A"到"Z"、“a"到"z”、"0"到"9"表示。
数据范围:每组输入的字符串长度满足 :1≤n≤1000
解题思路:
1.获取字符串
2.统计输入个数,并对字符从小到大进行排序
3.输出排序后的字符
代码实现:
#include<stdio.h> #include<string.h> int main() { char str[1001]; char tmp; scanf("%s", str); //获得字符个数并排序 for (int i = 0; i < strlen(str); i++) { for (int j = i + 1; j < strlen(str); j++) { if (str[i] > str[j]) { tmp = str[i]; str[i] = str[j]; str[j] = tmp; } } } //输出排序后的字符 for (int i = 0; i < strlen(str); i++) { printf("%c", str[i]); } return 0; }
结果情况:
符合题目要求,问题得到解决。
题目二:
题目描述:
给你一个整数数组 nums ,请计算数组的 中心下标 。
数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。
如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。
如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。
解题思路:
若要使左侧数组之和与右侧数组之和相同,即左侧数组之和加中间元素加右侧数组之和为数组之和,即左侧数组之和乘2加下一位为数组之和或右侧数组之和乘2加下一位为数组之和 由于返回最左侧的元素,即从i=0开始循环
1.对所有元素求和
2.从i=0开始,若满足num*2+nums[i]==sum则返回下标,对所有元素遍历后都没有元素符合条件,返回-1
代码实现:
int pivotIndex(int* nums, int numsSize) { int sum=0,num=0; for(int i=0;i<numsSize;i++) { sum+=nums[i]; } for(int i=0;i<numsSize;i++) { if(num*2+nums[i]==sum) { return i; } num+=nums[i]; } return -1; }
结果情况:
符合题目要求,问题得到解决。
总结:
文章到这里就要告一段落了,有更好的想法或问题,欢迎评论区留言。
希望今天的练习能对您有所收获,咱们下期见!