C语言程序设计期末考试模拟试卷

单项选择题

在下列各题的备选项中,请选择一个最符合题意的选项。

1) 若有以下程序段

int r=8;
printf("%d\n",r>>1);

输出结果:是( )。
A.4
B.8
C.16
D.2

2) 若有以下语句

typedef struct S {
    int g;
    char h;
} T;

以下叙述中正确的是( )。
A.可用T定义结构体变量
B.可用S定义结构体变量
C.S是struct类型的变量
D.T是struct S类型的变量

3) 以下选项中,当x为大于1的奇数时,值为0的表达式是( )。
A.x%2==0
B.x/2
C.x%2!=0
D.x%2==1

4) 有以下程序

#include <stdio.h>
#define f(x) x*x*x
main()
{
    int a=3,s,t;
    s=f(a+1);
    t=f((a+1));
    printf("%d,%d\n",s,t);
}

程序运行后的输出结果是( )。
A.10,64
B.10,10
C.64,10
D.64,64

5) char w;int x;float y;则表达式w*x+y-3.14的结果类型是()。
A.float
B.char
C.int
D.Double

6) 若执行以下程序时从键盘上输入3和4,则输出的结果是( )。

main()
{
    int a,b,s;
    scanf("%d %d",&a,&b);
    s=a;
    if(a<b)s=b;
    s*=s;
    printf("%d\n",s);
}

A.14
B.16
C.18
D.20

7) 下面程序的输出结果是( )。

#include <stdio.h>
#define SUB(X,Y) (X)*Y
main()
{
   int a=3,b=4;
   printf("%d\n",SUB(a++,b++));
}

A.12
B.15
C.16
D.20

8) 指针s所指字符串的长度为( )。

char *s="\\abc\\\n";

A.9
B.7
C.6
D.说明不合法

9) 对于以下的变量定义,表达式( )不符合C语言语法。

struct node {
    int len;
    char *pk; 
} x = {2, "right"}, *p = &x;

A.p->pk
B.*p.pk
C.*p->pk
D.*x.pk

10) 若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为( )。
A.-1
B.0
C.1
D.3

填空题

请将下列试题的空白处补充完整。

1) C语言程序总是从( )函数开始执行。
2) 图片描述的C语言表达式( )。
3) 下列程序的输出结果为________。

#include<stdio.h>
main()
{
    int m=8;
    if(m--<8) printf("%d\n",++m);
    else printf("%d\n",--m);
}

4) 若有说明int a[3][4]={{1,2}, {0}, {4,6,8,10}},则a数组的元素个数为( )。
5) 己知int a[][3]={1,2,3,4,5,6};,数组元素a[1][1]的值是( )。
6) 有以下程序,执行后输出结果是____。

#include <stdio.h>
main()
{
    unsigned char a,b;
    a=4|3;
    b=4&3;
    printf("%d%d\n",a,b);
}

程序填空题

请将下列程序中的空白处补充完整。

1) 本程序中函数fun的功能是将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入"Ab,cD",则输出"ab,cd"。请将下述程序补充完整(注意:不改动程序的结构,不得增行或删行)。

#include  <stdio.h>
#include  <string.h>
#include  <conio.h>
char   【1】   fun(char tt[])
{
    int i;
    for(i=0;tt[i];i++)
    {
        if((tt[i]>='A')&&(tt[i]<=   【2】   ))
            tt[i]+=32;
    }
    return(tt);
}
main()
{
    char tt[81];
    printf("\nPlease enter a string: ");
    gets(tt);
    printf("\nThe result string is: \n%s",fun(   【3】   ));
}

2) 以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。

main( )
{ int x[10],a[9],i;
  for (i=0;i<10;i++)scanf("%d",&x[i]);
  for(  【1】  ;i<10;i++)
    a[i-1]=x[i]+  【2】  ;
  for(i=0;i<9;i++)  printf("%d",a[i]);
  printf("\n");
}

程序改错题

请按要求修改下列程序中的错误。
1) 下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。例如,若输入“good luck!”,则应输出“Good Luck!”。
请修改程序中的错误,使程序能得出正确的结果。
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include <ctype.h>
#include <string.h>
#include <stdio.h>
/*******found*********/
void top(char s)
{
  int i=0;
  for(;*s;s++)
    if(i)
    {
      if(*s==' ')
        i=0;
    }
    else
    {
      if(*s!=' ')
      {
        i=1;
        *s=toupper(*s);
      }
    }
}
main()
{
  char str[81];
  printf("\nPlease enter an English text line: ");
  gets(str);
  printf("\n\nBefore changing:\n %s",str);
  top(str);
  printf("\nAfter changing:\n %s\n",str);
}

2) 下列给定的程序中,函数fun的功能是交换主函数中两个变量的值。例如,若变量x中的值为1,y中的值为2,则程序运行后x中的值为2,y中的值为1。
请修改程序中的错误,得出正确的结果。
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include <stdio.h>
/****found******/
void fun(int a,int b)
{
  int t;
  /****found******/
  t=a;a=b;b=t;
}
main()
{
  int x,y;
  x=1;
  y=2;
  fun(&x,&y);
  printf("the result is %d,%d\n",x,y);
}

程序设计题

请按照试题要求,完成规定的程序设计。
1) 编写程序验证歌德巴赫猜想:1000-2000中的每一个偶数都可以表示成两个素数之和。如果此猜想成立,显示"all numbers are OK!;否则显示"n is not OK!",这里n是第一个使猜想不成立的偶数。

2) 编写程序,实现如下功能:
对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如,输入的两个字符串分别为"abcdefg"和"abceef",则输出为-1。

3) N名学生的成绩已经在主函数中放入一个带头结点的链表结构中,head指向链表的头结点。请编写程序,它的功能是求出平均分、由函数值返回。

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值