1.二维数组a有m行n列,则在a[i][j]之前的元素个数为()。
A. j*n+i √B. i*n+jC. i*n+j-1D. i*n+j+12.#include<stdio.h>#include<string.h>main(){printf("%d\n", strlen("IBM\n012\t\"\\\0"));}则程序运行后的输出结果是。
√A) 10 B) 11 C) 16 D) 123.有如下程序片段:int i = 0;while(i++ <= 2);printf("%d", i);则正确的执行结果是:A) 2 B) 3 √C) 4 D) 程序陷入死循环4. 下面哪个定义是合法的。
A) char a[8] = "language";B) int a[5] = {0,1,2,3,4,5};√C) char *a = "string";D) int a[2][] = {0,1,2,3,4,5,6};5.若有定义int (*p)[4],则标识符p是一个。
A)指向整型变量的指针变量B)指向函数的指针变量√C)指向有四个整型元素的一维数组的指针变量D)指针数组名,有四个元素,每个元素均为一个指向整型变量的指针6.下列对字符串的定义中,错误的是:。
√A) char str[7] = "FORTRAN";B) char str[] = "FORTRAN";C) char *str = "FORTRAN";D) char str[] = {'F','O','R','T','R','A','N',0};7.针对下面程序段,下面哪些说法是正确的?#include <stdio.h>void Swap(int *x, int *y);main(){int a, b;a = 5;b = 9;Swap(&a, &b);printf("a=%d,b=%d",a,b);}void Swap(int *x, int *y){int *pTemp;*pTemp = *x;*x = *y;*y = *pTemp;}A) 程序运行结果为乱码;B) 程序运行后将导致程序崩溃;C) 程序编译时出错导致程序无法运行;√ D) 程序执行了危险的操作;8. 要使下面程序的输出1, 2, 34,则从键盘输入的数据格式应为。
#include <stdio.h>main(){char a,b;int c;scanf("%c%c%d",&a,&b,&c);printf("%c,%c,%d\n",a,b,c);}A)1 2 34 B)1, 2, 34C)’1’,’2’,34√D)12 349.对于一个正常运行和正常退出的C程序,以下叙述正确的是。
√A)程序是从main函数第一条可执行语句开始执行,在main函数结束B)程序的执行总是从程序的第一个函数开始,在main函数结束C)程序的执行总是从main函数开始,在最后一个函数中结束D)从程序的第一个函数开始,在程序的最后一个函数中结束10.对于以下程序片段,描述正确的是。
int x= -1;do{x=x*x;}while(!x);A)是死循环B)循环执行两次√C)循环执行一次D)有语法错误11. 一个指针数组的定义为。
A) int (*ptr)[5];√B) int *ptr[5];C) int *(ptr[5]); D) int ptr[5];一、单项选择题:(10分,每题2分,评分标准:正确得2分,错误扣2分)12.以下不能对二维数组a进行正确初始化的语句是A)int a[2][3]={0};B)int a[][3]={{1,2},{0}};√C)int a[2][3]={{1,2},{3,4},{5,6}};D)int a[][3]={1,2,3,4,5,6};13.有以下程序片断float fun(int x,int y){return(x+y);}main(){int a=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是:A)编译出错√B)9C)21 D)9.014.若有以下调用语句,则不正确的fun函数的函数原型是main(){ …int a[50],n;…fun(n, &a[9]);…}A)void fun(int m, int x[]);B)void fun(int s, int h[41]);C)void fun(int p, int *s);√D)void fun(int n, int a);15.下面程序片段的执行结果是:#define MAX 10int a[MAX], i;main( ){printf("\n");sub1( );sub3(a);sub2( );sub3(a);}sub2( ){int a[MAX], i, max=5;for(i=0; i<max; i++) a[i]=i;}sub1( ){for(i=0; i<MAX; i++) a[i]=i+i;}sub3(int a[ ]){int i;for(i=0; i<MAX; i++)printf("%d",a[i]);printf("\n");}A) 0 2 4 6 8 10 12 14 16 180 1 2 3 4 10 12 14 16 18B) 0 1 2 3 40 2 4 6 8 10 12 14 16 18C) 0 1 2 3 4 5 6 7 8 90 1 2 3 4√D) 0 2 4 6 8 10 12 14 16 180 2 4 6 8 10 12 14 16 1816. 下列程序执行后的输出结果是#include <stdio.h>main(){int a[3][3], *p, i;p = &a[0][0];for (i=1; i<9; i++){p[i]=i+1;}printf("%d\n",a[1][2]);}A)3√B)6C)9D)随机数1. 一个C语言程序是从___开始执行的。
A.程序中第一个函数 B.名为main的函数C.包含文件(头文件)的第一个函数 D.程序中的第一个语句2. 设a和b均为int型变量,则执行以下语句后的输出为___。
int a=20; int b=3; printf("%d\n",a+=(b%=2));A.20 B.21 C.0 D.233. 设a、b和c都是int型变量,且a=3,b=0,c=5,则以下值为0的表达式是___。
A. 'a'&&'b' B.a&&b||c C.a&&b&&c D.a||b&&c4. 下列叙述中正确的是___。
A.break语句只能用于switch语句B 在switch语句中必须使用defaultC.break语句必须与switch语句中的case配对使用D.在switch语句中不一定使用break语句5. 以下程序的执行结果是___。
main() { int n=9;while(n>6) { n--; printf("%d",n); } }该程序的输出结果是A.987 B.876 C.8765 D.98766. 对于下面的for循环语句,可以断定它执行___次循环。
for(x=0,y=0;(y!=67)&&(x<5);x++) printf("----");A.无限 B.不定 C.5次 D.4次7. 若有定义(说明)int a[10];,则对数组a的元素正确引用的是___。
A.a[10] B.a[3.5] C.a(5) D.a[10-10]8. 执行下面程序段后,变量k 的值是___。
int k=3,s[2];s[0]=k; k=s[1]*10;A.不定值 B.33 C.30 D.109. 以下对一维整型数组a初始化的语句中正确的是___。
A.int a[10]=(0,0,0,0,0); B.int a[10]=();C.int x=2,a[10]={10*x}; D.int a[10]={0};10. 以下对二维数组a的正确定义(说明)的是___。
A.int a[3][]; B.float a(3,4); C.double a[1][4]; D.float a(3)(4);11. 以下不能对二维数组a进行正确初始化的语句是___。
A.int a[2][3]={0}; B.int a[][3]={{1,2},{0}};C.int a[2][3]={{1,2},{3,4},{5,6}}; D.int a[][3]={1,2,3,4,5,6};12. 若调用一个函数,且此函数中没有return语句,则正确的说法是___。
A.该函数没有返回值 B.该函数返回若干个系统默认值C.能返回一个用户所希望的函数值 D.返回一个不确定的值13. 以下正确的描述是___。
A.函数的定义可以嵌套,但函数的调用不可以嵌套B 函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和函数的调用均不可以嵌套D.函数的定义和函数的调用均可以嵌套14. 若用数组名作为函数调用的实参,传递给形参的是___。
A.数组的首地址 B.数组中第一个元素的值C.数组中的全部元素的值 D.数组元素的个数15. 调用函数的实参与被调用函数的形参应有如下关系___。
A.只要求实参与形参个数相等 B.只要求实参与形参顺序相同C.只要求实参与形参数据类型相同 D.上述三点均需具备16. 凡在函数中未指定存储类别的变量,其隐含的存储类别是___。
A.自动 B.静态 C.外部 D.寄存器17. 若已定义a为int型变量,则___是对指针变量p的正确说明和初始化。
A.int p=&a; B.int *p=a; C.int *p=*a; D.int *p=&a;18. 下面是一个初始化指针的语句:int *px=&a;,其中指针变量的名字应该___。