好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C语言程序设计模拟试题A.docx

16页
  • 卖家[上传人]:公****
  • 文档编号:501011165
  • 上传时间:2022-11-20
  • 文档格式:DOCX
  • 文档大小:25.45KB
  • / 16 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 《C语言程序设计》模拟试卷A一、 单项选择题(每题2分,共20分)1、下列有关C语言的叙述中错误的是(D)A) C语句必须以分号结束B) 任何一个C程序中有且只有一个主函数C) 复合语句在语法上可被看作一条语句D) C程序中对数据的任何操作都可由运算符实现2、以下不能定义为用户标识符的是(C)A) MAIN B) _HJC) 2ongD)LINE13、以下能正确定义一维数组的是(C)A) int a[5]={0,1,2,3,4,5};B) int a[5]=”012345”;C) char a[ ]=”012345”;D) char a[5]={0,1,2,3,4,5};4、 执行下列程序段后输出的结果是(C)x = 9;while (x > 7) { printf(“*”); x- -; }A) **** B) *** C) ** D) *5、 设 char str1[10] = “ABCDE”,str2[10] = “xyz”;则执行语句 printf(“%d”,strlen(strcpy(str1, str2)));后的输出结果是(D)解析:strcpy(st门,str2);后,str1[]里是"XYZ", Z后面有字符串结束符strcpy(st门,str2);执行后,函数返回的是strl,因为str1[]里是新值"XYZ",而 strlen(strcpy(str1,str2))就是 strlen(str1 的新值),所以得 3。

      strlen统计到字符串结束符以前,即,不计入字符串结束符A) 9 B) 8 C) 5 D) 36、 若用数组名作为函数调用的实参,则传递给形参的是(A)A)数组的首地址C)数组中全部元素的值B)数组第一个元素的值D)数组元素的个数7、 在C程序中,若未在函数定义时说明函数类型,则函数默认的类型为(C)A)void B)double C)int D)char8、 下面不能正确进行字符串赋值操作的语句是(C)A) char s[5]={"ABCD"}; B) char s[5]; s="ABCD";C) char *s;s="ABCDEF"; D) char *s="ABCD";解析:这样理论上的没错的把s指针指向字符串可以改变s指针但不能改变其指向的值正确的应该是这样 char s[] = "ABCDEF";或 char s[8];strcpy(s, "ABCDEF");9、 设有说明int s[5] = {l,3,5,7,9}; int *p=s;则下列表达式中值为3的是(C)A)++p B)++(*p) C) *(++p) D) *(p+=2)解析:A是把p得地址后移一个int单位长度,即使p指向数组的第二个元素。

      B是取得p当前指向的元素值然后加1,即1+1=2;C是先移动p,使其指向第二个元素,然后取得当前指针指向的元素值,即3.D是先使p指向数组的第三个元素,然后去的当前指针指向的元素的值,即510、 下面程序的输出结果是(B)int m=13;int fun( int x, int y){ int m=3;return( x*y-m); }main( ){ int a=7,b=5;printf(“%d\n”, fun(a,b)/m); }A) 1 B) 2 C) 3 D) 10二、填空题每空2分,共30分)1.设有变量说明语句:int x=1,y=2;则执行下述printf语句的输出结果是__1.000000_printf("%f\n",1.0+x/y);2. 执行下述程序:#include main(){int x,y;scanf("%2d%*2s%1d",&x,&y); printf("%d\n",x+y);}若从键盘输入:12345671则程序的输出结果是__17__解析:X, y为int类型,X的长度为2, y的长度为1,即x为12, y为5,故x+y=173. 以下程序的功能是:从键盘上输入若干名学生的成绩(百分制,可带小数,以输入 负数或0为结束标志),统计并输出最高成绩和最低成绩。

      请填空include main(){float x,amax,amin;scanf("%f",&x);amax=x;amin=x;while (x>0){if (x>amax) amax=x;else if (xmain(){int a[6],i;for (i=0;i<6;i++) {a[i]=9*(i-2+4*(i>3))%5; printf("%3d",a[i]);}printf("\n");}解析:(i〉3)为真时值为1,反之为0,6. 执行下述程序的输出结果是___6___。

      include main(){int a[]={2,4,6,},*ptr=&a[0],x=8,y,z;for (y=0;y<3;y++)z=(*(ptr+y)main(){int a[][2]={10,20,30,40,50,60},(*p)[2];p=a;printf("%d\n",*(*(p+2)+1));}8. 执行以下程序的输出结果是—10_include main()int s,i,sum();for (i=1;i<=10;i++)s=sum(i);printf("s=%d\n",s);}sum(int k){int x=0;return (x+=k);}9. 下述函数定义用来求出两个整数之各,并通过函数的模拟传地址调用,传回两整 数相加之和值,请填空void add(int x,int y, int *z ___){*z=x+y;}10. 函数func的功能是将整型变量x的值转换成二进制数,并将该二进制数的每一 位存入由整型指针b所指向的一维数组a,最低位存放于a[0]中,次低位存放于a[1] 中,依此类推。

      请填空void func(int x,int *b){int r;do{r=x%2; =r;x/=2;} while (x);11. 以下程序中函数invert实现将数组内所有数组元素的值逆置比如,执行本程 序将输出:10 9 8 7 6 5 4 3 2 1请填空include main(){int a[10]={1,2,3,4,5,6,7,8,9,10},i,n=10; invert(a,n-1);for (i=0;i<10;i++)printf("%3d",a[i]);printf("\n");}invert(int *s,int num){int *t,k;t=s+num;while ( t>s_ ){k=*s;*s=*t;*t=k;s++;t--;12. 若有以下定义和说明,则结构体变量w在内存中所占的字节数是unionaa};float x;float y;char c[6];structstunion aa v;float w[5];double ave;} w;13. 执行下述程序的输出结果是— include struct str{float x;char *y;} *m;struct str group[3]={95.0,"Li",82.5,"Wang",73.5,"Sun" };main(){m=group; printf("%.lf,%s\n",m->x,m->y);}14. 下面的程序用来统计某文件中字符的个数。

      请填空include #include main(){FILE *fp;long num=0;if ((fp=fopen("fnam.dat","r"))==NULL){printf("Can't open this file!\n");exit(0);while ( __ ){fgetc(fp);num++;}printf("num=%d\n",num);fclose(fp);}15. 执行下述程序后,输出结果为 include #define FUN1(a,b) a+b#define FUN2(a,b) a-b#define CAL(a,b) a*b+a+3main(){ printf("%d\n",CAL(FUN1(3,5),FUN2(4,5)));}三、修改程序(在程序出错的语句下划横线并标号,把修改后的语句写在程序 之后的横线上每小题5分,共10分)I. 下列给定程序的功能是:读入一个整数(2〈二k< = 10000),打印它的所有质因子(即所有为素数的因子)例如,若输入整数2310,则应输出2、3、5、7、IIinclude #include IsPrime(int n);{ int i,m;m=1;for ( i=2; i

      例如,若a中的字符串为aBCDeFgH,b。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.