#include stdio.h
成都创新互联公司主要从事网站设计、网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务临夏,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
#include string.h
// 将str字符以spl分割,存于dst中,并返回子字符串数量
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;
}
#includestdio.h
int
add(int,int);
int
main(void)
将函数拆分为三部分,上面的是头文件,函数申明,主函数,由于在后面的函数中已经有输出了,所以主函数中相当于int
main(void){
}空了
{int
s
;
s=add(2,3);
printf('the
sum
is;%d",s);
return
0;}这个就是对前面申明的函数进行输出
int
add
(inta,intb)
{int
sum;
sum=a+b;
return
sum;)这个是对add(2,3);进行解释;将2,3两个实参赋给这个函数
这个是用c++写的不过和c的原理也差不多我运行过了,有什么问题再问吧,c不知道能否运行,不过现在c/c++程序设计试验系统通常都有嵌套c++,你打开c界面时单击vc6.0创建一个项目运行就可以了。
#include iostream
using namespace std;
char** split(char p[],char c,int k)
{
int i,m,j;
char **q;
q=(char**)new char*[k];
for(i=0;ik;i++)
q[i]=(char*)new char*[20];
i=0;
j=0;
m=0;
while(p[i])
{
if(p[i]!=',')
{
q[j][m++]=p[i++];
}
else
{
q[j][m]='\0';
j++;
m=0;
i++;
}
}
q[k-1][m]='\0';
for(i=0;i4;i++)
{
coutq[i];
coutendl;
}
return q;
}
void main()
{ int k;
char p[]="ab,cde,efgh,ghi32";
char c=',';
int i=0,j=0,m=0;
while(p[i])
{
if(p[i]==',')
j++;
i++;
}
j=j+1;//接受到底有多少个单词在分割后通过逗号去判断
k=j;
char**q=split(p,c,k);
printf("\n");
for(i=0;i4;i++)
{
coutq[i];
coutendl;
}
}
函数改变形参值所完想要功能要想完想要功能简单传址进写: #include struct entry { int value; struct entry *next; } ; int main(void) { void InserEntry(struct entry* n,struct entry* add); struct entry n依,n贰,n三,nx; struct entry *list=n依; n依.value=依00; n贰.value=贰00; n三.value=四00; n三.next=(struct entry*)0; nx.value=500; n依.next=n贰; n贰.next=n三; InserEntry(n贰,nx); while(list) { printf("%i\n",list-value); list=list-next; }; return 0; } void InserEntry(struct entry * n,struct entry * add) { add-next=n-next; n-next=add;
用strtok函数实现吧。 void split( char **arr, char *str, const char *del)//字符分割函数的简单定义和实现 { char *s =NULL; s=strtok(str,del); while(s != NULL) { *arr++ = s; s = strtok(NULL,del); } } int main() { int i; char *myArray[4]; char s[] = "张三$|男$|济南$|大专学历$|"; memset(myArray, 0x0, sizeof(myArray)); split(myArray, s, "$|"); for (i=0; i4; i++) { printf("%s\n", myArray[i]); } return 0; }
/*如何把上面这个转置3*3 二维数组程序转换成俩个子函数*/
#includestdio.h
int arr[3][3];//将数组arr定义成一个全局变量
int main()
{
int sr();
int sc();
sr();//输入二维数组
sc();//输出转置后的二维数组
}
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数组原来的值,换句话说,执行完sc后,arr的值并没有改变成转置数组。
可以利用中间数组来完成数组转置,修改如下:
如何把上面这个转置3*3 二维数组程序转换成俩个子函数*/
#includestdio.h
int arr[3][3];//将数组arr定义成一个全局变量
int main()
{
int sr();
int sc();
void printfarr(int arr[3][3]);
sr();//输入二维数组
sc();//转置
printfarr(arr);//输出数组
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];//转置后的数组暂放在数组br中
for(i=0;i3;i++)
for(j=0;j3;j++)
arr[i][j]=br[i][j];//将转置后的数组赋值给arr;
return 0;
}
void printfarr(int arr[3][3]){//输出数组
int i,j;
for(i=0;i3;i++)
{
for(j=0;j3;j++)
printf("%d ",arr[i][j]);
printf("\n");
}
}
结果和上边一样。