else if(*q
if(*p!=a[0]) t=*p,*p=a[0],a[0]=t; if(*q!=a[0]) t=*q,*q=a[9],a[9]=t; for(i=0;i<10;i++) printf(\
}//用指针交换最值位置
试题查看
标题: 2. 用指针实现字符串排序 时 限: 1000 ms 内存限制: 10000 K 总时限: 3000 ms
描述: 用指针实现:将10个字符串(设其长度小于20)从小到大排序。 输入: 10个字符串。
输出: 排序后的10个字符串。
ijk jkl def ghi
输入样例:
def cde hij def efg fgh cde def def def
输出样例:
efg fgh ghi hij ijk jkl
① 定义二维字符数组和指向该数组的指针数组; ② 用循环使指针数组的元素指向二维字符数组各行首;
提示: ③ 用循环为指针数组元素赋字符串为值;
④ 用strcmp函数比较两个指针数组元素的值、用strcpy函数交换两个指针数组元素的值。
来源: #include
{char a[10][90],(*p)[90],t[90]; int i,j;
for(i=0;i<10;i++) gets(a[i]);
for(i=0;i<9;i++) {p=a[i];
for(j=i+1;j<10;j++) if(strcmp(p,a[j])>0) strcpy(t,p), strcpy(p,a[j]),strcpy(a[j],t); } p=a;
for(i=0;i<10;i++) puts(a[i]); }
试题查看
标题: 6. 用指针实现子字符串提取 时 限: 1000 ms 内存限制: 10000 K 总时限: 3000 ms 描述:
用指针实现:由键盘输入一串字符,从下标为m的字符开始,取出n个字符(m和n由键盘输入),形成一个新的字符串。
输入: 键盘输入一串字符。
输出: 从下标为m的字符开始,取出n个字符(m和n由键盘输入),形成一个新的字符串。 输入样例:
0123456 5 2
输出样例: 56
① 定义二个字符数组zfsour[100]、zfdest[100],zfsour存放原串,zfdest存放新串; ② 定义二个指针变量*pzfsour、*pzfdest; zfsour字符数组的首地址;
提示: ③ 从键盘输入取字符的开始位置m(即下标值)和要取的字符个数n;
④ 让指针变量pzfsour指向zfsour+m处,让pzfdest指向zfdest字符数组的首地址; ⑤ 通过n次循环,逐次赋值、移动指针,即将原串中的n个字符存到新串字符数组中。
来源:
#include
#include
{char a[80],*p,b[80]; int m,n,count; gets(a);
scanf(\p=&a[m];
for(count=0;count 试题查看 标题: 8. 输出杨辉三角形 时 限: 1000 ms 内存限制: 10000 K 总时限: 3000 ms 打印如下形式的杨辉三角形。 1 1 1 描述: 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 输入: 杨辉三角形阶数 杨辉三角形。 1 1 1 输出: 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 输入样例: 6 1 1 1 输出样例: 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ① 杨辉三角形的特点:第一列和对角线上的元素值均为1,即a[i][0]=a[i][i]=1;其余 提示: 位置元素的值=上一行本列元素值+上一行前一列元素值,如第三行第二列2就是第二行第一列+第二行第二列,计算公式为a[i][j]=a[i-1][j-1]+ a[i-1][j]。 ② 应先对第一列和对角线元素赋值,然后再为其它元素赋值。 来源: #include main()//打印杨辉三角 {int a[30][80],i,j,n; for(i=0;i<30;i++) for(j=0;j<80;j++) a[i][j]=1; scanf(\switch(n) {case 1:printf(\case 2:printf(\default :for(i=2;i 试题查看 标题: 4. 数据顺序调整 时 限: 1000 ms 内存限制: 10000 K 总时限: 3000 ms 描述: 由键盘任意输入10个数,将最大数调到最前面,最小数调到最后面。 输入: 任意10个数 输出: 数据调整后的10个数。 输入样例: 0 1 2 3 4 5 6 7 8 9 输出样例: 9 1 2 3 4 5 6 7 8 0 ① 定义四个变量d1、d2、x1、x2,分别存放最大数、最小数及它们的位置; ② 在循环开始前,将第一个元素作为参考,将其值分别存入d1、x1,将其下标分别存入d2、x2; 提示: ③ 在循环中将其它元素逐一与d1比较,若比d1大,将其存入d1,并将其下标存入d2; 否则将其与x1比较,若比x1小,将其存入x1,并将其下标存入x2; ④ 结束循环后,将d2所示位置的数与第一个数交换,将x2所示位置的数与最后一个数交换,然后输出数组所有元素即可。 来源: #include main() {int a[10],i,j,k,l,t; k=l=0; for(i=0;i<10;i++) scanf(\for(i=0;i<10;i++) { if(a[k]a[i]) l=i; else ; } if(k!=0)t=a[k],a[k]=a[0],a[0]=t; if(l!=0)t=a[l],a[l]=a[9],a[9]=t; for(i=0;i<9;i++) printf(\printf(\} 试题查看 标题: 1. 用指针实现排序 时 限: 1000 ms 内存限制: 10000 K 总时限: 3000 ms 描述: 用指针实现:由键盘输入10个整数,将他们按由小到大的顺序排列。 输入: 键盘输入的10个整数。 输出: 按由小到大的顺序排列。 输入样例: 1 5 4 3 2 9 23 11 5 7 输出样例: 1 2 3 4 5 5 7 9 11 23 提示: 来源: #include {int a[10],*p[10],i,j,k,*b; for(i=0;i<10;i++) scanf(\for(i=0;i<10;i++) p[i]=&a[i]; for(i=0;i<9;i++) {k=i; for(j=i+1;j<10;j++) if(*(p[k])>*(p[j])) k=j;