成都网站建设设计

将想法与焦点和您一起共享

c语言2017函数答案,历年c语言考试题及答案

求C语言高手帮忙解答,问题是:写一个函数,将两个字符串连接.谢谢~~~

楼主的意思明显是不能用字符串函数,要用自己的自定义函数连接

创新互联是一家集网站建设,白云鄂企业网站建设,白云鄂品牌网站建设,网站定制,白云鄂网站建设报价,网络营销,网络优化,白云鄂网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

main()

{

char s1[100]={'a','b','c','d','e','f','g','\0'};

char s2[100]={'h','i','j','k','\0'};

printf("s1=%s\n",s1);

printf("s2=%s\n",s2);

lj(s1,s2);

getch();

}

lj(char s1[],char s2[])

{

char s3[100];

int i=0,j=0;

while(s1[i]!='\0')

{

s3[i]=s1[i];

i++;

}

while(s2[j]!='\0')

{

s3[i]=s2[j];

i++;j++;

}

i++;

s3[i]='\0';

printf("s3=%s\n",s3);

}

C语言函数问题:请问这个程序的输出答案是什么,需要解释为什么答案是这个。

2, 6, 42, 3

开始看到这个程序,我觉得明显有问题,可是运行了下,却极其正常。找了下资料发现,得主要是static和局部、全局量的作用域的问题。

注意这两点,然后再去分析程序:

1.静态局部变量在程序编译时被首次初始化,即以后的函数调用不再进行初始化,而是使用上次调用结束时的值。静态量数据有单独的存储区。

2.全局变量在整个函数有效,但是当某个局部变量与全局变量同名时,在该局部变量所在域内,只有该局部变量有效,与其同名的全局变量无效。

在所述程序中,全局变量i在for的{}内是无效的,起作用是静态局部变量i。而静态变量编译时初始值为1。另,for的循环控制部分在{}外,起作用的全局量i。

在下面的分析中1.指第一次循环,依此类推。

int Square(int i)

{

return i*i; //返回i^2给调用者;

}

main()

{

int i=0; //i=0;

i = Square(i); //调用Square,i=i^2,即0=0^2=0;

for ( ; i3; i++) //1.第一轮循环,i(全局)为0,满足条件

{ //2.第二轮循环开始i=1

//3.第三轮开始,i为2

//4.i=3,不符,循环退出

static int i=1; //程序编译时被赋值为1,以后不再赋值。

//1.此时用的是编译时被赋的值,即1;

//2.i(局部)为上次调用结束时的结果2

//3.原理同上,此时为6

i += Square(i); //1.i=1+1*1=2

//2.i=2+2*2=6

//3.i=6+6*6=42

printf("%d, ", i); //1.输出:2+,+空格

//2.输出:6+,+空格

//3.输出:42+,+空格

} //1.第一次循环结束,i(全局,原为0)+1,值为1

//2.第二轮循环结束,i(全局)+1,是2

//3.第三轮循环结束,i为3

printf("%d\n", i);//输出外部变量i,其值为循环 退出时的值3.

}

其实,把外部变量换个名字是一样的效果。更容易明白。如下:

int main(int argc, char* argv[])

{

int j=0;

j = Square(j);

for ( ; j3; j++)

{

static int i=1;

i += Square(i);

printf("%d, ", i);

}

printf("%d\n", j);

return 0;

}

c语言求答案,以及解释

C main是入口

D printf 是标准库函数的函数名

A ''单引号中的必须是字符型

A char a='A',b='B'

B 0为假,其他为真

c语言问题,17题为什么答案是double不是float,这两个有什么区别

sqrt函数返回值是double。表达式包含隐性转换,规则就是尽量保证数据精度不丢失。

对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)

c语言问题?详细解答一下,谢谢

输出结

果:cdeab

分析:只要你理解了move函数的作用你就能明白整个过程:

第一次循环调用move(char

*str,int

n)这一函数给它的参数是

s与

s的长度(就是你输入的abcde的长度5),第一步执行temp=str[5-1]=str[4],而str[4]的值为'e',所以temp的值为'e',接着执行for(i=n-1;

i0;i--)

str[i]=str[i-1];

这个循环是把从str[1]开始的所有数组的元素都后移一位,

即str[2]成了str[1],str[3]成了str[2]等等,循环执行完后执行str[0]=temp;,也就是把e赋值给了

str[0]。所以abcde被move函数处理一次后就成了

eabcd,如果再被处理一次后就被变成deabc等等

也就是说move函数每调用一次就把相应的字符串循环右移一位


文章名称:c语言2017函数答案,历年c语言考试题及答案
文章链接:http://chengdu.cdxwcx.cn/article/dssisos.html