鱼C论坛

 找回密码
 立即注册
查看: 4205|回复: 3

[技术交流] 哈尔滨工业大学C语言期末试卷

[复制链接]
发表于 2013-8-10 22:20:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 快乐阳光 于 2013-8-11 10:19 编辑

一、单项选择题:(10分,每题2分)
1.char (*p)[5];该语句声明p是一个         。
A) 指向含有5个元素的一维字符型数组的指针变量p
B) 指向长度不超过5的字符串的指针变量p
C) 有5个元素的指针数组p,每个元素可以指向一个字符串
D) 有5个元素的指针数组p,每个元素存放一个字符串
2.C语言源程序的某文件中定义的全局变量的作用域为:_______。
A) 本文件的全部范围
B) 本函数的全部范围
C) 从定义该变量的位置开始到本文件结束
D) 本程序的所有文件的范围
3.以下程序的正确输出结果为:_______。
main()
{
    int  a = 2, c = 5;
    printf("a = %%d, b = %%d\n", a, c);
}
A)a = %2, b = %5        B)a = 2, b = 5  
C)a = %%d, b = %%d         D)a = %d, b = %d
4.已知学生记录描述为:
struct student
{
     int        no;
     char   name[20];
     char   sex;
     struct
     {
         int    year;
         char   month[20];
         int    day;
     }birth;
};
struct student s;
设变量s中的“生日”应是“1984年11月11日”,下列对“生日”的正确赋值方式是_____      。
A)  s.birth.year = 1984;
s.birth.month = "11";
s.birth.day = 11;
B)  s.birth.year = 1984;
s.birth.month = 11;   
s.birth.day = 11;
C)  s.birth.year = 1984;
strcpy(s.birth.month,"11");
s.birth.day = 11;
D)  s.birth.year = 1984;
s.birth.month[] = {"11"};
s.birth.day = 11;
5.若有二维数组定义语句:int a[3][4]; 则下面能正确引用元素a[i][j]的为:        。
A) *(a+j*4+i)     B) *(a+i*4+j)
C) *(a[i]+j)      D) *((*a+i)+j)
二、写出下列程序的运行结果。(10分,每题2分)
1.

#include <stdio.h>
main()
{
    int  x = 12, y = 8;
    printf("%d\t%d\t%d\n", !x, x&y, x|y);
}
程序运行结果是:




2.

#include <stdio.h>
main()
{
     int v1 = 10 ;
     float v2 = 2.5 ;
     float v3 ;
     int v4 ;
     float v5 ;
     v3 = v1 / v2 ;
     v4 = v1 / v2 ;
     v5 = v1 / 4 ;   
     printf("v3=%f\tv4=%d\tv5=%f\n",v3,v4,v5) ;
}
程序运行结果是:




3.

#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);
}
程序运行结果是:




4.

#include <stdio.h>
main()
{
    int  k=4, n=0;

    for (;n<k;)
    {
       n++;
       if (n%2 == 0)  continue;
       k--;
    }
    printf("k=%d, n=%d\n",k,n);
}
      程序运行结果是:





5.

#include <stdio.h>
int Func(int i);

main()
{
    int i;

    for (i=3; i<5; i++)
    {
        printf(" %d", Func(i));
    }
    printf("\n");
}

int Func(int i)
{
    static int k = 10;      
    for (; i>0; i--)
    {
        k++;
    }
    return (k);
}
程序运行结果是:





三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。(8分,每空1分)
1. 从键盘任意输入一个年号,判断它是否是闰年。若是闰年,输出“Yes”,否则输出“No”。已知符合下列条件之一者是闰年:
       能被4整除,但不能被100整除。
       能被400整除。

#include <stdio.h>
main()
{
    int  year, flag;

    printf("Enter year:");
    scanf("%d",&year );

    if (                                                    )
    {
         flag = 1;               
    }
    else
    {
        flag = 0;                 
    }

    if (            )
    {
         printf("Yes!\n");     
    }
    else
    {
        printf("No!\n");
    }
}

2.下面函数Fail用于计算不及格成绩的学生人数,函数Sort采用选择法对n个学生成绩由高到低排序。

int Fail(float score[], int n)     
{
    int  i, j, sum =        ;

     for (i=0; i<n; i++)               
     {
        if (score[i] < 60)   sum          ;      
}

                       ;                     
}
void  Sort(float score[], int n)        
{                                    
        int    i, j, k;
        float  temp1;  

        for (i=0; i<n-1; i++)         
        {
            k = i;                       
            for (j=     ; j<n; j++)      
            {
                if (score[j] > score[k])  k =    ;
            }

            if (        )
            {                              
                temp1 = score[k];         
               score[k] = score[i];     
               score[i] = temp1;      
            }
        }
}            

四、在下面的4个程序中,共有16处错误(包括语法错误和逻辑错误),只要找出其中的15处错误并改正之即可,多找不多加分,重新编写程序不加分。(30分)
1.编程判断m是否为素数。

#include <stdio.h>
#include <math.h>
int IsPrime(int m)

main()
{
    int n, flag;   

     printf("Input n:");
     scanf("%d", n);     

     flag = IsPrime(n);

    if (!flag)            
    {
        printf("Yes!\n");
    }
     else
    {
        printf("No!\n");
    }
}

int IsPrime(int m);
{
    int i, k;

     if (m <= 1)
    {
        return 0;
    }

    for (i=2; i<=sqrt(m); i++)
    {
        k = m % i;
        if (k = 0)        
        {
           return 0;
        }
    }
    return 1;  
}
2.编写一个函数Inverse(),实现将字符数组中的字符串逆序存放的功能。 #include<string.h> #include<stdio.h> #define ARR_SIZE = 80;         void Inverse(char str[]);   main() {    char a[ARR_SIZE] ;      printf("Please enter a string: "); gets(a);   Inverse(char a[]);                   printf("The inversed string is: ");    puts(a); }   void Inverse(char str[]) {    int   len, i, j;    char  *temp;                  len = strlen(str);     for (i=0; j=len-1; i<j; i++; j--)     {        temp = str[i];         str = str[j];                 str[j] = temp;    } }   3.下面程序的功能是求解爱因斯坦数学题。爱因斯坦曾出过这样一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,最后剩下5阶;只有每步跨7阶,最后才正好1阶不剩。编程打印这条阶梯共有多少阶。 #include <stdio.h> main() {    int  x,find;       x=0;    do{       ++x;       find=x%2=1&&x%3=2&&x%5=4&&x%6=5&&x%7=0;    }while (find);     printf("x=%d\n",x); }   五、编程(42分) 1.编程计算1×2 + 3×4 + 5×6 + ……+ 99×100的值,其中,n值由键盘输入。(14分)   2. 不用标准库函数strcat,自己编写一个函数MyStrcat,实现字符串链接功能,在主函数中输入两个字符串,然后调用函数MyStrcat将这两个字符串链接起来,并将结果显示到屏幕上。(14分) 已知函数MyStrcat的函数原型如下: void MyStrcat(char dstStr[], char srcStr[]); 其中,dstStr为目的字符串数组,srcStr为源字符串数组。 3.从键盘任意输入某班20个学生的成绩(int型)和学号(long型),编程打印最高分及其相应的学号。然后,在主函数中打印这些结果。(14分) 要求必须按照如下函数原型编程求解最高分和学号: int FindMax(int score[], long num[], int n, long *pMaxNum);  其中,函数的返回值为求得的最高分,pMaxNum代表求得的最高分学生的学号,score数组用于存储学生的成绩,num数组用于存储学生的学号,n表示学生人数。


[/i][/i][/i][/i][/i][/i]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-10 22:59:27 | 显示全部楼层
不错的 帖子 去做做看 嘿嘿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-5 09:10:25 | 显示全部楼层
晕,好多题目答案已不确定了,恶补呀!!!:mad:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-12 13:16:22 | 显示全部楼层
好东西,学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 18:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表