班号
姓名
哈工大 2008      季学期
C语言 试题
题号
 
卷面总分
分数
说明:本试卷卷面满分为100分。总成绩将按平时实验成绩、机考成绩和卷面笔试成绩各自所占比例折合后累加计算。
一、填空题(6分,每题1分)
1设变量定义为“int x,y[10];”,则“_________”与“*(y+x)请写出至少5个字符串函数”等效。
2如果在程序中使用了strcmp库函数,则程序前面要写#include "________"
31.37×1042C语言中写作________
4C语言源程序翻译成机器语言目标程序的过程称为“__________”,翻译得到的目标程序扩展名为“__________”。
5已知xdouble型变量,“scanf("________",&x);”用于从键盘读取数据存放到x中。     
6. 已知:“#define M(x,y)  x*y”,则表达式“M(5+4,3-1)”的值为________
二、单项选择题:(10分,每题2分)
1.判断字符串s1字符串s2相等,应当使用:     
A)  if (s1 = s2)       
B)  if (strcmp(s1, s2))
C)  if (!strcmp(s1, s2))     
D)  if (strcmp(s1, s2) = 0)
2用“if(0<x<3) x=x+1;”实现“如果x在0到3之间则将其值加1”的操作,________。
    (A) 正确            (B) 有语法错误    (C) 有逻辑错误    (D) 有连接错误
3
#include<stdio.h>
#include<string.h>
main()
{
    printf("%d\n", strlen("IBM\n012\t\"\\\0"));
}
则程序运行后的输出结果是             
A)  10        B) 11        C)  16      D)  12
4函数定义的首部写作“int func( )”,x、y是int型变量,则__________是正确的调用。
    (A) y=func( );        (B)    func(x);        (C)    func( )=x;    (D) y=func(x);
5下面哪个定义是合法的             
A) char a[8] = "language";
B) int a[5] = {0,1,2,3,4,5};
C) char *a = "string";
D) int a[2][] = {0,1,2,3,4,5,6};
三、写出下列程序的运行结果。(10分,每题2)
1
#include "stdio.h"
void main()
{    int i,j,n=6;
    for(i=1;i<n;i++)
    {    for(j=1;j<=n-i;j++)
            putchar(32);
        for(j=1;j<2*i;j++)
            putchar(48+i);
        printf("\n");
    }
}
则程序运行结果是:
2
#include<stdio.h>
void fun1(int x)
{
    x=20;
}
void fun2(int b[4])
{
    int  j;
    for(j=0; j<4; j++)
      {
          b[j]=j;
      }
}
main()
{
    int x = 10;
    int  a[4] = {1,2,3,4}, k;
    fun1(x);
    printf("x = %d\n", x);
    fun2(a);
    for(k=0; k<4; k++)
    {
        printf("%d\n", a[k]);
    }
}
运行结果是:
3
#include <stdio.h>
main()
{
    int  x, y;
    scanf("%2d%*4s%2d", &x, &y);
    printf("%d", y-x);
}
程序运行时输入:123456789
则程序运行结果是:
4
#include <stdio.h>
struct date
{
  int year;
  int month;
  int day;
};
void func(struct date p)
{
  p.year = 2000;
  p.month = 5;
  p.day = 22;
}
main()
{
  struct date d;
  d.year = 1999;
  d.month = 4;
  d.day = 23;
  printf("%d,%d,%d\n", d.year, d.month, d.day);
  func(d);
  printf("%d,%d,%d\n", d.year, d.month, d.day);
}
程序运行结果为:
5
#include "stdio.h"
void main()
{    int i,j,k=0;
    for(i=2;i<40;i++)
    {    for(j=2;j<i;j++)
            if(i%j==0)
                break;
        if(j==i)
        {    printf("%3d",i);
            k++;
            if(k%5==0)
                printf("\n");
        }    }
}
程序运行结果是:
四、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。(10分,每空1分)
1. 从键盘任意输入一个年号,判断它是否是闰年。若是闰年,输出“它是闰年”,否则输出“它不是闰年”。已知符合下列条件之一者是闰年:
能被4整除,但不能被100整除。
能被400整除。
#include <stdio.h>
main()
{
    int  year, flag;
    printf("Enter year:");
    scanf("%d",        );
    if (                                                    )
    {
        flag = 1;               
    }
    else 
    {
        flag = 0;               
    }
    if (           
    {
        printf("它是闰年\n");     
    }
    else
    {
        printf("它不是闰年\n");
    }
}
2. 编程判断m是否为素数,已知01不是素数。
#include <stdio.h>
#include <          >
                         
main()
{
    int n, flag;   
      printf("Input n:");
      scanf("%d", &n);
      flag = IsPrime(n);
    if (          )
    {
        printf("它是素数\n");
    }
      else
    { 
        printf("它不是素数\n");
    }
}
int IsPrime(int m)
{
    int i, k; 
      if (m <= 1)
    {
        return 0;
    }
    for (i=2;        ; i++)
    {
        k =          ;
        if (            )
        {
            return 0;
        }
    }
    return          
}
五、在下面给出的4程序中,共有18处错误(包括语法错误和逻辑错误),请出其中的错误,并改正之。(34分,每对1个错误,加1分,每修改正确1个错误,再加1分。只要对17个即可,多不加分。
1下面程序的功能是从键盘输入一行字符,统计其中有多少单词。假设单词之间以空格分开。已知:判断是否有新单词出现的方法——当前被检验字符不是空格,而前一被检验字符是空格,则表示有新单词出现。
#include <stdio.h>
main()
{
    int    i, num, n=20;
    char  str[n];           
    scanf("%s", str);   
    if (str[0] != ' ') 
    {   

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。