2014.3.12-C语言小测试
测试代码:
学号:1402049 1.请实现一个函数,功能为使用循环输出以下的图案 void print_alpha(int n)
{
int i, j;
for(i=0;i<n;++i){
for(j=0;j<=i;++j)
printf("%c", 'A'+ j);
printf("\n");
}
} 2.请实现一个函数,功能为删除数组指定位置的元素 void delete(int *arr, int index, int len){
int i;
for(i=index;i<len;++i)
arr[i] = arr[i+1];
arr[len-1] = 0;
--len;
} 3.请实现一个函数,功能为使用选择排序对数组进行排序 void sortarr(int *arr, int len){
int i, j, min, tmp;
for(i=0;i<len-1;++i){
min = i;
for(j=i+1;j<len;++j)
if(arr[min] > arr[j]){
int tmp;
tmp = arr[min];
arr[min] = arr[j];
arr[j] = tmp;
}
}
} 4.请实现一个函数,功能为将一个数插入到一个有序的数组中 void insert(int *arr, int n, int len){
int i, key;
++len;
for(i=0;i<len;++i)
if(n > arr[i])
continue;
else{
key = i;
break;
} for(i=len-1;i>=key;--i)
arr[i+1] = arr[i];
arr[key] = n;
} 5. 请实现一个函数,功能和系统的strcpy函数相似 void mystrcpy(char *dst, const char* src){
int i;
for(i=0;(dst[i] = src[i])!='\0'; ++i)
;
} 6. 请实现一个函数,功能为输入一个字符串,找出其中长度最大的单词。要求从键盘输入一行字符,最后打印出长度最大的字符串
输入:when i was young i'd listen to the radio waiting for my favorite songs
输出:favorite
'
void show_string(char a[]){
int i,j;
int tmp, max, tmax, mmp;
i = j = mmp = tmp = max = tmax = 0;
while(a[i]!='\0'){
if(isalpha(a[i])){
tmp = i;
for(;isalpha(a[i]);++i){
tmax = i-tmp;
if(tmax > max){
max = tmax;
mmp = tmp;
}
}
}
else{
tmp = tmax = 0;
++i;
}
}
max++;
for(i=mmp;max--;++i)
printf("%c", a[i]);
printf("\n");
} 7.请实现一个函数,功能为显示一个整数的二进制 void binshow(int num, int len)
{
int i = 0;
int dd = 0;
for (i=len-1; i>=0; --i){
dd = num >> i & 1;
printf("%d", dd);
}
printf("\n");
} 8.请实现一个函数,功能为统计字符串中的单词个数 int countword(char *str){
int i, cnt;
i = cnt = 0;
while(str[i] != '\0'){
if(isalpha(str[i]) && (!isalpha(str[i+1])) )
++cnt;
++i;
}
return cnt;
} 9.请实现一个函数,功能和系统的strrchr函数相同 char *mystrrchr(char *str, int c){
char *pre = 0;
for(;*str!='\0';str++)
if(*str == c)
pre = str;
return pre;
} 10.请实现一个函数:根据用户指定的行数打印出对应行数的杨辉三角 void yangHuiSanJiao(int n){
int a[100][100];
int i, j;
a[0][1] = 1;
for(i=1;i<=n;++i){
for(j=1;j<=i;++j){
a[i][j] = a[i-1][j-1] + a[i-1][j];
if(j == 1)
printf("%d", a[i][j]);
else printf(" %d", a[i][j]);
}
printf("\n");
}
} 11.请实现一个函数,功能为将一个新节点添加到链表的末尾 typedef struct node *link;
typedef struct node{
int id;
int data;
struct node *next;
}Node; void append(struct node *head, int id, int data){
link p = head;
link y = malloc(sizeof(Node));
y->id = id;
y->data = data;
while(p->next) p = p->next;
y->next = p->next;
p->next = y;
} 12.请实现一个函数,功能为求一个由10个整数组成的数组中的所有递增和递减序列的个数,
并且输出所有的递增和递减序列
例如:
输入:1 10 8 5 9 3 2 6 7 4
输出:6
对应的递增或递减子序列为: 1 10 10 8 5 5 9 9 3 2 2 6 7 void xulie(int s[]){
int i, j, mark;
mark = 0;
i = 0;
int cnt = 0;
int m = 0;
int n = 0;
for(j=0;s[j]!='\0';++j){
while(s[j] > s[j+1]){
n = 1;
++j;
}
if(n){
cnt++;
n = 0;
}
while(s[j] < s[j+1]){
m = 1;
++j;
}
if(m){
cnt++;
m = 0;
}
}
printf("%d\n", cnt);
cnt = 0;
while(i<10){
while(s[i] < s[i+1] && i<10){
mark = 0;
printf("%d ", s[i]);
++i;
}
if(i==10) --i;
if(mark == 0 ){
if(i<10)
printf("%d\n", s[i]);
else printf("\n");
mark = 1;
++i;
}
--i;
if(i==10) break;
while(s[i] > s[i+1] && i<10){
mark = 0;
printf("%d ", s[i]);
++i;
}
if(mark == 0){
if(i<10)
printf("%d\n", s[i]);
else printf("\n");
mark = 1;
++i;
}
if(i==10) break;
--i;
}
} 二.问答题(2分/题,共10分)
1.请简述你所了解的C语言的特点 答:简洁,运行速度快,是用汇编来构造的语言,够稳定,Linux系统内核大多数都是用C语言来构造,内存需要自己回收,可以直接控制内存,因为有指针,可能会导致程序的不安全,毕竟程序员不是神,但是自由,可以随意操控内存变量,虽说没有JAVA安全,但那是对于菜鸟而言,C语言的安全程度是针对程序员的变成能力而言,锻炼我们缜密的思维,C语言是面向过程语言。
2.谈谈你对C语言内存管理的认识 答: C语言内存管理分为堆、栈、代码段、扩展段、全局变量区、静态池,堆申请过的内存要及时回收,系统没有自动帮你回收的机制,因为可回收,所以可以大量申请堆内存空间,而栈不会及时回收,所以不会申请很多空间。
3.谈谈你对C语言中数据(各种常量,变量,函数参数,字符串)的存储认识 答: 常亮存取在全局变量区,变量存取在栈中,函数参数存取在栈中,用完直接释放不需要手动释放,字符串看如果存取,如果是动态分配就存取在堆中,如果直接声明,就存取在栈中。
4.谈谈你再解决一个编程问题时使用的方法和技巧 答:编程的时候,经常遇到一些bug,很难去调试,所以就利用gdb 这个强大的调试工具,去调试我们很难找出bug的C程序,利用好调试软件会让我们更轻松的去编程。
5.列举你学过的编程语言,谈谈你对这些语言的认识 答:
JAVA 虽然足够安全,那是因为指针被封装了,导致内存不会轻易被修改,但是不够自由,不如C灵活,而且代码足够长,不简洁。只是应用层开发语言。
C++ 虽然足够强大,面向对象语言,但是由于C++的可操控性太强,不是我们一般程序员能驾驭的。很多bug十分难调,没有几年编程经验,很难灵活的使用C++ 去搞大工程的项目,如果只是会语法,那只是表面,真正的C++强大之处没有几十年的经验,无法深深体会这门语言的精华所在
PYTHON 虽然足够简洁,但是由于是用C来开发的脚本语言,不可改变的速度慢,做大型项目,会受到脚本语言的限制,速度太慢,无法让客户体验其安全性,但是最大的优点是语言简洁,功能强大,开发效率极其高,语法比C简洁,开发和lips速度相提并论,如果在Linux下写一些不要求速度的脚本,那python是不二人选
2014.3.12-C语言小测试的更多相关文章
- 通过反汇编C语言小程序学习Liunx汇编语言
大家好! 我是来自山东师范大学的吴乐. 今天在<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...
- c语言小程序以及java生成注释文档方法
c语言小程序:sizeof和strlen() sizeof运算符以字节为单位给出数据的大小,strlen()函数以字符为单位给出字符串的长度,字符和字节不是一回事. char类型用于存储字母和标点符号 ...
- C语言小程序——推箱子(窄字符和宽字符)
C语言小程序——推箱子(窄字符Version) 推箱子.c #include <stdio.h> #include <conio.h> #include <stdlib. ...
- 嵌入式C语言自我修养 13:C语言习题测试
13.1 总结 前面12节的课程,主要针对 Linux 内核中 GNU C 扩展的一些常用 C 语言语法进行了分析.GNU C 的这些扩展语法,主要用来完善 C 语言标准和编译优化.而通过 C 标准的 ...
- Caffe学习系列(12):训练和测试自己的图片--linux平台
Caffe学习系列(12):训练和测试自己的图片 学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测 ...
- C语言小练习之学生信息管理系统
C语言小练习之学生信息管理系统 main.c文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...
- 012-C语言小游戏之推箱子
012-C语言小游戏之推箱子 一.创建游戏地图 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #define ROWS 11 #define COLS 12 char ...
- PHP中使用PDO操作事务的一些小测试
关于事务的问题,我们就不多解释了,以后在学习 MySQL 的相关内容时再深入的了解.今天我们主要是对 PDO 中操作事务的一些小测试,或许能发现一些比较好玩的内容. 在 MyISAM 上使用事务会怎么 ...
- Cad 二次开发关于SelectCrossingPolygon和SelectFence返回结果Status为error的小测试
CAD2008的二次开发,有个很奇怪的现象,只要你选择的点集不在当前视图上SelectCrossingPolygon和SelectFence返回结果Status就会为error,所以要获取正确的结果, ...
随机推荐
- 错误 4 自定义工具错误: 无法生成服务引用“DepartMentService”的代码。请检查其他错
原文:错误 4 自定义工具错误: 无法生成服务引用"DepartMentService"的代码.请检查其他错 问题: 错误 4 自定义工具错误: 无法生成服务引用" ...
- oracle之sql语句优化
oracle之sql语句优化 sql语句的优化 1.在where子句中使用 is null 或 is not null 时,oracle优化器就不能使用索引了. 2.对于有连接的列,即使最有一个是静态 ...
- JavaScript中的分号插入机制
原文:JavaScript中的分号插入机制 仅在}之前.一个或多个换行之后和程序输入的结尾被插入 也就是说你只能在一行.一个代码块和一段程序结束的地方省略分号. 也就是说你可以写如下代码 functi ...
- 大约SQL/NoSQL数据库搜索/思考查询
转载请注明出处:jiq•钦's technical Blog Hbase特征: 近期在学习Hbase.Hbase基于行健是建立了索引的,查询速度会很快,全然实时. 可是Hbase要基于行健之外的字段进 ...
- C语言优化实例:为了消除嵌套switch-case聪明的做法
我们有可能会写出或者遇到类似这种代码: C/C++ switch (expr1) { case label11: switch (expr2) { case label21: // do someth ...
- 计数排序(C语言版本)
让我们来谈谈数的排序思维: 计数排序假定待排序的全部元素都是介于0到K之间的整数.计数排序使用一个额外的数组countArray.当中第i个元素是待排序数组array中值等于i的元素的个数.然后依据数 ...
- C# 你不能调用的问题剪贴板线程
最近在做一个项目,需要使用线程,并使用剪贴板,头发得到较少的数据在剪贴板上后,现在的孩子线程创建一个子线程,我特别困惑,上网查资料.最后,得到最终的.下面的例子现在将概括解: 第一步: public ...
- 从头开始学JavaScript (十二)——Array类型
原文:从头开始学JavaScript (十二)--Array类型 一.数组的创建 注:ECMAscript数组的每一项都可以保存任何类型的数据 1.1Array构造函数 var colors = ne ...
- [POJ 3311]Hie with the Pie——谈论TSP难题DP解决方法
主题连接: id=3311">http://poj.org/problem?id=3311 题目大意:有n+1个点,给出点0~n的每两个点之间的距离,求这个图上TSP问题的最小解 ...
- C#中实现WebBrowser控件的HTML源代码读写
原文:C#中实现WebBrowser控件的HTML源代码读写 C#中实现WebBrowser控件的HTML源代码读写http://www.blogcn.com/user8/flier_lu/index ...