# 获取字符串长度
问题:键盘输入一个字符串,编写代码获取字符串的长度并输出,要求使用字符指针实现。
输入描述:键盘输入一个字符串
输出描述:输出字符串长度
示例:输入:hellowoeld 输出:10
#include <stdio.h>
int my_strlen(char *str)
{
int num = 0;
char *p = NULL;
p = str;
while (*p != '\0')
{
p++;
num++;
}
return num;
}
int main(void)
{
char str[100] = {0};
scanf("%s", str);
printf("%d\n", my_strlen(str));
return 0;
}
# 复制部分字符串
问题:键盘输入一个长度为len(1 <= len < 30)的字符串,再输入一个正整数m(1 <= m < 30),将此字符串从第m个字符开始的剩余全部字符复制成为另一个字符串,并将这个新字符串输出。要求使指针处理字符串。
输入描述:键盘输入一个长度为len(1 <= len < 30)的字符串,再输入一个正整数m(1 <= m < 30)
输出描述:输出复制的新字符串
示例:输入:helloworld 6 输出:world
#include <stdio.h>
int main()
{
char str[30] = {0};
int num = 0;
scanf("%s%d",str, &num);
char *p = str + (num - 1);
printf("%s\n", p);
return 0;
}
# 编写函数实现两数交换(指针方式)
问题:编写一个函数,实现两个整数的交换,要求采用指针的方式实现。
输入描述:键盘输入2个整数 m 和 n
输出描述:输出交换后 m 和 n 的值,中间使用空格隔开
示例:输入:2 3 输出:3 2
#include <stdio.h>
void swap(int *x, int *y)
{
int p = 0;
p = *x;
*x = *y;
*y = p;
}
int main()
{
int a, b;
scanf("%d%d",&a, &b);
swap(&a, &b);
printf("%d %d\n", a, b);
return 0;
}
#利用指针遍历数组
问题:键盘随机输入6个整数,将这些数据保存到数组中,利用指针遍历数组中的元素并打印。
输入描述:键盘随机输入6个整数
输出描述:输出数组中所有元素,每个元素中间使用空格隔开
示例:输入:10 20 30 40 50 60 输出:10 20 30 40 50 60
#include <stdio.h>
int main()
{
int str[6] = {0};
for (int i = 0; i < 6; i++)
{
scanf("%d", (str + i));
}
for (int i = 0; i < 6; i++)
{
printf("%d ", *(str + i));
}
return 0;
}
#新数组求和
问题:想实现一个 int cal (int *array, int n) 的函数求出长度为n的数组的和。
输入描述:第一行输入一个正整数n,表示数组的长度;第二行输入n个正整数,表示数组中每个数字的值
输出描述:实现 int cal (int *array, int n) 求出数组 array 的和
示例:输入:5 2 8 1 9 5 输出:25
#include <stdio.h>
#include <malloc.h>
int cal(int *array, int n)
{
int i, sum = 0;
for (i = 0; i < n; i++)
{
sum += *(array + i);
}
return sum;
}
int main()
{
int i, num = 0;
scanf("%d", &num);
int *str = (int *)malloc(num * sizeof(int));
for (i = 0; i < num; i++)
{
scanf("%d", str + i);
}
printf("%d ", cal(str, num));
free(str);
return 0;
}
#排序
问题:给一个长度为 n 整数数组排序,即实现一个void sort (int *array, int n) 。
输入描述:第一行输入一个正整数n,表示数组的长度;第二行输入n个正整数,表示数组中每个数字的值
输出描述:输出排序后的数组
示例:输入:5 2 9 8 1 3 输出:1 2 3 8 9
#include <stdio.h>
#include <malloc.h>
void sort(int *array, int n)
{
int i, j;
int temp = 0;
for (i = 0; i < (n - 1); i++)
{
for (j = 0; j < (n - i - 1); j++)
{
if (*(array + j) > *(array + j + 1))
{
temp = *(array + j);
*(array + j) = *(array + j + 1);
*(array + j + 1) = temp;
}
}
}
}
int main()
{
int i, num = 0;
scanf("%d", &num);
int *str = (int *)malloc(num * sizeof(int));
for (i = 0; i < num; i++)
{
scanf("%d", str + i);
}
sort(str, num);
for (i = 0; i < num; i++)
{
printf("%d ", *(str + i));
}
free(str);
return 0;
}