"C语言"

相关试题
第 1 题 [单选题] :
下列程序执行后输出的结果是___________。
 int d=l:
 fun(int p)
 {  int d。5;
 d+=p++;
 printf(”%d,”,D);
 }
 main()
 {  int a=3;
 fun(A);
 d+=a++:
 printf(”%d\n”,D);
 }
答案:C

解析:本题执行过程如下:首先调用fun函数,使得实参a的值3传递给形参p,得到局部变量d=8,打印出局部变量d的值8;返回主函数执行“d+=a++”,此处的d为全局变量,所以d=1+3=4(由于本题是值传递,所以在函数fun中对p值的改变并不能引起a的改变),故本题的输出是8,4。

第 2 题 [单选题] :
有以下程序
#include <stdio.h> 
main() 
{ int x=1,y=0,a=0,b=0; 
 switch(x) 
 { case 1: 
 switch(y) 
 { case 0:a++; break; 
 case 1:b++; break; 
} 
case 2:a++; b++; break; 
case 3:a++; b++; 
} 
printf("a=%d,b=%d\n",a,b); 
} 
程序的运行结果是
答案:D

解析:本题考查switch语句,首先,x=1符合条件case 1,执行switch(y)语句,y=0符合case 0语句,执行a++并跳出switch(y)语句,此时a=1。因为case 1语句后面没有break语句,所以向后执行case 2语句,执行a++,b++,然后跳出switch(x),得a=2,b=1。

第 3 题 [单选题] :
数学表达式0
答案:C

解析:

第 4 题 [单选题] :
以下程序的输出结果是( )。 main( ){ int k=17; printf("%d, %o, %x n", k, k, k);}
答案:D

解析:

第 5 题 [单选题] :
以下程序的输出结果是( )。int d=1;fun(int p){ static int d=5; d+=p; printf("%d ", d); return(d);}main(){ int a=a; printf("%d n", fun(a+fun(d)));}
答案:A

解析:

第 6 题 [单选题] :
设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字 (键或码)为
答案:C

解析:"选课SC" 表是 "学生S" 表和 "课程C" 表的映射表,主键是两个表主键的组合。

第 7 题 [单选题] :
x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是( )。
答案:A

解析:

第 8 题 [单选题] :
软件的维护是指____。
答案:A

解析:

第 9 题 [单选题] :
已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填_______。
 struct link
 Datanext{   char data;
 ___________

 }node;
答案:D

解析:在单向链表中,由于每个结点需要存储下一个结点的地址,且下一个结点的数据类型与前一个结点的数据类型完全相同,故应为struct link*next。

第 10 题 [单选题] :
设有定义语句:char c1=92, c2=92;则以下表达式中值为零的是( )。
答案:B

解析:

第 11 题 [问答题] :
#include “stdafx.h” #define SQR(X) X*X int main(int argc, char* argv[]) { int a = 10; int k = 2; int m = 1; a /= SQR(k+m)/SQR(k+m); printf(“%d\n”,a); return 0; }"c hljs"> #include “stdafx.h” #define SQR(X) X*X int main(int argc, char* argv[]) { int a = 10; int k = 2; int m = 1; a /= SQR(k+m)/SQR(k+m); printf(“%d\n”,a); return 0; } 这道题目的结果是什么啊?

解析:define 只是定义而已,在编择时只是简单代换X*X而已,并不经过算术法则的 <pre ><code class=a /= (k+m)*(k+m)/(k+m)*(k+m); =&gt;a /= (k+m)*1*(k+m); =&gt;a = a/9; =&gt;a = 1;"c hljs">a /= (k+m)*(k+m)/(k+m)*(k+m); =&gt;a /= (k+m)*1*(k+m); =&gt;a = a/9; =&gt;a = 1;</code></pre>

第 12 题 [B型题] :
变量是其值可以改变的量
答案:A

解析:

第 13 题 [单选题] :
若有语句:char s1[10], s2[10]={"books"},则能将字符串books赋给数组s1的正确语句是( )。
答案:A

解析:

第 14 题 [问答题] :
char szstr[10]; strcpy(szstr,"0123456789"); 产生什么结果?为什么?

解析:长度不一样,会造成非法的OS

第 15 题 [单选题] :
下列程序段的输出结果为( )。int arr[]={6,7,8,9,10};int * ptr;ptr=arr;*(ptr+2)+=2;printf("%d,%d ",*ptr,*(ptr+2));
答案:B

解析:

第 16 题 [单选题] :
C语言书写格式自由,一行可以写多个语句。
答案:B

解析:

第 17 题 [问答题] :
struct {
   signed  int bit0:1;
   signed  int bit1:1;
   signed  int bit2:1;
   signed  int bit3:1;
   signed  int bit4:1;
   signed  int bit5:1;
   signed  int bit6:1;
   signed  int bit7:1;
}bits;
请问sizeof(bits)是否是正确的表达式? 请问语句bits mybits; 的定义是否正确?如果不正确,要如何修改上述的结构定义才能使该语句正确?修改后的结构定义是否会影响sizeof(bits)的正确性?如果正确则该表达式的值为多少?如果将上述的结构中int类型改为char类型,此时sizeof(bits)的大小为多少?

解析:1)是正确的表达式,因为sizeof后面的内容可以是类型,也可以是变量。 2)该语句的定义不正确,因为此时的bits为一个变量;应该这样修改结构的定义 <pre ><code class= typedef struct { signed int bit0:1; signed int bit1:1; signed int bit2:1; signed int bit3:1; signed int bit4:1; signed int bit5:1; signed int bit6:1; signed int bit7:1; }bits; "java hljs"> typedef struct { signed int bit0:1; signed int bit1:1; signed int bit2:1; signed int bit3:1; signed int bit4:1; signed int bit5:1; signed int bit6:1; signed int bit7:1; }bits; </code></pre>修改后sizeof(bits)表达式依然正确,其值为4;类型改为char后其值为1,注意该值是在VC环境中的32位程序中得到的值,在不同的编译器其值有可能不同,因此在编程时不能自己假定类似结构的大小。

第 18 题 [单选题] :
为判断字符变量c的值不是数字也不是字母时,应采用下述表达式( )。
答案:C

解析:

第 19 题 [单选题] :
假设整型变量a的值是1,b的值是2,c的值是3,在这种情况下执行下面的语句:u=(++a==2)?b+a:c+a;执行该语句后整型变量u的值为( )。
答案:B

解析:

第 20 题 [单选题] :
下列程序的输出结果是_________。
main()
 {  int I=3;
 switch(i)
 { case 1:
 case 2:printf(”%d”,i);
 case 3:
 case 4:break;
 default:printf(”OK”);
 }
 }
答案:D

解析:在题中,i的值为3,由于“case 3:”后面没有break语句,所以继续向下执行“case 4:”后面的语句,由于“case 4:”后面的语句为break强行退出switch语句,所以,本题没有任何输出。