判断题:
任何表达式语句都是表达式加分号组成的。True
C语言语句都有结束符
指向结构体变量的指针可以作函数参数,实现传址调用。True
结构体成员的类型必须是基本数据类型。False
if(a=5) 是允许的。True
(a=5)永远为真
假设有变量定义语句float f = 1234567890123.123456;,打印语句printf("f = %f", f); 的输出是f = 1234567954432.000000 。那么可以这样解释这种想象:因为float类型的数据精度是十进制7~8位,第9位以后的数据是随机的,即下次再输出这个数时,第9位以后的数据可能会不一样。False
int (*p)[4]它表示p是一个指针数组,它包含4个指针变量元素。False
它是一个数组指针,指向一个长度为4的数组。
选择题:
以下选项中不正确的整型常量是()。
A.12L B.-10 C.012 D.2,900
解答:D
整型常量中不可有逗号
若a为int类型,且其值为3,则执行完表达式a+= a-= a*a后,a的值是__。
A.-3 B.9 C.-12 D.6
解答:C
将a+= a-= a*a分解得
a=a-a*a;得a=-6
a=a+a;得a=-12
下面哪个表达式的值是2。
A.6%3 B.-5%3 C.5%-3 D.-5%-3
解答:C
对于%的结果,其符号取决于%前面的数的符号
对下列代码的描述:
#include "stdio.h"
int main(){
long num=1;
while(num++ > 0) for(long i=num; i >=0; i--)printf("i :=\n \t %ld \n" , i);
return 0;
}
正确的是:
A.程序有编译错误,不能执行
B.循环条件永为真,循环无限次,程序根本停不下来,打印输出无限行
C.循环有限次,程序正常结束,打印输出有限行
D.程序运行过程必定会出错(崩溃),结果打印输出有限行
解答:C
具体原因请移步 https://blog.csdn.net/BAFH499/article/details/122116641
以下程序段的输出结果是()。
int a=5, b=4, c=6, d;
printf("%d", d=a>b? a>c?a:c:b);
A.5 B.4 C.6 D.不确定
解答:C
其实就是顺序的问题
d=a>b? a>c?a:c:b实则为d=(a>b? (a>c?a:c):b)
先判断(a>c?a:c),再判断外层,最后赋值
The following piece of code prints out__.
for (a=1,i=-1; -1<=i<1; i++) {
a++;
printf("%2d", a);
}
printf("%2d", i);
A.2 3 1 B.-1 C.1 2 0 D.3
解答:B
这题就是对于-1<=i<1的判断
先判断-1<=i,成立得其值为1,再判断1<1,不成立不进入循环,直接输出i
下述代码执行后,a,b的值各为多少?
int a = 0, b = 0;
a = (b++, 4);
A.a=4, b=1 B.a=0,b=1 C.a=1,b=1 D.a=4,b=0
解答:A
这题考逗号表达式,(b++, 4)的值为最后一个表达式的值4
对于定义 char str[] = "abc\000def\n"(注:其中0为数字零)求字符串str的长度len和数组str的大小size,len和size分别是:
A.12 ,13 B.3 ,11 C.3 ,9 D.3 ,4
解答:C
对于字符串数组,\0、\00 、\000都视为\0(当\后面的0多于3个就不是这样了),且总会在末尾加一个\0,所以空字符串大小为1,"abc\000def\n"的大小为9.
而长度则是第一个\0前的字符数
有如下定义:
struct Student{
char name[10];
int age;
char gender;
}std[3], *p=std;
则以下各输入语句中错误的是:
A.scanf("%d",&(*p).age);
B.scanf("%c",&std[0].gender);
C.scanf("%c",&(p->gender));
D.scanf("%s",&std.name);
解答:D
std.name已经是数组的地址了,再加取地址符就是错误的
下面的这个循环的循环次数是( )。
for(int i=0,j=10; i=j=10; i++,j--)
A.语法错误,不能执行 B.无限次 C.10 D.1
解答:B
循环内的判断语句变为了赋值语句i=j=10,出不了循环
以下名字,不能作为C语言标识符的是:
A.ThisIsQingdaoUniversityB.$$
C.monkey~1
D._
解答:C
$$是一个例外,它是可以用的。
If all variables have been defined and declared in the following program, all the variables which can be used in function fun() are __.
void fun(int x)
{
static int y;
……
return;
}
int z;
void main( )
{
int a,b;
fun(a);
……
}
A.x,y
B.x,y,z
C.a,b,y,z
D.a,b,x,y,z
解答:A
z虽然是全局变量,但定义在函数fun之后,调用不到,而a、b是主函数里的,也调用不到
对于 C/C++语言的函数,下列叙述中正确的是( )。
A.函数的定义不能嵌套,但函数调用可以嵌套
B.函数的定义可以嵌套,但函数调用不能嵌套
C.函数的定义和调用都不能嵌套
D.函数的定义和调用都可以嵌套
解答:A
比如在主函数里,就不能定义一个fun函数,只能在主函数外定义。但是可以在主函数内调用fun函数,前提是已经声明或定义过了。
函数调用语句function((a,b),c)中含有的实参个数为( )。
A.1 B.3 C.2 D.语法有误
解答:C
(a,b)的值作为一个实参
Given int a[2][3];. Which of the following can correctly make reference to array a?
A.a[2][!1]
B.a[2][3]
C.a[0][3]
D.a[1>2][ !1]
解答:D
明显ABC是错的,D是可行的。
有说明语句int a[4][5]; ,则a[2]+3表示__。
A.a数组行下标为2、列下标为3的元素的地址
B.a数组行下标为2、列下标为3的元素的值
C.a数组第2行的首地址
D.a数组第3行的首地址
解答:A
For definitions: char s[2][3]={"ab", "cd"}, *p=(char *)s; the expression __ is correct and its value is equivalent to the element s[1][1].
A.*(s+3)
B.*s+2
C.p[1][1]
D.*++p+2
解答:D
s[1][1]是d,*(s+3)是数组第四行的首地址,*s+2是数组第一行的第三个元素的地址,p[1][1]是有编译问题的
*++p+2是(*(p=p+1))+2,*(p=p+1)是b,加2后的字符为d,符合题意
以上答案仅供参考