c语言.作业5 数组
C语言专题编程练习——数组
编程练习4 ——数组1. 随机数数组输出。
要求:产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
输出结果:2. 求数组最大值、最小值、总和、平均数。
要求:产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
求该数组的最大值、最小值、总和和平均值并输出。
输出结果:3. 冒泡法排序。
要求:产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
按照升序排列并输出。
输出结果:4. 选择法排序。
输出结果:同上5. 比较法排序。
输出结果:同上6. 数组逆序输出要求:产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
编程将逆序数组输出。
输出结果:7. 数组插数。
要求:产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
按照升序排列并输出。
再输入一个数,按照原来的规律将其插入并输出。
输出结果:8. 用数组输出Fibonacci数列的前40项。
要求:每行输出5个元素,每个元素10位。
输出结果:(略)9. 用筛选法求100以内的素数。
输出结果:10. 数组查找。
要求:产生一个由15个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
按照升序排列并输出。
再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,输出找不到。
11. 二维数组行列互换。
要求:将一个二维数组(3行4列)的行和列互换(转置),存到另一个二维数组(4行3列)中并输出。
输出结果:12. 编程输出杨辉三角(要求输出10行)。
输出结果:13. 编程输入5阶魔方阵。
输出结果:14. 找出一个二维数组中的鞍点。
要求:即该位置上的元素在该行最大,在该列最小。
可能没有鞍点。
输出结果:15. 输入一行字符,统计大写字母、小写字母、数字、空格以及其他字符个数。
输出结果:16. 编写程序实现strcat函数功能。
输出结果:17. 编写程序实现strcpy函数功能。
c语言数组练习题及答案
c语言数组练习题及答案第一题:在数组a中,存放有n个学生的成绩.试编一函数:将低于平均分的学生人数m由函数值返回,将低于平均分的分数由数组b带回. int fun(int a[],int n,int b[]) {int i,m=0,aver=0;for(i=0;i<n;i++) aver+=a[i];aver/=n;for(i=0;i<n;i++)if(a[i]<aver) b[m++]=a[i];return m;}第二题:试编一函数:求出1000之间能被7或11整除,但不能同时被7或11整除的所有整数的个数n由函数值返回,并将符合条件的数放在数组a中带回. int fun(int a[]){int i,n=0;for(i=1;i<1000;i++)if((i%7==0&&i%11!=0)||(i%7!=0&&i%11==0)) a[n++]=i;return n;}第三题:试编一函数:将大于整数m且紧靠m的k个素数存入数组a中. void fun(int m,int k,int a[]) {int i,n,data,flag;data=m+1; n=0;while(n<k){flag=1;for(i=2;i<=data/2;i++)if(data%i==0){flag=0; break;}if(flag) a[n++]=data;data++;}}第四题:试编一函数:在数组a中有n个整数,要求把下标从0到p(p小于等于n-1)的数平移到数组的最后.如:原始内容: 1,2,3,4,5,6,7,8,9,10; 当p=4时:移后内容: 6,7,8,9,10,1,2,3,4,5void fun(int a[],int n,int p) {int i,j,t;for(i=0;i<=p;i++){t=a[0];for(j=1;j<n;j++) a[j-1]=a[j];a[n-1]=t;}}第五题:试编一函数:在具有n个数据的数组a中,求出次最大值的下标并由函数值返回.int fun(int a[],int n){int i,j,max,may;if(a[0]>a[1]){max=0; may=1;}else {max=1; may=0;}for(i=2;i<n;i++)if(a[i]>a[max]){may=max;amx=i;}else if(a[i]>a[may]) may=i;return may;}第六题:在数组a中有n个四位数.试编一函数,要求按每个数的后三位的大小进行升序排列,当后三位等相同时,则对这些数值按原始四位数据进行降序排序.将排序后的前10个数存入数组b中.(提示:可采用选择排序)int fun(int a[],int n,int b[]) {int i,j,k,t,m=10;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(a[j]%1000<a[k]%1000) k=j;else if(a[j]%1000==a[k]%1000 && a[j]>a[k]) k=j;if(k!=i){t=a[i]; a[i]=a[k]; a[k]=t;}}for(i=0;i<m;i++) b[i]=a[i];return m;}第七题:在三位数(100至999)中寻找符合下面条件的整数.它即是完全平方数,又有两位数字相同.(如:144,676;)并将符合条件数的个数n由函数值返回,符合条件的数存入数组a中返回.int fun(int a[]){int i,j,hun,ten,data,n=0;for(i=10;i<32;i++){j=i*i;if(j>=100&&j<=999){hun=j/100;ten=j%100/10;data=j%10;if(hun==ten||ten==data||data==hun) a[n++]=j;}}return n;}第八题:判断一个长整型数是否为回文数(回文数是指其数字左右对称的整数).当该数是回文数时,函数值返回1,否则返回0.(提示:利用逻辑量flag进行操作). intfun(long m){int i=0,n=0,flag=1,a[20];while(m){a[n]=m%10; m=m/10; n++;}while(i<=n/2 && flag)if(a[i]!=a[--n] flag=0;else i++;return flag;}第九题:在数组a中存有n个数据,试编一函数:依次从数组中取出一个数据,如查该数连续大于该数以后的5个数且该数是奇数,统计出满足此条件数的个数m由函数值返回,并把这些数按从小到大的顺序存入数组b中.int fun(int a[],int n,int b[]) {int i,j,flag,m=0;for(i=0;i<n-5;i++){for(j=i+1;j<=i+5;j++)if(a[i]>a[j]) flag=1;else {flag=0; break;}if(flag==1 && a[i]%2==1) b[m++]=a[i];}for(i=0;i<m-1;i++)for(j=0;j<m-1-i;j++)if(b[j]>b[j+1]){flag=b[j]; b[j]=b[j+1]; b[j+1]=flag;}return m;}第十题:在数组a中有n个四位数,试编一函数:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数m由函数值返回,再把所有满足此条件的四位数依次存入数组b中,然后对数组b中的四位数按从小到大的顺序排序.int fun(int a[],int n,int b[]) {int i,j,m,thou,hun,ten,data;for(i=0;i<n;i++){thou=a[i]/1000;hun=a[i]%1000/100;ten=a[i]%100/10;data=a[i]%10;if(thou+data==hun+ten) b[m++]=a[i];}for(i=0;i<m-1;i++)for(j=0;j<m-1-i;j++)if(b[j]<b[j+1]){data=b[j]; b[j]=b[j+1]; b[j+1]=data;}}第十一题:在数组a中有n=100个人围坐一圈并按顺时针方向从1到n编号,从第s=1个人开始进行从1到m=10的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止,现要求将出圈次序重新存入数组a中.void fun(int a[],int n,int s,int m) {int i,j,k,l,x;i=s-1; k=0; l=n;while(l>0){k++;if(k==m){x=a[i];for(j=i+1;j<n;j++) a[j-1]=a[j];a[n-1]=x;k=0; l--;}else i++;if(i==l) i=0;}}。
C语言实验五实验报告——数组
C语言实验五实验报告——数组一、实验目的:1.了解数组的概念和基本使用方法;2.掌握一维数组和二维数组的定义、初始化、赋值及基本运算实现;二、实验内容与方法1.理论部分数组是一些具有相同类型的数据元素按一定顺序排列组合而成的集合,在程序设计中它是一个变量列表,由若干相同数据类型的元素组成。
通常用一个名字和一个下标来表示,下标可理解为数组元素在数组中的位置编号。
数组的特点:数组是根据顺序排列的元素的集合;所有的元素必须是相同类型。
数组的定义方法:1. 定义数组,数组元素类型 + 数组名[元素的个数];2. 元素的个数必须是整型常量或变量,定义时必须明确、指定元素的个数;3. 声明一个数组时,除了要指定数组的类型外,还要指定数组的名称;4. 数组定义完后,需要对其中的每个元素进行初始化。
可以在定义数组时赋初值,也可以通过赋值符号,对数组元素逐个进行赋值。
数组的初始化:1. 元素个数之间用逗号分开,最后1个元素后无逗号;2. 支持部分元素初始化;3. 定义和初始化可以一步完成。
二维数组数组可分为一维和多维数组。
一维数组可以看作是包含多个元素的向量,而二维数组可以看做是包含了多个一维数组的矩阵。
二维数组有行号和列号,因此,它同样需要两个下标。
数组元素类型数组名[行数][列数];数组元素类型数组名[ ][ ] = { {元素1, 元素2, ……}, {元素1, 元素2, ……}, ……{元素1, 元素2, ……}}2.实验代码**问题1:**定义一个一维数组a,包含有5个元素,分别为1,2,3,4,5;**问题2:**定义一个一维数组a,接收用户从键盘输入的5个数值,分别打印存储的各个元素。
三、实验结果与分析结果分析:定义了一个5个元素的一维数组a,并初始化了各个元素的值,其元素分别为1,2,3,4,5.循环遍历一遍数组a,并打印数组元素。
程序执行正常。
3.针对问题3:定义一个二维数组a,由4行3列组成,每个元素初始化为0,打印存储的各个元素;程序运行结果如下:四、实验总结:该实验主要是通过对C语言数组的理论知识和基本操作进行练习,加深了对数组的了解和掌握。
C语言题库第5章 数组√
第五章数组一、单项选择1.若要定义一个具有5个元素的整型数组,以下错误的定义语句是( C)2.下列选项中,能正确定义数组的语句是( D)3.下面是有关C语言字符数组的描述,其中错误的是( D)4.有以下程序,程序运行时若输入:how are you? I am fine<回车>则输出结果是( C)#include<stdio.h>int main(){ char a[30],b[30];scanf("%s",a);gets(b);printf("%s\n %s\n",a,b);return 0;}5.以下选项中正确的语句组是( D)6.若有定义语句:int m[]={5,4,3,2,1},i=4;则下面对m数组元素的引用中错误的是( A )7.以下数组定义中错误的是( A)8.下列选项中,能够满足"若字符串s1等于字符串s2,则执行ST"要求的是 ( A )9.有以下程序,程序运行后的输出结果是( C)#include <stdio.h>#include <string.h>int main(){char x[]="STRING";x[0]='0';x[1]='\0';x[2]=0;printf("%d %d\n",sizeof(x),strlen(x));return 0;10.有以下程序,程序运行后的输出结果是( B )#include <stdio.h>#include <string.h>int main(){char a[20]=”ABCD\0EFG\0”,b[]=”IJK”;strcat(a,b); printf(“%s\n”,a);return 0;二、程序设计1./* 编写程序,实现矩阵(3行3列)的转置(即行列互换)。
C程序设计(数组)习题与答案
C程序设计(数组)习题与答案C程序设计(数组)习题与答案数组是C语言中常用的数据结构之一,它可以存储多个相同类型的元素。
掌握数组的使用对于C程序设计至关重要,下面将为大家介绍一些关于C数组的习题及其答案。
1. 习题一:计算数组元素的和题目描述:编写一个程序,计算给定数组中所有元素的和,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5}; // 定义一个包含5个元素的整型数组int sum = 0; // 用于存储和的变量// 遍历数组,累加每个元素的值for (int i = 0; i < 5; i++) {sum += arr[i];}printf("数组元素的和为:%d\n", sum);return 0;}```2. 习题二:查找数组中的最大值题目描述:编写一个程序,找出给定整型数组中的最大值,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[7] = {4, 7, 2, 9, 1, 5, 8}; // 定义一个包含7个元素的整型数组int max = arr[0]; // 假设第一个元素为最大值// 遍历数组,比较每个元素的值与当前最大值的关系for (int i = 1; i < 7; i++) {if (arr[i] > max) {max = arr[i];}}printf("数组中的最大值为:%d\n", max);return 0;}```3. 习题三:查找数组中的特定元素题目描述:编写一个程序,在给定整型数组中查找是否存在指定元素,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[6] = {3, 6, 9, 2, 5, 8}; // 定义一个包含6个元素的整型数组 int target = 2; // 指定要查找的元素int found = 0; // 用于标记是否找到目标元素的变量// 遍历数组,比较每个元素的值与目标值的关系for (int i = 0; i < 6; i++) {if (arr[i] == target) {found = 1;break;}}if (found) {printf("数组中存在目标元素:%d\n", target);} else {printf("数组中不存在目标元素:%d\n", target);}return 0;}```4. 习题四:数组元素逆序排列题目描述:编写一个程序,将给定整型数组的元素逆序排列,并输出结果。
C语言实验5-8答案(函数与数组)
任务
1.fact(j-1)*j
2.gcd(n,m%n)
m<n
3.//for(j=0;j<=n-i;j++)
//printf("");//删除这两行,因为顶格输出,不要空行了。
y==1||y==x
z=c(x-1,y-1)+c(x-1,y)
4.程序代码如下:
#include<stdio.h>
fib(int n)
#include <stdio.h>
main( )
{double fun(int m);//先调用再定义,且不是能缺省的int型,请加上函数说明。
int m;
printf("\n input m:");
scanf("%d",&m);
printf("\n t= %12.10lf \n",fun(m));
j=2
j—
i+j==2
输出为:a=13,b=14
4.i=1
x[i-1]
5.m<1000
m/10%10或m/10-x*10
a[i]=m
m<i
输出结果为:153 370 371 407
6.a
a
sum/n
x[i]<ave
任务
1.‘\0’
str1[i]-str2[i]
2.c[k]=a[i++];
c[k]=b[j++];
return yes;
}
main( )
{
int n;
scanf("%d",&n);
C语言实验五实验报告——数组
C语言实验五实验报告——数组实验五:数组实验目的:1.掌握数组的定义和使用;2.熟悉数组在函数中的传递;3.练习编写使用数组的程序。
实验原理:数组是一组相同类型的变量的集合,这些变量称为数组的元素。
数组的名字是一个指针常量,它存放的是数组首个元素的地址。
数组元素在内存中是连续存放的,可以通过下标访问每一个元素。
数组的定义:数组的定义格式为:数据类型数组名[数组长度];数组的初始化:数组可以在定义时进行初始化,也可以在定义之后通过赋值进行初始化。
数组作为函数参数:数组可以作为函数的形参进行传递,可以通过指针传递整个数组,也可以传递数组的部分元素。
实验步骤:1.编写一个程序,实现对学生成绩的管理。
要求如下:-使用一个数组保存学生的成绩;-能够动态添加学生的成绩,并显示添加成功的信息;-能够计算学生的平均成绩,并显示;-能够根据用户输入的学号查找对应学生的成绩,并显示。
2.编写一个程序,实现对一组整数进行排序。
要求如下:-首先自定义一个整数数组,数组元素个数为用户输入;-编写一个函数,实现对数组进行排序,要求使用选择排序算法;-在主函数中调用该函数,对数组进行排序后显示。
实验结果与分析:1.学生成绩管理程序运行结果如下:```-------学生成绩管理系统-------[1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:1请输入成绩:90添加成功![1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:1请输入成绩:85添加成功![1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:2平均成绩为:87.5[1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:3 [1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:4退出系统。
```2.整数排序程序运行结果如下:```-------整数排序-------请输入待排序的整数个数:6请输入第1个整数:5请输入第2个整数:3请输入第3个整数:9请输入第4个整数:2请输入第5个整数:7请输入第6个整数:1排序前的整数序列为:539271排序后的整数序列为:123579 ```实验总结:通过本次实验,我深入理解了数组的原理和用法,并且掌握了数组在函数中的传递。
数组c语言试题库及答案
数组c语言试题库及答案1. 请解释C语言中数组的概念。
答:在C语言中,数组是一种数据结构,它允许将多个相同类型的数据项存储在连续的内存位置。
数组可以是一维的,也可以是多维的。
2. 如何声明一个整型数组?答:声明一个整型数组的语法是 `int array_name[size];`,其中`array_name` 是数组的名字,`size` 是数组中元素的数量。
3. 请写出一个程序,用于计算一个整型数组中所有元素的和。
```c#include <stdio.h>int main() {int array[] = {1, 2, 3, 4, 5};int sum = 0;for(int i = 0; i < 5; i++) {sum += array[i];}printf("Sum of array elements: %d\n", sum);return 0;}```4. 如果一个数组的元素数量是动态的,应该如何声明?答:在C语言中,可以使用指针来处理动态数组。
声明方式为`int *array_name;`,然后在程序中使用 `malloc` 或 `calloc` 函数分配内存。
5. 请解释数组的索引。
答:数组的索引是从0开始的,它表示数组中元素的位置。
例如,对于一个名为 `array` 的数组,`array[0]` 是数组的第一个元素。
6. 如何初始化一个整型数组?答:可以使用花括号 `{}` 来初始化数组,例如 `int array[] = {1, 2, 3, 4, 5};`。
7. 请写出一个程序,用于交换数组中的两个元素。
```c#include <stdio.h>int main() {int array[] = {1, 2, 3, 4, 5};int temp;int index1 = 1; // 第二个元素int index2 = 3; // 第四个元素temp = array[index1];array[index1] = array[index2];array[index2] = temp;for(int i = 0; i < 5; i++) {printf("%d ", array[i]);}return 0;}```8. 在C语言中,数组的元素可以是什么数据类型?答:数组的元素可以是任何数据类型,包括整型、浮点型、字符型、结构体等。
C语言 第5章 数组
北京科技大学
2014-10-10
5.2.4 一维数组应用举例
【例5-2】设计一个程序,将n个人某门课程的成绩输入计 算机后输出最高分和最低分。 思路:①首先将n个人的成绩输入到一个一维数组中。 ②求若干个数的最大值或最小值常采用打擂台的方法: 首先指定某数为最大值或最小值的擂主: 如:max=a[0], min=a[0] 将其他各数依次与擂主进行比较(循环嵌套分支),
2014-10-10
5.1概述(续)
2.数组与数组元素的概念
数组:一组相同类型的数据的集合,数组的名字就称为数 组名。 如定义:float a[10]; a是数组名。 下标变量(或数组元素):数组中的每个数据用下标进行 区分,这些变量称为下标变量或数组元素。 如:a[0]、a[1]…a[i]。 每个数组元素相当于一个简单变量,数组的类型也就是该 数组的数组元素的数据类型。 数组属于构造类型。构造类型的数据是由基本类型数据按 一定规则构成的。
91.5 34.5 67.5 72.0
84.0
score[0]
score[1]
score[2] score[3] score[4]
组如 范果 围引 会用 破的 坏数 其组 他元 变素 量超 的出 值数 。
5.2.3 一维数组的初始化
初始化:在定义数组时给数组元素赋初值。
1.在定义数组时,对全部数组元素赋初值 例如:int a[5]={0,1,2,3,4}; 此时可以省略数组长度,例如:int a[ ]={0,1,2,3,4}; 2.在定义数组时,对部分数组元素赋初值 例如:int a[5]={1,2,3};系统为其余元素赋 0 。 3.当初值的个数多于数组元素的个数时,编译出错 例如: int a[5]={0,1,2,3,4,5};
《C语言程序设计》第5章数组、字符串、指针
相当于声明了5个整型变量
说明: ① 数组的所有元素的数据类型都是相同的。 ② 数组取名规则应符合标识符的规定,数组 名不能与同一函数中其它变量名相同: int a; float a[10]; 是错误的。
③ C语言中规定数组的下标从0开始,方括号 中常量表达式表示数组元素的个数。
④ 不能在方括号中用变量来表示元素的个数, 但是可以是符号常数或常量表达式。例如: int n=5,a[n]; 是错误的。
二维数组在内存的存放顺序是“先行后列”
a[0][0] a[0][1] a[0][2] a[0][3] a[1][0]
…
a[2][3]
5.3.2 二维数组元素的引用
二维数组的元素的引用形式为: 数组名[下标][下标] 使用二维数组的情况举例: 学生多门功课的成绩,如: a[100][3]可以用来记录100个学生3门功 课的成绩。 矩阵,如: a[3][3]可以用来记录3×3的矩阵。一个 数组元素正好存放一个矩阵的元素。
5.2.2 一维数组的初始化
1、数组声明时初始化 在编译阶段进行的。这样将减少运行时间, 提高效率。 数组初始化的一般形式为: 类型符 数组名[常量表达式]={值,值…值}; 例如: int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0; a[1]=1;... a[9]=9;
…
a[9]
#include <stdio.h> 声明有10个元素 void main() 的一维数组a {int n,i; float s=0, ave, a[10]; a[0] a[1] … a[9] for(i=0;i<10;i++) a[i] { scanf("%f",&a[i]); a[i] s=s+a[i]; } ave=s/10; for(i=0;i<10;i++) a[i] a[i] if (a[i]>ave) printf("%f ",a[i]); }
C语言程序设计作业五(指针,文件)
C语言程序设计作业五1.对于类型相同的指针变量,不能进行哪种运算?(单选)A. +B. -C. =D. = =2. 若有以下说明和语句,且0<=i<10, 则下面哪个是对数组元素的错误引用?(单选)int a[]={1,2,3,4,5,6,7,8,9,0}, *p, i;p=a;A. *(a+i)B. a[p-a]C. p+iD. *(&a[i])3. 若有以下说明和语句,且0<=i<10,则下面哪个是对数组元素地址的正确表示?(单选)int a[]={1,2,3,4,5,6,7,8,9,0}, *p,i;p=a;A. &(a+1)B. a++C. &pD. &p[i]4. 以下程序的输出结果是___。
#include <stdio.h>main(){int a[]={1,2,3,4,5,6},*p;p=a;*(p+3)+=2;printf("%d,%d\n",*p,*(p+3));}A. 0,5B. 1,5C. 0,6D. 1,65. 以下程序的输出结果是哪一项?(单选)#include <stdio.h>main(){int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[4],i;for(i=0;i<4;i++)p[i]=&a[i*3];printf("%d\n",p[3][2]);}A. 输出项不合法B. 6C. 8D. 126. 如果有以下的定义:(多选)struct person{char name[20];int age;char sex;};struct person a={"xiao min",20,'m'},*p=&a;则对字符串"li ning"的引用方式可以是下面哪些?A. (*p).nameB. C. D. p->name7. 下面哪些定义的结构在内存分配是等价的。
C语言上机操作指导实验五数组(1) 实验八函数(2)
第 4页,共 14页
《C 程序设计》实验及课程设计项目报告
下标= a 2
0
1 8
2 16
3 14
4 1 10
5 8
6
7 16
8 4
9 20
10 6
部分源代码: k=0; if ( a[k]<a[1] ) 真 k=1; 执行 k=0; if ( a[k]<a[2] ) 假 for ( i=1; i<10; i++ ) k=2; 不执行 if ( a[k]<a[i] ) if ( a[k]<a[3] ) 真 k=i; k=3; 执行 相关知识:①删除数组元素的概念;②移动数组元素的算法;③求最大值位置的算法。 7. 以下 sy30.c 程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输 出低于平均分的学生成绩,用输入负数结束输入。请填空: #include <stdio.h> void main( ) { float x[1000], sum=0.0, ave, a; int n=0, i; printf ("Enter mark : \n") ; scanf("%f", &a); while (a>=0.0 && n<1000) { sum+= ; x[n]= ; n++; scanf("%f", &a); } ave= ; printf ("Output : \n"); printf ("ave = %f\n", ave); for (i=0; i<n; i++) if ( ) printf("%f\n", x[i]); } 8.打印如下杨辉三角形 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 编程点拨: 杨辉三角形有如下特点: 1 只有下半三角形有确定的值; 2 第一列和对角线上的元素值都是 1; 3 其它元素值均是前一行同一列元素与前一行前一列元素之和。
C语言 5.数组
a[9]
a[8]
……
a[1]
a[0]
一维数组
(2) 不能对数组整体赋值。例如: int a[10], b[10], i; for ( i=0; i<10; i++) scanf("%d", &a[i]); 则语句 b=a; 是非法的。 要用: for ( i=0; i<10; i++) b[i]= a[i]); (3) 在使用数组a的元素时, 数组元素中下标表达式的值 必须是整数, 值在0到9。C语言程序在运行时系统不检 查数组元素的下标是否越界。因此数组两端都可能因 为越界而破坏了其它存储单元中的数据, 甚至破坏程 序代码或操作系统。
100个实数存放在100实型变
量中。为此定义100个实型 变量f0,f1,. . .f99分别存放这 100个实数, 程序如右:
prinft("%f", (f49+f50)/2.0);
数组概念的引入
为简化程序,引入数组概念, 将这100个实型变量
写成f[0], f[1], ..., f[99], 它们都有相同的数组变量
二维数组
3.二维数组元素的引用 定义了二维数组后,就可以在程序中 使用其数组元素, 例如, 有如下定义: int a[5][9]; 则对数组a的元素合法的使用形式可 以是a[0][0], a[0][1], ..., a[2][4], ..., a[4][8], a[i][j], a[i+j][i-3]等,在程序中可以象使用 变量一样使用这些元素。
二维数组
1.二维数组的定义 二维数组的每个元素有两个下标,实际上二 维数组元素组成了一个矩阵. ` 例如有下述定义: int a[3][4]; 这就定义了一个三行四列的矩阵,共12个数 组元素: 第0列 第1列 第2列 第3列 第0行 a[0][0] a[0][1] a[0][2] a[0][3] 第1行 a[1][0] a[1][1] a[1][2] a[1][3] 第2行 a[2][0] a[2][1] a[2][2] a[2][3]
C语言数组作业编程题答案
1、请先用记事本创建文件original.txt,往其中写入一组已排好序的整型数,今输入一个整数,要求按原来排序的规律将它插入数中,仍写入文件。
例如:原来整数依次为4、6、8、41、56、77、102(数据间的分隔符为空格)。
若将42插入数中,则插入后整数依次为4、6、8、41、42、56、77、102。
答案:#include <stdio.h>#include <stdlib.h>void main(){int a[100];int ijnumber;int n;FILE *fp;fp=fopen("e:\\C语言\\original.txt""r");if(fp==NULL){printf("open error");exit(0);}i=0;while(!feof(fp)){fscanf(fp"%d"&a[i++]);fgetc(fp);}number=i-1; //number中存最后一个数据的下标fclose(fp);scanf("%d"&n);//以下的while循环用来找n要放的位置循环结束时正好是a[i]的位置i=0;while(n>a[i]){i++;}//for循环的功能是将a[i]到最后一个元素全后移一个位置for(j=number;j>=i;j--)a[j+1]=a[j];//将n放入找到的位置a[i]=n;number=number+1; //加入n后,元素个数增1,用来控制向文件中的写入次数fp=fopen("e:\\C语言\\original.txt""w");if(fp==NULL){printf("open error");exit(0);}//写入数据for(i=0;i<=number-1;i++)fprintf(fp"%d "a[i]);fprintf(fp"%d"a[i]); //最后一个数据后没有空格fclose(fp);}2、假定整型数组中的元素值不重复。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作业5 数组
截止时间:5月21日23:59前
oth++;
}
}
printf("\nupper: %d\nlower: %d\n digit: %d\nblank: %d\n other: % d\n",upp,low,dig,spa,oth);
return 0;
}
运行程序后输入输出参考示例如下:
1.【问题描述】
从键盘输入两个整数m和n(1<m<n<20),再输入n个整数,使其前面各数顺序向左移动m个位置,即最前面m个整数变成最后面的m个数。
注意:只允许定义一个整型的一维数组,且循环左移m次后数组各个元素重新存放。
【输入形式】先按格式输入整数n和m的值,然后再输入n个整数(用空格隔开)
【输出形式】数组元素依次循环左移m个位置后,输出该数组中的n个元素的值,每个数占三列,右对齐。
【样例输入】
2 .
已知一个二维整型数组已初始化
a[5][5]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7},{0,1,2,3,4},{6,7,8,9,0}},请删除此数组中所有等于指定值的元素,删除后,各元素依次前移。
请注意,C语言二维数组的行优先方式存储。
例如:a[3][2]的数组,在内存中依次存储a[0][0],a[0][1],a[1][0],a[1][1],a[2][0],a[2][1],也就是说,先存储第“0”行的元素,再存储第“1”行的元素。
输入:一行一个整数,表示被删除的元素。
输出:若干行,每行若干个整数。
(每个数占3列,每输出5个数以后换行)
运行效果如下,请完成程序中空缺代码(不允许新增变量定义和修改已有语句)。
#include <stdio.h>
int main(){
int i,j,count=0,num;
int a[5][5]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7},{0,1,2,3,4},{6,7,8,9,0}};
scanf("%d",&num);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(a[i][j]!=num){
【1】//请填入一行或多行代码
}
for(i=0;i<5;i++){//输出
【2】//请填入一行或多行代码
printf("\n");
}
return 0;
}
3.【问题描述】从键盘输入一串仅由英文字母和空格构成的字符串,统计其中
单词的个数,并将每个单词的第一个字母改成小写,输出统计结果以及修改后的字符串。
这里“单词”是指由空格隔开的英文字符串。
【输入形式】
【输出形式】
【样例输入】。