/*如何把上面這個轉置3*3?二維數(shù)組程序轉換成倆個子函數(shù)*/
創(chuàng)新互聯(lián)專注于六盤水網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供六盤水營銷型網(wǎng)站建設,六盤水網(wǎng)站制作、六盤水網(wǎng)頁設計、六盤水網(wǎng)站官網(wǎng)定制、微信平臺小程序開發(fā)服務,打造六盤水網(wǎng)絡公司原創(chuàng)品牌,更為您提供六盤水網(wǎng)站排名全網(wǎng)營銷落地服務。
#includestdio.h
int?arr[3][3];//將數(shù)組arr定義成一個全局變量
int?main()
{
int?sr();
int?sc();
sr();//輸入二維數(shù)組
sc();//輸出轉置后的二維數(shù)組
}
int?sr(){
int?i,j;
for(i=0;i3;i++)
for(j=0;j3;j++)
scanf("%d",arr[i][j]);
return?0;
}
int?sc(){
int?i,j;
for(i=0;i3;i++)
{
for(j=0;j3;j++)
printf("%d?",arr[j][i]); ?
printf("\n");
}
return?0;
}
運行結果:
嚴格意義上,你的這個轉置并沒有改變arr數(shù)組原來的值,換句話說,執(zhí)行完sc后,arr的值并沒有改變成轉置數(shù)組。
可以利用中間數(shù)組來完成數(shù)組轉置,修改如下:
如何把上面這個轉置3*3?二維數(shù)組程序轉換成倆個子函數(shù)*/
#includestdio.h
int?arr[3][3];//將數(shù)組arr定義成一個全局變量
int?main()
{
int?sr();
int?sc();
void?printfarr(int?arr[3][3]);
sr();//輸入二維數(shù)組
sc();//轉置
printfarr(arr);//輸出數(shù)組
return?0;
}
int?sr(){
int?i,j;
for(i=0;i3;i++)
for(j=0;j3;j++)
scanf("%d",arr[i][j]);
return?0;
}
int?sc(){
int?i,j;
int?br[3][3];
for(i=0;i3;i++)
for(j=0;j3;j++)
br[i][j]=arr[j][i];//轉置后的數(shù)組暫放在數(shù)組br中
for(i=0;i3;i++)
for(j=0;j3;j++)
arr[i][j]=br[i][j];//將轉置后的數(shù)組賦值給arr;
return?0;
}
void?printfarr(int?arr[3][3]){//輸出數(shù)組
int?i,j;
for(i=0;i3;i++)
{
for(j=0;j3;j++)
printf("%d?",arr[i][j]); ?
printf("\n");
}
}
結果和上邊一樣。
C/C++中的Split函數(shù)是strtok()其函數(shù)原型如下:
char
*
strtok
(char
*
str,
const
char
*
delimiters);
函數(shù)說明
strtok()用來將字符串分割成一個個片段。參數(shù)str指向欲分割的字符串,參數(shù)delimiters則為分割字符串,當strtok()在參數(shù)str的字符串中發(fā)現(xiàn)到參數(shù)delimiters的分割字符時則會將該字符改為'\0'字符。在第一次調用時,strtok()必需給予參數(shù)str字符串,往后的調用則將參數(shù)str設置成NULL。每次調用成功則返回下一個分割后的字符串指針。
返回值
返回下一個分割后的字符串指針,如果已無從分割則返回NULL。
示例-1
/*
strtok
example
*/
#include
stdio.h
#include
string.h
int
main
()
{
char
str[]
="a,b,c,d*e";
const
char
*
split
=
",";
char
*
p;
p
=
strtok
(str,split);
while(p!=NULL)
{
printf
("%s\n",p);
p
=
strtok(NULL,split);
}
getchar();
return
0;
}
本例中,實現(xiàn)對字符串'a,b,c,d*e"用逗號(,)來作界定符對字符串進行分割。
輸出結果將如下所示:
a
b
c
d*e
因為delimiters支持多個分割符,
我們將本示例中的語句行
const
char
*
split
=
",";
改成
const
char
*
split
=
",*";
//用逗號(,)和星號(*)對字符串進行分割
這樣輸出結果將如下所示:
a
b
c
d
e
直接用簡單的C++
#include?iostream
#include?string
#include?vector
using?namespace?std;
//把字符串s按照字符串c進行切分得到vector_v?
vectorstring?split(const?string?s,?const?string?c){
vectorstring?v;
int?pos1=0,pos2;
while((pos2=s.find(c,pos1))!=-1){
v.push_back(s.substr(pos1,?pos2-pos1));
pos1?=?pos2?+?c.size();
}
if(pos1?!=?s.length())
v.push_back(s.substr(pos1));
return?v;
}
int?main()
{
string?input="張三$|男$|濟南$|大專學歷$|";
vectorstring??myArray=split(input,"$|");
for(int?i=0;imyArray.size();i++){
coutmyArray[i]endl;
}
}
/*
張三
男
濟南
大專學歷
*/
#include?stdio.h
#include?string.h
//?將str字符以spl分割,存于dst中,并返回子字符串數(shù)量
int?split(char?dst[][80],?char*?str,?const?char*?spl)
{
int?n?=?0;
char?*result?=?NULL;
result?=?strtok(str,?spl);
while(?result?!=?NULL?)
{
strcpy(dst[n++],?result);
result?=?strtok(NULL,?spl);
}
return?n;
}
int?main()
{
char?str[]?=?"what?is?you?name?";
char?dst[10][80];
int?cnt?=?split(dst,?str,?"?");
for?(int?i?=?0;?i??cnt;?i++)
puts(dst[i]);
return?0;
}