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经典面试题
Sep 03 面试题
会话Bean的种类
Nov 07 面试题
怎样让char类型的东西转换成int类型
Dec 09 面试题
说出一些常用的类,包,接口
Sep 22 面试题
C语言怎样定义和声明全局变量和函数最好
Nov 26 面试题
如何理解委托
Jan 06 面试题
介绍一下HTTP、HTTPS和SSL
Dec 16 面试题
以思科路由器为例你写下单臂路由的配置命令
Aug 03 面试题
测试时代收集的软件测试面试题
Sep 25 面试题
什么是设计模式
Jun 17 面试题
解释一下钝化(Swap out)
Dec 26 面试题
建龙钢铁面试总结
Apr 15 面试题
求最大连续递增数字串(如"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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
php Mysql日期和时间函数集合
2007/11/16 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
PDO::exec讲解
2019/01/28 PHP
Javascript学习笔记2 函数
2010/01/11 Javascript
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
一款js和css代码压缩工具[附JAVA环境配置方法]
2010/04/16 Javascript
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
THREE.JS入门教程(6)创建自己的全景图实现步骤
2013/01/25 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
2016/08/05 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
nodeJS微信分享
2017/12/20 NodeJs
Vue实现todolist删除功能
2018/06/26 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
javaScript实现一个队列的方法
2020/07/14 Javascript
javascript操作向表格中动态加载数据
2020/08/27 Javascript
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
Python定义一个函数的方法
2020/06/15 Python
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
个人收入证明范本
2014/01/12 职场文书
军训结束新闻稿
2015/07/17 职场文书
新闻通讯稿范文
2015/07/22 职场文书
2015年店长个人工作总结
2015/10/23 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
MySQL数字类型自增的坑
2021/05/07 MySQL