一.单项选择题(请将选择结果填入题首的【】内,每小题2分,共40分)
【 】1. 定义n为整型变量,x为浮点型变量的正确语句是( )。 A. double n,x; B. float x; int n; C. int x; float n, D. int n, float x;
【 】2. 设:int n; 判断“n不为0”的表达式是( )。 A. n==0 B. !(n=0) C. n=!0 D. n!=0
【 】3. 用于for循环体中continue语句的作用是( )。 A. 终止程序执行 B. 终止循环继续 C. 结束本次循环 D. 重新执行循环
【 】4. 设:char y='f'; 则执行printf(\"%c\\n\后输出的结果是( )。 A. E B. F C. G D. H
【 】5. 设:char m; 判断“m是否为数字字符”的表达式是( )。 A. '0'<=m <='9' B. 0<=m && m<=9 C. m>='0' && m<='9 D. \"0\"<=m && m<=\"9\"
【 】6. 为字符变量a、b分别赋初始'S'、'H'的语句是( )。 A. char a,b='S','H'; B. char a='S', b='H'; C. char a=\"S\D. char a='S',char b='H';
【 】7. 设:int n=2012; ( )使屏幕上同样显示“n=2012”。 A. printf( &n ); B. printf( \"n=\C. printf( \"n=%d\; D. printf(\"n=\
【 】8. 设:char b[5], *p=b; ( )赋值语句是正确。 A. b=\"com\"; B. *b=\"com\"; C. p=\"com\"; D. *p=\"com\";
【 】9. 设:int x[]={0,1,2,3,4,5,6,7,8,9}, *p=x+5;
while(*p++<7); 则语句 printf(\"%d\的输出结果为( )。 A. 6 B. 7 C. 8 D. x[7]的地址
【 】10. 以下语句中,( )语句的循环次数不为10次。
A.for(i=1;i<10;i++); B.for(i=10;i>=1;i--); C.i=10;while(i>0){--i;} D.i=1;do{i++;}while(i<=10);
【 】11. 若要定义一个int型二维数组a,并使其各元素具有初值:2 3 0 0 4 0 5 0
0 0 0 0,则正确的语句( )。 A. int a[3][4]= {{2,3},{4,,5}}; C. int a[][4]= {2,3,0,0,4,0,5,0,0,0,0,0}; B. int a[][]={2,3,0,0,4,0,5,0,0,0,0,0}; D. int a[][]={{2,3,0,0},{4,0,5,0},{0,0,0,0}};
【 】12.( )是错误的数组声明语句。 A.char a[] = \"china\"; C.char a[]={\"china\B.char a[]='china'; D.char a[]={'c','h','i','n','a' };
共 7 页 第 1 页
【 】13. 已知函数原型int f(int)和int g(int)。( ) 是正确的函数调用语句。 A. int f(3); C. int g( f(3) ); B. f( int g(3) ); D. p=f( g(3) +1 );
【 】14. 设:struct fs { int fz, fm; };
struct fs x={2,3}, y={5,7}; 则表达式 x.fz*y.fm 的结果是( )。 A. 14 B. 15 C. 21 D. 35
【 】15. 关于C程序的主函数,( ) 是正确的。
A. C程序可以没有主函数,程序从第一个函数开始运行。 B. C程序的主函数就是main函数,程序从该函数开始运行。 C. C程序的第一个函数称为主函数,程序从该函数开始运行。 D. C程序可以有多个主函数,程序从第一个主函数开始运行。
【 】16. C语言程序:void main()
{int c=20;printf(\"%d\\n\}的执行结果是( )。 A. 0 B. 1 C. c D. c*c
【 】17. 设: float w; int num; char s; ( )是正确的switch语句。 A. switch(w) { case 1.0: printf(\"*\\n\"); case 2.0: printf(\"**\\n\"); } B. switch(num); { case 1 printf(\"*\\n\"); case 2 printf(\"**\\n\"); }
C. switch(s) { case 'a': printf(\"*\\n\"); case 'b': printf(\"**\\n\"); default: printf(\"\\n\");} D. switch(num+1) { case 1: printf(\"*\\n\"); case 1: printf(\"**\\n\"); default: printf(\"\\n\"); }
【 】18. 设:int i,n ;double sum; 则求调和级数s=1+1/2+1/3+...前n项之和的正确循环语句是( )。 A. for(i=1;i<=n;i++) sum+=1/i ; C. for(i=1,sum=0.0;i<=n;i++) sum+=1/i; B. for(i=1,sum=0.0;i<=n;i++) sum+=1.0/i; D. for(i=1,sum=0.0;i<=n;i++) sum+=(float)(1/i) ;
【 】19. 设:char st[]=\"www.gench.edu.cn\"; int i=0; char *s=st; 执行:while(*s++!= 'g') i++; 语句后i和*s的值分别为( )。 A. 5和'g' B. 5和'e' C. 4和'g' D. 4和'e'
【 】20.( )定义文件指针,实现对fiel.txt文件的操作。 A. FILE *pf; C. int *pf; B. char pf[] = \" file.txt \"; D. file *pf;
二.程序改错题。本着尊重原创的原则,修改程序使其正确并具备相应功能。(3小题,共20分)
-8
1.程序功能:根据公式PI/2=1+1!/3 +2!/(3*5)+„„ +n!/(3*5*„*(2n+1))求PI值,直到某一项小于10为止。 正确运行结果:PI=3.141593。(本小题8分) 不正确的源程序 #include { int i; double sum, item, eps; eps = 1e-6; sum = 1; item = 1; for(i = 1;item >= eps; i++){ item = fact(i) / multi(2*i + 1); sum = sum + item; } printf(\"PI=%0.5lf\\n\ return 0; } int fact(int n) { int i; double res; res = 1; for(i = 0; i <= n; i++) } int multi(int n) { int i; double res; res = 1; res = res * i; return res; for(i = 1; i <= n; i = i+2) res = res * i; return res; } 2.主函数输入两个整型数,调用swap函数实现两数交换后输出。(本小题7分) 程序正确运行的结果示例: 不正确的源程序 正确的源程序 共 7 页 第 3 页 #include 3.程序功能:判断一个数是否是素数。注:素数就是只能被1和自身整除的正整数;1不是素数,2是素数。(本小题5分) 程序正确运行的结果示例: number:22 22是素数 不正确的源程序 include input a date(yyyy-mm-dd):2012-7-6 2012-7-6是2012年的第188天 /********************/ 共 7 页 第 4 页 正确的源程序 /*源程序——不完整版*/ /********************/ #include //定义一个日期结构,包含int数据成员年(year)月(month)日(day),并重命名为DATE typedef struct { ; int getDays(DATE*pd); void main() { int days; DATE d; printf(\"input a date(yyyy-mm-dd):\"); scanf(\"%d-%d-%d\输入一个日期存储到DATE变量d中 days= ;//调用getDays函数,传递DATE变量d的地址到子函数,返回第几天 printf(\"%d-%d-%d是%d年的第%d天\} int getDays(DATE*pd) { int table[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31} ,{0,31,29,31,30,31,30,31,31,30,31,30,31}}; int days= ;//将日期的日数据赋给days变量 /*计算pd->year是否是一个闰年*/ int leap= ; for(int i=1; ;i++)//累加1月份到日期的前一个月的天数 days+=table[ ][ ]; return days; } 2.程序功能:从input.txt文件中读入数据,删除奇数位置上的数,结果保存到result.txt文件中。 (1)int getData(int arr[]):从input.txt文件中读数据写入arr数组,返回数组实际长度。(本小题4分) int getData(int arr[]) {int i=0; FILE *fp; if(( ))==NULL) //打开input.txt文件 共 7 页 第 5 页 {printf(\"can not open file!\"); return -1; } while( )//input.txt文件不为空时,执行循环体。 { ; //从input.txt文件读数据按指定格式写入arr数组。 i++; } ; //关闭input.txt文件 return i; } (2)int delArray(int arr[],int n,int i):删除下标为i的数组元素,返回数组实际长度。(本小题2分) int delArray(int arr[],int n,int i) { int j; for( ; ;j++)//从第i+1个到最后一个元素向前移动一位 arr[j-1]=arr[j]; return ; //返回数组实际长度 } (3)int saveData(int arr[],int n) 将数组arr的数据写入result.txt文件,成功返回1,否则0。(本小题3分) int saveData(int arr[],int n) { int i; FILE *fp; if((fp=fopen(\"result.txt\ {printf(\"can not open file!\"); return 0; } //遍历arr数组,将arr[i]数组元素的值写入result.txt文件 for( ; ; ) fprintf( , , ); fclose(fp); ;//成功返回 } (4)主函数:调用上述子函数实现程序功能。(本小题6分) 假设input.txt文件内容: 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 程序正确运行后,result.txt文件内容: 12 14 16 18 20 22 24 26 28 30 #include 共 7 页 第 6 页 int delArray(int arr[],int n,int i); int getData(int arr[]); int saveData(int arr[],int n); void main() {int a[ ],n;//定义a数组 int i; n= ;//调用getData函数,从input.txt文件读数据写入a数组,返回数组实际长度 if( ) //文件为空的条件 { printf(\"文件为空!\");return ; } if(n<0) { printf(\"程序运行错误!\");return ; } i=(n%2==0)? ;//n为偶数,i=n-2,否则i=n-1 for(;i>=0;i=i-2) n= ;//调用delArray函数,删除a数组下标为i的数组元素,返回删除后数组长度 if( ) //调用saveData函数,将运行结果写入result.txt文件 printf(\"程序执行成功!\"); else printf(\"程序执行失败!\"); } 四.程序设计题(10分) 编写一个字符串处理程序。功能:输入一个字符串,删除其中的数字字符后,全部转换成小写输出。 提示:字符串全部转换成小写函数原型:char*strlwr(char*src) 程序正确运行示例: 输入一个字符串:My PassWord:GenCh2012! 输出:mypassword:gench! 共 7 页 第 7 页 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务