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...

面试题 相关文章推荐
PHP面试题附答案
Nov 28 面试题
你所知道的集合类都有哪些?主要方法?
Dec 31 面试题
一份Java笔试题
Feb 21 面试题
下面这个程序执行后会有什么错误或者效果
Nov 03 面试题
Android笔试题总结
Nov 29 面试题
上海天奕面试题笔试题
Apr 19 面试题
什么是URL
Dec 13 面试题
什么叫做SQL注入,如何防止
Oct 04 面试题
Does C# support multiple inheritance? (C#支持多重继承吗)
Jan 04 面试题
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
Jan 19 面试题
说一下Linux下有关用户和组管理的命令
Aug 18 面试题
Ruby如何创建一个线程
Mar 10 面试题
求最大连续递增数字串(如"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+DBM的同学录程序(3)
2006/10/09 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
使用laravel指定日志文件记录任意日志
2019/10/17 PHP
ExtJs的Date格式字符代码
2010/12/30 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
轻松实现jQuery添加删除按钮Click事件
2017/03/13 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
jQuery+pjax简单示例汇总
2017/04/21 jQuery
微信小程序自动客服功能
2017/11/02 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
浅谈在node.js进入文件目录的问题
2018/05/13 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
Python中is和==的区别详解
2018/11/15 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
Python threading的使用方法解析
2019/08/28 Python
Python3 元组tuple入门基础
2020/02/09 Python
彻底解决Python包下载慢问题
2020/11/15 Python
python基于openpyxl生成excel文件
2020/12/23 Python
python 递归相关知识总结
2021/03/03 Python
如何删除一个表里面的重复行
2013/07/13 面试题
介绍一下Linux文件的记录形式
2013/09/29 面试题
医学求职信
2014/05/28 职场文书
财务部副经理岗位职责范本
2014/06/17 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
2015年党建工作总结
2015/03/30 职场文书
公司行政主管岗位职责
2015/04/09 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang