西北农林科技大学c语言上机实习5答案
实习五答案
用指针实现排序
/* exer 5-1 由键盘输入 10个整数,将它们按由小到大顺序排列 */
#include
void main(void)
{
int a[10],*p = NULL; /* 说明数组和指针 */
int i, j, temp;
for(p = a; p < a + 10; p++) /* 指针从数组首到尾 */
{
scanf("%d", p); /* 利用指针依次输入 */
}
p = a;
for(i = 0; i < 9; i++) /* 利用指针依次比较 */
{
for(j = i + 1; j < 10; j++)
if(*(p + i) > *(p + j))
{
temp = *(p + i);
*(p + i) = *(p + j);
*(p + j) = temp;
}
}
for(p=a; p < a + 9; p++)
printf("%d ", *p);
printf("%d\n", *p);
}
用指针实现字符串排序
/*exer 5-2 将 10个长度小于20的字符串排序*/
#include
#include
void main(void)
{
char szStr[10][20],*psz[10],szTemp[20];
int i,j;
for(i = 0; i < 10; i++)
{
psz[i] = szStr[i]; /*指针数组的每个元素指向各行串*/
}
for(i = 0; i < 10; i++)
{
gets(psz[i]); /*输入10个字符串*/
}
for(i = 0; i < 9; i++) /*字符串排序*/
{
for(j = i + 1; j < 10; j++)
{
if(strcmp(psz[i], psz[j]) > 0)
{
strcpy(szTemp, psz[i]);
strcpy(psz[i], psz[j]);
strcpy(psz[j], szTemp);
}
}
}
for(i = 0; i < 10; i++)
{
puts(psz[i]); /*输出字符串*/
}
}
数据倒置
/*exer 5-3 将具有10个元素的一维数组中的数据倒置 */
#include
void main(void)
{
int a[10], iTemp, *p, *q;
int i;
for(i = 0; i < 10; i++)
{
scanf("%d", a + i); /*输入数组*/
}
p = a;
q = a + 9;
for(p = a, q = a + 9; p < q; p++, q--) /*首尾交换*/
{
iTemp = *p;
*p = *q;
*q = iTemp;
}
for(i = 0; i < 10; i++)
{
printf("%d ", *(a + i)); /*输出*/
}
}
用指针实现数据位置调整
/*exer 5-4 输入 10个整数,将最大的调到最后,最小的调到最前*/
#include
void swap(int *px, int *py);
int main(void)
{
int a[10], iTemp, *pMax, *pMin;
int i;
for(i = 0; i < 10; i++)