C语言基础练习(二)
来源:互联网 发布:linux makefile教程 编辑:程序博客网 时间:2024/06/08 12:52
C语言试题
一、选择题(15题,共30分)
- 假设目录中存在若干文件file_num.txt(num表示文件编号,1~10),使用以下( C )通配符可以挑选出其中的编号为1、3、5的文件。
[A] file_*.txt ##############(*匹配0到任意字符)
[B] flie_?.txt##############(?匹配单个任意字符)
[C] file_[135].txt ###########(名字为1或3或5的文件)
[D] file_[^135].txt##########(除了名字为1、3、的文件) - 文件权限 r-x-wxr–对应的八进制表示形式为( D )
[A] 0536 [B] 0654 [C] 0656 [D] 0534
分析:没找到正确答案,可能是题目写错了,r为4,x为1,wxr为7,相加等于12,只有D选项相符。 - 在C语言中,要求运算数必须是整型的运算符是( B )。
[A] / [B] ++ [C] != [D] % - C语言中,逻辑“真”等价于( C )。
[A] 大于零的数 [B] 大于零的整数 [C] 非零的数 [D] 非零的整数
分析:C语言中,非0即真。 - 下面函数的功能是( A )。
int fun (char*x){char*y=x;##########定义一个指针y与x相等。while(*y++);########令y指向\0的后一位。return(y-x-1);#######返回字符串长度。}
[A] 求字符串的长度
[B] 比较两个字符串的大小
[C] 将字符串x复制到字符串y
[D] 将字符串x连接到字符串y后面
6. C语言程序的三种基本程序是( A )。
[A] 顺序结构,选择结构,循环结构
[B] 递归结构,循环结构,转移结构
[C] 嵌套结构,递归结构,顺序结构
[D] 循环结构,转移结构,顺序结构
7. 执行下面语句后的输出结果为( D )。
int i = -1; if (i < =0) printf(“****\n”); i = 2; else printf(“%%%%\n”);
[A] ** [B] %% [C] %%%% [D] 有语法错误。不能正确执行
思路:if若有多与一条的命令,应用{}括上。
8. 下面的程序运行结果为( C )。
#include <stdio.h> int main(void){ int x = 3, y = 1, z = 0; if(x = y + z) printf(“****”); else printf(“####”); }
[A] 语法有错误,不能编译 [B] ** [C] #### [D] 能编译,不能连接
思路: “=”是赋值,在if判断中总能成立,逻辑判断相等为“==”
9. 下述程序的输出结果是( A )
int main(void){ int Y=100;while(Y--);printf(“Y=%d”,Y);
[A] Y=0 [B] Y=1 [C] Y=-1 [D] Y=随机数
思路:Y减到0后,在逻辑判断中为假,退出循环。
10. 结构体DATA定义如下,则sizeof(struct DATA)的值为( )。
struct DATA { float f1; int i;char c2; };
[A] 6 [B] 8 [C] 12 [D] 16
思路:float,int为都为4字节;char为1个字节,根据内存补齐原则,占4字节。共12个字节。
11. 下述程序第二次的输出结果为( )。
int main(void) { extern int a; int b = 0; static int c; a += 3; other(); b += 3; other(); } int a = 5; other() { int b = 3; static int c = 2; a += 5; b += 5; c += 5; printf("%d,%d,%d\n", a, b, c); c=b; }
[A] 13,0,13 [B] 18,8,13 [C] 13,8,13 [D] 18,8,0
12. 以下程序的功能是将字符串s中所有的字符c删除,那么?处缺少的语句为:( )。
#include <stdio.h>int main(void){ char s[80] ; int i, j ; gets(s) ; for ( i = j = 0 ; s [i] != ‘\0’ ; i++ ) if ( s [i] != ‘c’ ) ??????; s [ j ] = ‘\0’ ; puts ( s ) ; return 0 ;}
[A] s [ j++] = s [ i ] [B] s [ ++j ] = s [ i ]
[C] s [ j ] = s [ i ]; j++ [D] s [ j ] = s [ i ]
13. 下面程序的功能是将已按升序排好序的两个字符串a和b中的字符,按升序归并到字符串c中,请为程序中的空白处选择适当的语句。 ( A D D)
#include <stdio.h> int main(void) { char a[ ] = “acegikm”; char b[ ] = “bdfhjlnpq”; char c[80], *p; int i = 0, j= 0, k = 0; while( a[i] != ’\0’ && b[j] != ‘\0’ ) { if ( a[i] < b[j] ) { ( /*c[k] = a[i]; i++;*/ ) } else { ( /*c[k] = b[j]; j++;*/ ) } k++; } c[k] = ‘\0’; if ( /*b[j] != ‘\0’*/ ) p = b + j; else p = a + i; strcat ( c , p ); puts ( c ); }
① [A] c[k] = a[i]; i++; [B] c[k] = b[j]; i++;
[C] c[k] = a[i]; j++; [D] c[k] = a[j]; j++;//如果a[i]小于b[j],将a[i]赋值给c[k],i指向a的下一项
② [A] c[k] = a[i]; i++; [B] c[k] = b[j]; i++;
[C] c[k] = a[i]; j++; [D] c[k] = b[j]; j++;//如果a[i]大于b[j],将b[j]赋值给c[k],j指向b的下一项
③ [A] a[i] = ‘\0’ [B] a[i] != ‘\0’
[C] b[j] = ‘\0’ [D] b[j] != ‘\0’//如果b[j]不为\0,则b[j]及之后的项未被导入c。
14. 在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( )。
[A] extern####可调用在别处声明的变量
[B] register ##请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率
[C] auto#####仅在语句块内部使用,初始化可为任何表达式
[D] static####在内部调用可保存改变的值,在外部调用则对其他函数不可见
15. 以下程序的运行结果为( B )。
void sub(int x, int y, int *z) { *z = y – x ; } int main(void) { int a,b,c ; sub(10, 5, &a) ;//a=5-10 sub(7, a, &b) ;//b=a-7 sub(a, b, &c) ;//c=b-a printf( “%4d,%4d, %4d\n”,a,b,c); }
[A] 5, 2, 3 [B] -5, -12, -7 [C] -5, -12, -17 [D] 5, -2, -7
二、填空题(6题,第5题4分,其余每空2分,共16分)
1 . 条件“2 < x < 3或x < -10”的C语言表达式为。
(x>2&&x<3)||x<-10
2 . 若有以下定义和语句,则*p[0]引用的是a数组元素中的( a[0] ),*(p[1]+1)引用的是a数组元素中的( a[3] )。
int *p[3], a[6], i;
for( i = 0; i < 3; i++) p[i] = &a[2*i];
3. 若有以下输入,则下面程序的运行结果为( )。
1,2<CR>int main(void){ int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[4], i, j; p = a; scanf(“%d,%d”,&i,&j); printf(“%d\n”, *(*(p+i)+j)); return 0;}
分析:a是3行4列的数组,p是四个元素的数组,p=a即p指向a的第一行,则(p+1)为a的第二行,((p+1)+2)为第二行的第三个元素
4. shell脚本的本质是( shell命令的有序集合 )。
5. gcc的编译步骤按先后顺序分别为( 预处理、 编译、 汇编、 链接 )。
6. make工程管理器根据( 时间戳 )来自动发现更新过的文件从而减少编译的工作量。
三、简答题(1题4分,第2题10分,共15分)
- 请写出定义一个求最小的宏(5分)
#define min ((a)>(b)?b:a)
- 写出1~20偶数的和,用do…while编程来实现(10分)
#include <stdio.h>int main(void){ int i=2,j=0; do { j=j+i; i=i+2; }while(i<21); printf("%d",j); return 0;}
四、编程题(3题,每题12分,共39分)(编程题写出思路并且正确可以得一半分)
1.下面findmax函数将计算数组中的最大元素及其下标值,请编写该函数。(13分)
Int findMax(int * array, int len, int * pData)//array表示数组名字,len表示数组长度,pData表示array的首地址 { int max = 0;//最大元素的下标 int i=0; for(i=0; i < len; i++) { if((*pData) > array[max])//如果当前元素大于现最大元素 { max = i; } pData++; } pData = array+max; return *pData; }
2.char * stringcat(char * dest, const char * str); (13分)
功能:把str所指空间的字符连接到dest所指字符串的后面。
char * stringcat(char *dest, const char *str) { char *a = dest; //储存dest头指针 while (*dest++); //指向\0的后一位 dest -= 1; //指向\0 while (*dest++ = *str++);//str赋值给dest,包含\0 return a; }
3.写一个接口,把去年1月份的每天的平均温度进行排序。(13分)
void sort(int *array, int len) //array是存储每天平均温度的数组,len为天数 { int i = 0,j = 0; int buf = 0; for(i=0; i < len; i++) { for(j=i; j < len; j++) { if(array[i] < array[j]) { buf=array[i]; array[i]=array[j]; array[j]=buf; } } } }
- C语言基础练习(二)
- c语言练习(二)
- C语言练习(二)
- C语言基础 (练习)
- c语言基础练习
- C语言基础练习
- C语言练习作业(二)
- C语言笔试练习(二)
- C语言基础(二)
- C语言基础(二)
- C语言基础(二)
- C语言基础(二)
- C 语言基础(二)
- C语言基础(二)
- c语言基础(二)
- C语言基础(二)
- C语言基础(二)
- c语言基础(二)
- 代码即逻辑 -- 聊聊 Effects 及在 Angular 中的应用
- python大作战之集合
- 宏基因组实战10. 绘制圈图-Circos安装与使用
- Python 进程process语法
- php继承详解
- C语言基础练习(二)
- Android开发书籍推荐 & 学习路线图 & 资料汇整
- 查看linux线程的CPU占用率
- [Delphi] FMXUI
- HDOJ2106 decimal system
- 更好用的DialogFragment
- Netty实现原理浅析
- 20171123 输出字符大小
- spring中的事务管理(五)