题目
-
若有以下定义: char a; int b;float c; double d; 则表达式a*b+d-c值的类型为( )
A、 float
B、 int
C、 char
D、 Double -
在位运算中,某操作数右移3位,其结果相当于?
A.操作数除以6
B.操作数乘以6
C.操作数除以8
D.操作数乘以8已用 -
有以下程序
unsigned int a = 0x20;
a = a >> 2;
a = ~a;
执行完该程序后变量a的值是多少?
A.-9
B.0xf7
C.0xfffffff7
D.0xdf -
下列语句正确的是?
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); -
执行下列程序段后,变量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 -
下列说法中正确的是______。
A、在switch语句中一定要使用break语句
B、在switch语句中不一定要使用break语句
C、break语句是switch语句的一部分
D、在switch语句中不能使用break语句 -
以下代码,最后输出的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 -
以下程序执行后,i的值是多少?
int i = 0;
do{
i++;
}while(i>0);
i++;
A.1
B.2
C.0
D.没结果 -
在32位环境中,以下数组申请了多大内存空间,int data[] = {1,2,3,4,5};
A.0
B.5
C.10
D.20 -
如何不使用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