C语言程序设计 自测题

 

C语言程序设计 试题二 

 

[单选题]

11、有以下程序
#include <string.h>
 main(int argc,char *argv[])
  {int i,len=0;
   for(i=1;i<argc;i++) len+=strlen(argv[i]);
   printf("%d/n",len);
  }
程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:
ex1  abcd  efg  10↙
则运行的结果是______。
 A、22
 B、17
 C、12
 D、9
12、与数学式子3乘以x的n次方/(2x-1)对应的C语言表达式是______。
 A、3*x^n/(2*x-1)
 B、3*x**n/(2*x-1)
 C、3*pow(x,n)*(1/(2*x-1))
 D、3*pow(n,x)/(2*x-1)
13、有以下程序
#include <stdlib.h>
struct NODE
 {int num; struct NODE *next; }
main()
 {struct NODE *p,*q,*r;
  p=(struct NODE *)malloc(sizeof(struct NODE));
  q=(struct NODE *)malloc(sizeof(struct NODE));
  r=(struct NODE *)malloc(sizeof(struct NODE));
  p->num=10;q->num=20;r->num=30;
  p->next=q;q->next=r;
  printf("%d/n",p->num+q->next->num);
 }
程序运行后的输出结果是______。
 A、10
 B、20
 C、30
 D、40
14、有以下程序
struct STU
 {char num[10]; float score[3]; }
main()
 {struct STU s[3]={{"20021",90,95,85},
                   {"20022",95,80,75},
                   {"20023",100,95,90}},*p=s;
 int i; float sum=0;
 for(i=0;i<3;i++)
 sum=sum+p->score[i];
printf("%6.2f/n",sum);
}
程序运行后的输出结果是______。
 A、260.00
 B、270.00
 C、280.00
 D、285.00
15、以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序。
void sort(int a[],int n)
{int i,j,t;
  for(i=0;i<n-1;i++)
    for(j=i+1;j<n;j++)
      if(a[i]<a[j])   {t=a[i];a[i]=a[j];a[j]=t;}
 }
main()
  {int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
   sort(&aa[3],5);
   for(i=0;i<10;i++)  printf("%d,",aa[i]);
   printf("/n");
   }
程序运行后的输出结果是______。
 A、1,2,3,4,5,6,7,8,9,10,
 B、10,9,8,7,6,5,4,3,2,1,
 C、1,2,3,8,7,6,5,4,9,10,
 D、1,2,10,9,8,7,6,5,4,3,
16、有以下程序
void ss(char *s,char t)
 {while(*s)
   {if(*s==t) *s=t-'a'+'A';
    s++;
    }
  }
main()
 {char str1[100]="abcddfefdbd",c='d';
  ss(str1,c);  printf("%s/n",str1);
 }
程序运行后的输出结果是______。
 A、ABCDDEFEDBD
 B、abcDDfefDbD
 C、abcAAfefAbA
 D、Abcddfefdbd
17、程序中头文件type1.h的内容是:
#define N 5
#define M1 N*3
程序如下:
#include "type1.h"
#define M2 N*2
main()
{int i;
 i=M1+M2; printf("%d/n",i);
}
程序编译后运行的输出结果是______。
 A、10
 B、20
 C、25
 D、30
18、有以下程序
main()
 {int a=15,b=21,m=0;
   switch(a%3)
     {case 0:m++;break;
      case 1:m++;
      switch(b%2)
       {default:m++;
        case 0:m++;break;
       }
     }
  printf("%d/n",m);
}
程序运行后的输出结果是______。
 A、1
 B、2
 C、3
 D、4
19、以下非法的赋值语句是______。
 A、n=(i=2,++i);
 B、j++;
 C、++(i+1);
 D、x=j>0;
20、已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是______。
 A、6
 B、0
 C、2
 D、1
21、以下叙述中错误的是______。
 A、二进制文件打开后可以先读文件的末尾,而顺序文件不可以
 B、在程序结束时,应当用fclose函数关闭已打开的文件
 C、利用fread函数从二进制文件中读数据,可以用数组名给数组中所有元素读入数据
 D、不可以用FILE定义指向二进制文件的文件指针
22、有以下程序
#include <stdlib.h>
main()
 {char *p,*q;
  p=(char *)malloc(sizeof(char)*20); q=p;
  scanf("%s%s",p,q); printf("%s%s/n",p,q);
 }
若从键盘输入:abc def↙,则输出结果是______。
 A、def def
 B、abc def
 C、abc d
 D、d d
23、若有以下程序:
main()
 {int k=2,i=2,m;
  m=(k+=i*=k);  printf("%d,%d/n",m,i);
 }
执行后的输出结果是______。
 A、8,6
 B、8,3
 C、6,4
 D、7,4
24、有以下程序
#include <string.h>
main()
{char *p="abcde/0fghjik/0";
 printf("%d/n",strlen(p));
}
程序运行后的输出结果是______。
 A、12
 B、15
 C、6
 D、5
25、有以下程序
main()
 {unsigned char a,b,c;
  a=0x3; b=a|0x8; c=b<<1;
  printf("%d%d/n",b,c);
 }
程序运行后的输出结果是______。
 A、-11  12
 B、-6  -13
 C、12  24
 D、11  22
26、以下选项中,与k=n++完全等价的表达式是_______。
 A、k=n,n=n+1
 B、n=n+1,k=n
 C、k=++n
 D、k+=n+1
27、有以下程序
int a=3;
main()
 {int s=0;
   {int a=5; s+=a++; }
    s+=a++; printf("%d/n",s);
 }
程序运行后的输出结果是_______。
 A、8
 B、10
 C、7
 D、11
28、以下程序中函数f的功能是将n个字符串,按由大到小的顺序进行排序。
#include <string.h>
void f(char p[][10],int n)
{ char t[20]; int i,j;
  for(i=0;i<n-1;i++)
   for (j=i+1;j<n;j++)
    if(strcmp(p[i],p[j])<0)
     { strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}
}
main()
{char  p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};int i;
 f(p,5); printf("%d/n",strlen(p[0]));
}
程序运行后的输出结果是______。
 A、6
 B、4
 C、5
 D、3
29、设有如下定义:
struct sk
 {int a;
  float b;
 }data;
int *p;
若要使p指向data中的a域,正确的赋值语句是______。
 A、p=&a;
 B、p=data.a;
 C、p=&data.a;
 D、*p=data.a
30、以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:
main()
 {int n,k;
  float score,sum,ave;
  sum=0.0;
  for(n=1;n<=10;n++)
   {for(k=1;k<=4;k++)
     {scanf("%f",&score);  sum+=score;}
    ave=sum/4.0;
    printf("NO%d:%f/n",n,ave);
    }
 }
上述程序运行后结果不符合题意,是因为其中有一条语句置于程序中的位置错误,这条语句是______。
 A、sum=0.0;
 B、sum+=score;
 C、ave=sum/4.0;
 D、printf("NO%d:%f/n",n,ave);
31、有以下程序:
float fun(int x,int y)
  {return(x+y); }
main()
  {int a=2,b=5,c=8;
   printf("%3.0f/n",fun((int)fun(a+c,b),a-c));
  }
程序运行后的输出结果是______。
 A、编译出错
 B、9
 C、21
 D、9.0
32、以下程序中的函数reverse的功能是将a所指数组中的内容进行逆置。
void reverse(int a[],int n)
 {int i,t;
  for(i=0;i<n/2;i++)
     {t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
 }
main()
{int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
 reverse(b,8);
 for(i=6;i<10;i++) s+=b[i];
 printf("%d/n",s);
}
程序运行后的输出结果是______。
 A、22
 B、10
 C、34
 D、30
33、以下选项中合法的用户标识符是______。
 A、long
 B、_2Test
 C、3Dmax
 D、A.dat
34、有以下程序
main()
 {char a[]={'a','b','c','d','e','f','g','h','/0'};  int i,j;
  i=sizeof(a);  j=strlen(a);
  printf("%d,%d/n",i,j);
 }
程序运行后的输出结果是______。
 A、9,9
 B、8,9
 C、1,8
 D、9,8
35、设有定义:long x=-123456L;,则以下能够正确输出变量x值的语句是______。
 A、printf("x=%d/n",x);
 B、printf("x=%ld/n",x);
 C、printf("x=%8dL/n",x);
 D、printf("x=%LD/n",x);
36、有以下程序
#include <stdio.h>
main()
{FILE *fp; int i=20,j=30,k,n;
 fp=fopen("d1.dat","w");
 fprintf(fp,"%d/n",i);fprintf(fp,"%d/n",j);
 fclose(fp);
 fp=fopen("d1.dat","r");
 fscanf(fp,"%d%d",&k,&n); printf("%d%d/n",k,n);
 fclose(fp);
}
程序运行后的输出结果是_____。
 A、20  30
 B、20  50
 C、30  50
 D、30  20
37、若有以下说明和定义:
typedef int *INTEGER;
INTEGER p,*q;
以下叙述正确的是______。
 A、p是int型变量
 B、p是基类型为int的指针变量
 C、q是基类型为int的指针变量
 D、程序中可用INTEGER代替int类型名
38、有以下程序
int f(int n)
 {if (n==1) return 1;
    else return f(n-1)+1;
  }
 main()
 {int i,j=0;
  for(i=1;i<3;i++)  j+=f(i);
  printf("%d/n",j);
 }
程序运行后的输出结果是______。
 A、4
 B、3
 C、2
 D、1
39、有以下程序
main()
{int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
 int i,s=0;
 for(i=0;i<4;i++) s+=aa[i][1];
 printf("%d/n",s);
}
程序运行后的输出结果是______。
 A、11
 B、19
 C、13
 D、20
40、以下叙述中正确的是______。
 A、构成C程序的基本单位是函数
 B、可以在一个函数中定义另一个函数
 C、main()函数必须放在其它函数之前
 D、所有被调用的函数一定要在调用之前进行定义


[填空题]
6、下面程序的运行结果是______。
void swap(int *a,int *b)
 {int *t;
  t=a;a=b;b=t;
 }
main()
 {int x=3,y=5,*p=&x,*q=&y;
  swap(p,q);
  printf("%d%d/n",*p,*q);
 }
7、函数sstrcmp()的功能是对两个字符串进行比较。当s 所指字符串和t所指字符相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。
#include <stdio.h>
int sstrcmp(char *s,char *t)
 {while(*s&&*t&&*s==______)
   {s++;t++; }
  return ______;
 }
8、若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为"读"而打开此文件:fp=fopen(______);。
9、fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。
#include <stdio.h>
#define N 100
int fun(int(*a)[N])
 {int row,col,max,min;
  for(row=0;row<N;row++)
   {for(max=a[row][0],col=1;col<N;col++)
      if(______) max=a[row][col];
    if(row==0) min=max;
    else if(______) min=max;
   }
  return min;
 }

10、以下程序运行后的输出结果是______。
main()
 {int x=15;
  while(x>10&&x<50)
   {x++;
    if(x/3){x++;break;}
    else continue;
   }
   printf("%d/n",x);
 }
11、下面程序的运行结果是:______。
typedef union student
 {char name[10];
  long sno;
  char sex;
  float score[4];
 }STU;
main()
 {STU a[5];
  printf("%d/n",sizeof(a));
 }

12、有以下程序:
#include <stdio.h>
main()
 {char c;
  while((c=getchar())!='?') putchar(--c);
 }
程序运行时,如果从键盘输入:Y?N?↙,则输出结果为______。
13、以下程序运行后的输出结果是______。
void fun(int x,int y)
 {x=x+y;y=x-y;x=x-y;
  printf("%d,%d,",x,y);}
main()
 {int x=2,y=3;
  fun(x,y);
  printf("%d,%d/n",x,y);
 }

 

你可能感兴趣的:(c,struct,语言,float,FP,fun)