模拟试题(一)

一、填空题(10)

1、  是指向含有10字符元素的一维数组的指针变量的指针变量          2、     1    

3、   123456.123               4、         4     

5、   900                      6、       存储单元     , 指向的单元大小

7、    4                       8、         8       

9、   非0                     10、     y<=x && y>=z     

二、单项选择题(20)

(把正确答案填入下表各对应的题号下)

1

2

3

4

5

6

7

8

9

10

C

D

C

A

A

D

D

A

B

D

三、写出程序的输出结果(20)

1、 The output of 5.1.is      2、The output of 5.3 is:        3、The output of 5.5                                                     

i=6   j=120                    21->2101                  1207654300                           

           123->7B                    6702154300                     

                                        

四、根据各编程题意填空(25)

1、  t=-t*x*x/(n*(n+1))      n+=2       epsil>0  

2、  i=j        i--        j++  

3、  "r"      "w"       !feof(fp1)    

五、编程题(20)

1.编一个C函数是将字符数组中的小写字母转换成大写字母,或者将字符数组中的大写字母转换成小写字母。

void struplw(char *pc)

{ while (*pc!='0')

 { if (*pc>='A' && *pc<='Z')  *pc+=32;

   elseif (*pc>='a' && *pc<='z')  *pc-=32;

   pc++;

}

}

1.请编一个函数int fun(float s[], int n),它的功能是:求高于平均分的人数,并作为函数值返回。数组s中存放n位学生的成绩。数组s的值由主函数从键盘读入,用-1来结束输入。

int fun(float s[], int n)

 { int i,k=0; float aver,y=0;

  for(i=0;i<n;i++)

y=y+s[i];

aver=y/n;

  for(i=0;i<n;i++)

   if( s[i]>y ) k++;

 return k;

 }

main()

 { float s[100],x,m,n=0;

   scanf("%f",&x)

   while(x!=-1&&n<100)

{ s[n]=x;

  n++;

  scanf("%f",&x);

 }

   m=fun(s,n);

   printf("m=%d",m);

 }

 

 

模拟测试(二)

一、单项选择题(14)

(把正确答案填入下表各对应的题号下)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

D

A

A

C

B

B

D

C

C

B

B

D

D

A

二、填空题(14)

1、     69                     2、     0.5*a*b         

3、 fabs(a+b)*fabs(a-b)        4、     a>b && a>c       

5、   m%n==0 或 !(m%n)         6、     9、  9 、 3      

7、        -17                 8、      m=1F            

9、        5*3=15              10、   int a[5],*p=a      

11、        0                  12、         4          

13、 fopen("a.txt","rw")       14、      地址传递       

三、写出程序的输出结果(20)

1、  1 0 2 2 5 7 13 20              2、  bcdefga           3   2

                                         cdefgab               3

                                         defgabc               5

                                                               7

四、根据各编程题意填空(22)

1、 int s1=0,s2=0;      ch=getchar()      || ch> 'A' && ch<'Z'   

printf("%d,%d",s1,s2)  

2、int n, char *ch      printf(" ")    

        printf("%c",ch[i])          printf("\n")    

3、   head!=NULL         p=p.next          no==p.num      

五、编程题(30)

1. 输入20个整数,输出其中能被组中其它元素整除的那些数组元素。

  main()

   {int a[20],i,j,k;

    printf("Enter the number=\n");

    for(i=0;i<20;i++)

    scanf("%d",&a[i]);

    for(i=0;i<20;i++)

      { k=1; /*用k判断a[i]是否被其它元素整除,首先设为1,即表示能被其它元素整除*/

        for (j=0;j<20;j++) /* 判断a[i]是否被其它元素整除*/

         if (i!=j) /*此条件可以不要;即此语句可以不用,因为自身除自身一定能整除*/

           if(a[i]%a[j]!=0) /*如果被其中一个整除了则k=0,并中断j的循环,判断下一个a[i]*/

            { k=0; break; }  

        if (k==1) printf("%d  ",a[i]);

      }

  }    

2. 编写一个函数,在n个元素的一维数组中,统计比相邻元素大的数组元素个数并将统计数返回(不考虑a[0]和a[n1]),要求以指针变量而不是数组名作参数。

    int count(float *a,int n)

       { int i,num;

         num=0;  /*置num的初值为0*/

         for (i=1;i<n-1;i++) /* 依次比较a[i]与相邻元素的关系*/

            if(a[i]>a[i-1] && a[i]>a[i+1]) /*如果比相邻元素大,则计数*/

              num++;

         return num;

       }

3. 把文本文件d1.dat复制到文本文件d2.dat中,要求仅复制d1.dat中除英文字符和数字以外的其它内容。

     #include "stdio.h"

     main()

      { FILE fp1,fp2;/*定义两个文件类型指针变量*/

       char ch;

       fp1=fopen("d1.dat","r");/*以读方式打开文件d1.dat*/

       fp2=fopend("d2.dat","W");/*以写方式打开文件d2.dat*/

       while(!feof(fp1))/*如果没遇到文件结束标志,则循环地读一个字符*/

       {ch=fgetc(fp1);/* 从文件d1.dat中读出一个字符*/

       if (!((ch>="A" && ch<="Z") || (ch>="a" && ch<="z")||(ch>="0" && ch<="9"))

          fputc(ch,fp2);/* 如果不是字母或数字字符,则写入到文件d2.dat中*/

        }

      fclose(fp1);/* 关闭文件d1.dat */

      fclose(fp2);

      }

模拟测试(三)

一、填空题(15)

1、 (-b+sqrt(b*b-4*a*c))/(2*a)      2、  (ch>=65 && ch<=90)

3、      2.4                        4、        10            

5、     int (或 整型)               6、        10,12        

7、      12                         8、         0,-1         

9、      8,u                      10、         our          

11、     3                         12、           5           

13、     3                

二、单项选择题(20)

    (把正确答案填入下表各对应的题号下)

1

2

3

4

5

6

7

8

9

10

C

C

B

C

A

B

D

D

C

B

三、写出程序的输出结果(20)

1、18—26      2、  3,2,5—3,3,5——4,2,6—3,4,6

3、 14           4、  4321

四、根据各编程题意填空(22)

1、 s[k].aver       s[k].aver>s[maxsub].aver         maxsub=k      

2、   int *m         k>=0 && x<v[k]                  v[k]           

3、   char *s         sign=-1;k++;        digit=0        digit=10*digit+s[k]-'0'     

五、编程题(30)

1.输入mn(mn≥0)后,计算表达式的值并输出 要求将计算阶乘的运算写成函数fact (n), 函数返回值的类型为float

        float fact( int n)

         {int i; float s=1.0

         for (i=1;i<=n;i++)

         s=s*i;

         return s;

        }

       main()

       { int n,m;float y

        do  /*输入m,n ,如果m<n n<0,则重输入: 即要求m>=n>=0*/

          { scanf("%d%d",&m,&n)

         } while (m<n || n<0);

       y=fact(m)/(fact(n)*fact(m-n));

         printf("%f\n",y);

       }

 

3.统计当前目录下文本文件data.txt中字符'$'出现的次数,并将统计结果写入当前目录下的文本文件res.txt

        #include "stdio.h"

        main()

        { FILE fp1,fp2;

          char ch ; int n;

        fp1=fopen("data.txt","r");

        fp2=fopen("res.txt","w");

        while((ch=fgetc(fp1))!=EOF)

           if (ch=='$' ) n++;

        fprintf(fp2;"%d",n);/*把数值数据写入文本文件中要用fprintf()函数*/

         fclose(fp1);fcolse(fp2);

        }

 

 

模拟测试(四)

一、单项选择题(14)

(把正确答案填入下表各对应的题号下)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

C

D

D

B

B

C

D

C

C

A

A

B

A

B

二、填空题(14)

1、     16                      &n