
C语言 函数部分: 输入一个4位数,要求输出这4个数字字符,但每两个数字之间空一个空格,谢
我的问题:1.voidinsert(charstr[])与voidinsert(char[]);有什么区别,2.for(i=strlen(str);;)是什么意思,还有为...
我的问题:
1.void insert(char str[])与void insert(char []);有什么区别,
2.for(i=strlen(str);;)是什么意思,还有为什么不能是i<=3;i++;
3.str[2*i-1]=' ',为什么是2*i-1,不是+1
初学函数,请多多指教
编写一个函数,输入一个4位数,要求输出这4个数字字符,但每两个数字之间空一个空格。如输入2008,则输出“2 0 0 8”
#include<stdio.h>
#include<stdlib.h>
int main()
{
char str[80];
void insert(char []);
printf("input four digits:\n");
scanf("%s",str);
printf("\n");
printf("Output is:\n");
insert(str);
system("PAUSE");
return(0);
}
void insert(char str[])
{
int i;
for(i=strlen(str);i>0;i--)
{str[2*i]=str[i];
str[2*i-1]=' ';}
printf("%s\n",str);
}
谢谢!! 展开
1.void insert(char str[])与void insert(char []);有什么区别,
2.for(i=strlen(str);;)是什么意思,还有为什么不能是i<=3;i++;
3.str[2*i-1]=' ',为什么是2*i-1,不是+1
初学函数,请多多指教
编写一个函数,输入一个4位数,要求输出这4个数字字符,但每两个数字之间空一个空格。如输入2008,则输出“2 0 0 8”
#include<stdio.h>
#include<stdlib.h>
int main()
{
char str[80];
void insert(char []);
printf("input four digits:\n");
scanf("%s",str);
printf("\n");
printf("Output is:\n");
insert(str);
system("PAUSE");
return(0);
}
void insert(char str[])
{
int i;
for(i=strlen(str);i>0;i--)
{str[2*i]=str[i];
str[2*i-1]=' ';}
printf("%s\n",str);
}
谢谢!! 展开
展开全部
1.void insert(char str[])与void insert(char []);
乍一看一样,呵呵 区别就是void insert(char [])这句话中的参数没有参数名,所以,这句话一般只用来在调用此函数的语句之前,对此函数进行声明,因为声明函数不需要指定参数名,而void insert(char str[])这句话,可以作为函数声明语句,也可以作为函数定义体,OK?
2.for(i=strlen(str);;),strlen是求的字符数组长度,for循环将i初值赋值为此!i的范围应该在循环体内吧?
乍一看一样,呵呵 区别就是void insert(char [])这句话中的参数没有参数名,所以,这句话一般只用来在调用此函数的语句之前,对此函数进行声明,因为声明函数不需要指定参数名,而void insert(char str[])这句话,可以作为函数声明语句,也可以作为函数定义体,OK?
2.for(i=strlen(str);;),strlen是求的字符数组长度,for循环将i初值赋值为此!i的范围应该在循环体内吧?
追问
对了,还想问一下
char str[80];
void insert(char []);
这两行有什么因果关系么
展开全部
void insert(char str[]) 这个是函数定义
void insert(char []);这个是函数声明
2 i的初值是str的长度 strlen是函数 加头文件string.h 也可以写成你那样 但是下面的语句就得变
3 这个和语言无关了 你自己把代码走一遍就清楚了
void insert(char []);这个是函数声明
2 i的初值是str的长度 strlen是函数 加头文件string.h 也可以写成你那样 但是下面的语句就得变
3 这个和语言无关了 你自己把代码走一遍就清楚了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、前者参数是字符数组,后者是一个字符
2、另i=字符的总长度,如果用你说的那样,for ( i=0; i=strlen(str); i++; )
3、至于这个问题,你自己仔细推敲一下就行了,这是数学计算问题,思维方法问题,不好说啊。。。
2、另i=字符的总长度,如果用你说的那样,for ( i=0; i=strlen(str); i++; )
3、至于这个问题,你自己仔细推敲一下就行了,这是数学计算问题,思维方法问题,不好说啊。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我来回答楼主的问题:
1、如果是函数声明的话.void insert(char str[])与void insert(char []);没有区别,因为函数声明仅仅是一个声明,它反应出的是该子函数的返回类型、函数名已经参数类型,所以不需要添上参数名
2、for(i=strlen(str);i>0;i--)这一句中strlen(str)是获取数组str的元素个数,所以这一句的效果就是按倒序方式遍历数组,其实用for(int i=0;i<=3;i++)也不是不可以,那for循环里面的语句就不能那样写了。
3、至于第三个问题嘛,建议楼主在纸上用笔画出连续的8个方框,自己琢磨下,我告诉你
for(i=strlen(str);i>0;i--)
{str[2*i]=str[i];
str[2*i-1]=' ';}
的基本原理,
数组元素序号 原来位置 现在位置
4 4 8
3 3 6
2 2 4
1 1 2
那么剩下的1、3、7全部是空格,最后输出的结果就达到楼主要的答案了,希望能对楼主有帮助,有不懂的可以继续追问
1、如果是函数声明的话.void insert(char str[])与void insert(char []);没有区别,因为函数声明仅仅是一个声明,它反应出的是该子函数的返回类型、函数名已经参数类型,所以不需要添上参数名
2、for(i=strlen(str);i>0;i--)这一句中strlen(str)是获取数组str的元素个数,所以这一句的效果就是按倒序方式遍历数组,其实用for(int i=0;i<=3;i++)也不是不可以,那for循环里面的语句就不能那样写了。
3、至于第三个问题嘛,建议楼主在纸上用笔画出连续的8个方框,自己琢磨下,我告诉你
for(i=strlen(str);i>0;i--)
{str[2*i]=str[i];
str[2*i-1]=' ';}
的基本原理,
数组元素序号 原来位置 现在位置
4 4 8
3 3 6
2 2 4
1 1 2
那么剩下的1、3、7全部是空格,最后输出的结果就达到楼主要的答案了,希望能对楼主有帮助,有不懂的可以继续追问
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询