指针跟数组_数组指针定义

指针跟数组_数组指针定义2022年河北专接本C语言程序设计模拟试卷(3)河北省普通高校专科接本科教育考试C 语言程序设计模拟试卷六(考试时间:75 分钟)(总分:150 分)说明:请在答题纸的相应位置上作答,在其它位置上作答的无效。一、单项选择题(本大题共 20 小题,每小题 2 分,共

2022年河北专接本C语言程序设计模拟试卷(3)   河北省普通高校专科接本科教育考试C 语言程序设计模拟试卷六   (考试时间:75 分钟)   (总分:150 分)   说明:请在答题纸的相应位置上作答,在其它位置上作答的无效。   一、单项选择题(本大题共 20 小题,每小题 2 分,共 40 分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)   1. C语言源程序文件的后缀是( )   A. “.c” B. “.obj”   C. “.exe” D. “.bas”   2. 以下选项中不正确的实型常量是( )   A. 0.23E1 B. 2.3e-1   C. 1E3.6 D. 2.3e0   3. 在C语言程序中,用关键字( )定义无符号型变量( )   A. unsigned B. float   C. double D. char   4. C语言程序中可以对程序进行注释,注释部分可以用( )括起来   A. ‘{’和‘}’ B. ‘[’和‘]’   C. “/*”和“/*” D. “*/”和“*/”   5. 若a、b都是int类型变量,( )不是正确的赋值语句   A. a=b=60; B. a=3.0   C. a=1.3; D. b=0;   6. 若变量a,b,c已正确定义并赋值,符合C语言语法的表达式是( )   A. ab/c; B. a/c*b   C. a·b D. a*bc   7. 若k是基本整型变量,则以下程序段的输出是( )   k=8567;   printf(“|%-6d   ”,k);   A. 输出格式描述符不正确 B. 输出为| 8567|   C. 输出为|8567 | D. 输出为|-08567|   8. 为表示“a和b都大于0”,应使用的C语言表达式是( )   A. (a>0)&&(b>0) B. a&&b   C. (a>0)||(b>0) D. (a>0)|(b>0)   9. 已知字符‘b’的ASCII码为98,执行下列语句后输出为( )   printf(“%d,%c”,’b’,’b’+1);   A. 98,b B. 语句不合法   C. 98,99 D. 98,c   10. 以下函数调用语句中,含有的实参个数是( )   exce((v1,v2),(v3,v4,v5),v6);   A. 6 B. 5   C. 4 D. 3   11. 若变量已正确定义,表达式( )可以使指针PX指向变量X   A. PX=&X B. PX=X   C. *PX=&X D. *PX=*X   12. 若变量已正确定义并且指针P已经指向某个变量X,则(*P)++相当于( )   A. P++ B. X++   C. *(P++) D. &X++   13. 数组定义为int a[6],数组a中有( )个素   A. 4 B. 5   C. 6 D. 7   14. 下列各语句定义了数组,( )是不正确的   A. int a[1][3]; B. int x[2][2]={1,2,3,4};   C. int x[2][]={1,2,4,6}; D. int m[][3]={1,2,3,4,5,6};   15. 表达式strcmp(“box”,”boss”)的值是一个( )   A. 正数 B. 负数   C. 0 D. 不确定的数   16. 要调用字符函数时,在#include命令行中包括( )   A. “stdio.h” B. “string.h”   C. “math.h” D. “ctype.h”   17. 若变量已正确定义且K的值是4,计算表达式(j=k–)后,( )是正确的   A. j=4,k=4 B. j=4,k=3   C. j=3,k=4 D. j=3,k=3   18. 表达式((int)(3.0/2.0))的值是( )   A. 1.5 B. 1.0   C. 1 D. 0   19. 在C语言中,优先级最低的运算符是( )   A. * B. <<   C. + D. ,   20. 若有说明:int s[3][4]={0};,则下面正确的叙述是( )   A. 只有素s[0][0]可得到初值0   B. 此说明语句不正确   C. 数组s中各素都可得到初值,但其值不一定为0   D. 数组s中每个素均可得到初值0   二、阅读程序题(本题共5小题,每小题6分,共30分,请写出程序的运行结果)   1.【程序】   #include<stdio.h>   int 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   ”,r);   }   【运行结果】   2.【程序】   #include<stdio.h>   struct HAR   { int x,y;   struct HAR *p;   } h[2];   main()   { h[0].x=1;h[0].y=2;   h[1].x=3;h[1].y=4;   h[0].p=&h[1];h[1].p=&h[0];   printf(“%d%d   ”,(h[0].p)->x,(h[1].p)->y);   }   【运行结果】   3.【程序】   #include<stdio.h>   int fun(int m,int n) { int r;   while(n) { r=m%n; m=n;   n=r;   }   return m;   }   main()   { int x=100,y=15;   printf(“%d   ”,fun(x,y));   }   【运行结果】   4. 【程序】   #include<stdio.h>   void f()   { static int a=200;   int b=1;   ++b;   printf(“%d+%d=%d   ”,a,b,a+b);   a+=200;   }   main()   { int i;   for(i=1;i<=4;i++)   f();   }   【运行结果】   5. 【程序】   #include<stdio.h>   main()   { int x,y; for(y=1,x=1;y<=20;y++) { if(x>=8) break;   if(x%2==1) { x+=5;continue; }   x-=3;   }   printf(“x=%d,y=%d   ”,x,y);   }   【运行结果】   三、程序填空题(共3题,每空5分,共35分)   1. 读入n(n<=10)个整数并放入一个数组r中,再读入一个整数x,统计并输出x在数组r中出现的次数count,如果count>0,再输出x在r中所对应的最小下标(下标从0开始)。   #include”stdio.h”   void main()   {   int x,k,sub,count,n,r[5];   scanf(“%d”,&n);   for(k=0;k<n;k++)   scanf(“%d”, ____________);   scanf(“%d”,&x);   sub=count=0;   for(k=0;k<n;k++)   if(______________ )count++;   for(k=0;k<n;k++)   {   if(x==r[k])   {   sub=k; ______________;   }   }   printf(“count=%d   ”,count);   if(count>0)   printf(“subscript is%d   ”,sub);   }   2. 程序功能:输入一个整数,将每一位数字输出。   #include<stdio.h>   void main()   { int digit,number,power,t;   printf(“Enter an integer:”);   scanf(“%d”,&number);   number=numbe<0?-number:number;   power=1;   __________________;   while(______________ )   {power*=10;   t/=10;   };   printf(“the digits are:”);   while(__________________ )   { digit=number/power;   printf(“%d”,digit);   _____________;   power/=10;   }   }   四、编程题(共3小题,每题15分 共45分)   1. 输入正整数m和n,如果m+n是素数,输出“Yes”,否则,输出“No”。要求定义并调用函数myfun(x)来判断x是否为质数,在下面空出的位置完成程序,不能定义新的变量,可不用已定义的某些变量。   #include<stdio.h>   #include<math.h>   void main()   {   int m,n;   }   int myfun(int x)   {   int k;   }   2. 编写函数求两个整数的最大公约数和最小公倍数。在主函数中输入这两个整数并输出最大公约数和最小公倍数。   3. 求Sn=a+aa+aaa+…+aa…a之值,其中a是一个数字。   例如2+22+222+2222(此时a=2,n=4),a和n的值由键盘输入。   河北省普通高校专科接本科教育考试C 语言程序设计模拟试卷七   (考试时间:75 分钟)   (总分:150 分)   说明:请在答题纸的相应位置上作答,在其它位置上作答的无效。   一、单项选择题(本大题共 20 小题,每小题 2 分,共 40 分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)   1. 以下正确的C语言自定义标识符是( )   A. _1a B. 2a_   C. do D. a12   2. 在C语言中,错误的常数表示是( )   A. 0L B. 0x6aL   C. ‘6’ D. 1.234E3.5   3. 设int a,x=2;执行语句a=x>0?3*x:x=10;后,变量x的值是( )   A. 1 B. 2   C. 6 D. 10   4. 设有以下程序段:   int x=2,y=2,z=0,a;   a=++x||++y&&z++;   printf(“%d,%d,%d   ”,x,y,z);   执行后输出的结果是( )   A. 2,2,0 B. 3,3,1   C. 3,2,0 D. 3,2,1   5. 在C语言中,字符串”\TOP 65””的长度是( )   A. 5 B. 7   C. 9 D. 12   6. 设float x;,由键盘输入:12. 45,能正确读入数据的输入语句是( )   A. scanf(“%5f”,&x); B. scanf(“%5d”,&x);   C. scanf(“%f”,x); D. scanf(“%s”,&x)   7. 逗号表达式a=2*6,a*3,a+5的值是( )   A. 12 B. 17   C. 36 D. 41   8. 以下叙述中正确的是( )   A. break语句只能用于switch语句中   B. continue语句的作用是:使程序的执行流程跳出包含它的所有循环   C. break语句只能用在循环体内和switch语句体内   D. 在循环体内使用break语句和continue语句的作用相同   9. 在C语言中,下列运算符中结合性属于自右向左的是( )   A. && B. –   C. << D. –>   10. 设int (*p) [4];,则p的含义是( )   A. 指向整型变量的指针数组   B. 指向4个整型变量的函数指针   C. 4个指向整型变量的指针变量   D. 指向具有4个整型素的一维数组的指针   11. 设char x[][10]={“Windows”,”dos”,”unix”};,执行printf(“%c”,x[1][2]);后输出的结果是( )   A. n B. i   C. o D. s   12. 设int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int(*ptr)[3]=a,*p=a[0];,则与数组素a[1][2]等价的是( )   A. *((p+2)+3) B. *(*(p+3))   C. (*ptr+1)+2 D. *((ptr+1)[2])   13. 设int a=11,b=2;,执行下述程序段后,变量a和b的值分别是( )   do   {a/=b++;}while(a>b);   A. 1,3 B. 1,4   C. 2,3 D. 2,4   14. 在C语言中,下列错误的说法是( )   A. 函数可以递归调用   B. 不允许在函数中再定义函数   C. 递归程序不可能用非递归算法实现   D. 对于continue语句,可以用过改变程序的结构而不使用它   15. 设int a[2][3]={{1},{2,3}};,则素a[1][0]的值是( )   A. 0 B. 1   C. 2 D. 3   16. C语言结构体类型变量在程序执行期间( )   A. 所有成员一直驻留在内存中   B. 只有一个成员驻留在内存中   C. 部分成员驻留在内存中   D. 没有成员驻留在内存中   17. 设   struct student   {char name[10];   int sex;   int num;   }s,*p=&s;   以下对结构变量s中成员num的非法引用是( )   A. p->num B. (*p).num   C. s.num D. student.num   18. 下列说法中正确的是( )   A. C语言的预处理命令只有宏定义和文件包含   B. 预处理命令只能出现在主函数之前   C. 所有预处理命令都是以符号“#”开头   D. 有些预处理命令不是在源程序编译之前处理   19. 已有定义int(*p)( );指针p可以( )   A. 代表函数的返回值 B. 指向函数的入口地址   C. 表示函数的类型 D. 表示函数返回值的类型   20. 下列属于文件包含的命令是( )   A. #define N 25 B. #endif   C. #include “stdio.h” D. #else   二、阅读程序题(本题共5小题,每小题6分,共30分,请写出程序的运行结果)   1. 【程序】   #include<stdio.h>   main()   { char ch1=’A’,ch2=’B’; switch(ch1)   { case ‘A’: switch(ch2)   { case ‘B’:printf(“Good!   ”);break;   case ‘A’:printf(“Better!   ”);break;   }   case ‘B’:printf(“Best!   ”);break;   }   }   【运行结果】   2. 【程序】   #include<stdio.h>   main()   { int num=11,len=0,i=0,a[30];   do { a[len++]=num%2; num=num/2; } while(num); for(i=0;i<len;i++)   printf(“%d”,a[len-i-1]);   printf(”   ”);   }   【运行结果】   3. 【程序】   #includemain()   { int x=0,y=5,z=3; while(z–>0&&++x<5) y=y-1;   printf(“%d,%d,%d   ”,x,y,z);   }   【运行结果】   4. 【程序】   #include<stdio.h>   main()   { int a=1,b=2,c=3,d=0; if(a==1)   if(b!=2) if(c==3) d=1; else d=2;   else if(c!=3) d=3;   else d=4;   else d=5;   printf(“%d   ”,d);   }   【运行结果】   5. 【程序】   #include<stdio.h>   #include<string.h>   struct A   { int a; char b[10];   double c;   };   void f(struct A t)   { t.a=1002;   strcpy(t.b,”ChangRong”);   t.c=1202.0;   }   void main()   { struct A a={1001,”ZhangDa”,1098.0};   f(a);   printf(“%d,%s,%6.1f   ”,a.a,a.b,a.c);   }   【运行结果】   三、程序填空题(共3题,每空5分,共35分)   1. 对含有10个素的数组a先按素的存储次序倒序输入,再按其正序输入。   #include<stdio.h>   #define   void main()   {   int i,a[N];   for(i=N-1;_____________ ;i–)   scanf(“%d”,_________ );   for(i=0;i<n;i++)printf(“%d ”,a[i]);   printf(“   ”);   }   2. 学生成绩的字母等级和分数范围如下:   字母等级 分数范围   A 90~100   B 80~89   C 70~79   D 60~69   E 0~59   其它字母 输入错误   输入字母等级之后,输出相应的分数范围。   #include<stdio.h>   void main()   {   _______________;   scanf(“%c”,&score);   switch(____________ )   {   case’A’:priintf(“A:90~100   ”);______________ ;   case’B’:priintf(“B:80~89   ”);break;   case’C’:priintf(“C:70~79   ”);break;   case’D’:priintf(“D:60~69   ”);break;   case’E’:priintf(“E:50~59   ”);break;   ________________:printf(“输入错误   ”);   }   }   四、编程题(共3小题,每题15分 共45分)   1. 输入自变量x的值后,计算并输出y的值。   
image.png   2. 用循环结构输入下列数字金字塔(共9行)。   1   121   12321      ……………      3. 某重点大学的博士入学考试科目为外语和两门专业课,对于每个考生,输入各科考试成绩,并计算总分。   河北省普通高校专科接本科教育考试C语言程序设计模拟试卷八   (考试时间:75 分钟)   (总分:150 分)   说明:请在答题纸的相应位置上作答,在其它位置上作答的无效。   一、单项选择题(本大题共 20 小题,每小题 2 分,共 40 分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)   1. 设int a=1,b=2,m=2,n=2;若执行以下程序段后,n的值是( )   (m=a>b)&&++n;   A. 1 B. 2   C. 3 D. 4   2. 以下正确的叙述是( )   A. C语言中,main函数必须位于文件开头   B. C语言每行中只能写一条语句   C. C语言本身没有输入、输出语句   D.对一个C语言进行编译预处理时,可检查宏定义的语法错误   3. C语言程序中,若对函数类型未加显示说明,则函数的隐含类型为( )   A. void B. double   C. int D. char   4. C语言中,可以用来说明函数的是( )   A. auto或static B. extern或auto   C. static或extern D. auto或register   5. C语言中最简单的数据类型包括( )   A. 整型、实型、逻辑型 B. 整型、实型、字符型   C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型、字符型   6. 请选出以下程序段的输出结果( )   #include   #define MIN(x,y) (x)<(y)?(x):(y)   void main()   {   int i,j,k;   i=10;j=15;   k=10*MIN(i,j);   printf(“%d   ”,k);   }   A. 15 B. 10   C. 10 D. 150   7. 若有定义:char*p1,*p2,*p3,*p4,ch;则不能正确赋值的程序语句为( )   A. p1=&ch;scanf(“%c”,p1); B. p2=(char*)malloc(1);scanf(“%c”,p2)   C. p3=getchar(); D. p4=&ch;*p4=getchar();   8. 在定义int a[10];之后,对a的引用正确的是( )   A. a[10] B. a[6.3]   C. a(6) D. a[10-10]   9. 若有语句:char s1[]=”string”,s2[8],*s3,*s4=”string2”,则对函数库strcpy的正确调用是( )   A. strcpy(s1,”string2”); B. strcpy(s4,”string1”);   C. strcpy(s3,”string1”); D. strcpy(s1,s2);   10. 设c1、c2均是char类型变量,则不正确的函数调用为( )   A. printf(“%c,%c,”,c1,c2) B. getchar(c1)   C. putchar(c2) D. putchar(c1)   11. 设有以下说明语句   struct stu {int a;float b;}stutype;   则下面的叙述不正确的是( )   A. struct是结构体类型的关键字   B. struct stu是用户定义的结构体类型   C. stutype是用户定义的结构体类型名   D. a和b都是结构体成员名   12. 设有如下函数定义:   int f(char*s)   {   char*p=s;   while(*p!=’0’)p++;   return(p-s);   }   如果在主程序中用下面的语句调用上述函数,则输出结果为( )   printf(“%d   ”,f(“goodbye!”))   A. 3 B. 6   C. 8 D. 0   13. 若有以下定义和语句:   double r=99,*p=&r;   *p=r;   则以下正确的叙述是( )   A. 以上两处的*p含义相同,都说明给指针变量p赋值   B. 在”double r=99,*p=&r;”中,把r的地址赋值给了p所指的存储单   C. 语句”*p=r;”把变量r的值赋给指针变量p   D. 语句”*p=r;”取变量r的值放回r中   14. 字符’0’的ASCII码的十进制数为48,且数组的第0个素在低位,则以下程序的输出结果是( )   #include   void main()   {   union   {   int i[2];   long k;   char c[4];   }r,*s=&r;   s->i[0]=0x39;   s->i[1]=0x38;   printf(“%x   ”,s->i[1]);   }   A. 39 B. 9   C. 38 D. 8   15. 在下列选项中,不正确的表达式是( )   A. a=(b>c) B. c–,++b,a+=1   C. a=c+b>n-m=k D. p++   16. 下面程序的功能是( )   #include   void main()   {   int i=0,n=0;char s[80],*p;   p=s;   strcpy(p,”It is a book.”);   for( ;*p!=’0’;p++)   if(*p==’’)i=0;   else if(i==0) {n++;i=1;   }   A. 统计字符串中的单词个数 B. 统计字符串中的空格个数   C. 统计字符串中的字母个数 D. 统计字符串中的全部字符个数   17. 下列程序的输出结果是( )   #include   struct abc   {int a,b,c;};   void main()   {   struct abC.s[2]={{1,2,3},{4,5,6}};   int t;   t=s[0].a+s[1].b;   printf(“%d   ”,t);   }   A. 5 B. 6   C. 7 D. 8   18. 下列程序执行后的输出结果是( )   #include   void main()   {   int a[3][3],*p,i;   p=&a[0][0];   for(i=0;i<9;i++)p[i]=i+1;   printf(“%d   ”,a[1][2]);   }   A. 3 B. 6   C. 9 D. 随机数   19. 下面程序输出数组中的最大值,由s指针指向该素   #include   void main()   {   int a[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;   for(p=a,s=a;p-a<10;p++)   if( )s=p;   printf(“The max:%d”,*s);   }   则在if语句中的判断表达式应该是( )   A. p>s B. *p>*s   C. a[p]>a[s] D. p-a>p-s   20. 已知字母A的ASCII码为十进制的65,下面程序的输出是( )   #include   void main()   {   char ch1,ch2;   ch1=’A’+’5’-‘3’   ch2=’A’+’6’-‘3’   printf(“%d,%c   ”,ch1,ch2);   }   A. 67,D B. B,C   C. C,D D. 不确定的值   二、阅读程序题(本题共5小题,每小题6分,共30分,请写出程序的运行结果)   1. 【程序】   #include<stdio.h>   void f(int v,int w) { int t;   t=v;v=w;w=t;   }   main()   { int x=10,y=30,z=20;   if(x>y) f(x,y);   else if(y>z) f(y,z);   else f(x,z);   printf(“%d,%d,%d   ”,x,y,z);   }   【运行结果】   2. 【程序】   #include<stdio.h>   main()   { int k,n,m; n=10;m=1;k=1; while(k<=n) { m*=2;   k+=3;   }   printf(“%d   ”,m);   }   【运行结果】   3. 【程序】程序运行时,从键盘输入 C    #include<stdio.h>   main()   { char class; scanf(“%c”,&class); switch(class)   { case ‘A’:printf(“GREAT!   ”);break; case ‘B’:printf(“GOOD!   ”);break; case ‘C’:printf(“OK!   ”);break;   case ‘D’:printf(“NO!   ”);break;   default:printf(“ERROR!   ”);   }   }   【运行结果】   4. 【程序】程序运行时,从键盘输入 2 3    #include<stdio.h>   main()   { int a,b,c; scanf(“%d%d”,&a,&b); c=a;   if(a   printf(“%d   ”,c);   }   【运行结果】   5. 【程序】   #include<stdio.h>   int f(int x)   { if(x==0||x==1)   return 3;   else   return x*x-f(x-2);   }   main()   { printf(“%d   ”,f(4)); }   【运行结果】   三、程序填空题(共3题,每空5分,共35分)   1. 以下程序用来对从键盘输入的两个字符串进行比较,输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入两个字符串分别为abcdef和abceef,则输出为-1.请填空。   #include<stdio.h>   void main()   {   char str1[100],str2[100];   int i=0,s;   printf(“   input string 1:   ”);   gets( );   printf(“   input string 2:   ”);   gets( _________________);   while((str1[i]==str2[i])&&(str1[i]!=_______________ ))   i++;   s=_____________ ;   printf(“%d   ”,s);   }   2. fun1函数的调用语句为fun1(&a,&b,&c);。它将3个整数按由大到小的顺序调整后依次放入a,b,c,三个变量中,a中放最大数,请填空。   void fun2(int*x,int*y)   {   int t;   t=*x;*x=*y;*y=t;   }   void fun1(int *pa,int *pb,int *pc)   {   if(*pc>*pb)fun2( ________________);   if(*pa<*pc)fun2( ____________);   if(*pa<*pb)fun2(___________ );   }   四、编程题(共3小题,每题15分 共45分)   1. 编写一程序,求1!+2!+3!+…+20!。要求用函数计算n!。   2. 两位数13和62具有很有趣的性质:把它们个位数字和十位数字对调,其乘积不变,即13*62=31*26。编程序求共有多少对这种性质的两位数(个位与十位相同的不在此列,如11、22,重复出现的不在此列,如13*62与62*13)。   3. 打印出以下图形   *   * * *   * * * * *   * * * * * * *   * * * * *   * * *   *   河北省普通高校专科接本科教育考试C语言程序设计模拟试卷九   (考试时间:75 分钟)   (总分:150 分)   说明:请在答题纸的相应位置上作答,在其它位置上作答的无效。   一、单项选择题(本大题共 20 小题,每小题 2 分,共 40 分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)   1. 以下定义语句中正确的是( )   A. char a=’A’b=’B’; B. float a=b=10.0;   C. int a=10,*b=&a; D. float *a,b=&a;   2. 下列运算符中,优先级最高的是( )   A. -> B. ++   C. && D. =   3. 表达式!(x>0&&y>0)等价于( )   A. !(x>0)||!(y>0) B. !x>0||!y>0   C. !x>0&&!y>0 D. !(x>0)&&!(y>0)   4. 有以下程序   #include   void main()   { int a=666,b=888;   printf(“%d   ”,a,b);   }   程序运行后的输出结果是( )   A. 错误信息 B. 666   C. 888 D. 666,888   5. 有以下程序   #include   void main()   {   int i;   for(i=0;i<3;i++)   switch(i)   {   case 0:printf(“%d”,i);   case 2:printf(“%d”,i);   default:printf(“%d”,i);   }   }   程序运行后的输出结果是( )   A. 022111 B. 021021   C. 000122 D. 012   6. 若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是( )   A. abs(x-y)<10 B. x-y>-10&&x-y<10   C. !(x-y)<-10||!(y-x)>10 D. (x-y)*(x-y)<100   7. 数组定义为,int a[11][11];则数组a的素个数为( )   A. 12 B. 144   C. 100 D. 121   8. 对于以下的变量定义,不正确的表达式是( )   struct node { int j,k; } x,*p=&x;   A. p->k=2; B. (*p).k=2;   C. x.k=2 D. x->k=2   9. 不正确的赋值或赋初值的方式是( )   A. char str[]=”string”; B. char str[10]; str=”string”;   C. char*p=”string”; D. char*p;p=”string”;   10. 设程序中不再定义新的变量,写出在函数main中可以使用的所有变量为( )   #include   int z;   int p(int x)   { static int y;   return(x+y);   }   void main()   { int a,b;   printf(“%d   ”,p(a));   ………   }   A. a,b B. a,b,z   C. a,b,y,z D. a,b,x,y,z   11. 有以下程序   #include   void main()   {   int i=0,x=0,s=0;   for(;;)   {   if(i==3||i==5) continue;   if(i==6) break;   i++;   s+=i;   }   printf(“%d   ”,s);   }   程序运行后的输出结果是( )   A. 10 B. 13   C. 21 D. 程序进入死循环   12. 有以下程序   #include   void main()   {   char a,b,c,d;   scanf(“%c,%c,%d,%d”,&a,&b,&c,&d);   printf(“%c,%c,%c,%c   ”,a,b,c,d);   }   若运行时从键盘上输入:6,5,65,66<回车>。则输出结果是( )   A. 6,5,a,b B. 6,5,65,66   C. 6,5,6,5 D. 6,5,6,6   13. s12和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是( )   A. if(s1>s2)S; B. if(strcmp(s1,s2))S;   C. if(strcmp(s2,s1)>0)S; D. if(strcmp(s1,s2)>0)S;   14. 有以下定义和语句   int a[3][2]={1,2,3,4,5,6},*p[3];   p[0]=a[1];   则*p[0]+1所代表的数组素是( )   A. a[0][1] B. a[1][0]   C. a[1][1] D. a[1][2]   15. 程序中对fun函数有如下说明   void *fun();   此说明的含义是:( )   A. fun函数无返回值   B. fun函数的返回值可以是任意的数据类型   C. fun函数的返回值是无值型的指针类型   D. 指针fun指向一个函数,该函数无返回值   16. 有以下程序   #include<stdio.h>   void fun(int *a,int i,int j)   {   int t;   if(i<j)   {   t=a[i];a[i]=a[j];a[j]=t;   i++;j–;   fun(a,i,j);   }   }   void main()   {   int x[]={2,6,1,8},i;   fun(x,0,3);   for(i=0;i<4;i++)printf(“%2d”,x[i]);   printf(“   ”);   }   程序运行后的输出结果是( )   A. 1 2 6 8 B. 8 6 2 1   C. 8 1 6 2 D. 8 6 1 2   17. 有以下说明和定义语句   struct student   { int age;char num[8];};   struct student stu[3]={{20,””},{21,””},{109,””}};   struct student *p=stu;   以下选项中引用结构体变量成员的表达式错误的是( )   A. (p++)->num B. p->num   C. (*p).num D. stu[3].age   18. 已定义ch为字符型变量,以下赋值语句中错误的是( )   A. ch=’’; B. ch=62+3;   C. ch=NULL; D. ch=’xaa’;   19. 已知有变量定义:int a;char c;用scanf(“%d%c”,&a,&c);语句给a和c输入数据,使30存入a,字符‘b’存入c,则正确的输入是( )   A. 30’b’<回车> B. 30 b<回车>   C. 30<回车>b<回车> D. 30b<回车>   20. 有以下程序   #include   fun(int a,int b)   {   if(a>b)return(a);   else return(b);   }   void main()   {   int x=3,y=8,z=6,r;   r=fun(fun(x,y),2*z);   printf(“%d   ”,r);   }   程序运行后的输出结果是( )   A. 3 B. 6   C. 8 D. 12   二、阅读程序题(本题共5小题,每小题6分,共30分,请写出程序的运行结果)   1.【程序】   #include<stdio.h>   main()   { int a[6]={12,4,17,25,27,16},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(“%d “,a[i]);   }   printf(”   ”);   }   【运行结果】   2.【程序】   #include<stdio.h>   int f(int x,int y)   { return ((y-x)*x); } main()   { int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c));   printf(“%d   ”,d);   }   【运行结果】   3.【程序】   #include<stdio.h>   void f(int c)   { int a=0;   static int b=0;   a++;   b++;   printf(“%d: a=%d b=%d   ”,c,a,b);   }   void main()   { int i;   for(i=1;i<=3;i++) f(i);   }   【运行结果】   4. 【程序】   #include<stdio.h>   main()   { char a[]=”Language”,b[]=”Programe”; char *p1,*p2;   p1=a;p2=b;   int k;   for(k=0;k<=7;k++)   if(*(p1+k)==*(p2+k)) printf(“%c”,*(p1+k));   }   【运行结果】   5. 【程序】   #includemain()   { int i;   for(i=1;i<6;i++)   { if(i%2) { printf(“#”);continue; }   printf(“*”);   }   }   【运行结果】   三、程序填空题(共3题,每空5分,共35分)   1. 编写一个函数fun(),首先从键盘上输入一个4行4列的一个实数矩阵到一个二维数组a[4][4]中,接着求出主对角线上素之和,最后返回求和结果。   #include<stdio.h>   double fun( _______________)   {   int i;   double s=0;   for(i=0;i<4;i++)s+=______________________ ;   _________________;   }   void main()   {   double a[4][4];   double s=0;   int i;j;   printf(“输入一个4*4的数值矩阵:   ”);   for(i=0;i<4;i++)   for(j=0;j<4;j++)scanf(“%1f”,&a[i][j]);   printf(“主对角线上素之和是%1f   ”, ___________);   }   2. 有一行文字,要求删去某一个字符。此行文字和要删去的字符均由键盘输入,要删去的字符以字符形式输入(如输入a表示要删去所有的a字符)。   #include<stdio.h>   void main()   { /*str1表示原来的一行文字,str2表示删除指定字符后的文字*/   char str1[100],str2[100];   char ch;   int i=0,k=0;   printf(“please input an sentence:   ”);   gets(str1);   scanf(“%c”,&ch);   for(i=0;____________ ;i++)   if (str1[i]!=ch)   { str2[________ ]=str1[i];k++;}   str2[___________ ]=’0’;   printf(“   %s   ”,str2);   }   四、编程题(共3小题,每题15分 共45分)   1. 有一分数序列
image.png求出这个数列的前20项之和。   2. 任意大于2的偶数可以分解为两个素数之和。请验证。   3. 编程,将十进制数转换成任意进制数。   河北省普通高校专科接本科教育考试C语言程序设计模拟试卷十   (考试时间:75 分钟)   (总分:150 分)   说明:请在答题纸的相应位置上作答,在其它位置上作答的无效。   一、单项选择题(本大题共 20 小题,每小题 2 分,共 40 分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)   1.若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是   A.2. B.2.   C.3. D.0.000000   2.若已定义int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i;其中 0≤i≤9, 则对a数组素不正确的引用是   A.a[p-a] B.*(&a[i])   C.p[i] D.a[10]   3. 下列程序段不是死循环的是   A. int i=100; B. int k=0;   while(1) do {   { i=i%100+1; ++k;   If (i>100) break; } while (k>=0);   }   C. for(;;); D. int s=36;   while (s);–s   4. 下面程序的运行结果是   #include “stdio.h”   main()   {int i;   for(i=1;i<=5;i++)   {if (i%2==0)   printf(“*”);   else   continue;   printf(“#”);   }   printf(“$”);}   A.*##*$ B. #*#*#$   C. *#*#$ D. #*#*$   5.下面四个选项中,均是正确的八进制数或十六进制数的选项是   A.-10 B. 0abc   0x8f -017   -011 0xc   C.0010 D. 0al2   -0x11 -0xl23   0xf1 -0x8   6.一个C语言程序是由( ) 组成的。   A.一个主程序和若干子程序 B.函数   C.若干过程 D.若干子程序   7.若已定义 char s[2][40]={“China”,”English”};则在下面表达式中能表示字符‘E’的地址的是   A.&s[2][1] B.s[1]   C.&s[1] D.&(s[1]+1)   8.程序 char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf(“%d”,*–p);的输出结果是   A.非法 B.a[4]的地址   C.5 D.3   9.以下选项中,与k=n++完全等价的表达式是   A.k=n,n=n+1 B.n=n+1,k=n   C.k=++n D.k+=n+1   10.要把函数处理结果的两个数据返回给主调函数,下面方法中不正确的是   A.return 这两个数 B. 形参用两个素的数组   C.形参用两个这种数据类型的指针 D. 用两个全局变量   11.以下程序的输出结果是   #define MIN(x,y) (x)<(y)?(x):(y)   void main()   {   int i,j,k;   i=10;j=15;k=10*MIN(i,j);   printf(“%d   ”,k);   }   A.15 B.100   C.10 D.150   12. 对于变量定义int *p[3],a[3];,正确的赋值是   A.p=a B.*p=a[0]   C.p=&a[0] D.p[0]=&a[0]   13. 以下程序段运行后变量a的值为   int x=6,y=5;   int a;   a=(–x==y++)?x:y+1;   A. 0 B. 1   C. 6 D. 5   14. 若有以下定义:   char a ; int b ; float c ; double d ;   则表达式a*b+d-c值的类型为   A.float B.int   C.char D.double   15. 对于整型变量x与赋值语句“x=x%2==0?1:0;”,不等价的if语句是   A. if (x%2!=0) x=0; else x=1; B. if (x%2) x=1; else x=0;   C. if (x%2==0) x=1; else x=0; D. if (x%2==1) x=0; else x=1;   16. 与十六进制数BC等值的二进制数是   A. B.   C. D.   17. 以下程序输出的结果是   main( )   { int a= -1,b=4,k;   k=! ((++a<0)&&! (b–<0));   printf(“%d%d%d   ”,k,a,b);   }   A.104 B.103   C.013 D.004   18. 函数调用语句 fun((exp1,exp2), (exp3,exp4))中实参的个数是   A.1 B.2   C.4 D.以上都不对   19. 当a=1,b=2,c=3时,执行以下语句后a,b,c的值分别是   if(a>c)   b=a;a=c;c=b;   A.3,2,1 B.1,2,3   C.3,1,1 D.3,2,2   20. 以下叙述中不正确的是   A.在函数中,通过return语句返回数据值   B.在函数中,如果没有return语句则不返回值   C.在函数中,可以有多条return语句   D.在C语言中,调用函数不必在一条独立的语句中完成   二、程序阅读题(本大题共 5 小题,每小题 6 分,共 30 分。请将程序的运行结构填写在答题纸的相应位置上。)   1. 【程序】   #include<stdio.h>   main()   { char a[]=”ABCDEFGH”,b[]=”abCDefGh”;   char *p1,*p2;   int k;   p1=a;p2=b;   for(k=0;k<=7;k++)   if(*(p1+k)==*(p2+k))   printf(“%c”,*(p1+k));   printf(”   ”);   }   【运行结果】   2. 【程序】   #include<stdio.h>   main()   {int y=18, i=0, j, a[8];   do   {a[i]=y%2; i++;   y=y/2;   }while(y>=1);   for(j=i-1;j>=0;j–) printf(“%d”, a[j]);   printf(“   ”);   }   【运行结果】   3. 【程序】   #include<stdio.h>   main()   {int n[3][3], i, j;   for(i=0;i<3;i++)   for(j=0;j<3;j++) n[i][j]=i+j;   for(i=0;i<2;i++)   for(j=0;j<2;j++) n[i+1][j+1]+=n[i][j];   printf(“%d   ”, n[i][j]);   }   【运行结果】   4. 【程序】   #incluede<stdio.h>   main()   { int x=10,y=9;   int a,b,c;   a=(–x==y++)?–x:++y;   b=x++;   c=y;   printf(“%d,%d,%d   ”,a,b,c); }   【运行结果】   5. 【程序】   #include<stdio.h>   void fun(char *x,char *y)   { char t;   t=*x;*x=*y;*y=t;   }   main()   { char *p=”abc”,*q=”123″;   fun(p,q);   printf(“%s,%s   ”,p,q);   }   【运行结果】   三、程序填空题(本大题共 3 小题,每空 5 分,共 35 分。请将答案填写在答题纸的相应位置上。)   1.阅读以下程序并填空。以下程序的功能是使3×3矩阵行列互换   #include<stdio.h>   main()   { int a[3][3]={1,2,3,4,5,6,7,8,9};   int i,j,t;   for(i=0;i<3;i++)   for(j=0;①;j++)   { ② ;   ③;   a[j][i]=t;}   for(i=0;i<3;i++)   { for(j=0;j<3;j++)   printf(“%3d”,a[i][j]);   printf(”   ”);   }}   2.阅读以下程序并填空。该程序的功能是:从键盘输入两个整数进行比较,根据比较结果输出“num1=num2”或“num1>num2”或“num1<num2”。   #include<stdio.h>   main()   { int num1,num2;   char ch;   printf(“Input two numbers:”);   scanf(“%d%d”,①);   if(②) ch=’=’;   if(num1>num2) ch=③;   if(num1<num2) ;   printf(“④   ”,ch);}   四、编程题(本大题共 3 小题,每小题 15 分,共 45 分。请在答题纸的相应位置上作答。)   1.完成函数void StringStrrev(char *s),该函数的功能是:将字符串s中的字符倒序存放。   2.编写函数float fun(int n),功能是:通过形参n计算:
image.png,并作为函数值返回。   3. 完成函数void fun(int array[N][N]),该函数的功能是:将N行N列的数组array每一行进行倒序存放。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/58857.html

(0)
上一篇 2024年 8月 30日 下午4:12
下一篇 2024年 8月 30日 下午4:16

相关推荐

关注微信