C语言程序设计 练习题参考答案 第四章 一维数组

合集下载

程序设计基础-c语言-第四章数组-教材答案-科学出版社

程序设计基础-c语言-第四章数组-教材答案-科学出版社

程序设计基础-c语言-第四章数组-教材习题及其答案1.0编程将一个一维数组的值按逆序重新存放#include<stdio.h>void main(){int i_data[10];int m,i_temp;printf("给定10个数,用空格分隔:");scanf("%d %d %d %d %d %d %d %d %d %d",&i_da ta[0],&i_data[1],&i_data[2],&i_data[3],&i_data[4],&i_d ata[5],&i_data[6],&i_data[7],&i_data[8],&i_data[9]);for(m=1;m<=10/2;m++) //有意写成10/2 已解决任意一维数组的逆序问题,为什么此处用m=1;m<=10/2,而不能m=0;m<10/2{ i_temp=i_data[m-1]; //下面三条语句是典型的两数交换的方法i_data[m-1]=i_data[10-m];i_data[10-m]=i_temp;}for(m=0;m<10;m++){ printf("%d ",i_data[m]);}printf("\n");}2.0 编程求Fibonacci数列的前二十项。

FIBONACCI数列的定义F0=0,F1=1,Fn=Fn-1+Fn-2#include<stdio.h>void main(){int F[20];int m,n,i_blanknum;for(m=0;m<20;m++){ switch(m){ case 0:F[0]=0;break;case 1:F[1]=1;break;default: F[m]=F[m-1]+F[m-2];}}printf("Fibonacci数列的前20项是:\n"); for(m=0;m<20;m++){ printf("%d ",F[m]);}printf("\n");//下面输出项,这是我加的效果for(m=0;m<20;m++){ printf("%d",m+1); //输出项的编号//计算该项数据占几位i_blanknum=1;//每个数据间占一个空格n=F[m];do{ i_blanknum=i_blanknum+1;n=n/10;}while(n!=0);//减去该项编号数据占的位数n=m+1;do{ i_blanknum=i_blanknum-1;n=n/10;}while(n!=0);//输出空格while(i_blanknum>0){ printf(" ");i_blanknum--;}}printf("\n");}2.0在一个从小到大排列的数组中查找X,若x存在就将其测出,若不存在将其添加。

C语言程序设计-第4章 练习题

C语言程序设计-第4章  练习题

一、单项选择题题目1假定有一个元素类型为int的数组a[10],它所占用的存储空间的字节数为()。

a. 40b. 80c. 10d. 20题目2假定一维数组的定义为“char* a[8];”,则该数组所占用的存储空间的字节数为()。

a. 16b. 8c. 64d. 32题目3假定有一个定义语句为“int a[10]={3,4,2,8,6};”,则元素a[5]的值为()。

a. 0b. 6c. 2d. 8题目4在下面的一维数组定义语句中,有语法错误的是()。

a. int a[];b. int a[5];c. int a[10]={0};d. int a[]={1,2,3};题目5假定二维数组的定义语句为“int a[3][5];”,则该数组所含元素的个数为()。

a. 10b. 12c. 15d. 8题目6假定有一个定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为()。

a. 6b. 8c. 4d. 2题目7对于一个长度为n的字符串,保存它至少需要占用的存储字节数为()。

a. n-1b. n+1c. nd. n+2题目8对于一个二维字符数组a[M][N],存储每个字符串的长度至多为()。

a. N-1b. Nc. Md. M-1题目9若需要比较两个字符串的大小,则选用的函数是()。

a. strlenb. strcmpc. strcpyd. strcat二、判断题题目10一维数组元素带有两个下标。

对错题目11对于二维数组元素,数组名后使用两对中括号。

对错题目12在一维数组的定义语句中,给数组赋初值的部分是用一对花括号括起来的数据表。

对错题目13在一维数组的定义语句中,数组名前为元素类型关键字。

对错题目14在二维数组的定义语句中,数组名后带有两对圆括号。

对错题目15假定二维数组的定义语句为“double a[M][N];”,则每个数组元素的列下标取值范围在1~N 之间。

《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案C语言程序设计教程第三版课后习题参考答案第一章:C语言概述1.1 C语言的特点答案:C语言是一种通用的、面向过程的程序设计语言,具有高效、简洁、灵活等特点。

它提供了丰富的程序设计元素和功能,适用于各种不同的应用领域。

1.2 C语言程序的基本结构答案:C语言程序由预处理指令、函数声明、函数定义、变量声明和语句组成。

其中,预处理指令用来引入头文件或定义宏,函数声明用来声明函数的名称和参数,函数定义用来实现函数的功能,变量声明用来声明变量的类型和名称,语句用来表达具体的计算过程。

1.3 C语言的数据类型答案:C语言提供了多种数据类型,包括基本类型(整型、浮点型、字符型等)和派生类型(数组、指针、结构体等)。

每种数据类型在内存中占据一定的存储空间,并具有特定的取值范围和操作规则。

1.4 C语言的运算符和表达式答案:C语言支持各种运算符和表达式,例如算术运算符(+、-、*、/等)、关系运算符(>、<、==等)、逻辑运算符(&&、||、!等)等。

通过运算符和表达式可以进行各种数值计算和逻辑判断。

第二章:基本数据类型与运算2.1 整型数据类型答案:C语言提供了不同长度的整型数据类型,包括有符号整型(int、long等)和无符号整型(unsigned int、unsigned long等)。

整型数据类型可以表示整数值,并具有不同的取值范围。

2.2 浮点型数据类型答案:C语言提供了浮点型数据类型(float、double等),用来表示带小数部分的实数值。

浮点型数据可以表示较大或较小的数值,并具有一定的精度。

2.3 字符型数据类型答案:C语言提供了字符型数据类型(char),用来表示单个字符。

字符型数据可以用于表示各种字符(包括字母、数字、符号等)。

2.4 布尔型数据类型答案:C语言不直接支持布尔型数据类型,但可以使用整型数据类型来表示布尔值(0表示假、非零表示真)。

C 课后习题答案第四章

C  课后习题答案第四章
case 'b' : cout << '$' ; break ;
case 'c' : cout << '*' ; break ;
case 'd' : continue ;
}
cout << '#' << endl ;
}
}
答案:
$#
*#
*#
%
7.#include <iostream.h>
void main()
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int isPrime(int);
void createAry(int[], int);
void outAry(const int[], int);
void main()
cout << f( a, 3, 3 ) << endl ;
}
int f( int a[][3], int row, int col )
{int i, j, t=1 ;
for( i=0; i<row; i ++ )
for( j=0; j<col; j++ )
{a[i][j] ++ ;
if( i == j ) t*= a[i][j] ;
}
void createAry(int a[], int n)
{ srand( time(0) );

C语言第四章编程练习题

C语言第四章编程练习题

第四章课后编程练习题(一)数组一维数组:1、一个由10个元素组成的一维数组,求该数组的最大值、最小值、总和和平均值并输出。

2、一个由10个元素组成的一维数组,编程将逆序数组输出。

Cpp5——4023、已有一个已排好序的数组,现在输入一个数,要求按原来排序的规律将它插入到数组中。

输入输出示例:输入n:5按照由大到小的顺序输入n个数:9 7 5 3 1输入要插入的数:6插入完以后数组变成:9 7 6 5 3 1 cpp5——4034、输入若干个正整数,以0结束,将其中大于平均值且个位为5的数排序后输出(按由大到小的顺序排序)。

测试数据:输入:35 15 3 10 5 25 1 0输出:35 25 15 cpp5——4045、用数组输出Fibonacci数列的前40项二维数组1、读入一个正整数n(1<=n<=6),再读入n阶矩阵,计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和(副对角线为从矩阵的右上角至左下角的连线)。

2、输入一个正整数n,输入n个数,生成一个n*n的矩阵,矩阵中第1行是输入的n个数,以后每一行都是上一行循环左移一个元素。

输入输出示例Input n: 3Input numbers: 2 5 8 4 9The matrix is:2 5 8 4 95 8 4 9 28 4 9 2 54 9 25 89 2 5 8 4 cpp5——4053、输出可大可小的正方形图案,最外层是第一层,要求每层上用的数字与层数相同。

输入输出示例Input n: 3The matrix is:1 1 1 1 11 2 2 2 11 2 3 2 11 2 2 2 11 1 1 1 14、将一个二维数组(3行4列)的行和列互换(转置),存到另一个二维数组(4行3列)中并输出。

Cpp5——4065、编程输出杨辉三角(要求输出10行)111 2 11 3 3 11 4 6 4 1。

字符数组1、输入一串字符,将其中ASCII码值为奇数的字符排序后输出(按由小到大的顺序)。

c语言一维数组例题

c语言一维数组例题

c语言一维数组例题当涉及到C语言的一维数组例题时,有很多不同的问题和示例可以提供。

下面是一些可能的问题和对应的回答。

1. 请解释一维数组是什么?一维数组是一种数据结构,用于存储相同类型的元素。

它由连续的内存单元组成,每个元素都有一个唯一的索引,可以通过索引访问和操作数组中的元素。

2. 如何声明和初始化一维数组?在C语言中,可以使用以下语法声明和初始化一维数组:c.数据类型数组名[数组大小] = {元素1, 元素2, ...};例如:c.int numbers[5] = {1, 2, 3, 4, 5};3. 如何访问一维数组中的元素?可以使用索引来访问一维数组中的元素。

索引从0开始,最大索引为数组大小减1。

例如,要访问上面声明的数组中的第三个元素,可以使用以下语法:c.int thirdElement = numbers[2];4. 如何在一维数组中查找特定的元素?可以使用循环结构遍历一维数组,并通过条件判断来查找特定的元素。

以下是一个示例代码,查找数组中是否存在某个特定的元素:c.int searchElement(int array[], int size, int target) {。

for (int i = 0; i < size; i++) {。

if (array[i] == target) {。

return i; // 返回元素在数组中的索引。

}。

}。

return -1; // 如果未找到,返回-1。

}。

5. 如何对一维数组进行排序?可以使用各种排序算法对一维数组进行排序,例如冒泡排序、插入排序、选择排序等。

以下是一个使用冒泡排序算法对整型数组进行升序排序的示例代码:void bubbleSort(int array[], int size) {。

for (int i = 0; i < size 1; i++) {。

for (int j = 0; j < size i 1; j++) {。

苏小红c语言程序设计第二版课后答案

苏小红c语言程序设计第二版课后答案

苏小红c语言程序设计第二版课后答案苏小红教授所著的《C语言程序设计》第二版是计算机科学与技术专业学生学习C语言的经典教材之一。

该书不仅系统地介绍了C语言的基础知识,还通过丰富的实例和练习题帮助学生加深理解。

以下是部分课后习题的答案,以供参考:第一章:C语言概述1. 问题一:简述C语言的特点。

- 答案: C语言是一种结构化编程语言,具有高效性、灵活性和可移植性等特点。

它支持多种数据类型,拥有丰富的运算符,并且能够直接访问内存地址。

2. 问题二:为什么说C语言是高级语言?- 答案: C语言被称为高级语言是因为它抽象了底层硬件操作,使得程序员可以不必关心计算机的硬件细节,而专注于程序的逻辑结构。

第二章:数据类型、运算符和表达式1. 问题一:说明C语言中基本数据类型的种类及其特点。

- 答案: C语言中的基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)。

每种类型都有其特定的取值范围和占用内存大小。

2. 问题二:解释赋值运算符的右结合性。

- 答案:赋值运算符的右结合性意味着当多个赋值运算符同时出现时,从右向左进行计算。

例如,a = b = c; 会先计算 b = c,然后将结果赋值给 a。

第三章:控制结构1. 问题一:什么是条件语句?举例说明。

- 答案:条件语句是程序中根据条件是否满足来决定执行哪一段代码的结构。

例如,if语句就是典型的条件语句。

2. 问题二:循环语句有哪些?它们各自的特点是什么?- 答案: C语言中有三种循环语句:for循环、while循环和do-while循环。

for循环常用于已知循环次数的情况;while循环适用于循环次数未知,需要在循环体内部判断是否继续循环;do-while循环至少执行一次循环体,然后在循环末尾判断是否继续。

第四章:数组1. 问题一:一维数组和多维数组的区别是什么?- 答案:一维数组是线性的,只有一个索引来访问数组元素;而多维数组可以看作是数组的数组,需要多个索引来定位元素。

C语言程序设计练习题参考答案第四章(1)一维数组

C语言程序设计练习题参考答案第四章(1)一维数组

C语言程序设计练习题参考答案第四章(1)一维数组C语言程序设计练习题参考答案第四章 (1) 一维数组/* 4.11 fibonacci数列,前15项 1,1,2,3,5,。

*/ #include "stdio.h"void main(){int f[15]={1,1}, i;for(i=2;i<=14;i++) /* 计算 */f[i]=f[i-2]+f[i-1];printf("fibonacci数列,前15项\n"); /* 输出 */for(i=0;i<=14;i++){printf("%5d",f[i]);if((i+1)%5==0)printf("\n");}}/* 4.12 数组元素前移动一个位置 */#include "stdio.h" void main(){int a[10]={0,1,2,3,4,5,6,7,8,9};int i,t;printf("\n移动之前:\n");for(i=0;i<=9;i++)printf("%3d",a[i]);/* 移动 */t=a[0];for(i=0;i<=9;i++)a[i]=a[i+1];a[9]=t;printf("\n移动之后:\n");for(i=0;i<=9;i++)printf("%3d",a[i]);}/* 4.13 有序数列中插入若干个数,仍然保持有序 */#include "stdio.h" void main(){int a[100]={1,4,8,10};int i,k,x,count=4;/* i,k 循环变量, x 输入整数,count 有多少整数*/printf("\n请输入要插入的整数,输入之后按回车键,如要结束请输入-1\n"); scanf("%d",&x);while(x!=-1){/* 寻找插入位置 */for(i=0;i<count;i++)< p="">/* 找到插入位置 */if(a[i]>=x){/* 移动 */for(k=count;k>i;k--)a[k]=a[k-1];/* 插入 */a[i]=x;break;}}if(i>=count)a[i]=x;count=count+1;printf("\n插入之后的数组为:\n");for(i=0;i<count;i++)< p="">printf("%4d",a[i]);printf("\n请输入要插入的整数,输入之后按回车键,如要结束请输入-1\n"); scanf("%d",&x);}}/* 4.15 将十进制数转换成二进制数,并按位存放到数组中。

《C语言程序设计》试题四及答案

《C语言程序设计》试题四及答案

《C语言程序设计》试题四一、单项选择题。

(每题1分,共20分)1. C程序的基本单位是:()A.子程序B.程序C.子过程D.函数2.在C语言中,非法的八进制是:()A.016B.018C.017D.023. 不是C语言实型常量的是:()4 .字符串“xyzw”在内存中占用的字节数是:()A.6B.5C.4D.35. 若已定义f,g为double类型,则表达式:f=1,g=f+5/4的值是:()6. 若有语句char c1=`d`,c2=`g`;printf(“%c,%d\n”,c2-`a`,c2-c1);则输出结果为:()(a的ASCII码值为97)A.M,2B.G,3C.G,2D.D,g7. 使用语句scanf(“a=%f,b=%d”,&a,&b);输入数据时,正确的数据输入是:()A.a=2.2,b=3B.a=2.2 b=3C.2.2 3D.2.2,38.表示关系12<=x<=y的C语言表达式为:()A.(12<=x)&(x<=y)B. (12<=x)&&(x<=y)C. (12<=x)|(x<=y)D.(12<=x)||(x<=y)9.设x=1,y=2,m=4,n=3,则表达式x>yx:m<ny:n的值为:()A.1B.3C.2D.410. 若有说明和语句:int a=5,b=6;b*=a+1;则b的值为:()A.5B.6C.31D.3611. 设整型变量s,t,c1,c2,c3,c4的值均为2,则执行语句(s=c1==c2)||(t=c3>c4)后,s,t的值为:()A.1,2B.1,1C.0,1D.1,012. 语句for(a=0,b=0;b!=100&&a<5;a++)scanf(“%d”,&b); scanf最多可执行次数为:()A.4B.6C.5D.113. 对于for(s=2;;s++)可以理解为:()A. for(s=2;0 ;s++)B. for(s=2;1 ;s++)C. for(s=2;s<2 ;s++)D. for(s=2;s>2;s++)14. 若有char h=`a`,g=`f`;int a[6]={1,2,3,4,5,6};则数值为4的表达式为:()A.a[g-h]B.a[4]C.a[`d`-`h`]D.a[`h`-`c`]15. 设:char s[10]={“october”};则printf(“%d\n”,strlen(s));输出是:()A.7B.8C.10D.1116. 若有int a[3][5]={2,2},{2,6},{2,6,2}},则数组a共有个元素:()A.8B.5C.3D.15二、填空题。

(完整版)C语言程序设计习题集及答案

(完整版)C语言程序设计习题集及答案

C语言程序设计习题集东华理工大学2014.9基础知识一单项选择题(每题2分,共44分)1 以下叙述正确的是___。

A C程序基本组成单位是语句B C程序每一行只能写一个语句C 简单C语句必须以分号作为结束符D 注释语句可以嵌套2 一个C语言程序是从___开始执行的。

A 程序中第一个函数B 名为main的函数C 包含文件(头文件)的第一个函数D 程序中的第一个语句3 请选出合法的C语言赋值语句___。

A a=b=58B i++;C a=58,b=58D k=int(a+b);4 下面标识符中,合法的用户标识符是___。

A 1abcB includeC a-b-c123D char5 以下所列的C语言整形常量中,正确的是___。

A 0x10B 0976C 076LD 01ff6 C语言中下列运算符的操作数必须为整型的是___。

A %B ++C /D =7 设a和b均为int型变量,则执行以下语句后的输出为___。

int a=20; int b=3; printf("%d\n",a+=(b%=2));A 20B 21C 0D 238 已知int i;,则执行语句 i=2.6;后,i的值为___。

A 2B 3C 2.6D 不确定9 以下合法的字符常量为___。

A 'ab'B '\482'C '\'D '\xaf'10 若y为int型变量,则执行以下语句后,y的值是___。

y=8; y+=y-=y*y;A 64B –56C –112D –4811 以下合法的浮点型常量是___。

A e-3B 1.5e+2.4C 3.14e+2LD 3.14 e +512 设int数据占用两个字节,float数据占用四个字节,double数据占用8个字节,且已知float a=2;int b=3;则执行下列语句输出为___。

printf("%d",sizeof(a*b)+2/5);A 4B 8C 6D 713 设int型占2个字节,且int i=-2;,则语句printf("%u",i);的输出结果为___。

11《C语言程序设计》教案第四章数组(1)—一维数组

11《C语言程序设计》教案第四章数组(1)—一维数组

min_p=j;} printf(“the min is%d,position %d”,min,min_p);
} (5)数组在内存中的存放 例如 int data[3];则在内存中的状态如下:
1000 1002
1004
data[0] data[1] data[2]
讨论、思考题、作业: 实验指导书习题
f[0]=1;f[1]=1;f[2]=f[0]+f[1];f[3]=f[2]+f[1];依次类推找出 公式为: f[i]=f[i-1]+f[i-2]; 循环语句为:for(i=2;i<20;i++) 程序代码: main()
{ int i;
static int f[20]={1,1};
/*定义 20 个元素的数组
参考资料(含参考书、文献等):
叶斌 陈世强. C 语言程序设计. 北京:科学出版社 授课类型:理论课 讨论课□ 实验课□ 练习课□ 其他□ 教学方式:传统授课 双语□ 讨论□ 示教□ 指导□ 其他□ 教学资源:多媒体 模型□ 实物□ 挂图□ 音像□ 其他□
定义了一个二维数组 b,该数组由 9 个元素构成,其中每一个数组元素都属于浮点(实
数)数据类型。
数组
b
的各 个数据元 素依次
是:b[0][0],b[0][1],b[0][2],b[1][0],b[1][1],b[1][2],b[2][0],b[2][1],b[2][2](注意:下标从 0-2)。
每个数组元素也都可以作为单个变量使用。
例如:int a[10]={0,0,0,0,0,0,0,0,0,0}; 或 int a[10];系统会对所有数
组元素自动赋 0 值。
4)在对全部数组元素赋初值时,可以不指定数组长度。

C语言第四章练习题

C语言第四章练习题

C语⾔第四章练习题注意,本套题⽬中有些涉汲到函数的调⽤和指针的使⽤,⼤家⾃已先去看下,不懂就问,培养⾃⼰的⾃学能⼒。

⼀,选择题1.若有以下定义int x[10], *pt=x;则对x数组元素的正确引⽤是A) pt+3B) *&x[10]C) *(pt+10)D) *(x+3)2.有以下程序#includemain(){ int i, s=0, t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2) s+=*(t+i);printf("%d\n",s);}程序执⾏后的输出结果是A) 20B) 25C) 45D) 363.#includemain(){ int c[6]={10,20,30,40,50,60}, *p,*s;p = c; s = &c[5];printf("%d\n", s-p );}程序运⾏后的输出结果是A) 5B) 50C) 6D) 60{ int a[3]={0}, i, j, k=2;for( i=0; ifor( j=0; jprintf("%d\n", a[1] );}程序运⾏后的输出结果是A) 0B) 2C) 15..有以下程序#includemain(){ int a[5]={2,4,6,8,10}, *p,**k;p = a; k = &pprintf("%d ", *( p++ ) );printf("%d\n", **k );}程序运⾏后的输出结果是A) 4 6B) 4 4C) 2 2D) 2 46.以下叙述中正确的是A) ⼀条语句只能定义⼀个数组B) 每个数组包含⼀组具有同⼀类型的变量,这些变量在内存中占有连续的存储单元C) 数组说明符的⼀对⽅括号中只能使⽤整型常量,⽽不能使⽤表达式D) 在引⽤数组元素时,下标表达式可以使⽤浮点数7.以下叙述中正确的是A) 数组下标的下限是1B) 数组下标的下限由数组中第⼀个⾮零元素的位置决定C) 数组下标的下限由数组中第⼀个被赋值元素的位置决定D) char c1, c2, *c3, c4[40];是合法的变量定义语句8.以下叙述中正确的是C) 语句 char a[2] = {"A", "B"}; 是合法的,定义了⼀个包含两个字符的数组D) 语句 char a[3]; a = "AB"; 是合法的,因为数组有三个字符空间的容量,可以保存两个字符9.有以下程序#includemain(){ int a[ ]={ 2,4,6,8,10 }, x, *p, y=1;p = &a[1];for( x=0; x<3; x++ ) y += *(p+x);printf( "%d\n",y );}程序的输出结果是A) 13B) 19C) 1110.有以下程序#includemain(){int a[ ] = { 2,4,6,8 }, *p=a, i;for( i=0; i<4; i++ )a[i]=*p++;printf( "%d\n" ,a[2] );}程序的输出结果是A) 2B) 8C) 4D) 611.以下叙述正确的是A) 不能在数组说明符的⼀对⽅括号中使⽤表达式B) char c1, *c2, **c3, c4[2]; 是C语⾔的合法语句C) 数组下标的最⼩值可以是负值D) 若有数组定义 int array[5]; 则语句printf("%d",array[1.23]);是合法的int b[] = {9};char c[3] = {"A", "B"};char d = "12";以下叙述正确的是A) a, b的定义合法,c, d的定义不合法B) a,b,c,d的定义都是合法的C) a,b,c的定义是合法的,d的定义不合法D) 只有a的定义是合法的12.对于函数声明void fun(float array[], int *ptr);下叙述正确的是A) 调⽤函数时,array数组的元素和ptr都是按值传送B) 函数声明有语法错误,参数 array 缺少数组⼤⼩定义C) 调⽤函数时,array数组中将存储从实参中复制来的元素值D) 函数参数 array, ptr 都是指针变量13.要求定义⼀个具有6个元素的int型⼀维数组,以下选项中错误的是A) int a[2*3] = {0};B) int N = 6, a[N];C) #define N 3int a[N+N];D) int a[] = {1,2,3,4,5,6};14.设有定义:int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a,i;,若0≤i≤9,则对a数组元素的引⽤错误的是A) *(&a[i])B) a[10]C) p[i]D) a[p-a]15.有以下程序#includeint fun(int x[],int n){static int sum=0, i;for(i=0;ireturn sum;{int a[]={1,2,3,4,5}, b[]={6,7,8,9}, s=0; s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序执⾏后的输出结果是A) 55B) 50C) 45D) 60⼆,填空题1. #includevoid fun(int *s, int n1, int n2){int i, j, t;i=n1; j=n2;while( i{t=s[i]; s[i]=s[j]; s[j]=t; i++; j--;}}main(){int a[10]={1,2,3,4,5,6,7,8,9,0}, k; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(k=0;k<10;k++)printf("%d", a[k]);printf("\n");}则输出结果是。

C语言一维数组练习题及参考程序

C语言一维数组练习题及参考程序

4.1习题1、输入10个整数,然后将这10个整数逆序输出。

#include<stdio.h>int main(){int i;int a[10];printf("Input data: ");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("Output data: ");for(i=9;i>=0;i--) //通过下标引用顺序实现逆序printf("%d ",a[i]);return 0;}2、输入一个整数m,然后输入m个整数,存放在数组a中;再输入一个整数n,然后输入n个整数,存放在数组b中。

找出a和b两数组的非共有元素,存放在数组c中并输出。

(m和n的值不超过20)#include<stdio.h>int main(){int a[20], b[20], c[20];//假定元素值不超过20int m, n, i, j, k=0;scanf("%d", &m);for(i=0; i<m; i++)scanf("%d", &a[i]);scanf("%d", &n);for(i=0; i<n; i++)scanf("%d", &b[i]);for(i=0; i<m; i++)//找出数组a中不是共同元素的值{for(j=0; j<n; j++){if(a[i]==b[j])break;}if(j>=n)//不是共同元素{c[k]=a[i];k++;//为存放下一个元素做准备}}for(i=0; i<n; i++)//找出数组b中不是共同元素的值{for(j=0; j<m; j++){if(b[i]==a[j])break;}if(j>=m){c[k]=b[i];k++;}}for(i=0; i<k; i++)printf(" %d", c[i]);printf(“\n”);return 0;}3、输入N个整数(N定义为常量),将最小值与第一个数交换,最大值与最后一个数交换。

C语言各章节单元测试题及答案——数组

C语言各章节单元测试题及答案——数组

第4章数组4.1 典型考试题剖析4.1.1 选择题【例1】以下能正确定义一维数组的选项是。

A)int num[]; B) #define N 100 int num[N];C)int num[0..100]; D) int N=100; int num[N];✧考点:本例考查一维数组的初始化。

✧分析:此类型为常考题型。

可以用以下方法对一维数组初始化:1.在定义数组时对数组元素赋初值。

如static int a[3]={3,4,12}。

2.可以对部分元素赋初值。

Static int a[10]={1,2,3}。

3.如果对全部元素都赋初值(即提供全部初始数据),可以不指定数组长度。

✧答案:B【例2】以下不能正确定义二维数组的选项是_______。

A) int a[2][2]={{1},{2}}; B) int a[][2]={1,2,3,4};C) int a[2][2]={{1}, 2,3}; D) int a[2][]={{1,2},{ 3,4}};✧考点:本例考查二维数组的初始化。

✧分析:此类型为常考题型。

可以用以下方法对二维数组初始化:1.分行给二维数组赋初值。

如static inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}。

2.可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。

如static inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}。

3.可以对部分元素赋初值。

Static int a[3][4]={{1},{5},{9}},a答案中赋值正确。

4.如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省略,b、d答案中赋值正确。

✧答案:C【例3】以下程序的输出结果是_______。

main(){int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);}A) 0650 B) 1470 C) 5430 D) 输出值不定✧考点:本例仅仅考查二维数组的初始化。

C语言程序设计课堂练习题4-6

C语言程序设计课堂练习题4-6

C语言程序设计课堂练习题(2012-12-26)第4章基本程序设计技术一、选择题1.若有以下程序:main(){ int x=1,a=0;do{a+=1;}while(x,x--);}则语句a+=1;执行的次数是()A. 0B. 1C. 无限次D. 2答案:2.若有以下程序:main(){ int i;f or(i=0;i<3;i++)switch(i){case 1:printf("%d",i);case 2:printf("%d",i);def ault:print f("%d",i);}}执行后输出结果是( )A.011122B. 012C. 012020D.120答案:3.以下程序的输出结果是:main(){ int a=0,i;f or(i=1;i<5;i++){ switch(i){ case 0:case 3:a+=2;case 1:case 2:a+=3;def ault:a+=5;}}printf("%d\n",a)}A. 31B.13C. 10D.20答案:4.若输入字符串:abcde<回车>,则以下while循环体将执行( ) main(){ char ch;while((ch=getchar())!='e')printf("*");}A. 2B. 3C. 无限次D.4答案:5.有以下程序段:int n=0,p;do{scanf("%d",&p);n++;}while(p!=12345&&n<3);此处do-while循环的结束条件是( ).A. p的值不等于12345并且n的值小于3B. p的值等于12345并且n的值大于等于3C. p的值不等于12345或者n的值小于3D. p的值等于12345或者n的值大于等于3 答案:6.以下程序的输出结果是( )main(){int i=0,a=0;while(i<20){ f or(;;){if((i%10)==0) break;else i--;}i+=11;a+=i;}printf("%d\n",a);}A. 21B. 32C. 33D.11答案:7.以下程序的输出结果是( )main(){ int a,b;f or(a=1,b=1;a<=100;a++){if(b>=10) break;if(b%3==1){b+=3;continue;}}printf("%d\n",a);}A. 101B. 6C. 5D.4答案:8.若有以下程序:main(){ int a=15,b=21,m=0;switch(a%3){case 0:m++;break;case 1:m++;switch(b%2){def ault:m++;case 0:m++;break;}}printf("%d\n",m);}执行后输出的结果是( )A. 1B. 2C. 3D.4答案:二、编程题1.编写程序实现一个专家诊断系统。

《C语言程序设计》教案 第四章 数组—一维数组

《C语言程序设计》教案 第四章 数组—一维数组
for(i=1;i<=100;i++)
if(a[i]>average)
printf(“%f\n”,a[i]);
(2)在这里,a代表数组名,a[i]代表a数组中的一个元素,i是数组元素的下标,当i的值为1时,a[i]代表a[1];当i的值为2时,a[i]代表a[2]。在循环中当i从1变化到100时,a[i]也就逐个代表a[1]到a[100]。
if(a1>average)printf(“%f\n”,al);
if(a2>average)printf(“%f\n”,a2);
……
if(a100>average)printf(“%f\n”,a100);这样的程序是无法让人接受的。
解决上述问题方法:(1)在C语言中,我们可以定义一个名叫a的变量,它不代表一个单一的成绩值,而是代表整个成绩组。使用数组元素a[1]、a[2]、…、a[100]来代替a1、…、a2、…、a100,则程序就会简单得多,只需要用一个for循环就能完成100次比较:
每个数组元素也都可以作为单个变量使用。
3、一维数组(45分钟)
(1)一维数组的定义(先定义后使用)
格式:类型说明数组名[常量表达式]
例如:
int grades[10]; /*定义了一个数组grades,元素个数为10,数组元素类型为整型。*/
说明:1)数组的类型就是数组各个元素的类型,对于一个数组,所有元素的数据类型都是相同的。
(3)数组的下标:是数组元素的位置的一个索引或指示。
(4)数组的维数:数组元素下标的个数。根据数组的维数可以将数组分为一维、二维、三维、多维数组。
例如:int a[10];
定义了一个一维数组a,该数组由10个数组元素构成的,其中每一个数组元素都属于整型数据类型。

(完整版)C语言程序设计试题与答案-4

(完整版)C语言程序设计试题与答案-4

《C语言程序设计》试题(闭卷)得分评卷人一、单项选择题:(每题 2 分,共 30 分)1. C 语言规定:在一个源程序中,main函数的位置_____________。

A. 必须在最开始B. 必须在系统调用的库函数的后面C. 可以任意D. 必须在最后2. 下列说法中错误的是_____________。

A. 主函数可以分为两个部分:函数头和函数体B. 主函数可以调用任何非主函数的其他函数C. 任何非主函数可以调用其他任何非主函数D. 程序可以从任何非主函数开始执行3. 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将_____________。

A. 生成目标文件B. 生成可执行目标文件C. 输出运行结果D. 自动保存源文件4. 以下选项中,不正确的 C 语言浮点型常量是_____________。

A. 160.B. 0.12C. 2e4.2D. 0.05. 以下用户标识符中,合法的是_____________。

A. intB. nitC. 123D. a+b6. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为_____________。

A. 算术运算、关系运算、赋值运算B. 算术运算、赋值运算、关系运算C. 关系运算、赋值运算、算术运算D. 关系运算、算术运算、赋值运算7. 设整型变量m,n,a,b,c,d 均为1,执行(m=a>b)&&(n=c>d)后, m,n 的值是_____________。

A. 1,1B. 0,1C. 1,0D. 0,08. sizeof (char)的结果值是_____________。

A. 4B. 2C. 1D.出错9. 设a 为整型变量,不能正确表达数学关系:10<a<15的 C 语言表达式是_____________。

A. 10<a<15B. a= =11|| a= =12 || a= =13 || a= =14C. a>10 && a<15D. !(a<=10) && !(a>=15)10. 要为字符型变量 a赋初值,下列语句中哪一个是正确的_____________。

《C语言程序设计》课后习题答案第四版

《C语言程序设计》课后习题答案第四版

《C语言程序设计》课后习题答案第四版C语言程序设计课后习题答案第四版第一章基本概念和语法1.以下是一些基本概念和语法的习题答案:1.1 基本概念1.1.1 C语言是一种高级程序设计语言,最初由贝尔实验室的丹尼斯·里奇(Dennis Ritchie)于1972年开发。

1.1.2 C语言具有跨平台性,能够在多个操作系统上运行。

1.1.3 C语言程序是由函数构成的,每个程序都至少包含一个main函数。

1.2 数据类型和变量1.2.1 C语言中的基本数据类型包括整型(int)、浮点型(float)、字符型(char)和布尔型(bool)等。

1.2.2 变量是用来存储数据的内存位置,它们需要在使用前进行声明。

1.3 运算符和表达式1.3.1 运算符用来执行各种运算操作,例如加减乘除和逻辑运算等。

1.3.2 表达式由变量、常量和运算符组成,用来进行数据计算和逻辑判断。

1.4 控制语句1.4.1 if语句用于条件判断,根据条件的真假来选择执行不同的代码块。

1.4.2 for循环语句用于重复执行某段代码,可以设定循环次数或者循环条件。

1.4.3 switch语句用于多条件选择,根据不同的条件执行相应的代码块。

第二章数组和字符串2.以下是关于数组和字符串的习题答案:2.1 数组2.1.1 数组是一种用来存储多个相同类型数据的数据结构。

2.1.2 数组可以通过索引访问和修改其中的元素,索引从0开始。

2.1.3 数组的长度是固定的,声明时需指定数组的大小。

2.2 字符串2.2.1 字符串是由字符组成的数组,以空字符'\0'结尾。

2.2.2 字符串可以通过数组或者指针方式进行操作。

2.2.3 C语言提供了许多用于处理字符串的函数,例如strcpy、strcmp和strlen等。

第三章函数和指针3.以下是有关函数和指针的习题答案:3.1 函数3.1.1 函数是一段可重复调用的代码块,用于执行特定的任务。

c语言程序设计苏小红课后答案

c语言程序设计苏小红课后答案

c语言程序设计苏小红课后答案C语言程序设计是一门基础而重要的计算机编程课程,它为学生提供了学习程序设计的基本概念、原理和方法。

苏小红编写的《C语言程序设计》是一本广泛使用的教材,其课后习题答案对于学生理解和巩固知识点非常有帮助。

以下是部分课后习题的答案示例,以供参考。

第一章:C语言概述1. 问题:C语言的特点是什么?答案:C语言具有简洁、紧凑、灵活、高效等特点。

它是一种结构化语言,支持多种数据类型,并且具有丰富的运算符。

C语言的程序设计语言简洁,语法结构清晰,易于学习。

2. 问题:C语言的主要应用领域有哪些?答案:C语言广泛应用于系统软件、应用软件、嵌入式系统、操作系统、数据库管理系统等领域。

第二章:数据类型、运算符和表达式1. 问题:C语言中的基本数据类型有哪些?答案:C语言的基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)等。

2. 问题:如何理解C语言中的运算符优先级?答案:C语言中的运算符优先级决定了表达式中各个运算符的执行顺序。

例如,乘除运算符的优先级高于加减运算符,括号内的运算优先级最高。

第三章:控制结构1. 问题:C语言中的三种基本控制结构是什么?答案:C语言中的三种基本控制结构是顺序结构、选择结构和循环结构。

2. 问题:if语句的基本形式有哪些?答案:if语句的基本形式包括单分支if语句、双分支if-else语句和多分支if-else if-else语句。

第四章:数组1. 问题:什么是一维数组?答案:一维数组是具有相同数据类型元素的集合,这些元素在内存中连续存储,可以通过索引访问。

2. 问题:如何声明和初始化一个一维数组?答案:声明一维数组的语法是 `type arrayName[arraySize];`。

初始化可以使用 `{value1, value2, ...}` 的方式,例如 `intarr[5] = {1, 2, 3, 4, 5};`。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/* 4.11 fibonacci数列,前15项1,1,2,3,5,。

*/ #include "stdio.h"
void main()
{
int f[15]={1,1}, i;
for(i=2;i<=14;i++) /* 计算*/
f[i]=f[i-2]+f[i-1];
printf("fibonacci数列,前15项\n"); /* 输出*/
for(i=0;i<=14;i++)
{
printf("%5d",f[i]);
if((i+1)%5==0)
printf("\n");
}
}
/* 4.12 数组元素前移动一个位置 */
#include "stdio.h"
void main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9};
int i,t;
printf("\n移动之前:\n");
for(i=0;i<=9;i++)
printf("%3d",a[i]);
/* 移动*/
t=a[0];
for(i=0;i<=9;i++)
a[i]=a[i+1];
a[9]=t;
printf("\n移动之后:\n");
for(i=0;i<=9;i++)
printf("%3d",a[i]);
}
/* 4.13 有序数列中插入若干个数,仍然保持有序 */
#include "stdio.h"
void main()
{
int a[100]={1,4,8,10};
int i,k,x,count=4;/* i,k 循环变量,x 输入整数,count 有多少整数*/ printf("\n请输入要插入的整数,输入之后按回车键,如要结束请输入-1\n");
scanf("%d",&x);
while(x!=-1)
{
/* 寻找插入位置*/
for(i=0;i<count;i++)
{
/* 找到插入位置*/
if(a[i]>=x)
{
/* 移动*/
for(k=count;k>i;k--)
a[k]=a[k-1];
/* 插入*/
a[i]=x;
break;
}
}
if(i>=count)
a[i]=x;
count=count+1;
printf("\n插入之后的数组为:\n");
for(i=0;i<count;i++)
printf("%4d",a[i]);
printf("\n请输入要插入的整数,输入之后按回车键,如要结束请输入-1\n");
scanf("%d",&x);
}
}
/* 4.15 将十进制数转换成二进制数,并按位存放到数组中。

(限正整数)*/ #include "stdio.h"
#include "conio.h"
void main()
{
int decimal, binary[32], i=0, quotient;
printf("请输入一个十进制数\n");
scanf("%d",&decimal);
/* 计算*/
quotient=decimal/2;
binary[i]=decimal%2;
decimal=quotient;
while(quotient!=0)
{
i++;
quotient= decimal/2;
binary[i]=decimal%2;
decimal=quotient;
}
/* 输出*/
while(i>=0)
{
printf("%d",binary[i]);
i--;
}
getch();
}。

相关文档
最新文档