龙空技术网

C语言笔试题(一)

有灵魂的程序猿 112

前言:

今天大家对“c语言输出0100”大致比较关注,咱们都想要剖析一些“c语言输出0100”的相关知识。那么小编也在网上收集了一些对于“c语言输出0100””的相关知识,希望朋友们能喜欢,咱们快快来学习一下吧!

单选题

struct {

short a;

char b;

float c;

}cs;

sizeof(cs)的值是

A 4

B 5

C 7

D 8

正确答案:D

参考答案:应该是8。 首先看各类型元素占的字节数: short是2字节 char是1字节 float是4字节 过程: 首先short占了2字节,然后轮到char,他只占1但是由于已经有了short的2字节所以整个结构体需要是2字节的倍数,因此char占了1字节之后对齐补上1字节。最后轮到float,4字节,是2的倍数所以不用补。 现在整个结构体就是2+(1+1)+4=8,结构体的大小需要是最长元素的倍数,也就是4的倍数,很显然满足,所以最终答案就是8。

单选题 下面程序段的运行结果是()

int x, y;

x = y = 0;

while (x < 15) y++, x += ++y;

printf("%d,%d", y, x);

A 20,7

B 6,12

C 20,8

D 8,20

正确答案:D

单选题

int a = 5, b = -5;

printf("%d,%d", a%(-4), b%(-4));

上面代码段的输出为()

A 1,-1

B 1,1

C -1,1

D -1,-1

正确答案:A

求余符号的正负取舍和被除数符号相同

多选题 下面声明正确的是()

A int a[5] = {0, 1, 2, 3, 4, 5};

B char a[] = {0, 1, 2, 3, 4, 5};

C char a = {'A', 'B', 'C'};

D int a[5] = {0123};

正确答案:BD

选项D: int a[5] = {0123}; 0123是八进制表示法

单选题 以下程序运行后的输出是()

#include <stdio.h>

int main(void){

int x = 10, y = 20, t = 0;

if (x == y) t = x; x = y; y = t;

printf("%d, %d\n", x, y);

return 0;

}

A 10, 20

B 20, 0

C 10, 0

D 20, 10

正确答案:B

单选题 执行c程序代码

int a = 1;

int b = 0;

int c = 0;

int d = (++a) * (c = 1);

a,b,c,d的值分别为()。

A 2,0,1,2

B 1,0,1,1

C 2,0,1,1

D 2,0,0,2

正确答案:A

单选题 如果c为字符型变量,判断c是否为空格(假设已知空格ASCII码为32)不能使用()

A if(c==32)

B if(c=='32')

C if(c=='\40')

D if(c==' ')

正确答案:B

单选题 假定x=500,下面函数的返回值是 ()

int fun(int x){

int countx = 0;

while (x) {

countx++;

x = x & (x – 1);

}

return countx;

A 2

B 3

C 5

D 6

正确答案:D

500 1 1111 0100

单选题 阅读下面代码,程序会打印出来的值是?

#include <stdio.h>

void f(char **p) { *p += 2; }

void main() {

char *a[] = {"123", "abc", "456"}, **p;

p = a;

f(p);

printf("%s", *p);

}

A 123

B abc

C 456

D 3

正确答案:D

参考答案:*p+=2;就相当于*p=*p+2; 其中*p指向字符串“123”的第一个元素,即‘1’,指针p向后移两个元素的地址,即指向‘3’ 而*(p+2)才是基于p每次向后移一个字符串的长度,即*(p+2)指向“456”

单选题 有如下代码,则 z 的结果为()

int a = 5, b = 6, c = 12;

int z = (a * b - c) / a;

A 6

B 3

C 4

D 5

正确答案:B

单选题 有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是()

struct node

{

char data;

struct node *next;

} a, b, *p = &a, *q = &b;

A a.next=q;

B p.next=&b;

C p->next=&b;

D (*p).next=q;

正确答案:B

单选题 下面程序的运行结果是()

#include <stdio.h>

int main() {

int a=1, b=10;

do {

b-=a;

a++;

}while(b--<0);

printf("a=%d,b=%d\n", a, b);

}

A a=3,b=11

B a=2,b=8

C a=1,b=-1

D a=4,b=9

正确答案:B

单选题 以下程序的输出结果是()

int main() {

int s, i;

for(s = 0, i = 1; i < 3; i++, s += i);

printf("%d\n", s);

}

A 1

B 3

C 5

D 7

正确答案:C

单选题 下列程序的输出是()

#include <stdio.h>

int main(void) {

int a[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, *p[4], i;

for (i = 0; i < 4; i++) p[i] = &a[i * 3];

printf("%d\n", p[3][2]);

return 0;

}

A 上述程序有错误

B 6

C 8

D 12

正确答案:D

单选题 下列字符序列中,可用作为C语言标识符的一组字符序列是( )

A S.b,sum,average,_above

B class,day,lotus_1,2day

C #md,&12x,month,student_n!

D D56,r_1_2,name,_st_1

正确答案:D

单选题 以下叙述中正确的是()

A 在一个程序中,允许使用任意数量的#include命令行

B 在包含文件中,不得再包含其他文件

C #include命令行不能出现在程序文件的中间

D 虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接

正确答案:A

单选题 若char a[10];已定义,以下语句中不能从键盘上给 a 数组的所有元素赋值的语句是( )

A gets(a);

B scanf("%s",a);

C for(i=0;i<10;i++)a[i]=getchar();

D a=getchar();

正确答案:D

单选题 以下定义中,指向数组的指针P的是()

A int (*p)[5]

B int *p[5]

C (int*)p[5]

D int *p[]

正确答案:A

单选题 对两个数组a和b进行如下初始化

char a[] = "ABCDEF";

char b[] = {'A', 'B', 'C', 'D', 'E', 'F'};

则以下叙述正确的是( )

A a与b数组完全相同

B a与b长度(sizeof比较)相同

C a数组比b数组sizeof结果小

D a数组比b数组sizeof结果大

正确答案:D

单选题 以下程序的运行结果是

#include <stdio.h>

int main() {

char a[] = "programming", b[] = "language";

char *p1, *p2;

int i;

p1 = a, p2 = b;

for (i = 0; i < 7; i++)

if (*(p1 + i) == *(p2 + i)) printf("%c", *(p1 + i));

}

A gm

B rg

C or

D ga

正确答案:D

单选题 与声明:char str[10]={‘a’,’b’,’c’,’\0’}; 相等的声明是

A char str[10] = "abc\0";

B char *str = "abc";

C char str[] = "abc";

D char str[10] = "abc";

正确答案:D

单选题 C 语言本身有输入输出语句。

A 正确

B 错误

正确答案:B

单选题 下述程序的运行结果为()

#include<stdio.h>

void abc(char*str) {

int a, b;

for(a = b = 0; str[a] != '\0'; a++)

if(str[a] != 'c')

str[b++] = str[a];

str[b] = '\0';

}

int main() {

char str [] = "abcdef";

abc(str);

printf("str[]=%s", str);

}

A str[]=abdef

B str[]=abcdef

C str[]=a

D str[]=ab

正确答案:A

单选题 下面函数输出结果是()

int main() {

int k = 12345;

printf("%2d\n", k);

return 0;

}

A 12

B 45

C 12345

D 无法通过编译

正确答案:C

%d 是输出十进制整数

%02d:默认情况下,数据数据宽度不够2位是用空格填补的,但是因为2d前面有0,表示,数据宽度不足时用0填补。

标签: #c语言输出0100