题海拾贝No.1|LinuxC语言小题目集锦

题目

  1. 若有以下定义: char a; int b;float c; double d; 则表达式a*b+d-c值的类型为( )
    A、 float
    B、 int
    C、 char
    D、 Double

  2. 在位运算中,某操作数右移3位,其结果相当于?
    A.操作数除以6
    B.操作数乘以6
    C.操作数除以8
    D.操作数乘以8已用

  3. 有以下程序
    unsigned int a = 0x20;
    a = a >> 2;
    a = ~a;
    执行完该程序后变量a的值是多少?
    A.-9
    B.0xf7
    C.0xfffffff7
    D.0xdf

  4. 下列语句正确的是?
    A.unsigned int i; scanf(“%d”,i);
    B.unsigned int i; scanf(“%f”,i);
    C.unsigned int i; scanf(“%u”,&i);
    D.unsigned int i; scanf(“%u”,i);

  5. 执行下列程序段后,变量a,b,c的值分别是?。
    int x=10,y=9;
    int a,b,c;
    a=(x==y)?–x:++y;
    b=x++;
    c=y;
    A.a=9,b=9,c=9
    B.a=10,b=10,c=10
    C.a=10,b=11,c=10
    D.a=9,b=10.c=9

  6. 下列说法中正确的是______。
    A、在switch语句中一定要使用break语句
    B、在switch语句中不一定要使用break语句
    C、break语句是switch语句的一部分
    D、在switch语句中不能使用break语句

  7. 以下代码,最后输出的num值是多少?
    int num = 100;
    switch( num ) {
    case 50:
    num = 100;
    case 100:
    num = 50;
    default:
    num = 200;
    }
    printf("%d\n", num);
    A.case100的50
    B.csae50的100
    C.default的200
    D.原来的100

  8. 以下程序执行后,i的值是多少?
    int i = 0;
    do{
    i++;
    }while(i>0);
    i++;
    A.1
    B.2
    C.0
    D.没结果

  9. 在32位环境中,以下数组申请了多大内存空间,int data[] = {1,2,3,4,5};
    A.0
    B.5
    C.10
    D.20

  10. 如何不使用gets和scanf函数,利用while实现字符串输入输出呢!简单编程,写伪代码实现。


	char str[128] = {0};
	char c;
	int i = 0;

	while(1)
	{
		c = getchar();
		if(c == '\n')
		{
			str[i] = '\0';
			break;
		}
		str[i] = c;
		i++;
	}
	printf("%s\n",str);

部分答案分析

题1

编写个test.c来测试一下

#include <stdio.h>

int main(int argc, const char *argv[])
{
    char a = 1;//1
    int b = 1;//4
    float c = 1;//4
    double d = 1;//8
    printf("%d\n", sizeof(a*b+d-c));//1*4+8-4=8
    return 0;
}

在Linux里执行命令查看结果

$gcc -o test test.c
$./test
8

题2

编写个test.c来测试一下

#include <stdio.h>

int main(int argc, const char *argv[])
{
    unsigned char a = 0x80;
    printf("%u\n",a);

    a = a >> 3;
    printf("%#x\n", a);//打印输出带格式16进制数
    printf("%u\n", a);//打印输出带格式16进制数
    
    return 0;
}

在Linux里执行命令查看结果

$gcc -o test test.c
$./test
128
0x10
16

缩小了八倍

题3

编写个test.c来测试一下

#include <stdio.h>

int main(int argc, const char *argv[])
{
    unsigned int a = 0x20;//4个字节,即0000 0000 0010 0000
    a = a >> 2;//右移两位,得0000 0000 0000 1000
    a = ~a;//取反,得1111 1111 1111 0111
    printf("%#x\n", a);//打印输出带格式16进制数
    return 0;
}

在Linux里执行命令查看结果

$gcc -o test test.c
$./test
0xfffffff7

最后结果7个f,可能是系统问题吧我是这么认为的

题7

编写个test.c来测试一下

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int num = 100;
	switch( num )
	{
		case 50:
			num = 100;
		case 100:
			num = 50;
		default:
			num = 200;
	}
	printf("%d\n", num);

	return 0;
}

在Linux里执行命令查看结果

$gcc -o test test.c
$./test
200

题8

编写个test.c来测试一下

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int i = 0;
	do
	{
		i++;
	}
	while(i>0);
	i++;
	printf("%d\n",i);
	return 0;
}

在Linux里执行命令查看结果

$gcc -o test test.c
$./test

陷入了死循环,程序没退出也没打印结果

题9

编写个test.c来测试一下

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int data[] = {1,2,3,4,5};//int类型是4字节,分配了5个元素,所以4*5=20
	printf("%d\n",sizeof(data));
	return 0;
}

在Linux里执行命令查看结果

$gcc -o test test.c
$./test
20
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值