C语言作业及参考答案 下载本文

} int main() { int a,b,c,*p1,*p2,*p3; scanf(\ p1=&a; p2=&b; p3=&c; exchange(p1,p2,p3); printf(\ return 0; } 标题 描述 9.2 数据对换 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:①输入10个数;②进行处理;③输出10个数 输入数据 10个整数 输出数据 10个整数 输入示例 10 9 7 3 2 6 5 4 8 1 输出示例 1 9 7 3 2 6 5 4 8 10 提示 其他数据不要变化 void input(int *p) //输入10个整数 {int *t; for (t=p; p*(p+k)) min=p+k; k=*min; *min=*p; *p=k; //最小的数与第一个数交换 for (k=1; k<10; k++) //确定指向最小、最大数的指针 if (*max<*(p+k)) max=p+k; k=*max; *max=*(p+9); *(p+9)=k; //最大的数与最后一个数交换 } void output(int *p) //输出10个整数 {int t; for (t=0; t<10; t++) printf(\ printf(\} main() {int a[10]; input(a); //输入10个整数 proc(a); //调换 output(a); //输出 return 0; } 标题 描述 9.3 移位 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。 输入数据 先输入n和m,再输入n个整数 输出数据 n个整数(=) 输入示例 输出示例 10 3 1 2 3 4 5 6 7 8 9 10 8 9 10 1 2 3 4 5 6 7 #define N 100 void move(int *p,int n,int k) {int i,t,*r=p; for (i=1; i<=k; i++) //循环M次 {t=*(r+n-1); //记录最后1个数 for (r=p+n-1;r>p; r--) *r=*(r-1); //除最后一个数外所有数右移一个位置 *r=t; //原来最后的数放最前面 } } main() { int a[N]; int *p; int n,m; scanf(\ for(p=a; p char s1[20]={'\\0'},s2[20]; char *strcopy(char *s,char *t,int m) { int i=m-1; while( (*(s+i-m+1)=*(t+i))!='\\0')//先赋值再判断 i++; return s; } int main() { int t; gets(s2); scanf(\ strcopy(s1,s2,t); puts(s1); return 0; } 标题 描述 9.5 判断子串 判断一个字符串是否是另一个串的子串 输入数据 两个字符串 输出数据 一个字符串是否是另一个串的子串输出YES,否则输出NO 输入示例 cde aabbcdefghbcd 输出示例 YES #include #include char *strcopy(char *s,char *t,int m)//从t[]中取长度为m的子串放s[]中 { int i=0; while( i int* find(int *a,int *v)//返回最小值地址,*v存放最小值 { int *r,*p; r=p=a; while(r #include \#define N 8 sort(char (*p)[20]) //利用行指针对10个字符串进行排序