C语言代码练习(第二十三天)
今日练习:
65、有 n 个整数,使前面各数顺序向后移动 m 个位置,最后 m 个数变成最前面 m 个数,写一函数实现以上功能,在主函数中输入 n 个整数和输出调整后的 n 个数。(要求用指针)
66、 n 个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的使原来第几号的那位。(要求用指针)
67、写一个函数,求一个字符串的长度。在 main 函数中输入字符串,并输出其长度。(要求用指针)68、编写一个程序,输入月份号,输出该月的英文月名。例如,输入"3",则输出" March ",要求用指针数组处理。
有 n 个整数,使前面各数顺序向后移动 m 个位置,最后 m 个数变成最前面 m 个数,写一函数实现以上功能,在主函数中输入 n 个整数和输出调整后的 n 个数。(要求用指针)
运行代码
int main()
{void move(int[20], int n, int m);int number[20];int n = 0; int m = 0;int i = 0;printf("共有多少个数:");scanf("%d", &n);printf("输入这%d个数\n", n);for (i = 0; i < n; i++){scanf("%d", &number[i]);}printf("向后移动多少个数:");scanf("%d", &m);move(number, n, m);for(i=0;i<n;i++){printf(" %d ", number[i]);}printf("\n");return 0;
}
void move(int arr[20], int n, int m)
{int* p;int arr_end;arr_end = *(arr + n - 1);for (p = arr + n - 1; p > arr; p--){*p = *(p - 1);}*arr = arr_end;m--;if (m > 0){move(arr, n, m);}
}
运行结果
n 个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的使原来第几号的那位。(要求用指针)
运行代码
int main()
{int i = 0;int k = 0;int n = 0;int m = 0;int num[50];int* p;printf("输入n=");scanf("%d", &n);p = num;for (i = 0; i < n; i++){*(p + i) = i + 1;}while (m < n - 1){if (*(p + i) != 0){k++;}if (k == 3){*(p + i) = 0;k = 0;m++;}i++;if (i == n){i = 0;}}while (*p == 0){p++;}printf("最后一个数是:%d\n", *p);return 0;
}
运行结果
写一个函数,求一个字符串的长度。在 main 函数中输入字符串,并输出其长度。(要求用指针)
运行代码
int main()
{int sum(char* point);int len = 0;char str[20];printf("请输入要求长度的字符串:");scanf("%s", str);len = sum(str);printf("字符串的长度是%d\n", len);return 0;
}
int sum(char* point)
{int number = 0;while (*point != '\0'){number++;point++;}return number;
}
运行结果
编写一个程序,输入月份号,输出该月的英文月名。例如,输入"3",则输出" March ",要求用指针数组处理。
运行代码
int main()
{char* month[13] = { "illegal month","January","February","March","April","May","June","July","August","September","October","November","December" };int number = 0;printf("输入月份:");scanf("%d", &number);if ((number <= 12) && (number >= 1)){printf("%d", number);printf("月的英文是%s\n", *(month + number));}else{printf("输入错误\n");}
}