C语言试题 //编程环境32位机器 Ps:会做的题目,简要写出分析过程;不会的度娘写出思路!
一、选择题(15题,共30分)
1.假设目录中存在若干文件file_num.txt(num表示文件编号,1~10),使用以下(C)通配符可以挑选出其中的编号为1、3、5的文件。
[A] file_.txt [B] flie_?.txt [C] file_[135].txt [D] file_[^135].txt
2.文件权限 r-x-wxr--对应的八进制表示形式为( D )
[A] 0536 [B] 0654 [C] 0656 [D] 0534
3.在C语言中,要求运算数必须是整型的运算符是( D )。
[A] / [B] ++ [C] != [D] %
4.C语言中,逻辑“真”等价于( C)。
[A] 大于零的数 [B] 大于零的整数 [C] 非零的数 [D] 非零的整数
5.下面函数的功能是( )。
int fun (charx)
{
char*y=x;
while(*y++);
return(y-x-1);
}
[A] 求字符串的长度 [B] 比较两个字符串的大小 [C] 将字符串x复制到字符串y [D] 将字符串x连接到字符串y后面 6.C语言程序的三种基本程序是( A )。 [A] 顺序结构,选择结构,循环结构 [B] 递归结构,循环结构,转移结构 [C] 嵌套结构,递归结构,顺序结构 [D] 循环结构,转移结构,顺序结构 7.执行下面语句后的输出结果为( A )。 int i = -1; if (i < =0) printf(“****\n”); i = 2; else printf(“%%%%\n”); [A] **** [B] %% [C] %%%% [D] 有语法错误。不能正确执行
改错 D 因为 if else 之间不能加其他语句
8.下面的程序运行结果为( A )。 #include <stdio.h> int main(void) { int x = 3, y = 1, z = 0; if(x = y + z) printf(“****”); else printf(“####”); } [A] 语法有错误,不能编译 [B] **** [C] #### [D] 能编译,不能连接
改错 B = 为赋值 然后x等于1 为真
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为零时 进入while中还可以自减一次 所以为C
10.结构体DATA定义如下,则sizeof(struct DATA)的值为( C )。 struct DATA { float f1; int i; char c2; }; [A] 6 [B] 8 [C] 12 [D] 16
空间对其 所以char也占4个字节
11.下述程序第二次的输出结果为( C )。 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删除,那么空白处缺少的语句为:( A )。 #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中,请为程序中的空白处选择适当的语句。 ( )
#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] ) { ( ) }
else { ( ) }
k++;
}
c[k] = ‘\0’;
if ( ) 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] c[k] = a[i]; i++; [B] c[k] = b[j]; i++;
[C] c[k] = a[i]; j++; [D] c[k] = b[j]; j++;
③ [A] a[i] = ‘\0’ [B] a[i] != ‘\0’
[C] b[j] = ‘\0’ [D] b[j] != ‘\0’
14.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( D )。
[A] extern [B] register [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) ;
sub(7, a, &b) ;
sub(a, b, &c) ;
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分)
- 条件“2 < x < 3或x < -10”的C语言表达式为( (2 < x < 3 )|| x < -10 )。
- 若有以下定义和语句,则p[0]引用的是a数组元素中的( 第一位 a{0} ),(p[1]+1)引用的是a数组元素中的( a{4} )。 int p[3], a[6], i; for( i = 0; i < 3; i++) p[i] = &a[2i];
- 若有以下输入(<CR>代表回车换行符),则下面程序的运行结果为( )。 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; }
- shell脚本的本质是( 把各类命令预先放在一个文件中 然后一次性运行)。
- gcc的编译步骤按先后顺序分别为( 预处理 编译 汇编 链接)。
- make工程管理器根据( 文件时间戳 )来自动发现更新过的文件从而减少编译的工作量。 三、简答题(1题4分,第2题10分,共15分) 1.请写出定义一个求最小的宏(5分)
include <stdio.h>
#define MIN<x,y> ((x)<(y)?(x):(y)) 2.写出1~20偶数的和,用do...while编程来实现(10分) 四、编程题(3题,每题12分,共39分)(编程题写出思路并且正确可以得一半分) 1.下面findmax函数将计算数组中的最大元素及其下标值,请编写该函数。(13分) Int findMax(int * array, int len, int * pData); 2.char * stringcat(char * dest, const char * str); (13分) 功能:把src所指空间的字符连接到dest所指字符串的后面。 3.写一个接口,把去年1月份的每天的平均温度进行排序。(13分) Void sort(int * array, int len);
老师有的题我知做了一半坐不下去了 我准备周末周6听完课在吧他全部以写