c语言作业(二)
来源:互联网 发布:知乎日报 搜索 编辑:程序博客网 时间:2024/06/06 03:36
一、选择题(15题,共30分)
1.假设目录中存在若干文件file_num.txt(num表示文件编号,1~10),使用以下( )通配符可以挑选出其中的编号为1、3、5的文件。
[A] file_*.txt [B] flie_?.txt [C] file_[135].txt [D] file_[^135].txt
我觉得选c,因为题目中说的是挑选1、3、5的文件,而在linux所学到的通配符,只有c符合。
2.文件权限 r-x-wxr–对应的八进制表示形式为( )
[A] 0536 [B] 0654 [C] 0656 [D] 0534
由题可知,r-x -wx r-- 4+0+1 0+2+1 4+0+0 为5 3 4,所以选D。
3.在C语言中,要求运算数必须是整型的运算符是( )。
[A] / [B] ++ [C] != [D] %
A为求除数,B为++运算,C为不等于,D为取余数,只有D运算时必须是整形。
4.C语言中,逻辑“真”等价于( )。
[A] 大于零的数 [B] 大于零的整数 [C] 非零的数 [D] 非零的整数
逻辑“真”:非0即真,所以选C
5.下面函数的功能是( )。
int fun (char*x)
{
char*y=x;
while(*y++);
return(y-x-1);
}
[A] 求字符串的长度
[B] 比较两个字符串的大小
[C] 将字符串x复制到字符串y
[D] 将字符串x连接到字符串y后面
这道题看不懂,经过百度如下while(*y++); //将指针y移置字符串最末端。即y指向'\0'y-x为整个字符串+'\0'的长度。y-x-1即为字符串的长度。等效于strlen()函数。
6.C语言程序的三种基本程序是( )。
[A] 顺序结构,选择结构,循环结构
[B] 递归结构,循环结构,转移结构
[C] 嵌套结构,递归结构,顺序结构
[D] 循环结构,转移结构,顺序结构
答案为A,不解释
7.执行下面语句后的输出结果为( )。
int i = -1;
if (i < =0)
printf(“**\n”);
i = 2;
else
printf(“%%%%\n”);
[A] ** [B] %% [C] %%%% [D] 有语法错误。不能正确执行
答案为D,if else需要带{}
8.下面的程序运行结果为( )。 #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,if语句中x = y+z 中的=号是赋值,并不是 == 号,所以直接执行printf("****");
9.下述程序的输出结果是( )。
int main(void)
{
int Y=100;
while(Y–);
printf(“Y=%d”,Y);
}
[A] Y=0 [B] Y=1 [C] Y=-1 [D] Y=随机数
答案为C,while(Y--)是先取值后减,由程序可知,当Y取到0时,程序执行printf打印,而这时,Y减1=-1,所以打印出来的结果为-1
10.结构体DATA定义如下,则sizeof(struct DATA)的值为( )。
struct DATA
{
float f1;
int i;
char c2;
};
[A] 6 [B] 8 [C] 12 [D] 16
因为在32位编译器下,int,float为4字节,char为1字节,4+4+1=9,9比8大比12小,所以补齐到12,选C
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
答案为C,但是,不懂
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 ]
答案为A,但是,不懂
13.下面程序的功能是将已按升序排好序的两个字符串a和b中的字符,按升序归并到字符串c中,请为程序中的空白处选择适当的语句。 ( )
#include
不懂
14.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( )。
[A] extern [B] register [C] auto [D] static
D,static静态存储类型主要有两点用途①让一个变量长期有效,而不管其是在什么地方被申明。 int fun1() { static int s_value = 0; .... }那么fun1不管在什么地方被调用,当函数退出后,s_value最后的值将一直会被系统保存(相当于一个全局变量),下次s_value再被用到时,也即当fun1()再次被调用时,s_value初始值将是最近被保存过的值(请注意s_value初始化操作只会被执行一次,即上述s_value =0 这个语句)。②避免多个文件使用了相同的变量名而导致冲突比如有多个文件,分别由几个人独立开发的。假定他们在各自的文件中定义相同的“全局”变量名(仅仅指在他们独自的文件中全局),当系统集成时,由于他们使用了名字一样的“全局”变量,导致有难于遇见的问题。解决这个问题方便的做法就是在各自文件中,在相同的全局变量申明前加上static修饰符。这样系统就会为他们分配不同的内存,互不影响了。
15.以下程序的运行结果为( )。
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
答案为B,10=5 - &a,a=-5 7= a -&b, b=a -7=-12 a=b - &c, c=-7
二、填空题(6题,第5题4分,其余每空2分,共16分)
1.条件“2 < x < 3或x < -10”的C语言表达式为( )。
(2<x&x<3)|(x<-10)
2.若有以下定义和语句,则p[0]引用的是a数组元素中的( ),(p[1]+1)引用的是a数组元素中的( )。
int *p[3], a[6], i;
for( i = 0; i < 3; i++) p[i] = &a[2*i];
a[0],a[3]不懂
3.若有以下输入(代表回车换行符),则下面程序的运行结果为( )。
1,2
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;
}
答案为7.不会......
4.shell脚本的本质是( )。
shell命令的集合
5.gcc的编译步骤按先后顺序分别为( )。
预处理、编译、汇编、链接
6.make工程管理器根据( )来自动发现更新过的文件从而减少编译的
时间戳
三、简答题(1题4分,第2题10分,共15分)
1.请写出定义一个求最小的宏(5分)
#define MIN(a,b) ((a)<(b))?(a):(b)
2.写出1~20偶数的和,用do…while编程来实现(10分)
#include<stdio.h>{ int i = 1,sum = 0; do { if(i%2 == 0) sum = sum + i; i++; }while(i<=20); printf("%d", sum); return 0;}
四、编程题(3题,每题12分,共39分)(编程题写出思路并且正确可以得一半分)
1.下面findmax函数将计算数组中的最大元素及其下标值,请编写该函数。(13分)
Int findMax(int * array, int len, int * pData);
{ Int findMax(int * array, int len, int * pData); int max=0; int i=0; for(i=0;i<len;i++) { if(array[i]>array[max]) { max=i; } } pData=array+max; return *pData; } 不懂
2.char * stringcat(char * dest, const char * str); (13分)
功能:把src所指空间的字符连接到dest所指字符串的后面。
char * stringcat(char * dest, const char * str) { char* save_head=dest; while(*dest++); dest-=1; while(*dest++=*str++); return save_head; } 不懂
3.写一个接口,把去年1月份的每天的平均温度进行排序。(13分)
Void sort(int * array, int len);
void sort(int * array, int 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语言作业(2)
- 第一次作业(c语言)
- 第二次作业(c语言)
- c语言作业(一)
- C语言作业(2)
- C语言作业(3)
- C语言作业(4)
- c语言作业(四)
- 软件工程作业二(贪心猫游戏C语言设计)倪萍2011212027&袁娟2011212025
- C语言(二)
- 初学C语言作业(进位制)
- 科锐C语言-作业04(函数)
- 科锐C语言-作业05(数组)
- C语言练习作业(一)
- 利用tensorflow训练自己的图片数据(2)——输入图片处理
- mariadb
- 广告技术和区块链的精彩
- VS2013 c++调用python程序
- angularjs实现模糊查询添加程序
- c语言作业(二)
- 面向对象银行管理系统JAVA代码
- 做机械臂导航时遇到的问题2:solidworks用sw_urdf插件生成urdf文件包后,需要修改的部分
- 全选批量删除 添加 查询
- 机器学习&&深度学习
- 【ORA】ORA-4031错误分析和解决办法
- su、sudo、sudo su、sudo -i的用法和区别
- Java基础
- 集群cluster篇-----2.HAProxy服务器 、 Keepalived热备 、 Keepalived+LVS