C语言

C语言试题

时间:2024-11-01 11:35:03 诗琳 C语言 我要投稿

C语言试题

  在学习、工作生活中,我们会经常接触并使用试题,试题可以帮助学校或各主办方考察参试者某一方面的知识才能。一份好的试题都具备什么特点呢?下面是小编精心整理的C语言试题,仅供参考,欢迎大家阅读。

C语言试题

  C语言试题 1

  1.若有以下程序

  #include

  main()

  { int a=6, b=0, c=0;

  for ( ;a; ) { b += a; a -= ++c; }

  printf("%d,%d,%d", a,b,c);

  }

  则程序的输出结果是

  A) 1,14,3

  B) 0,14,3

  C) 0,18,3

  D) 0,14,6

  参考答案:B

  【解析】本循环的条件判断时只要a为0就退出循环体,初始值a的值为6,满足条件执行完循环体,b的值为6,a-=+ +c即a=a-(++c),所以a的值为5,c的值为1第二次循环后b的值为11,a的值为3,c的值为2第三次也是最后循环后,a的值为0,b的值14,c的值为3

  2.以下选项中非法的C语言字符常量是

  A) 07

  B) 

  C) aa

  D) xaa

  参考答案:C

  【解析】C选项中是字符串常量,应该用双引号表示即"aa"所以选择C选项

  3.若有以下程序

  #include

  void sp(int *a)

  { int b=2;

  a=&b; *a = *a * 2; printf("%d,", *a);

  }

  main()

  { int k=3, *p=&k;

  sp(p); printf("%d,%d", k, *p);

  }

  则程序的输出结果是

  A) 4,3,3

  B) 4,3,4

  C) 6,3,6

  D) 6,6,6

  参考答案:A

  【解析】首先在主函数中给整型变量k赋值为3,将变量k的地址赋给指针变量p;调用sp函数,将实参p的值传给形参a,在sp函数中,指针变量a又获得变量b的地址,通过运算后,输出a的值为4;返回主函数,输出k的值和p的值为3和3。因此A选项正确。

  4.若有以下程序

  #include

  int k=7;

  void f(int **s)

  { int *t=&k;

  *s=t;

  printf("%d,%d,%d,", k, *t, **s);

  }

  main()

  { int i=3,*p=&i, **r = &p;

  f(r); printf("%d,%d,%d", i, *p, **r);

  }

  则程序的输出结果是

  A) 3,3,3,7,7,7

  B) 3,7,7,7,7,7

  C) 7,7,7,3,3,3

  D) 7,7,7,3,7,7

  参考答案:D

  5.若有以下程序

  #include

  int *f(int *s,int *t)

  { int *k;

  if (*s < *t){ k = s; s=t; t=k; }

  return s;

  }

  main()

  { int i=3, j=5, *p=&i, *q=&j, *r;

  r=f(p,q); printf("%d,%d,%d,%d,%d", i, j, *p, *q, *r);

  }

  则程序的输出结果是

  A) 3,5,5,3,5

  B) 3,5,3,5,5

  C) 5,3,5,3,5

  D) 5,3,3,5,5

  参考答案:B

  【解析】在主函数中分别给整型变量i、j和指针型变量p、q赋初值,并声明指针变量r;调用f函数,并将实参变量p和q的值传递给形参变量s和t,并且f函数是指针型函数,即函数的返回值将是一个地址。在f函数中,如果条件成立,则将指针变量s和t互换,并且将指针s的`地址返回主函数。最后输出i, j, *p, *q, *r的值,即3,5,3,5,5。因此B选项正确。

  6.若有以下程序

  #include

  #define N 4

  void fun(int a[][N], int b[], int flag)

  { int i,j;

  for(i=0; i

  { b[i] = a[i][0];

  for(j=1; j

  if (flag ? (b[i] > a[i][j]) : (b[i] < a[i][j]))

  b[i] = a[i][j];

  }

  }

  main( )

  { int x[N][N]={1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16}, y[N],i;

  fun(x, y, 1);

  for ( i=0; i

  fun(x, y, 0);

  for (i=0;i

  printf("");

  }

  则程序的输出结果是

  A) 1,5,9,13,4,8,12,16,

  B) 4,8,12,16,1,5,9,13,

  C) 1,2,3,4,13,14,15,16,

  D) 13,14,15,16,1,2,3,4,

  参考答案:A

  7.若有以下程序

  #include

  void fun(int a[ ], int n)

  { int t,i,j;

  for (i=1; i

  for (j=i+2; j

  if (a[i] > a[j]) { t=a[i]; a[i]=a[j];a[j]=t;}

  }

  main()

  { int c[10]={10,9,8,7,6,5,4,3,2,1},i;

  fun(c, 10);

  for (i=0;i<10; i++) printf("%d,", c[i]);

  printf("");

  }

  则程序的输出结果是

  A) 1,10,3,8,5,6,7,4,9,2,

  B) 10,9,8,7,6,5,4,3,2,1,

  C) 2,9,4,7,6,5,8,3,10,1,

  D) 10,1,8,3,6,5,4,7,2,9,

  参考答案:D

  【解析】该题首先对一维数组进行初始化,c[0]到c[9]依次赋值为10到1;fun(c, 10);语句调用fun函数,fun函数的功能是将一维数组偶数位元素的数值由小到大排序;最后将排好序的新的一维数组进行输出。因此D选项正确。

  8.若有以下程序

  #include

  main()

  { int i,j=0;

  char a[]="How are you!";

  for (i=0; a[i]; i++)

  if (a[i] != ) a[j++]=a[i];

  a[j]=;

  printf("%s",a);

  }

  则程序的输出结果是

  A) Hay!

  B) Howareyou

  C) Howareyou!

  D) How are you!

  参考答案:C

  【解析】主函数中首先定义字符数组a[]="How are you!";执行for循环语句,语句if (a[i] != ) a[j++]=a[i];其功能是将字符数组中的空格去掉。因此C选项正确。

  9.若有以下程序

  #include

  char *a="you";

  char b[ ]="Welcome you to China!";

  main()

  { int i, j=0; char *p;

  for ( i=0; b[i] !=; i++ )

  { if (*a == b[i])

  { p=a;

  for (j=i; *p!=; j++)

  { if (*p != b[j]) break;

  p++;

  }

  if (*p==) break;

  }

  }

  printf("%s", &b[i]);

  }

  则程序的输出结果是

  A) China!

  B) to China!

  C) me you to China!

  D) you to China!

  参考答案:D

  【解析】该程序首先定义*a和b[ ],并进行初始化。主函数中通过外层for循环语句,遍历字符数组b[ ],并且将符合if条件语句的字符赋给数组p;for内层循环语句,遍历字符数组a[ ]。再将符合if条件语句的结果输出。因此D选项正确。

  10.若有以下程序

  #include

  main()

  { char a[20], b[ ]="The sky is blue."; int i;

  for (i=0; i<7; i++) scanf("%c", &b[i]);

  gets(a); printf("%s%s", a,b);

  }

  执行时若输入: (其中表示回车符)

  Fig flower is red.

  则输出结果是

  A) wer is red.Fig flo is blue.

  B) wer is red.Fig flo

  C) wer is red.The sky is blue.

  D) Fig flower is red.The sky is blue.

  参考答案:A

  C语言试题 2

  1、第1题请编写函数fun,其功能使:将两个两位正整数a b合并形成一个整数放在c中。合并的方式使:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位上。

  答案:

  void fun(int a,int b,long *c)

  {*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;}

  2、 第2题请编写一个函数fun,它的功能使:计算n门课程的平均分,计算结果作为函数值返回。

  答案:

  float fun(float *a,int n)

  {float ave=0.0;

  int i;

  for(i=0;i

  ave+=a;

  ave/=n;

  return ave;}

  3、 第3题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能使:将字符串尾部的*号全部删除,前面和中间的*号不删除。

  答案:

  void fun(char *a)

  {int i=0;

  char *p,*q;

  p=q=a;

  while(*p)

  p++;

  p--;

  while(*p==‘*’)

  p--;

  while(q<=p)

  {a=*q;

  i++;

  q++;}

  a=‘’;}

  4、第4题请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。

  答案:

  void fun(int a,int b,long *c)

  {c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;}

  5、第5题 n名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。

  答案:

  double fun(strec *h)

  {double aver=0.0;

  while(h!=null)

  {aver+=h->s;

  hy=h->next;}

  aver/=n;

  return aver;}

  6:、第6题请编写函数fun,计算并输出给定10个数的.方差。

  答案:

  double fun(double x[10])

  {int i,j;

  double s=0.0,s1=0.0;

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

  s1+=x;

  s1/=10;

  for(j=0;j<10;j++)

  s+=(x[j]-s1)*(x[j]-s1);

  s/=10;

  s=pow(s,0.5);

  return s;}

  7、第7题请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c 中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。

  答案:

  void fun(int a,int b,long *c)

  {*c=(a/10)*1000+(a%10)*10+(b%10)*100+b/10;}

【C语言试题】相关文章:

C语言试题03-28

C语言程序试题03-28

C语言试题及答案07-26

C语言考前模拟试题03-28

C语言模拟试题及答案03-28

C语言模拟试题练习12-09

标准c语言笔试题12-05

C语言考试试题及答案06-12

C语言笔试试题及答案12-05