指针及应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1关:数组倒置
本关任务:程序功能是通过调用
值,请补全程序。
测试说明
平台会对你编写的代码进行测试:测试输入:
预期输出:
#include "stdio.h"
#define N 10
void reverse(int *p, int a, int b)
{
int c;
/***** 请在以下一行填写代码*****/
while (a
{
c=*(p+a);
/***** 请在以下一行填写代码*****/ *(p+a)=*(p+b) ;
*(p+b)=c;
a++;
/***** 请在以下一行填写代码*****/ b--;
}
}
int main()
int a[N], i;
for (i=0; i /***** 请在以下一行填写代码*****/ scanf("%d", &a[i] ); reverse(a, 0, N-1); for (i=0; i /***** 请在以下一行填写代码*****/ printf("%d ", a[i] ); printf("\n"); return 0; } 第2关:字符排序 本关任务:对某一个长度为, 除首、尾字符之外,要求对中间 的 例如,原来的字符串为 测试说明 平台会对你编写的代码进行测试: 测试输入: 预期输出: #include #include #include int fun(char *s, int num) char ch; int i, j; for(i = 1 ; i < 6 ; i++) for(j = i + 1 ; j < 6 ; j++) { /***** 请在以下一行填写代码*****/ if(*(s+i) < *(s+j)) { ch = *(s + j); *(s + j) = *(s +i); *(s + i) = ch; } } } int main() { char s[10]; scanf("%s",s); /***** 请在以下一行填写代码*****/ fun(s, 7); printf("%s",s); return 0; } }第3关:找最长串 本关任务:给定程序中函数 并放入一个字符串数 组中。请改正程序中的错误,使它能得出正确结果。注意:不要改动 不得增行或删行,也不得更改程序的结构。 测试说明 平台会对你编写的代码进行测试: 测试输入: 预期输出: #include #include #define N 5 #define M 81 /***** 以下一行有错误*****/ char* fun(char (*sq)[M]) { int i; char *sp; sp=sq[0]; for(i=0;i if(strlen(sp) sp=sq[i]; /***** 以下一行有错误*****/ return sp; } int main() { char str[N][M], *longest; int i; for(i=0; i scanf("%s",str[i]); printf("The %d string :\n",N); for(i=0; i puts(str[i]); longest=fun(str); printf("The longest string :\n"); puts(longest); return 0; } 第4关:星号转移 结果。 测试说明 平台会对你编写的代码进行测试:测试输入: 预期输出: #include void fun( char *a ) { int i=0,n=0; char *p; p=a; while (*p=='*') { n++; /***** 请在以下一行填写代码*****/ p++; } while(*p) { /***** 请在以下一行填写代码*****/ a[i]=*p; i++; p++; } while(n!=0) { a[i]='*'; i++; /***** 请在以下一行填写代码*****/ n--; } a[i]='\0'; } int main() { char s[81]; int n=0; scanf("%s",s); fun( s ); printf("The string after oveing: \n"); puts(s); return 0; }