面试题目 请大大家共同参考!

chunhui_true 2004-05-02 08:42:17
1、完成字符串拷贝可以使用 sprintf、strcpy 及 memcpy 函数,请问这些函数
有什么区别,你喜欢使用哪个,为什么?

2、变量的声明和定义有什么区别?

3、请写出下面代码在 32 位平台上的运行结果,并说明 sizeof 的性质:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char a[30];
char *b = (char *)malloc(20 * sizeof(char));
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(b));
printf("%d\n", sizeof(a[3]));
printf("%d\n", sizeof(b+3));
printf("%d\n", sizeof(*(b+4)));
return 0 ;
}

4、请完成以下题目。注意,请勿直接调用 ANSI C 函数库中的函数实现。

a)请编写一个 C 函数,该函数给出一个字节中被置 1 的位的个数,并请
给出该题的至少一个不同解法。
b)请编写一个 C 函数,该函数将给定的一个字符串转换成整数。
c)请编写一个 C 函数,该函数将给定的一个整数转换成字符串。
d)请编写一个 C 函数,该函数将一个字符串逆序。
e)请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回
该字符所在位置索引值。
f)请编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,
该字符串是由同一字符组成的。
...全文
365 21 点赞 打赏 收藏 举报
写回复
21 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sunjx119 2004-07-29
晕,楼上看清题。
4、请完成以下题目。“注意,请勿直接调用 ANSI C 函数库中的函数实现。”
  • 打赏
  • 举报
回复
walkonthesky 2004-07-29
#include <iostream.h>
void main()
{
unsigned char ch ;

cout<< "Please input the char:";
cin>> ch;
int i=0;

if ((unsigned short)ch & 128) i++;
if ((unsigned short)ch & 64) i++;
if ((unsigned short)ch & 32) i++;
if ((unsigned short)ch & 16) i++;
if ((unsigned short)ch & 8) i++;
if ((unsigned short)ch & 4) i++;
if ((unsigned short)ch & 2) i++;
if ((unsigned short)ch & 1) i++;

cout << i<<endl;
}
__________

楼上的参数定为INT就有问题
INT不是一个字节
  • 打赏
  • 举报
回复
ypengfei 2004-07-28
晕,用这么麻烦吗?atof()就搞定了。
  • 打赏
  • 举报
回复
sunjx119 2004-07-28
请编写一个 C 函数,该函数将给定的一个整数转换成字符串:

#include <stdlib.h>
#include <stdio.h>
void main()
{
int a[20];
int count = 0;

int obj = 31230; //test
int tmp = obj;
while(tmp)
{
a[count] = tmp % 10;
tmp /= 10;
count++;
}

char *str = (char*)malloc((count+1)*sizeof(char));
int i;
for(i=0,--count;count>=0;++i,--count)
{
str[i] = a[count]+48;
}
str[i++] = '\0';

printf("%s\n",str);

}
  • 打赏
  • 举报
回复
sunjx119 2004-07-28
请编写一个 C 函数,该函数将给定的一个字符串转换成整数:

#include <stdio.h>
void main()
{
char* str="123902434";

char* p = str;
int count = 0;
int sum = 0;
int tmp = 1;

while(*p != '\0')
{
count++;
p++;
}

for(--p;count>0;p--,--count)
{
int n;
tmp *=10;
switch(*p)
{
case '1':
n = 1;
break;
case '2':
n = 2;
break;
case '3':
n = 3;
break;
case '4':
n = 4;
break;
case '5':
n = 5;
break;
case '6':
n = 6;
break;
case '7':
n = 7;
break;
case '8':
n = 8;
break;
case '9':
n = 9;
break;
case '0':
n = 0;
break;
}
sum = sum + n*tmp/10;
}
printf("%d",sum);
}
  • 打赏
  • 举报
回复
KingI 2004-06-30
/*编写一个 C 函数,该函数给出一个字节中被置 1 的位的个数*/

#include <stdio.h>

int check(int n)
{
int i,count=0;
for (i=0; i<8; i++) {
if (n & 1) count++;
n>>=1;
}
return count;
}
main()
{
int num;
int i;

printf ("Input a number:");
scanf ("%d",&num);
printf ("Number of 1: %d",check(num));
return 0;
}
  • 打赏
  • 举报
回复
海上的云 2004-06-30
这叫自我推荐
  • 打赏
  • 举报
回复
qwertasdfg123 2004-06-30
楼上怎么像做广告的。。。。。。
  • 打赏
  • 举报
回复
oliver88888888 2004-06-30

你在哪里工作啊?

你多大?你叫?

我很想与你成为朋友啊!我叫陈一凡,男,22岁,你可以介绍一下自己吗?

你擅长设么?我的手机:13916316917

收到后发个消息给我吧!!我很想学好编程......

╭═══╮ ╭═══╮ ╭══════╮   
╰╮ ╭╯ ╰╮ ╭╯ ╰╮ ╭══╮╰╮  
 ║ ║   ║ ║   ║ ║  ╰╮╰╮ 
 ║ ║   ║ ║   ║ ║   ║ ║ 
 ║ ║   ║ ║   ║ ║   ║ ║ 
 ║ ║   ║ ║   ║ ║  ╭╯╭╯ 
 ║ ║   ║ ║   ║ ╰══╯╭╯  
 ║ ║   ║ ║   ║ ╭═══╯   
 ║ ║   ║ ║   ║ ║       
 ║ ║   ║ ║   ║ ║       
 ║ ║   ║ ║   ║ ║       
 ╰╮╰╮ ╭╯╭╯   ║ ║       
  ╰╮╰═╯╭╯   ╭╯ ╰╮
  • 打赏
  • 举报
回复
zorro2008 2004-06-30
不懂UP一下
  • 打赏
  • 举报
回复
ljux 2004-06-30
32位的地址都占4字节?
  • 打赏
  • 举报
回复
riitso 2004-06-30
1。sprintf是格式化输出函数,strcpy是字符串拷贝函数,memcpy是内存拷贝函数(已知两块内存没有从重叠)。无所谓喜欢不喜欢,根据需求而定。
2。变量的定义要分配内存,声明不要;一般情况下两者等同,除非加了extern;
3。30,4,1,4,1
4。.............
  • 打赏
  • 举报
回复
yux007 2004-06-30
就说最后那题:30,4,1,4,1
  • 打赏
  • 举报
回复
liushuaiboy 2004-05-02
关注
  • 打赏
  • 举报
回复
superpolo 2004-05-02
int main(void)
{
char a[30];
char *b = (char *)malloc(20 * sizeof(char));
printf("%d\n", sizeof(a));//30
printf("%d\n", sizeof(b));//4
printf("%d\n", sizeof(a[3]));//1
printf("%d\n", sizeof(b+3));//4
printf("%d\n", sizeof(*(b+4)));//1
return 0 ;
}
  • 打赏
  • 举报
回复
newegg2002 2004-05-02
现在的面试都是怎么的了?
瞧第三题那样....唉..无聊啊..
  • 打赏
  • 举报
回复
卓哥 2004-05-02
关于变量的声明和定义我个人认为是没有明显的区别或者区别不大对程序没有很大的影响
而第二题说SIZEOF他是以字节为单位定义变量的宽度比如:
char *b = (char *)malloc(20 * sizeof(char));是给指针b分配20个字节的内存空间(因为char类型是一个字节)所以20乘以一个字节就是20个字节.
printf("%d\n", sizeof(a));这个表示显示a这个数组的大小因为a有30个元素而且又是字符型占一个字节所以他有30个字节大小显示的结果应该是30.
后面的以此类推吧
  • 打赏
  • 举报
回复
Aofa_lee 2004-05-02
面试题??
没这么简单吧~~~~
  • 打赏
  • 举报
回复
ohokay 2004-05-02
1。 1)sprintf()比较灵活,可以支持格式拷贝
2)strcpy()只是用于一般的字符串间的复制
3)memcpy可以指定将原串的一部分赋给目的串,对求子串一类比较方便
2.变量的声明不为之分配空间,而定义则分配内存空间
  • 打赏
  • 举报
回复
bm1408 2004-05-02
不像是面试题!
相同类型的题目出了N次!
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-05-02 08:42
社区公告
暂无公告