1有以下程序 main() { int a=1,b=2,m=0,n=0,k; k=(n=b>a)||(m=a<b); printf("%d,%d\n",k,m); } 程序运行后的输出结果是 A)0,0 B)0,1 C)1,0 D)1,1 2在一个C程序中 A)main函数必须出现在所有函数之前 B)main函数可以在任何地方出现 C)main函数必须出现在所有函数之后 D)main函数必须出现在固定位置 3有以下程序 main() { int a=5,b=4,c=3,d=2; if (a>b>c) printf("%d\n", d); else if ( (c-1 >= d) == 1) printf("%d\n", d+1); else printf("%d\n", d+2); } 执行后输出结果是 A)2 B)3 C)4 D)编译时有错,无结果 4有以下程序 main() { int i; for (i=0; i<3; i++) switch (i) { case 1: printf("%d ", i); case 2: printf("%d ", i); default : printf("%d ", i); } } 执行后输出结果是 A)011122 B)012 C)012020 D)120来源:www.examda.com 5有以下程序 main() { int k=4,n=0; for( ; n<k ; ) { n++; if(n%3!=0) continue; k--; } printf("%d,%d\n",k,n); } 程序运行后的输出结果是 A)1,1 B)2,2 C)3,3 D)4,4
6有以下程序 fun(int a, int b) { if(a>b) return(a); else return(b); } main() { int x=3, y=8, z=6, r; r=fun(fun(x,y), 2*z); printf("%d\n", r); } 程序运行后的输出结果是 A)3 B)6 C)8 D)12 7有以下程序 int *f(int *x, int *y) { if (*x < *y) return x; else return y; } main() { int a=7,b=8,*p,*q, *r; p=&a; q=&b; r = f(p,q); printf("%d,%d,%d\n",*p,*q,*r); } 执行后输出结果是 A)7,8,8 B)7,8,7 C)8,7,7 D)8,7,8 8以下能正确地定义整型变量a,b和c并为其赋初值5的语句是 A)int a=b=c=5; B)int a,b,c=5; C)a=5,b=5,c=5; D)a=c=b=5; 9若二维数组a有m列,则在a[i][j]前的元素个数为 A)j*m+i B)i*m+j C)i*m+j-1 D)i*m+j+1 10下面程序段是输出两个字符串中对应相等的字符。请选择填空 char x[]=”programming”; char y[]=”Fortran”; int i=0; while(x[i]!=’\0’&&y[i]!=’\0’) if(x[i]= =y[i])printf(“%c”,[]); else i++; A) x[i++] B)y[++i] C)x[i] D)y[i]
11若使用一维数组名作函数实参,则以下正确的说法是 A)必须在主调函数中说明次数组的大小 B实参数组类型与形参数组类型可以不匹配 C在被调函数中,不需要考虑形参数组的大小 D实参数组名与形参数组名必须一致 12以下程序的正确运行结果是 #inclued<stdio.h> main() {int k=4,m=1,p; p=func(k,m);printf(“%d”,p); p=func(k,m);printf(“%d\n”,p); } func(int a,int b) {static int m=0,i=2; i+=m+1; m=i+a+b; return(m); } A)8,17 B)8,16 C)8,20 D)8,8 13若有说明:int *p,m=5,n;以下正确的程序段是 A) p=&n;scanf(“%d”,&p); B) p=&n;scanf(“%d”,*p); C) scanf(“%d”,&n);*p=n; D) p=&n;*p=m; 14执行以下程序后,a和b的值为 main() {int a,b,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; b=(-*p1)/(*p2)+7; printf(“a=%d\n”,a); printf(“b=%d\n”,b);} A)-1 ,5 B)1,6 C)0,7 D)4,10 15若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是 A)”ab+” B)”wb+” C)”rb+” D”ab” 16根据定义和数据的输入方式,输入语句的正确形式为 已有定义:float f1,f2; 数据的输入方式:4.52 3.5 A)scanf(“%f,%f”,&f1,&f2); B) scanf(“%f%f”,&f1,&f2); C) scanf(“%3.2f %2.1f”,&f1,&f2); D) scanf(“%3.2f%2.1f”,&f1,&f2); 17 分析以下程序运行结果 #include<stdio.h> int func(int n){ if(n==1) return 1; else return(n*func(n-1)); } void main(){ int x; x=func(5); printf(“%d\n”,x); } A)100 B)5 C)1 D)120
18 分析以下程序运行结果 #include<stdio.h> void main(){ int y=2,a=1; while(y--!=-1){ do{ a*=y;a++; }while(y--);} printf(“%d,%d\n”,a,y);} A)1,-2 B)2,1 C)1,0 D)2,-1 19下面程序段的运行结果是 char a[7]=”abcdef”; charb[4]=”ABC”; strcpy(a,b); printf(“%c”,a[5]); A)空格 B)\0 C)e D)f 20下面是对s的初始化,其中不正确的是 A)char s[5]={“abc”}; B)char s[5]={‘a’,’b’,’c’}; C)char s[5]=””; D)char s[5]=”abcdef”; 21执行语句for(i=1;i++<4; );后变量i的值是 A)3 B)4 C)5 D)不定 22以下程序段 x=-1; do {x=x*x;} while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 23若有以下定义和语句: inion data {int i; char c; float f; }a; int n; 则以下语句正确的是 A)a=5; B)a={2,’a’,1.2}; C)printf(“%d\n”,a); D)n=a; 24下面程序的运行结果是 main() { struct cmplx{int x; int y; }cnum[2]={1,3,2,7}; printf(“%d\n”,cnum[0].y/cnum[0].x*cunm[1].x); } A)0 B)1 C)3 D)6 25以下程序的运行结果是 main() {int k=4,a=3,b=2,c=1; printf(“\n%d\n”,k<a?k:c<b?c:a); } A)4 B)3 C)2 D)1 二 填空 1 若有以下定义,则计算表达式y+=y-=m*=以后y的值是_____ int m=5,y=2; 2 若有定义:int b=7;float a=2.5,c=4.7;:则下面表达式的值为_____ a+(int)(b/3*(int)(a+c)/2)%4 3 有 int a=3,b=4,c=5;,则以下表达式的值为_____ !(a+b)+c-1&&b+c/2 4 条件”2<x<3或x<-10”的c语言表达式是_____ 5 以下程序的功能是判断输入的年份是否是闰年.请在[ ]内填入正确内容 main() {int y,f; scanf(“%d”,&y); if(y%400==0)f=1; else if([5])f=1; else[6]; if(f) printf(“%d is”,y); else printf(“%d is not”,y); printf(“a leap year\n”); } 6 下面程序的功能是计算100至1000之间有多少个数其各位数字之和是5。请填空 #include<stdio.h> main(0 {int i,s,k,count=0; for(i=100;i<=1000;i++) {s=0;k=i; while([7]){s=s+k%10;k=[8];} if(s!=5)[9]; else count++; } printf(“%d”,count); } 7 下面程序将二维数组a的行和列元素呼唤后存到另一个二维数组b中。请填空 main() {int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],I,j; printf(“array a:\n”); for(i=0;i<=1;i++) {for(j=0;[10];j++) {printf(“%5d”,a[i][j]); [11]; } printf(“\n”); } printf(“array b:\n”); for(i=0;[12];i++) {for(j=0;j<=1;j++) printf(“%5d”,b[i][j]); printf(“\n”); } }
8 以下search函数的功能是利用顺序查找法从数组a的10个元素中对关键字m 进行查找。顺序查找法的思路是:从第一个元素开始,从前向后依次与关键字你叫,直到找到此元素或查找到数组尾部时结束。若找到,返回此元素的下标;若仍未找到,则返回值-1。请填空 #include<stdio.h> int search(int a[10],int m) {int I; for(i=0;i<=9;i++) if([1])return(i); return(-1); } main() {int a[13],m,i,no; …… no=search([14]); if([15]) printf(“\nOK FOUND!%d”,no+1); else printf(“\nSorry Not Found!”); } 9 若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是[16],*(a+5)的值是[17] 10 将任意输入的一个偶数n分解为两个素数之和,并给出各种分解方法 #include<stdio.h> main() { int n,i; int check(int x); do{ scanf(“%d”,&n); }while(n%2!=0); for(i=3;i<=n/2;i++) if(check(i)&&[18]) printf(“%d=%d+%d\n”,n,i,n-i); } int check(int x) { int i; for(i=2;i<x;i++) if([19]) return(0); return(1); } 11 函数调用语句:fgets(buf,n,fp);从fp指向的文件中读入[20]个字符放到buf字符数组中。函数值为[21] 12 设数组a包括10个整型元素。下面程序的功能是求出a 中各相邻元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。请填空 main() {int a[10],b[10],i; for(i=0;i<10;i++) scanf(“%d”,&a[i]); for([22];i<10;i++) [23] for(i=1;i<10;i++) { printf(“%3d”,b[i]); if([24]==0) printf(“\n”); } } 13 如果以下程序输入的是we are students,则输出的结果是[25] #include “stdio.h” void main() { char s[81],*p; printf(“Input a sentence:\n”);gets(s); for(p=s;*p;p++) if(*p==32) //空格键的ASCII值是32 { if(*(p+1)!=32) printf(“\n”); } else putchar(*p); } |