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++知识库 -> 【2015年湖南大学829考研试题】 -> 正文阅读

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

2015年湖南大学招收硕士研究生入学考试试题

一、单项选择题 ( 3x10=30 )

  1. 在C语言中,下面有关for循环的正确描述是 (D)
    A、for循环只能用于循环次数已经确定的情况
    B、for 循环是先执行循环体语句,后判断表达式
    C、在for循环中,不能用break语句跳出循环体X
    D、for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

  2. C语言程序中必须有的函数是 (B)
    A、#include “stdio.h”
    B、main
    C、printf
    D、scanf

  3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是 ( C)
    A、整型常量
    B、整型表达式
    C、整型常量或整型表达式
    D、任何类型的表达式

  4. 若已定义x和y是整型变量,x=2 ;则表达式y=3.75+x/2的值是 ( C)
    A、6.5
    B、6
    C、4
    D、5.0

  5. 对于语句int *px[10],以下说法正确的是 (B)
    A、px是一个指针,指向一个数组,数组的元素是整型
    B、 px是一个数组,其数组的每一 个元素都是指向整数的指针
    C、A和B均错,但在C语言中允许用 *px来定义数组
    D、C语言不允许有这样的定义方式

  6. 一个算法应该具有“确定性“等5个特性,下面对其他特性的描述中错误的是 ( B)
    A、有零个或多个输入
    B、 只能有零个或者一 个输出
    C、有穷性
    D、有效性

  7. 以下说法中正确的是 ( C)
    A、C语言程序总是从第一个定义的函数开始执行
    B、在C语言程序中,要调用的函数必须在mian( )函数中定义
    C、C语言程序总是从main( )函数开始执行
    D、C语言程序中的main( )函数必须放在程序的开始部分

  8. 下面程序的输出是 (B)

#include <stdio.h>
int m=13;
int fun(int x,int y)
{
    int m=3;
    return(x*y-m) ;
}
void main()
{
    int a=7 ,b=5;
    printf%d\n",fun(a,b)/m);
}

A、1
B、2
C、7
D、10

  1. 以下数组定义中不正确的是 ( D)
    A、int a[2];
    B、int b[ ] ={ 0,1,2,45,8 };
    C、float a[100][100];
    D、int d[3][3]= {({1,2},{1,2,3},{1,2.3.4}};

  2. 下列程序段的输出结果是 ( C)

float x=213.82631;
printf(%3d" ,(int)x);

A、213.82
B、213.83
C、213
D、3.8

二、填空题( 3*10=30 )

  1. 计算机内部运算使用的数是____进制。//二
  2. C语言源程序的基本单位是_______,它由多条语句组成,用来实现一个特定功能,通过调用来使用。//函数
  3. 假定x=10,则表达式x< = 10?70:34的值为_____//70
  4. 若x=5,y= 10,则计算y*=++x表达式后,x和y的值分别是____和______//6 60
  5. 数值常量0x62对应的十进制值是_____ //6*16+2=98
  6. 在C语言程序的循环体中,使用_______语句可以跳出循环体,执行循环体后面的语句。//Break
  7. 下面程序的运行结果是
#include<stdio.h>
main( )
{
    int i,x,y;
    i=x=y=0;
    do
    {
       ++i;
       if( i%2!=0)
          {x=x+i;i++;};
       y=y+i++;
    }while(i<=7);
    printf("x=%d,y=%d\n",x,y);//x=1.y=20
}
  1. 请填写下列程序中的两个语句,每个语句作为一个填空,用辗转相除法求两个整数的最大公约数
main( )
{
    int a,b,r;
    scanf("%d%d',&a ,&b);
    __________;//r=a%b
    while(r!=0)
    {
       a=b;
       _____;//b=r
       r=a%5;
    }
    printf(%d",b);
}

三、判断题〈2*10=20 )

  1. 递归调用不能直接或者间接调用该函数本身。×

  2. 计算机不能直接识别和执行用C语言写的源程序, 必须用编译程序把C源程序翻译成二进制形式的目标程序后,才能正常执行。√

  3. 数组中的每一个元素都必须属于同一数据类型。√

  4. C语言中的continue语句只结束本次循环,而不是终上整个循环的执行。√

  5. 对于全局变量,在程序开始执行时给其分配存储区, 程序执行完毕就释放。√

  6. 算法是为了解决一个问题而采取的方法和步骤 ,算法=数据结构+程序。×

  7. 采用strcmp函数可以将两个字符数组中的字符串连接起来。×

  8. do…while语句的执行过程是,先无条件的执行循环体,然后判断循环条件是否成立。√

  9. C语言规定标识符只能由字母、数字和下划线3种字符组成,第一个字符可以是数字。×

  10. 采用fclose函数可以关闭数据文件,关闭就是撤销文件信息区和文件缓冲区,使文件指针变量不再指向该文件。√

四、简答题(5*10=50)

  1. 简要陈述指针的优缺点

优点:
(1)可以提高程序的编译效率和执行速度,使程序更加简洁。
(2)通过指针被调用函数可以向调用函数处返回除正常的返回值之外的其他数据,从而实现两者间的双向通信。
(3)利用指针可以实现动态内存分配。
(4)指针还用于表示和实现各种复杂的数据结构,从而为编写出更加高质量的程序奠定基础。
(5)利用指针可以直接操纵内存地址,从而可以完成和汇编语言类似的工作。
(6)跟容易实现函数的编写和调用。
缺点:
容易出错,如果对指针不能正确理解和灵活有效的应用,利用指针编写的程序也更容易隐含各式各样的错误,同时程序的可读性也会大打折扣

  1. 机器语言和高级语言各有什么特点

机器语言:能够被机器立即识别并加以执行,具有执行速度快,占用内存小等优点,但难学,难记,难以推广使用。
高级语言:弥补了机器语言的不足,不依赖具体机器,容易理解,较为方便。

  1. 用数组方式求出Fibonacci 数列前50个的值并输出到屏幕
#include<stdio.h>
int main()
{
	int i;
	double f[50] = { 1.0,1.0 };//不能用int, 第47个开始溢出
	for (i = 2; i < 50; i++)
		f[i] = f[i - 1] + f[i - 2];
	for (i = 0; i < 50; i++)
	{
		if (i % 5 == 0)
			printf("\n");
		printf("%15.0lf", f[i]);
	}
	printf("\n");
	return 0;
}
  1. 有一个含n个整数的数组a,写一个C语言程序,要求调用函数实现n个整数反向顺序重新排列存放
#include<stdio.h>
int invet(int a[], int n);
int main()
{
	int i;
	int a[10] = { 0,1,2,3,4,5,6,7,8,9 };
	int n = 10;
	invet(a, 10);
	for (i = 0; i < n; i++)
		printf("%d ", a[i]);
	return 0;
}

int invet(int a[], int n)
{
	int i, b[10];
	for (i = 0; i < n; i++)
		b[n - i - 1] = a[i];
	for (i = 0; i < n; i++)
		a[i] = b[i];
}
  1. 一个球从200米高度自由下落,落地后弹起高度为原来高度的一半,写一个C语言程序,求他第十次落地时的总运动距离,第十次反弹多高
#include<stdio.h>
int main()
{
	float sn = 200.0;
	float hn = sn / 2;
	int n;
	for (n = 2; n <= 10; n++)
	{
		sn = sn + 2 * hn;
		hn = hn / 2;
	}
	printf("the total of road is %f\n", sn);
	printf("the tenth is %f meter\n", hn);
	return 0;
}

五、案例分析( 20分)

问题描述从键盘输入任意个四位数的整数 然后检查其是否为11的整数倍;

(1)如果是11的整数倍,则输出该数到屏幕

(2)如果不是11的整数倍则将组成该数的四个数字重新排列形成一个新的四位整数,对能形成的所有四位整数中,对那些为11的整数倍的数全部输出到磁盘文件C : \output.dat (数之间用逗号分隔),然后,读取磁盘文件C:\output.dat,求出最大数并输出到屏幕。

(3)如果在第二步中不存在是11整数倍的数,则在屏幕上输出“无" 。

1、 简述算法思路并画出其流程图( 10分)

2、 用C语言写出上述需求的实现代码( 10分)

#include<stdio.h>
#include<stdlib.h>

int checkFun(int num, int num_11[]);
void save(int num_11[], int count);
void printMax();

int main()
{
	int num_in;
	int num_11[24];
	int count = 0;

	printf("Enter an integer of four digits:");
	scanf("%d", &num_in);
	
	if (num_in > 9999 || num_in < 1000)
	{
		printf("Enter integer error\n");
		return 1;
	}
	if (num_in % 11 == 0)//是11的整数倍
	{
		printf("%d\n", num_in);
		return 0;
	}
	
	count = checkFun(num_in, num_11);

	if (count > 0)//重组存在11的整数倍数字
	{
		save(num_11, count);
		printMax();
	}
	else//不存在
	{
		printf("无");
	}
	return 0;
}

int checkFun(int num, int num_11[])//检查重组被11整除的情况
{
	int div[4];//保存四位数
	int numTemp;
	int count = 0;//计数重组能被11整除个数
	int i1, i2, i3, i4, j;
	for (j = 3; j >= 0; j--)//求出各个位数上的数字
	{
		div[j] = num % 10;
		num /= 10;
	}
	for (i1 = 0; i1 < 4; i1++)
		for (i2 = 0; i2 < 4; i2++)
			for (i3 = 0; i3 < 4; i3++)
				for (i4 = 0; i4 < 4; i4++)
				{
					if (i1 != i2 && i1 != i3 && i1 != i4 && i2 != i3 && i2 != i4 && i3 != i4 && div[i1] != 0)
					{
						//判别四位数,且千位不能为0
						numTemp = div[i1] * 1000 + div[i2] * 100 + div[i3] * 10 + div[i4];
						if (numTemp % 11 == 0)
						{
							for (j = 0; j < count; j++)
							{
								if (numTemp == num_11[j])
									break;
							}
							if (j >= count)//忽略重复数字
							{
								num_11[count++] = numTemp;
							}
						}
					}
				}
	return count;
}

void save(int num_11[], int count)//保存到文件中
{
	FILE *fp;
	int i;
	if ((fp = fopen("C:\\output.txt", "w")) == NULL)
	{
		printf("Can not open file!\n");
		exit(0);
	}
	for (i = 0; i < count - 1; i++)
	{
		fprintf(fp, "%d,", num_11[i]);//用逗号隔开
	}
	fprintf(fp, "%d", num_11[count-1]);
	fclose(fp);
}

void printMax()//从文件中找出最大值
{
	int i;
	int numTemp;
	int max = 0;
	FILE* fp;
	if ((fp = fopen("C:\\output.txt", "r")) == NULL)
	{
		printf("Can not open file!\n");
		exit(0);
	}
	while (!feof(fp))
	{
		fscanf(fp, "%d,", &numTemp);
		if (numTemp > max)
			max = numTemp;
	}
	printf("The Max num is:%d\n", max);
	fclose(fp);
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 10:29:29  更:2021-09-08 10:31:02 
 
开发: 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 19:52:26-

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