第一篇:西北農林科技大學C語言上機實習5答案
實習五答案
1、用指針實現排序
/* exer 5-1 由鍵盤輸入 10個整數,將它們按由小到大順序排列 */ 用指針實現:由鍵盤輸入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 = 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(“%dn”, *p);}
2、用指針實現字符串排序
/*exer 5-2 將 10個長度小于20的字符串排序*/ 用指針實現:將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 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]);
/*輸出字符串*/
} }
3、數據倒置
/*exer 5-3 將具有10個元素的一維數組中的數據倒置 */ 描述: 用指針實現:將具有10個元素的一維數組中的數據倒置
輸入: 10個元素。3 4 5 6 7 8 9
輸出樣例: 9 8 7 6 5 4 3 2 1 0
提示: 數據倒置是指將數組前后元素的值交換后再輸出。
#include
int a[10], iTemp, *p, *q;
int i;
for(i = 0;i < 10;i++)
{
scanf(“%d”, a + i);
/*輸入數組*/
}
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));
/*輸出*/
} }
4、用指針實現數據位置調整
/*exer 5-4 輸入 10個整數,將最大的調到最后,最小的調到最前*/ 描述: 用指針實現:由鍵盤輸入10個整數,將最大的調到最后,最小的調到最前。輸入: 10個整數。
輸出: 最大的調到最后,最小的調到最前。
輸入樣例: 5 8 7 6 9 4 3 2 1 0 輸出樣例: 0 8 7 6 5 4 3 2 1 9
#include
輸入樣例: 0 1 2
void swap(int *px, int *py);
int main(void){
int a[10], iTemp, *pMax, *pMin;
int i;
for(i = 0;i < 10;i++)
{
scanf(“%d”, a + i);/*輸入數組*/
}
pMax = a;
/*最大值指針指向數組首地址*/
pMin = a;
/*最小值指針指向數組首地址*/
for(i = 1;i < 10;i++)
{
if(*(a+i)> *pMax)
pMax = a + i;
if(*(a+i)< *pMin)
pMin = a + i;
}
/*最大值是第1個元素,最小值是最后一個元素*/
if(pMax == a && pMin == a + 9)
{
swap(pMax, pMin);
}
else
{
/*最小值與第一個元素交換*/
swap(a, pMin);
/*最大值與最后一個元素交換*/
swap(a + 9, pMax);
}
for(i = 0;i < 10;i++)
{
printf(“%d ”, *(a + i));
/*輸出*/
}
return 0;}
void swap(int *px, int *py){
int temp;
temp = *px;
*px = *py;
*py = temp;}
5、用指針實現查找二維數組中最大數及其位置
/*exer 5-5 找出二維數組(設3行4列)中的最大數及其位置 */ 用指針實現:找出二維數組(設3行4列)中的最大數及其位置。
輸入: 二維數組(設3行4列)。
輸出: 最大數及其位置。
輸入樣例:2 5 4 6 8 7 2 0 2 4 5
輸出樣例: 1 1 8
#include
int a[3][4],(*p)[4], iCol, iRow;
int i, j;
p = a;
for(i = 0;i < 3;i++)
{
for(j = 0;j < 4;j++)
scanf(“%d”, *(p + i)+ j);
/*輸入數組*/
}
iCol = 0;
/*設最大數及其位置 */
iRow = 0;
for(i = 0;i < 3;i++)
{
for(j = 0;j < 4;j++)
{
if(*(*(p + i)+ j)> *(*(p + iRow)+ iCol))
{
iRow = i;
iCol = j;
/*修改位置*/
}
}
}
printf(“%d %d %dn”, iRow, iCol, a[iRow][iCol]);}
或者
#include
int main(){
int a[3][4];
int m,n,i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf(“%d”,&a[i][j]);
m=0;
n=0;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
if(a[i][j]>a[m][n])
{
m=i;
n=j;
}
}
}
printf(“%d %d %dn”,m,n,a[m][n]);}
6、用指針實現子字符串提取
/*exer 5-6 由鍵盤輸入一串字符,從字符串下標為m開始
取出n個字符(m和n由鍵盤輸入),形成一個新的字符串
*/ 用指針實現:由鍵盤輸入一串字符,從下標為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
{
char szStrSour[80], szStrDest[80], *pszSour, *pszDest;
int i, m, n;
gets(szStrSour);
/* 輸入字符串 */
scanf(“%d%d”, &m, &n);
/* 輸入位置和長度 */
pszSour = szStrSour + m;
/* 確定起始位置 */
pszDest = szStrDest;
for(i = 0;i < n;i++)
/* 依次取n個字符 */
{
*pszDest = *pszSour;
pszDest++;
pszSour++;
}
*pszDest = ' 主站蜘蛛池模板: 97色偷偷色噜噜狠狠爱网站97| 国产亚洲精品久久久久久久久| 人人澡人人曰人人摸看| 2020久久超碰国产精品最新| 人人爽人人爽人人爽人人片av| 精品无码人妻一区二区三区| 丰满人妻被黑人中出849| 成人午夜福利院在线观看| 国产成人精品亚洲线观看| 久久精品国产福利国产秒拍| 久久久久国产精品人妻| 亚洲春色cameltoe一区| 狠狠综合亚洲综合亚洲色| 国产传媒麻豆剧精品av| 久久久亚洲欧洲日产国码αv| 精品国精品无码自拍自在线| 女人被狂躁到高潮视频免费网站| 97se亚洲国产综合自在线观看| 好屌草这里只有精品| 国产熟妇乱xxxxx大屁股网| 国产真人做爰免费视频| 国产在线精品无码av不卡顿| 把女邻居弄到潮喷的性经历| 九九99亚洲精品久久久久| 国内少妇偷人精品视频免费| 少妇高潮喷潮久久久影院| 无码国产成人午夜电影在线观看| 激情文学另类小说亚洲图片| 色八区人妻在线视频| 国产好吊看视频在线观看| 精品一区二区三区波多野结衣| 中文字幕亚洲一区二区三区| 亚洲欧美人高清精品a∨| 成人嫩草研究院久久久精品| 欧洲美熟女乱又伦av影片| 风韵丰满熟妇啪啪区老熟熟女| 97碰碰碰人妻无码视频| 精品久久久久久无码人妻vr| 999在线视频精品免费播放观看| 成人精品一区二区久久久| a毛看片免费观看视频|