半小时C语言题目

每个5分共100分。错选、多选、少选或不选均不得分。     
1.[单选题]一个C程序的执行是从(   )     
A:本程序的main函数开始,到main函数结束
B:本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C:本程序的main函数开始,到本程序文件的最后一个函数结束
D:本程序文件的第一个函数开始,到本程序main函数结束    
2.[单选题]在C语言中,要求运算数必须是整型的运算符是(   )     
A:/
B:++
C:!=
D:%    
3.[单选题]C语言中,逻辑“真”等价于(   )     
A:大于零的数
B:大于零的整数
C:非零的数
D:非零的整数    
4.[单选题]若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式为(   )     
A:A%2 == 1
B:! (A%2==0)
C:! (A%2)
D:A%2    
5.[单选题]以下程序的运行结果是(   )。
int main( void ){
int m = 5;
if ( m++ > 5) printf(“%d\n”, m);
else printf(“%d\n”, --m);
}    
A:4
B:5
C:6
D:7    
6.[单选题]以下对一维整型数组a的正确说明是(   )     
A:int  a(10)
B:int n = 10, a[n]
C:int n
scanf(“%d”, &n)
int a[n]
D:#define SIZE 10
int a[SIZE]    
7.[单选题]若有说明:int a[3][4];则对a数组元素的非法引用是(   )     
A:a[0][2*1]
B:a[1][3]
C:a[4-2][0]
D:a[0][4]    
8.[单选题]若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为(    )     
A:i * m + j
B:j * m + i
C:i * m + j - 1
D:i * m + j + 1    
9.[单选题]以下程序的功能是将字符串s中所有的字符c删除,那么空白处缺少的语句为:(    )。
#include 
int main(void)
{
char s[80] ;
int i, j ;
gets(s) ;
for ( i = j = 0 ; s [i] != ‘\0’ ; i++ )
if ( s [i] != ‘c’ )
             ;
s [ j ] = ‘\0’ ;
puts ( s ) ;
return 0 ;
}    
A: s [ j++] = s [ i ]
B:s [ ++j ] = s [ i ]
C:s [ j ] = s [ i ]; j++
D:s [ j ] = s [ i ]    
10.[单选题]下面程序的功能是将已按升序排好序的两个字符串a和b中的字符,按升序归并到字符串c中,请为程序中的空白处选择适当的语句。  第一空答案( )
#include 
int main(void)
{
char a[ ] = “acegikm”;
char b[ ] = “bdfhjlnpq”;
char c[80], *p;
int i = 0, j= 0, k = 0;
while( a[i] != ’\0’ && b[j] != ‘\0’ )
{
if ( a[i] < b[j] )  { (  ①  ) }
else { (  ②  ) }
k++;
}
c[k] = ‘\0’;
if (  ③  )  p = b + j;
else  p = a + i;
strcat ( c , p );
puts ( c );
}    
A:c[k] = a[i]; i++
B:c[k] = b[j]; i++
C:c[k] = a[i]; j++
D:c[k] = a[j]; j++    
11.[单选题]下面程序的功能是将已按升序排好序的两个字符串a和b中的字符,按升序归并到字符串c中,请为程序中的空白处选择适当的语句。第二空答案( )  
#include 
int main(void)
{
char a[ ] = “acegikm”;
char b[ ] = “bdfhjlnpq”;
char c[80], *p;
int i = 0, j= 0, k = 0;
while( a[i] != ’\0’ && b[j] != ‘\0’ )
{
if ( a[i] < b[j] )  { (  ①  ) }
else { (  ②  ) }
k++;
}
c[k] = ‘\0’;
if (  ③  )  p = b + j;
else  p = a + i;
strcat ( c , p );
puts ( c );
}    
A:c[k] = a[i]; i++
B:c[k] = b[j]; i++
C:c[k] = a[i]; j++
D:c[k] = b[j]; j++    
12.[单选题]在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是(   )     
A:extern
B:register
C:auto
D:static    
13.[单选题]以下程序的正确运行结果是(   )。
#include 
int f(int a);
int main(void)
{
int a = 2, i;
for( i = 0; i < 3; i++ ) printf(“%4d”,f(a));
}
int f(int a)
{
int b = 0;
static int c = 3;
b++; c++;
return(a+b+c);
}    
A:7   7   7
B:7   10   13
C:7   9   11
D:7   8   9    
14.[单选题]以下程序的运行结果为(   )。
void sub(int x, int y, int *z)
{ *z = y – x ; }
int main(void)
{
int a,b,c ;
sub(10, 5, &a) ;
sub(7, a, &b) ;
sub(a, b, &c) ;
printf( “%4d,%4d, %4d\n”,a,b,c);
}    
A:5,   2,   3
B:-5, -12,  -7
C:-5, -12, -17
D:5,  -2,  -7    
15.[单选题]有如下语句int a = 10, b = 20, *p1, *p2; p1 = &a; p2 = &b;变量与指针的关系如图1所示;若要实现图2所示的存储结构,可选用的赋值语句为(    )     
A:*p1 = *p2
B:p1 = p2
C:p1 = *p2
D:*p1 = p2    
16.[单选题]若已建立下面的链表结构,指针p、q分别指向图中所示结点,则不能将q所指的结点插入到链表末尾的一组语句是(    )     
A:q -> next = NULL; p = p -> next; p -> next = q
B:p = p -> next; q -> next = p -> next; p -> next = q
C:p = p -> next; q -> next = p; p -> next = q
D:p = (*p).next; (*q).next = (*p).next; (*p).next = q    
17.[单选题]以下程序的功能是:读入一行字符(如:a,b,… y,z),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。请在空白处为程序选择适当的代码。 第一空答案( )
#include 
#define getnode(type)     ①    malloc(sizeof(type))
int main(void)
{
struct node{
char info;
struct node *link;
}*top,*p;
char c;
top = NULL;
while( ( c = getchar( )    ②  )
{
p = getnode ( struct node );
p -> info = c;
p -> link = top;
top = p;
}
while ( top )
{
    ③   ;
top = top -> link;
putchar ( p -> info );
free ( p );
}
}    
A:(type)
B:(type *)
C:type
D:type *    
18.[单选题]以下程序的功能是:读入一行字符(如:a,b,… y,z),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。请在空白处为程序选择适当的代码。第二空答案( )
 
#include 
#define getnode(type)     ①    malloc(sizeof(type))
int main(void)
{
struct node{
char info;
struct node *link;
}*top,*p;
char c;
top = NULL;
while( ( c = getchar( )    ②  )
{
p = getnode ( struct node );
p -> info = c;
p -> link = top;
top = p;
}
while ( top )
{
    ③   ;
top = top -> link;
putchar ( p -> info );
free ( p );
}
}    
A:==’\0’
B:!=’\0’
C:==’\n’
D:!=’\n’    
19.[单选题]以下程序的功能是:读入一行字符(如:a,b,… y,z),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。请在空白处为程序选择适当的代码。第三空答案( )
 
#include 
#define getnode(type)     ①    malloc(sizeof(type))
int main(void)
{
struct node{
char info;
struct node *link;
}*top,*p;
char c;
top = NULL;
while( ( c = getchar( )    ②  )
{
p = getnode ( struct node );
p -> info = c;
p -> link = top;
top = p;
}
while ( top )
{
    ③   ;
top = top -> link;
putchar ( p -> info );
free ( p );
}
}    
A:top = p
B:p = top
C:p == top
D:top == p    
20.[单选题]以下程序的输出结果是( )
#include 
#define  M 5
#define  N M+M
main()
{ int k;
 k=N*N*5; printf(“%d\n”,k);
}    
A:500
B:125
C:55
D:100

1A 2D 3C 4C 5B 6D 7D 8C 9A 10A 11D 12D 13D 14B 15\16没图干不了,17B 18D 19B 20C

posted @ 2013-09-08 17:10  herizai007  阅读(1018)  评论(0编辑  收藏  举报