2017.11.19C练习

C语言试题
//编程环境32位机器

一、选择题(15题,共30分)
1. 假设目录中存在若干文件fil出其中的编号为1、3、5的e_num.txt(num表示文件编号,1~10),使用以下( C )通配符可以挑选文件。
[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. 下面函数的功能是( A )。

int fun (char*x)
{
    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. 执行下面语句后的输出结果为( D )。

int i = -1;
    if (i < =0)
        printf(“****\n”);
            i = 2;
        else 
        printf(“%%%%\n”);

[A] **
[B] %%
[C] %%%%
[D] 有语法错误,不能正确执行
8. 下面的程序运行结果为( B )。

#include <stdio.h>
int main(void)
{
    int x = 3, y = 1, z = 0;
    if(x = y + z)
        printf(“****”);
    else
        printf(“####”);
}

[A] 语法有错误,不能编译
[B] **
[C] ####
[D] 能编译,不能连接
这里写图片描述
9. 下述程序的输出结果是( C )。

int main(void)
{ 
    int Y=100;
    while(Y--);
    printf(“Y=%d”,Y);
}

[A] Y=0
[B] Y=1
[C] Y=-1
[D] Y=随机数
这里写图片描述
10. 结构体DATA定义如下,则sizeof(struct DATA)的值为( C )。

struct DATA 
{ 
float f1; //sizeof(float) "4字节"
int i;//sizeof(int) "4字节"
char  c2; //sizeof(char) "1字节"
};
//sizeof()取共同体中最长的长度,补全,所以应该是12字节

[A] 6
[B] 8
[C] 12
[D] 16
11. 下述程序第二次的输出结果为( B )。

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”;
            //归并结果应为abcdefghijklmnpq
            char c[80], *p;
            int i = 0, j= 0, k = 0;
            while( a[i] != ’\0’ && b[j] != ‘\0’ )
            {
                if ( a[i] < b[j] )  { ( ①A ) } //应该把a[i]的值给c[k] 
                else { ( ②D ) }//否则把b[j]的值给c[k]  
                k++;
            }
            c[k] = ‘\0’;
          //判断:如果a[i]中全部比较完,只需要把b[j]中元素依次给指针*p并追加到c[k]之后 
             p = b + j;  
            else
            //否则,就是b[j]先比较完,只需要把a[i]中元素依次给指针*p并追加到c[k]之后
              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(“extern”是定义在所有函数之外的全局变量,它可以被所有的函数访问,在所有函数体的内部是有效的,所以函数之间可以通过外部变量直接传递数据)
[B] register(“register”说明只能用于说明函数中的变量和参数中的形参,因此不允许将外部变量或静态变量说明为register)
[C] auto(“auto”类定义的自动变:鞋实质上是一个函数内部的局部变量,作用域是在所说明的函数中)
[D] static(“static”为允许本源文件中所有函数用的全局变量。)
15. 以下程序的运行结果为( B )。

        void sub(int x, int y, int *z)
            { *z = yx ; }
            int main(void)
            {
                int a,b,c ;
                sub(10, 5, &a) ;//a = 5 - (-5)
                sub(7, a, &b) ;//b = a - 7 = -12
                sub(a, b, &c) ;//c = -12 - (-5printf( “%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语言表达式为( (2 < x < 3) || (x < -10) )。
2. 若有以下定义和语句,则p[0]引用的是a数组元素中的( 第1行第1列地址 ),(p[1]+1)引用的是a数组元素中的( 第3行第2列地址 )。

int *p[3], a[6], i;
for( i = 0; i < 3; i++) p[i] = &a[2*i];
  1. 若有以下输入(代表回车换行符),则下面程序的运行结果为( )。
12<CR>
int main(void)
{
    int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};//34列数组
    int (*p)[4], i, j;//根据题意i此时为1,j此时为2
    p = a;
    scanf(“%d,%d”,&i,&j);
    printf(“%d\n”, *(*(p+i)+j));
    return 0;
}
  1. shell脚本的本质是( 命令行命令简单的组合到一个文件里面 )。
  2. gcc的编译步骤按先后顺序分别为( 预处理(生成预编译文件)、编译(生成汇编代码)、汇编(生成目标文件)、链接(生成可执行文件) )。
  3. make工程管理器根据( 文件时间戳 )来自动发现更新过的文件从而减少编译的工作量。
    三、简答题(1题4分,第2题10分,共15分)
  4. 请写出定义一个求最小的宏(5分)
#define MIN(a, b)  ((a < b) ? a : b)
  1. 写出1~20偶数的和,用do…while编程来实现(10分)

    int i = 0, sum = 0;
    do
    {
        if(i % 2 == 0)//从0开始能整除2的都是偶数
        sum +=i;//sum = sum + i;
        i++;
    }while(i <= 20);

四、编程题(3题,每题12分,共39分)(编程题写出思路并且正确可以得一半分)
1. 下面findmax函数将计算数组中的最大元素及其下标值,请编写该函数。(13分)
Int findMax(int * array, int len, int * pData);

int findMax(int *array, int len, int * pData)
{   
    int i = 0, j = 0;
    //i是数组下标,j是变量表示最大的下标
    do
    {
        if(array[i] > array[j])
        j = i;
        i++;

    }while(i <= len);
    printf("数组中最大元素是: %d\n",a[j]);
    printf("数组中最大元素的下标是: %d\n",j);
    return 0;
}
  1. char * stringcat(char * dest, const char * str); (13分)
    功能:把src所指空间的字符连接到dest所指字符串的后面。
//src为源字符串,dest为目标字符串
char *stringcat(char* dest, const char* str)
{
    char* src = dest;
    while(*src)
    {src++;}//找到dest的尾部
    while(*str)
    {*src++ = *str++;}//str追加到dest之后
    *src = '\0';
    return dest;
}
  1. 写一个接口,把去年1月份的每天的平均温度进行排序。(13分)
    Void sort(int * array, int len);
void sort(int *array, int len)
{
    int i = 0, j = 0, buf = 0;
    while(i < len)
    {
        for(j=0;j<lenlj++)
        {
            if(array[i] > array[j])//i位置的元素比j位置的大
            {
                buf = array[i];//i位置元素拿手里
                array[i] = array[j];//j位置元素给i位置
                array[j] = buf;//手里的给j位置
            }
        }
    }
    return array[];
}
安装Oracle19c需要一些步骤和准备工作。下面是在Ubuntu 22.04上安装Oracle19c的一般步骤: 1. 首先,在Ubuntu 22.04上安装一些先决条件软件包,如libaio1和bc等。可以使用以下命令进行安装: ``` sudo apt-get install libaio1 bc ``` 2. 接下来,需要创建一个名为oracle的用户和组,并设置相关环境变量。可以使用以下命令进行操作: ``` sudo useradd -m -s /bin/bash oracle sudo passwd oracle sudo usermod -aG sudo oracle echo "oracle soft memlock unlimited" | sudo tee -a /etc/security/limits.conf echo "oracle hard memlock unlimited" | sudo tee -a /etc/security/limits.conf echo "session required pam_limits.so" | sudo tee -a /etc/pam.d/login ``` 然后,切换到oracle用户并设置相关环境变量: ``` su - oracle echo "export ORACLE_BASE=/opt/oracle" >> .bashrc echo "export ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1" >> .bashrc echo "export PATH=$PATH:$ORACLE_HOME/bin" >> .bashrc source .bashrc ``` 3. 下载并解压Oracle19c安装文件。可以从Oracle官方网站下载适用于Linux的Oracle Database 19c软件安装包,然后解压缩到适当的目录。例如: ``` mkdir -p /opt/oracle tar -xzvf oracle-database-xxxxxxxxxx.tar.gz -C /opt/oracle ``` 4. 运行Oracle Installer来安装Oracle19c。使用以下命令进入安装目录并运行installer: ``` cd /opt/oracle/database ./runInstaller ``` 在图形界面中,按照向导的提示选择相应的选项,例如安装类型、Oracle数据库软件位置和数据库配置等。然后,等待安装完成。 5. 安装过程结束后,可以使用Database Configuration Assistant(DBCA)来创建和配置Oracle数据库。运行以下命令启动DBCA: ``` dbca ``` 按照向导的提示进行数据库创建和配置,例如选择数据库类型、命名等。 完成上述步骤后,您应该能够在Ubuntu 22.04上成功完成Oracle19c的安装。请注意,在实际安装过程中可能会遇到一些问题和异常情况,根据具体需求和系统环境可能需要进行一些额外的配置和调整。因此,建议在安装前仔细阅读官方文档和参考资料以获得更全面和详细的指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值