Missing soldier rescued Poverty killing Niger?s boy
说明:程序有错误的地方已经用下划线”_______”标出,只要把正确的答案写在相应的位置即可。 【含有错误的源程序】 #include
int search_or(char str[][80],int n[],char substr[],int loc[]) /* (1) */ { char s1[],s2[],comp[]; /* (2) */ int i,j,k=0,t,len_s1,len_s2; for(i=0;substr[i]!=? ?;i++); substr[i]=?\\0?;
strcpy(s1,substr); strcpy(s2,substr+i+1); len_s1=strlen(s1);len_s2=strlen(s2); for(i=0;i for(j=0;str[i][j]!=?\\0?;j++) { strncpy(comp,&str[i][j],len_s1); comp[len_s1]=?\\0?; if(strcmp(s1,comp)= =0){t=1;break;} strncpy(comp,&str[i][j],len_s2); comp[len_s2]=?\\0?; if(strcmp(s2,comp)= =0){t=1;break;} } if(t)loc[++k]=i; /* (3) */ } return k; } main() { char lines[4][80]={“Missing Idaho boy”,” Missing soldier rescued”, ” Teachers union pushers for $40K starting pay”, ” Poverty killing Niger?s boy” }; char cond[80]={Missing boy}; /* (4) */ int result[4],i=0,n; n=search_or(lines,4,cond,result); for(i=0;i 五、编程题(共2题,第1题10分,第2题20分,共30分) 1、编程输出100~300之间的整数中所有的素数,要求每行输出4个素数。 2、设a、b、c为区间[1,100]的整数,统计使等式 c/(a*a+b*b)=10成立的所有解的个数。 《C语言程序设计》试卷 第 9 页 共 25 页 C语言程序设计试卷(3) 一、选择题(共10题,每题2分,共计20分) 1. 以下程序中编译和运行结果均正确的一个是( ① )。 A. void main(void) B. void main(void) { { union union { { int n; int n; float x; float x; } comm={12.5}; } comm={1}; printf(\ printf(\ } } C. void main(void) D. void main(void) { { union union { { float x; int n; int n; float x; } comm={12.5} } comm=5; printf(\ printf(\ } } 2. 设有定义:int a=1,*p=&a; float b=2.0; char c='A'; 以下不合法的运算是( ① )。 A. p++; B. a--; C. b++; D. c--; 3. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是( ① )。 main() { int *p,*q,a,b; p=&a; printf(\ scanf(\ … } A. *p表示的是指针变量p的地址 B. *p表示的是变量a 的值,而不是变量a的地址 C. *p表示的是指针变量p的值 D. *p只能用来说明p是一个指针变量 4. 若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32),后num的值为( ① )。 A. 4 B. 16 C. 32 D. 52 《C语言程序设计》试卷 第 10 页 共 25 页 5. 已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是( ① ),(注: _ 表示空格) int al,a2;char c1,c2; scanf(\ A. 10A_20_B B. 10_A_20_B C. 10A20B D. 10A20_B 6. 若有说明:int a[10]; 则对a数组元素的正确引用是( ① )。 A. a[10] B. a[3.5] C. a[5-3] D. a[-1] 7. 在C语言中, 一维数组的定义方式为: 类型说明符 数组名 ① ; A. [整型常量表达式] B. [表达式] C. [整型常量] D. [整型表达式] 8. 以下能对一维数组a进行正确初始化的语句是( ① )。 A. in a[10]=(0,0.0,0,0); B. int a[10]={}; C. int a[]={0}; D. int a[10]={10*1}; 9. 以下程序段( ① )。 x=-1; do { x=x*x; } while(! x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误 10. 以下关于do-while循环的不正确描述是( ① )。 A. do-while的循环体至少执行一次 B. do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C. 在do-while循环体中,一定要有能使while后面表达式的值变为零(\假\的操作 D. do-while的循环体可以是复合语句 二、填空题(共10空,每空2分,共20分) 1. 在C语言中,一个float型数据在内存中所占的字节数为( (1) )个字节;一个double型数据在内存中所占的字节数为( (2) )个字节。 2. 若有定义:char c='\\010'; 则变量C中包含的字符个数为( (3) )。 3. C源程序的基本单位是( (4) )。 4. 在C语言中(以16位PC机为例),一个char型数据在内存中所占的字节数为( (5) ); 一个int型数据在内存中所占的字节数为( (6) )。 《C语言程序设计》试卷 第 11 页 共 25 页 5. 已有定义: int m; float n,k; char chl,ch2; 为使m=3, n=6.5, k=12.6, ch1='a', ch2='A', 输入数据的格式为: (注: _ 表示空格) 3_6.5_12.6aA 则对应的scanf语句是( (7) );。 6. 执行下面的程序片段后,x的值是( (8) )。 i=10; i++; x=++i; 7. 设a、b、c均是int 型变量,则执行以下for循环后,c的值为( (9) )。 for(a=1,b=5;a<=b;a++) c=a+b; 8. 以下do-while语句中循环体的执行次数是( (10) )。 a=10; b=0; do { b+=2; a-=2+b; } while (a>=0); 二、完成程序题(共10空,每空2分,共20分) 1.下面程序的功能是用公式:π×π/6=1/(1×1)+1/(2×2)+1/(3×3)+...... 求π的近似值, 直到最后一项的值小于10e-6为止。 #include long i=1; (1) pi=0; while (i*i<=10e+6) { pi= (2) ; i++; } pi=sqrt(6.0*pi); printf(\ } 2. 下面程序的功能是把以下给定的字符按其矩阵格式读入数组str1中,并输出行列号之和是3的数组元素。 void main(void) { char str1[4][3]={'A','b','C','d','E','f','G','h','I','j','K','i' }; int x,y,z; for(x=0;x<4;x++) for(y=0; (3) ;y++) { z=x+y; if ( (4) ) printf(\ 《C语言程序设计》试卷 第 12 页 共 25 页
相关推荐: