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的面试题
May 06 面试题
请用用Java代码写一个堆栈
Jan 26 面试题
为什么要有struct关键字
May 08 面试题
如何打印出当前源文件的文件名以及源文件的当前行号
Apr 05 面试题
远东集团网络工程师面试题
Oct 20 面试题
SQL注入攻击的种类有哪些
Dec 30 面试题
linux面试题参考答案(5)
Nov 05 面试题
介绍一下linux文件系统分配策略
Feb 25 面试题
GWT (Google Web Toolkit)有哪些主要的原件组成?
Jun 08 面试题
类的返射机制中的包及核心类
Sep 12 面试题
AssertionError 跟一下那个类是 “is – a”的关系
Feb 21 面试题
Delphi工程师笔试题
Sep 21 面试题
求最大连续递增数字串(如"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 array数组的教程详解
2013/06/05 PHP
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
如何重写Laravel异常处理类详解
2020/12/20 PHP
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
浅谈HTML5 & CSS3的新交互特性
2016/07/19 HTML / CSS
预订奥兰多和佛罗里达州公园门票:FloridaTix
2018/01/03 全球购物
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
周鸿祎:教你写创业计划书
2013/12/30 职场文书
优秀电子工程系毕业生求职信
2014/05/24 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记