第二套试题一、判断题第1题:C语言允许直接访问物理地址。
参考答案:对第2题:在标准C语言中,共用体变量中的各成员的首地址是不一样的。
参考答案:错第3题:全局变量的作用域一定比局部变量的作用域范围大参考答案:错第4题:C语言的源程序不必通过编译就可以直接运行参考答案:错第5题:指针变量与变量的指针都与地址有关参考答案:对第6题:C语言的函数可以嵌套定义参考答案:错第7题:局部变量的作用域是当前文件。
参考答案:错第8题:在标准C语言中,宏替换是程序运行时完成的。
参考答案:错第9题:在标准C中,“=”是判断两个数是否相等。
参考答案:错第10题:C语言编译时不检查语法参考答案:错二、选择题(请选择正确的选项)第1题:以下程序的输出结果是main( ){int n=4;while(n--) printf("%d ",--n);} 参考答案:AA、2 0B、3 1C、3 2 1D、2 1 0第2题:数组定义为int a[3][2]={1, 2, 3, 4, 5, 6},数组元素_____的值为6。
参考答案:BA、a[3][2]B、a[2][1]C、a[1][2]D、a[2][3]第3题:字符串指针变量中存入的是参考答案:AA、字符串的首地址B、字符串C、第一个字符D、字符串变量第4题:下列表达式的值为0的是()参考答案:CA、3﹪5B、3/5.0C、3/5D、3<5第5题:C语言中以追加方式打开一个文件应选择_______________参数参考答案:DA、“r”B、“w”C、“rb”D、“a”第6题:C语言中while和do-while循环的主要区别是参考答案:AA、do-while循环体至少无条件执行一次B、while的循环控制条件比do-while循环控制条件严格C、do-while循环允许从外部转到循环体内D、do-while循环体不能是复合语句第7题:下列说法中,正确的是参考答案:CA、主函数名是由程序设计人员按照“标识符”的规则选取的B、分号和回车符号都可以作为一个语句的结束符号C、在程序清单的任何地方都可以插入一个或多个空格符号D、程序的执行,总是从源程序清单的第1行开始第8题:设有以下宏定义:#define N 3#define Y(n) ((N+1)*n)则执行语句:z=2 *(N+Y(5+1));后,z的值为参考答案:CA、出错B、42C、48D、54第9题:已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\103’是字母参考答案:CA、AB、BC、CD、D第10题:在c语言中,不允许有常量的数据类型是参考答案:BA、整型B、结构型C、字符型D、字符串三、填空题(请把正确的选项填入试题前的空格中)第1题:2. 输入一个正整数n,如果它是素数,输出"YES",否则输出" NO"(素数就是只能被1和自身整除的正整数)。
#include <stdio.h>#include <math.h>int prime(int m);main( ){int n;scanf("%d",&n);if(____)printf("YES\n");elseprintf("NO\n")}int prime(int m){int j,n;if(____)return 0;n=sqrt(m);for(____;j<=n;j++)if(____)return 0;;_____}参考答案:prime(n)参考答案:m==1参考答案:j=2参考答案:m % j == 0参考答案:return 1第2题:3. 以下程序将一个磁盘文件中的信息复制到另一个磁盘文件中。
#include "stdio.h"main(){ FILE *in, *out;char ch;char infile[10], outfile[10];printf("Enter the infile name\n");scanf("%s",___);printf("Enter the outfile name\n");scanf("%s", outfile);if ((in = fopen(infile, "__"))==NULL){printf("can not open infile %s\n", infile);exit(0);}if ((out = fopen(outfile, " w "))==NULL){printf("can not open outfile %s\n", outfile);exit(0);}while(__)fputc(__ , out);___;fclose(out);}参考答案:infile参考答案:r参考答案:!feof(in)参考答案:fgetc(in)四、阅读题(请把正确的选项填入试题前的空格中)第1题:写出下列程序的输出结果。
#include <stdio.h>void main ( ){int k, a=1,b=2;k= (a++==b) ? 2:3;printf(“k=%d\n”,k);}A)、k=1 B)、k=2 C)、k=3 D)、k=4参考答案:C第2题:阅读下列程序,写出程序的输出结果。
#include <stdio.h>void main ( ){ int x=100, a=10, b=20, ok1=5, ok2=0 ;if(a<b) if(!ok1) x=1;else if(ok2) x=10;else x=-1;printf(“%d\n”, x);}A)、100 B)、1 C)、10 D)、-1参考答案:D第3题:阅读下列程序,写出程序的输出结果。
#include <stdio.h>void main ( ){ int I=5;do {switch (I%2) {case 4: I--; break;case 6: I--; continue;}I--; I--;printf("%3d", I);} while(I>0);}A)、3 1 -1 B)、5 3 1 C)、3 2 1 D)、3 1 0参考答案:A第4题:阅读程序,写出运行结果。
#include <stdio.h>void main(){ int a[6]={12,4,17,25,27,16}; int b[6]={27,13,4,25,23,16}, I, j;for(I=0;I<6;I++){for(j=0;j<6;j++)if(a[I]==b[j]) break;if(j<6) printf("%4d",a[I]);}printf("\n");}A)、12 4 17 25 27 16B)、4 25 27 16 C)、25 27 16 D)、27 16参考答案:B第5题:阅读下面程序,写出运算结果.#include<math.h>#include <stdio.h>void main( ){ double f(double, int); printf("%0.21f\n",f(2.0, 10));}double f(double x, int n){ double t;if(n = =1) t=x;elset=x*f(x,n/2);return t;}A)、16 B)、16.00 C)、1600 D)、16.2参考答案:B五、设计题(请按照题目要求进行答题,完成之后打包上传)第1题:三个整数a、b、c,由键盘输入,输出其中最大的一个数(用if-else 实现)参考答案:#include <stdio.h>main(){int a,b,c;printf("请输入三个整数:");scanf("%d,%d,%d",&a,&b,&c);if(a<b)if(b<c) printf("max=%d\n",c);else printf("max=%d\n",b);else if(a<c) printf("max=%d\n",c);else printf("max=%d\n",a);}第2题:从键盘输入两个数a、b。
利用函数的方法求出两个数当中大的。
并在屏幕上输出。
参考答案:#include<stdio.h>main(){int a,b,c,max();printf("输入两个数:");scanf("%d,%d",&a,&b);c=max(a,b);printf("a,b中最大的是:%d",c);}int max(int x,int y){int z;z=x>y?x:y;return(z);}第3题:编写程序建立一个整型数组,数组元素依次是1,2,3,4,5,6,7,8,9;通过对自定义函数inv的调用,使数组元素依次是9,8,7,6,5,4,3,2,1。
参考答案:#include <stdio.h >void inv(int a[],int n){int k,j=n-1,temp;for(k=0;k <j;k++,j--){temp=a[k];a[k]=a[j];a[j]=temp;}}void main(){ int j;int a[]={1,2,3,4,5,6,7,8,9};inv(a,9);for(j=0;j <9;j++) printf("%d",*(a+j));printf("\n");}。