C语言编程题


Posted in 面试题 onMarch 09, 2015
1)读文件file1.txt的内容(例如):
12
34
56
输出到file2.txt:
56
34
12
(逆序)

第一题,注意可增长数组的应用.
#include
#include
int main(void)
{
int MAX = 10;
int *a = (int *)malloc(MAX * sizeof(int));
int *b;

FILE *fp1;
FILE *fp2;
fp1 = fopen(“a.txt”,”r”);
if(fp1 == NULL)
{printf(“error1″);
exit(-1);
}
fp2 = fopen(“b.txt”,”w”);
if(fp2 == NULL)
{printf(“error2″);
exit(-1);
}
int i = 0;
int j = 0;
while(fscanf(fp1,”%d”,&a[i]) != EOF)
{
i++;
j++;
if(i >= MAX)
{
MAX = 2 * MAX;
b = (int*)realloc(a,MAX * sizeof(int));
if(b == NULL)
{
printf(“error3″);
exit(-1);
}
a = b;
}
}
for(;–j >= 0;)
fprintf(fp2,”%d\n”,a[j]);
fclose(fp1);
fclose(fp2);
return 0;

}
可谓是反序的经典例程.
void inverse(char *p)
{
if( *p = = ‘\0′ )
return;
inverse( p+1 );
printf( “%c”, *p );
}
int main(int argc, char *argv[])
{
inverse(“abc\0″);
return 0;
}
借签了楼上的“递规反向输出”
#include
void test(FILE *fread, FILE *fwrite)
{
char buf[1024] = {0};
if (!fgets(buf, sizeof(buf), fread))
return;
test( fread, fwrite );
fputs(buf, fwrite);
}
int main(int argc, char *argv[])
{
FILE *fr = NULL;
FILE *fw = NULL;
fr = fopen(“data”, “rb”);
fw = fopen(“dataout”, “wb”);
test(fr, fw);
fclose(fr);
fclose(fw);
return 0;
}
在对齐为4的情况下
struct BBB
{
long num;
char *name;
short int data;
char ha;
short ba[5];
}*p;
p=0×1000000;
p+0×200=____;
(Ulong)p+0×200=____;
(char*)p+0×200=____;
希望各位达人给出答案和原因,谢谢拉
解答:假设在32位CPU上,
sizeof(long) = 4 bytes
sizeof(char *) = 4 bytes
sizeof(short int) = sizeof(short) = 2 bytes
sizeof(char) = 1 bytes
由于是4字节对齐,
sizeof(struct BBB) = sizeof(*p)
= 4 + 4 + 2 + 1 + 1/*补齐*/ + 2*5 + 2/*补齐*/ = 24 bytes (经Dev-C++验证)
p=0×1000000;
p+0×200=____;
= 0×1000000 + 0×200*24
(Ulong)p+0×200=____;
= 0×1000000 + 0×200
(char*)p+0×200=____;
= 0×1000000 + 0×200*4
你可以参考一下指针运算的细节

2、运用四色定理,为N个局域举行配色,颜色为1、2、3、4四种,另有数组adj[][N],如adj[i][j]=1则表示i区域与j区域相邻,数组color[N],如color[i]=1,表示i区域的颜色为1号颜色。
四色填充
3、用递归算法判断数组a[N]是否为一个递增数组。
递归的方法,记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回false结束:
bool fun( int a[], int n )
{
if( n= =1 )
return true;
if( n= =2 )
return a[n-1] >= a[n-2];
return fun( a,n-1) && ( a[n-1] >= a[n-2] );
}
4、编写算法,从10亿个浮点数当中,选出其中最大的10000个。
用外部排序,在《数据结构》书上有
《计算方法导论》在找到第n大的数的算法上加工
5、编写一unix程序,防止僵尸进程的出现.
3.可怕的题目终于来了
象搜索的输入信息是一个字符串,统计300万输入信息中的最热门的前十条,我们每次输入的一个字符串为不超过255byte,内存使用只有1G,
请描述思想,写出算发(c语言),空间和时间复杂度,
4.国内的一些帖吧,如baidu,有几十万个主题,假设每一个主题都有上亿的跟帖子,怎么样设计这个系统速度最好,请描述思想,写出算发(c语言),空间和时间复杂度,
1. 简述一个Linux驱动程序的主要流程与功能。
2. 请列举一个软件中时间换空间或者空间换时间的例子。
void swap(int a,int b)
{
int c; c=a;a=b;b=a;
}
—>空优
void swap(int a,int b)
{
a=a+b;b=a-b;a=a-b;
}
6. 请问一下程序将输出什么结果?
char *RetMenory(void)
{
char p[] = “hellow world”;
return p;
}
void Test(void)
{
char *str = NULL;
str = RetMemory();
printf(str);
}
RetMenory执行完毕,p资源被回收,指向未知地址。返回地址,str的内容应是不可预测的, 打印的应该是str的地址

写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:”abcd12345ed125ss123456789″的首地址传给intputstr后,函数将返回
9,outputstr所指的值为123456789
int continumax(char *outputstr, char *inputstr)
{
char *in = inputstr, *out = outputstr, *temp, *final;
int count = 0, maxlen = 0;
while( *in != ‘\0′ )
{
if( *in > 47 && *in {
for(temp = in; *in > 47 && *in count++;
}
else
in++;
if( maxlen {
maxlen = count;
count = 0;
final = temp;
}
}
for(int i = 0; i {
*out = *final;
out++;
final++;
}
*out = ‘\0′;
return maxlen;
}
不用库函数,用C语言实现将一整型数字转化为字符串
方法1:
int getlen(char *s){
int n;
for(n = 0; *s != ‘\0′; s++)
n++;
return n;
}
void reverse(char s[])
{
int c,i,j;
for(i = 0,j = getlen(s) – 1; i c = s[i];
s[i] = s[j];
s[j] = c;
}
}
void itoa(int n,char s[])
{
int i,sign;
if((sign = n) n = -n;
i = 0;
do{/*以反序生成数字*/
s[i++] = n%10 + ’0′;/*get next number*/
}while((n /= 10) > 0);/*delete the number*/
if(sign s[i++] = ‘-’;
s[i] = ‘\0′;
reverse(s);
}
方法2:
#include
using namespace std;
void itochar(int num);
void itochar(int num)
{
int i = 0;
int j ;
char stra[10];
char strb[10];
while ( num )
{
stra[i++]=num%10+48;
num=num/10;
}
stra[i] = ‘\0′;
for( j=0; j {
strb[j] = stra[i-j-1];
}
strb[j] = ‘\0′;
cout }
int main()
{
int num;
cin>>num;
itochar(num);
return 0;
}

Tags in this post...

面试题 相关文章推荐
error和exception有什么区别
Oct 02 面试题
将"引用"作为函数参数有哪些特点
Apr 05 面试题
网络安全类面试题
Aug 01 面试题
linux面试题参考答案(9)
Jan 07 面试题
东方红海科技面试题软件测试方面
Feb 08 面试题
Ajxa常见问题都有哪些
Mar 26 面试题
Python里面如何实现tuple和list的转换
Jun 13 面试题
如果重写了对象的equals()方法,需要考虑什么
Nov 02 面试题
如何拷贝一整个Java对象,包括它的状态
Dec 27 面试题
95%的面试官都会问到的50道Java线程题,附答案
Aug 03 面试题
Servlet的生命周期
Aug 25 面试题
Ruby如何实现动态方法调用
Nov 18 面试题
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
Sep 11 #面试题
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
Jul 16 #面试题
一套带答案的C++笔试题
Jan 10 #面试题
写一个方法1000的阶乘
Nov 21 #面试题
一套VC试题
Jan 23 #面试题
C语言50道问题
Oct 23 #面试题
普天C++笔试题
Mar 20 #面试题
You might like
PHP设计聊天室步步通
2006/10/09 PHP
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
2019/07/25 Javascript
VUE 解决mode为history页面为空白的问题
2019/11/01 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
python3使用SMTP发送HTML格式邮件
2018/06/19 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
CSS3中使用RGBa来调节透明度的教程
2016/05/09 HTML / CSS
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
XML文档面试题
2015/08/05 面试题
中科软笔试题和面试题
2014/10/07 面试题
公务员年总结的自我评价
2013/10/25 职场文书
企业行政文员岗位职责
2013/12/03 职场文书
《独坐敬亭山》教学反思
2014/04/08 职场文书
战友聚会策划方案
2014/06/13 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
解放思想大讨论活动总结
2015/05/09 职场文书
飞屋环游记观后感
2015/06/08 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python