【最新推荐】东南融通的笔试题-范文word版 (8页)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!
== 本文为word格式,下载后可方便编辑和修改! ==
东南融通的笔试题
最新东南融通的笔试题(一)
一、
int main()
{
char *a="Hello";
char *b="world\n";
strcpy(a,b);
printf("%s,%s",a,b);
}
程序运行的结果是什么?
解析:这道题看上去很简单,第一想到的就是strcpy的地址越界问题,所以认为结果可能是
world
world
或者是运行错误,因为出现了地址越界,对于越界后的地址我们并不知道存的是什么,有可能是很重要的内容。

第二想到的是\n在结果中怎么输出呢,这个问题考虑的多余,\\n才是输出\n,而\n直接以回车形式输出。

第三真正上机运行会发现,即使地址不发生越界,运行也会错误,仔细分析原因,得出如下结论
char *a="Hello";
其中的"Hello"是字符串常量,存放在常量存储区(具体存放在内存什么位置,还有待于验证),但有一点是肯定的,常量是不允许修改的。

改正:char a[6]="Hello";
或者是char *a=(char *)malloc(sizeof(char)*6);
strcpy(a,"Hello");
二、下面这道题很简单,但刚看到时也思考了一会儿,考虑怎么做会更好
一些呢
输入16进制数,编写程序将其以10进制数形式输出
代码:已经上机运行通过,只要输入的16进制数合法,就能输出正确结果,如果有不对的地方,还希望明白的朋友给予指正
#include
int convert(char *p){
int i=0;
int sum=0;
while(p[i]!='\0'){
if(p[i]>='0'&&p[i]<='9')
sum=sum*16+p[i]-'0';
else
sum=sum*16+p[i]-55;
i++;
}//while
return sum;
}//convert
int main()
{
char a[4];
gets(a);
printf("16进制 %s 转换为 10进制 %d\n",a,convert(a));
return 0;
}
最新东南融通的笔试题 (二)
1:下列运算符中,优先级最高的是
A.[]
B.++
C.%
D.&&
2:以“只读”方式打开文本文件 a: \ aa.dat, 下列语句中哪一个是正确的
A.fp=fopen( ” a: \ aa.dat ” ,” ab ” )
B.fp=fopen( ” a: \ aa.dat ” , ” a ” )
C.fp=fopen( ” a: \ aa.dat ” , ” wb ” )
D.fp=fopen( ” a: \ aa.dat ” , ” r ” )
3:设 int a[ ]={1,2,3,4,5},*p=a;则数组元素的正确表示是
A.a[2]
B.&(a+1)
C.a[5]
D.&p
4:C语言中计算a的3次方,正确的表达是。

相关文档
最新文档