C语言的几道题(要过程的,谢谢)

来源:百度知道 编辑:UC知道 时间:2024/05/23 19:46:49
1、有以下程序
#include <stdio.h>
main()
{int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for(i=0;i<12;i++) c[s[i]]++;
for(i=1;i<5;i++) printf("%d",c[i]);
printf("\n");
} 结果是4 3 3 2
2、下面程序的输出结果是
#include <stdio.h>
#include <string.h>
main()
{ char *p1="abc",*p2="ABC",str[50]="xyz";
strcpy(str+2,strcat(p1,p2));
printf("%s\n",str);}
结果是xyabcABC

特别是strcpy(str+2,strcat(p1,p2));这个是什么意思?
第一题中

for(i=0;i<12;i++) c[s[i]]++;
for(i=1;i<5;i++) printf("%d",c[i]);

这个怎么循环?c[s[i]]++;是什么意思?

strcpy(str+2,strcat(p1,p2));
strcat(p1,p2)表示把p1和p2连接起来,例如p1="abc",p2="def",执行之后返回"abcdef"
strcpy()表示拷贝.将"abcdef"复制到str这个数组从索引1开始的位置.

其他的自己跟踪一下.

把p2连接到p1,然后从第二个位置开始复制到字符数组str

囧 课本上都有

strcpy 是复制

strcat 是两个链接

这题全做过

strcpy(s1,s2)此函数用于把s2所指字符串的内容复制到s1所指存储空间中,函数返回s1的值。s1必须是字符数组名,s2可以是字符数组名,也可以是一个字符串。

strcat(s1,s2)该函数将s2所指字符串的内容连接到s1所指字符串的后面,并自动覆盖s1串末尾的'\0';函数返回s1的地址值。s1必须是字符数组名,s2可以是字符数组名,也可以是一个字符串。