C語(yǔ)言程序設(shè)計(jì) 答案 ch08 指針_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì) 答案 ch08 指針_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì) 答案 ch08 指針_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì) 答案 ch08 指針_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì) 答案 ch08 指針_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第8章指針

一、選擇題

1-5DDAAB

6-10DDCDD

11-15CDDCC

16-20CBABD

20-25BCDCB

26-30ACCDC

二、填空題

1.60

2.w[i-l]

3.①row(2)a[row][colum]

4.*s-*t

5.略

6.strcmp(a[i],a[i+A])book,6

7.int*c

8.str[i];i

9.略

10.pl++;*p2

三、編程題

1.輸入3個(gè)整數(shù),按曰小到大的順序輸出。

:include<stdio.h>

voidsort31ntegers(int*a,int*b,int*c)

(

inttemp;

if(*a>*b)

(

temp=

*a=*b:

*b=tenp;

)

if(*b>*c)

temp=仙

*b=*c;

*c=tenp;

if(*a>*b;

(

temp=

*a=*b:

*b=tenp;

}

}

intmain()

(

intnuml,num2,num3;

printf(〃請(qǐng)輸入三個(gè)整數(shù):\n");

scanf(z,%d%d%d”,&numl,&num2,&num3);

sort3Integers(&numl,&num2,&num3);

printf(〃按升序排列后的結(jié)果為:%d%d%d\n,z,numl,num2,nun3);

return0;

}

2.已知一個(gè)整型數(shù)組x[4],它的各元素值分別為3、118和2使用指針表示法

編寫(xiě)程序,求該數(shù)組各元素之積。

ftinclude<stdio.h>

intmainO

(

intx[4]=(3,118,2);

intproduct=1;

int*ptr=x;

for(inti=0;i<3;i++)

(

product*=*(ptr+i);

)

printf(〃數(shù)組各元素之積為:%d\n”,product);

return0;

)

3.輸入10個(gè)整數(shù),將其中最小的數(shù)與第一個(gè)數(shù)交換,把最大的數(shù)與最后一個(gè)數(shù)

交換。

ttinclude<stdio.h>

voidswap(int*a,int*b)

(

inttemp=%;

*a=*b;

*b二temp;

}

intmain()

(

intnumbers[10];

printf(〃請(qǐng)輸入10個(gè)整數(shù):\n〃);

for(inti=0;i<10;i++)

(

scanf(〃%d〃,&numbers[i]);

)

intminlndcx=0;

intmaxIndex=0;

//尋找最小值和最大值的索引

for(inti=1;i<10;i++)

if(numbers[i]<numbers[minindex])

{

minZndex=i;

}

if(numbers[i]>numbers[maxindex])

(

maxIndex=i;

//最小數(shù)與第一個(gè)數(shù)交換

swap(&numbers[0],&numbers[minindex]);

//最大數(shù)與最后一個(gè)數(shù)交換

swap(&numbers[9],&numbers[maxlndex]);

printf("交換后的數(shù)組為:\n〃);

for(inti=0;i<10;i++)

(

printf("刎〃,numbers[i]);

)

printf('\n〃);

return0;

)

4.將n個(gè)數(shù)按輸入順序逆序排列。

#include<stdio.h>

voidreverseArray(intarr[],intn)

(

intleft=0;

intright=n-1;

while(left<right)

inttemp=arr[left];

arr[left]=arr[right];

arr[right]=temp;

left++;

right—:

}

}

intmain()

(

intn;

printf(〃請(qǐng)輸入要逆序排列的數(shù)的個(gè)數(shù):\n〃);

scanf&n);

intarr[n];

printf(〃請(qǐng)輸入%d個(gè)整數(shù):\n〃,n);

for(inti=0;i<n;i++)

(

scanf(線d〃,&arr[i]);

}

reverseArray(arr,n);

printf(〃逆序排列后的數(shù)組為:\n〃);

for(inti=0;i<n;i++)

(

printf("%d〃,arr[i]);

}

printf;

return0;

)

5.要求從鍵為y4][4]數(shù)組輸入數(shù)據(jù),使用一維數(shù)指針變量輸入/輸出數(shù)元素,并

且分別求出主、次對(duì)角線元素之和。

nclude<stdio.h>

ttdefineROWS4

ttdefineCOLS4

voidinputArrayjnt*arr)

(

printf(〃請(qǐng)輸入數(shù)組元素:\n〃);

for(inti=0;i<ROWS*COLS;i-+)

(

scanfarr+i);

)

)

voidoutputArray(int*arr)

(

printf(〃數(shù)組元素為:\n〃);

for(inti=0;i<ROWS;i++)

(

for(intj=0;j<COLS;j++)

{

printfC%d”,*(arr+i*COLS+j));

)

printf("\n〃);

intcalculateMamDiagonalSuin(int*arr)

(

intsum=0:

for(inti=0;i<ROWS;i++)

(

sum+=*(arr+i*COLS+i);

}

returnsum;

}

intcalculateSecondaryDiagonalSum(intxarr)

intsum=0:

for(inti=0;i<ROWS;i++)

(

sum+=*(arr+i*COLS+(COLS-1-i));

)

returnsum;

}

intmain()

(

intarray[ROWS][COLS];

int*ptr=&array[0][0];

inputArray(ptr);

outputArrayJptr);

intmainDiagonalSum=calculateMainDiagonalSum(ptr);

printf(〃主XT角線元素之和為:%d\n〃,mainDiagonalSum);

intsecondaryDiagonalSum=calculateSecondaryDiagonalSum(ptr);

printf(〃次龍■角線元素之和為:%d\nz,,secondaryDiagonalSum);

return0;

)

6.編寫(xiě)一個(gè)程序,將一個(gè)字符串插入另一個(gè)字符串的指定位置。

ttinclude<stdio.h>

#include<string.h>

voidinsertString(char*strl,char*str2,intpos)

(

intlenl=strlen(strl);

intlen2=strlen(str2);

//檢查插入位置的有效性

if(pos<0pos>lenl)

printf("錯(cuò)誤:插入位置無(wú)效!\n");

return;

)

//創(chuàng)建臨時(shí)字符數(shù)組來(lái)儲(chǔ)存插入后的字符串

charresult[lenl+len2+1];

inti,j;

//復(fù)制strl中的前pos個(gè)字符到結(jié)果字符串result

for(i=0;i<pos;i++)

(

result[i]=strl[i];

}

//復(fù)制str2到結(jié)果字符串result

for(j=0;j<len2;j++)

(

result[i+j]=str2[j];

)

//復(fù)制strl中剩余的字符到結(jié)果字符串result

for(;i<lenl;i++)

(

result[i+len2]=strl[i];

}

//添加末尾的NULL終止符

result[lenl+len2]='\0';

//將結(jié)果字符串復(fù)制回strl

strcpy(strl,result);

)

intmainO

(

charstrl[100];

printf(〃請(qǐng)輸入目標(biāo)字符串:\n〃);

fgets(strl,sizeof(strl),stdin);

strl[strcspn(strl,z/\n,z)]='\0';//去除fgets函數(shù)讀取的換行

charstr2[100];

printf(〃請(qǐng)輸入要插入的字符串:\n〃);

fgets(str2,sizeof(str2),stdin);

str2[strcspn(str2,z/\n,z)]='\0';//去除fgets函數(shù)讀取的換行

intpos;

printf(〃請(qǐng)輸入插入位置:\n〃);

scanf&pos);

insertString(strl,str2,pos);

printf("插入后的字符串為:%s\n〃,strl);

return0;

)

7.編寫(xiě)一個(gè)程序,用指針操作將一個(gè)一維數(shù)組中的個(gè)整數(shù)進(jìn)行以下處理:順序?qū)?/p>

前面各數(shù)后移m個(gè)位置,使最后面的m個(gè)數(shù)變成前面的m個(gè)。例如,有5個(gè)

數(shù)13579,兩個(gè)后7913。

ttinclude<stdio.h>

voidshiftArraylint*arr,intsize,intm)

(

//創(chuàng)建臨時(shí)數(shù)組,用于保存后面的m個(gè)數(shù)

inttemp[m];

//復(fù)制后面的m個(gè)數(shù)到臨時(shí)數(shù)組中

for(inti=size-m,j=0;i<size;i++,j++)

(

temp[j]=arr[i];

//將前面的數(shù)向后移動(dòng)m個(gè)位置

for(inti=size-1;i>=m;i-)

(

arr[i]=arr[i-m];

)

//將臨時(shí)數(shù)組中的數(shù)放到前面的m個(gè)位置

for(inti=0;i<m;i++)

(

arr[i]=temp[i];

)

}

intmain()

(

intsize;

printf(〃請(qǐng)輸入數(shù)組的大小:\n〃);

scanf(,z%d,z,&size);

intarrfsize];

printf(〃請(qǐng)輸入%d個(gè)整數(shù):\n〃,size);

for(inti=0;i<size;i++)

(

scanf(〃%d〃,&arr[i]);

)

intm;

printf(”請(qǐng)輸入要移動(dòng)的位置數(shù)m:\n");

scanf(〃%d〃,&m);

shiftArray(arr,size,m);

printf(〃移動(dòng)后的數(shù)組為:\n〃);

for(inti=0;i<size;i++)

(

printf("%d〃,arr[i]);

printf;

return0;

)

8.編寫(xiě)一個(gè)程序,使用指針操作將一個(gè)矩陣轉(zhuǎn)置,即二維數(shù)組a的轉(zhuǎn)置矩陣滿(mǎn)

足下列條件:b的行就是a的列。

ftinclude<stdio.h>

voidtransposeMatrix(int*a,int*b,introws,intcols)

(

for(inti=0;i<rows;i++)

(

for(intj=0;j<cols;j++)

(

*(b+j*rows+i)=*(a-i*cols+j);

)

}

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論