IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【2011年湖南大学829考研试题】 -> 正文阅读

[C++知识库]【2011年湖南大学829考研试题】

2011年潮南大学招收硕土研究生入学考试试题

一、简答题

  1. 请简述函数参数传递时传值与传地址的区别。

传值:把实参的值赋给形参,形参数值的变化对实参无影响。
传地址:传递的是地址,实参和形参指向同一个对象,形参的值的改变可以引起实参的值的变化。

  1. 请问#include<filename.h>和#include "filename.h"有什么区别?

用< >时,编译系统从存放C编译系统的子目录中寻找所要包含的文件。
用“ ”时,编译系统首先在用户的当前目录中寻找包含文件,若无,再按照前者方式查找。

  1. 下面的代码在32位的windows操作系统下运行
int main()
{
    char str[]= "Hello";
    char*p = str;
    printf("1-----%d\n", sizeof(str));
    printf("2-----%d\n" ,sizeof(p));
    return 0
}

请问其输出的结果是什么?如果在主程序中调用下面的自定义函数Func,输出的结果又是什么?简述理由。

void Func(char str[100])
{
    printf("3------%d\n",sizeof(str));
}

1 ----- 6str 有6个元素"Hello\0".
2 ----- 4p 是指针,存放的是地址,地址大小为4个字节。
3 ----- 4,这里的函数接收的 str 是数组首元素地址,地址大小为4个字节。

  1. 下面的程序存在逻辑错误。如果Test函数运行。会有什么结果?简述理由。
char *GetMemory(void)
{
    char p[ ] = “Hello world”;
    return p;
}

void Test(void)
{
    char *str = NULL ;
    str = GetMemory();
    printf(str);
}

*GetMemory函数中的p变量是局部变量函数运行结束即释放,这时候返回的指针p变成野指针,指向未知数据,可能导致不可预料的后果。

二、程序改错

  1. 下面的程序根据整型形参m,计算如下公式的值:y=1+1/3+1/5+1/7+…+1/(2m-3),此程序共含三处错误(包括语法错误和逻辑错误)。请找出这三处错误。
#include<stdio.h>
double fun(int m)
{
    double y=1;// double y=1.0;
    int i;
    for(i=3;i<m;i++)// i<=m;
       y+=1.0/(2i-3);// y+=1.0/(2*i-3);
    return y;
}

void main( )
{
    int n;
    scanf("%d" ,&n);
    printf("\nThe result is %1f\n", fun(n));
}
  1. 下面是一一个用于计算阶乘的递归函数。其中包含逻辑错误。请指出该错误,说明错误的原因,并更正使函数的功能正确。
long func(int n)
{
    long s;
    s = n*func(n-1);
    return s;
    if(n==0 || n==1)
       return 1;
}

递归出口应放在递归计算前面
改:

long func(int n)
{
    long s;
    if(n==0 || n==1)
    {
       s = 1;
    }
    else
    {
       s = n*func(n-1);
    }
    return s;
}
  1. 下面的程序用于计算正整数num的各位上的数字之积。,此程序共含三处错误(包括语法错误和逻辑错误)。请找出这三处错误。

例如:输入252 ,则输出的应该是20.

#include<stdio.h>
long fun( long num)
{
    long k;// long k=1;
    do {
        k*=num%10;
        num\=10;// num/=10;
    }while(num);
    return k;
}

void main( )
{
    1ong n;
    printf("\nPlease enter a number:");
    scanf("%ld",&n);
    printf("\n%d\n",fun(n));// printf("\n%ld\n",fun(n));
}
  1. 下面的函数用于求数组a中最大数和次最大数,并把最大数和a[0]中的数对调,次最大数和a[1]中的数对调,其中n为数组中包含元素的个数。函数中共有三处逻辑错误。请指出井更正错误,使程序的功能正确。
void fun(int*a ,int n)
{
    int i,m,t,k;
    for(i=0;i<2;i++)
    {
       m=0;// m=i;
       for(k=1;i<2;i++)// for(k=i+1;k<n;k++)
          if(a[k]>a[m])
             k=m;// m=k;
       t=a[i];
       a[i]=a[m];
       a[m]=t;
    }
}

三、程序改造和程序阅读

  1. 阅读下面的程序:
#include<stdio. h>
main( )
{
    char ch;
    ch = getchar();
    if(ch=='A'||ch=='a')
       printf( "Abort\n");
    else if(ch=='R'||ch=='r')
       printf("Retry\n");
    else
       printf('Sorry you are wrong.\n");
} 

请改写程序,将程序中的 if 分支结构改写成 switch 分支结构。
改:

#include<stdio. h>
int main()
{
    char ch;
    ch = getchar();
    switch(ch)
    {
       case 'A':
       case 'a':
          printf( "Abort\n");
          break;
       case 'R':
       case 'r':
          printf("Retry\n");
          break;
       default:
          printf('Sorry you are wrong.\n");
    }
    return 0; 
}
  1. 阅读下面的程序,写出程序的运行行结果。
#include<stdio.h>
int main()
{
    int i, j, width = 6;
    for (i = 1; i < width; i++)
    {
        for (j = 1; j <= i; j++)
            printf("*");
        printf("\n");
    }
    return 0;
}

运行结果

*
**
***
****
*****

四、编程题

  1. 编写程序,计算并输出1-100内的素数,要求判断是否素数用函数实现,函数的声明如下: int isprime(int);

【仅供参考】

#include<stdio.h>
int isprime(int n)
{
	if (n == 1)
		return 0;
	int i;
	for (i = 2; i * i <= n; i++)
	{
		if (n % i == 0)
			return 0;
	}
	return 1;
}

int main()
{
	int i;
	for (i = 1; i <= 100; i++)
	{
		if (isprime(i))
			printf("%d ", i);
	}
	return 0;
}
  1. 下面的程序是将随机函数生成50个100以内的整数,存入数组a中,然后从键盘输入一个整数作为关键字key ,用线性查找方法在数组中查找,如果输入的数(key)在数组中存在,则输出在数组中的下标值,否则输出1,测试程序如下,其中函数void createdata(int al].int size);的作用是: 将随机生成的size个100 以内的数放入数组a中,函数int linesearch(int al].intsize,int keyword);的作用是:在数组中查找是否含有keyword 的值。根据下面的程序,请完成这两个函数的定义。
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int linesearch(int a[],int size,int keyword);
void createdata(int a[],int size);
main()
{
    int i,a[50],key,sub;
    srand (time(NULL));
    createdata(a,50);
    printf("Please input keyword:");
    scanf("%d"&key);
    sub = linesearch(a, 50,key);
    
    if(sub != - 1)
       printf("the sub is %d\n",sub);
    else
       printf("not found\n");
}

【仅供参考】

int linesearch(int a[], int size, int keyword)
{
    int i;
    for (i = 0; i < size; i++)
    {
        if (keyword == a[i])
            return i;
    }
    return - 1;
}

void createdata(int a[], int size)
{
    int i;
    for (i = 0; i < size; i++)
        a[i] = rand() % 101;
}

3.下面的程序可将字符串进行反转。函数char*reverse(char * str)的作用是将str所指的字符串反转(例如字符串"abcdfg" 反转后成为"gfdcba" ) ,根据下面的程序,请完成函数的定义。

#include<stdio.h>
char* reverse(char*str);
main( )
{
    char*str;
    printf(" input reversing characer string:");
    gets(str);
    str=reverse(str);
    printf("\noutput reversed character string:");
    puts(str);
}

【仅供参考】

char* reverse(char* str)
{
    if (!str)
        return NULL;
    char* right = str;
    char* left = str;
    char tmp;
    while (*right)
        right++;
    right--;
    while (left < right)
    {
        tmp = *left;
        *left++ = *right;
        *right-- = tmp;
    }
    return(str);
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:19:43  更:2021-09-04 17:19:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:19:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码