C语言题库第5章 数组√

合集下载

(完整版)C语言程序设计教程第五章练习题题目

(完整版)C语言程序设计教程第五章练习题题目
for (i = 0; i<4; i++)
printf("%3d", x[i][3 - i]);
下列选项中哪一项是正确的输出结果()
A.1 5 9 13
B.1 6 11 16
C.4 7 10 13
D.4 8 12 16
10、下列描述中不正确的是()。
A.字符型数组中可以存放字符串
B.可以对字符型数组进行整体输入、输出
{
int i;
int arr[8] = { 1, 0, 1, 0, 1, 0, 1, 0 };
for (i = 0; i < 8; i++)
{
;
printf("%d\n", arr[i]);
}
return 0;
}
3、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。
5、数组在初始化时不可以只赋值一部分,必须全部赋值初始化()。
6、对于一维数组,例如int arr[3];则arr[2]表示数组的第2个元素()。
7、数组的下标范围是0-[数组长度-1]()。
8、二维数组进行定义与初始化时,行下标与列下标均不能省略()。
9、在程序设计中,一组具有相同数据类型的变量集合称为数组()。
void main()
{
int i;
char arr[5] = { 'h', 'e', 'l', 'l', 'o' };
for (i = 0; i < 5; i++)
printf("%c", arr[i]);

第四、五章串、数组和广义表练习题答案

第四、五章串、数组和广义表练习题答案

第四、五章串、数组和广义表练习题答案一.填空题1. 不包含任何字符(长度为0)的串称为空串;由一个或多个空格(仅由空格符)组成的串称为空白串。

2. 设S=“A;/document/Mary.doc”,则strlen(s)= 20 , “/”的字符定位的位置为3。

3. 子串的定位运算称为串的模式匹配;被匹配的主串称为目标串,子串称为模式。

4. 设目标T=”abccdcdccbaa”,模式P=“cdcc”,则第 6 次匹配成功。

5. 若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为(n-m+1)*m。

6. 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。

已知A的起始存储位置(基地址)为1000,则数组A的体积(存储量)为288 B ;末尾元素A57的第一个字节地址为1282 ;若按行存储时,元素A14的第一个字节地址为(8+4)×6+1000=1072 ;若按列存储时,元素A47的第一个字节地址为(6×7+4)×6+1000)=1276 。

(注:数组是从0行0列还是从1行1列计算起呢?由末单元为A57可知,是从0行0列开始!)7. 〖00年计算机系考研题〗设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为8950 。

答:不考虑0行0列,利用列优先公式:LOC(a ij)=LOC(a c1,c2)+[(j-c2)*(d1-c1+1)+i-c1)]*L 得:LOC(a32,58)=2048+[(58-1)*(60-1+1)+32-1]]*2=89508. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的行下标、列下标和元素值。

9.求下列广义表操作的结果:(1)GetHead【((a,b),(c,d))】=== (a, b) ; //头元素不必加括号(2)GetHead【GetTail【((a,b),(c,d))】】=== (c,d) ;(3)GetHead【GetTail【GetHead【((a,b),(c,d))】】】=== b ;(4)GetTail【GetHead【GetTail【((a,b),(c,d))】】】=== (d);10.C语言规定,字符串常量按_字符数组_____处理,它的值在程序的执行过程中是不能改变的。

数组习题

数组习题

第 5 章数组和广义表一、选择题2. 有一个二维数组A[1:6,0:7] 每个数组元素用相邻的6个字节存储,存储器按字节编址,那么这个数组的体积是(①)个字节。

假设存储数组元素A[1,0]的第一个字节的地址是0,则存储数组A的最后一个元素的第一个字节的地址是(②)。

若按行存储,则A[2,4]的第一个字节的地址是(③)。

若按列存储,则A[5,7]的第一个字节的地址是(④)。

就一般情况而言,当(⑤)时,按行存储的A[I,J]地址与按列存储的A[J,I]地址相等。

供选择的答案:①-④: A.12 B. 66 C. 72 D. 96 E. 114 F. 120G. 156 H. 234 I. 276 J. 282 K. 283 L. 288⑤: A.行与列的上界相同 B. 行与列的下界相同C. 行与列的上、下界都相同D. 行的元素个数与列的元素个数相同3. 设有数组A[i,j],数组的每个元素长度为3字节,i的值为1 到8 ,j的值为1 到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为( )。

A. BA+141B. BA+180C. BA+222D. BA+2254. 假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=()。

A. 808B. 818C. 1010D. 10205. 数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是( )。

A. 1175B. 1180C. 1205D. 12106. 有一个二维数组A[0:8,1:5],每个数组元素用相邻的4个字节存储,存储器按字节编址,假设存储数组元素A[0,1]的第一个字节的地址是0,存储数组A的最后一个元素的第一个字节的地址是(①)。

若按行存储,则A[3,5]和 A[5,3]的第一个字节的地址是(②)和(③)。

C语言程序设计(第3版)第5章习题参考答案

C语言程序设计(第3版)第5章习题参考答案
printf(" 1: input 2:find 3:sort \n");
printf(" 4: insert 5:delete 6:exit \n");
while(1)
{ printf("\nplease input a menu option:");
scanf("%d",&iMenu);
switch(iMenu)
break;
case 4: printf("\nplease input the data to be inserted:");
scanf("%d",&iInsert);
for(i=0;i<10;i++)
{
if(iInsert>iScore[i])
{
iFlag=i;
break;
}
}
for(i=10;i>iFlag;i--)
{
if(iScore[j]<iScore[j+1])
{
iTemp = iScore[j];
iScore[j] = iScore[j+1];
iScore[j+1] = iTemp;
}
}
}
printf("\nthe sorted datas :");
for(i=0;i<10;i++)
printf("%d ",iScore[i]);
printf("%d\t",s[i][0]);
for(j=1;j<=i;j++)

C语言程序设计教程 清华大学出版社 陈明主编 第5章答案

C语言程序设计教程 清华大学出版社 陈明主编 第5章答案

第5章习题解答一、选择题1.以下叙述中错误的是。

A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出B)数组名代表的是数组所占存储区的首地址,其值不可改变C)在程序执行中,当数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D)可以通过赋初值的方式确定数组元素的个数解析:对于double类型数组,不能直接用数组名对数组进行整体输入或输出。

所以选项A的说法是正确的。

数组名代表数组所占内存区的首地址,是一个固定指针,其值不可改变,因此选项B也是正确的。

在C语言一维数组定义时可以不指定数组长度,由赋初值的初值个数决定数组的长度。

因此选项D也是正确的。

C语言程序在执行时,不检查数组元素的下标是否越界,如果出现越界,可能会引起系统死机,因此选项C不正确。

答案:C2.有以下程序:/* 文件路径名:ex5_1_2\main.c */#include <stdio.h> /* 标准输入/出头文件*/int main(void) /* 主函数main() */{char s[] = "abcde"; /* 定义字符数组*/s += 2; /* s自加2 */printf("%d\n", s[0]); /* 输出s[0] */return 0; /* 返回值0, 返回操作系统*/}执行后的结果是。

A)输出字符a的ASCII码B)输出字符c的ASCII码C)输出字符c D)程序出错解析:数组s[]的首地址值s是不可改变的,故该程序编译时会出错。

答案:D3.有以下程序:/* 文件路径名:ex5_1_3\main.c */#include <stdio.h> /* 标准输入/出头文件*/int main(void) /* 主函数main() */{int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p = &a[3], *q = p + 2; /* 定义数组及变量*/printf("%d\n", *p + *q); /* 输出*p + *q之值*/return 0; /* 返回值0, 返回操作系统*/}程序运行后的输出结果是。

[工学]《C语言程序设计》第5章___数组、字符串、指针

[工学]《C语言程序设计》第5章___数组、字符串、指针

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]); }
说明: ① int a[10]={0,1,2,3,4};
给前5个元素赋 值,其余赋0值 不能给数组整体 赋值,改成{1} 静态存储类型, 初值为0 可以省略数组元 素个数。 初值的个数不能 超过元素个数
② int a[10]=1;
③ static int a[3]; ④ int a[ ]={1,2,3,4,5}; ⑤ int a[5]={1,2,3,4,5,1 };
代码: for(i=0; i<N-1; i<5; i++) { p=i; for(j=i+1; i<N; j<6; j++) if(a[j]<a[p]) p=j; t=a[i]; a[i]=a[p]; a[p]=t; } 5-5.c

C语言第五章习题带答案

练习5-1答案一、选择题1.合法的数组说明语句是( B )。

A.int a[]="string"; B.int a[]={0,1,2,3,4,5};C.char a="string"; D.char a[5]={'0', '1', '2', '3', '4', '5'}; 2.以下对一维整型数组a的说明正确的是( D )。

A.int a(10); B.int n=10, a[n]; C.int n; D.#define SIZE 10scanf("%d", &n); int a[SIZE];int a[n];3.已知:int a[10];,则对a数组元素的正确引用是( D )。

A.a[10] B.a[3.5] C.a(5) D.a[10-10]4.以下对一维数组a进行正确初始化的语句是( C )。

A.int a[10]=(0, 0, 0, 0, 0); B.int a[10]={};C.int a[]={0}; D.int a[2]={10, 9, 8};5.对以下说明语句的正确理解是( B )。

int a[10]={6, 7, 8, 9, 10};A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]C.将5个初值依次赋给a[6]至a[10]D.因为数组长度与初值的个数不相同,所以此语句不正确二、填空题6.求所有不超过200的N值,N的平方是具有对称性质的回文数。

所谓回文数就是将一个数从左到右与从右到左读都是一样的,例如:34543和1234321都是回文数。

例如:满足题意要求的数有:N=1,11*11=121;N=111,111*111=12321。

#include <stdio.h>main(){int m[16], n, i, t, count=0;long a, k;printf("Result is:\n");for (n=10; n<200; n++){ k=0;t=1;a=n*n;for (i=1; a!=0; i++){ ①;a/=10;}for (; i>1; i--){ k+=m[i-1]*t;②;}if ( ③) printf("%2d:%10d %10d\n", ++count, n, n*n);}}则①为( m[i]=a%10; )、②为( t*=10; )、③为( k==n*n )。

C语言第五章习题带答案

练习5-1答案一、选择题1.合法得数组说明语句就是( B )。

A.int a[]="string";B.int a[]={0,1,2,3,4,5};C.char a="string";D.char a[5]={'0', '1', '2', '3', '4', '5'};2.以下对一维整型数组a得说明正确得就是( D )。

A.int a(10);B.int n=10, a[n];C.int n;D.#define SIZE 10scanf("%d", &n); int a[SIZE];int a[n];3.已知:int a[10];,则对a数组元素得正确引用就是( D )。

A.a[10]B.a[3、5]C.a(5)D.a[10-10]4.以下对一维数组a进行正确初始化得语句就是( C )。

A.int a[10]=(0, 0, 0, 0, 0);B.int a[10]={};C.int a[]={0};D.int a[2]={10, 9, 8};5.对以下说明语句得正确理解就是( B )。

int a[10]={6, 7, 8, 9, 10};A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]C.将5个初值依次赋给a[6]至a[10]D.因为数组长度与初值得个数不相同,所以此语句不正确二、填空题6.求所有不超过200得N值,N得平方就是具有对称性质得回文数。

所谓回文数就就是将一个数从左到右与从右到左读都就是一样得,例如:34543与1234321都就是回文数。

例如:满足题意要求得数有:N=1,11*11=121;N=111,111*111=12321。

#include <stdio、h>main(){int m[16], n, i, t, count=0;long a, k;printf("Result is:\n");for (n=10; n<200; n++){ k=0;t=1;a=n*n;for (i=1; a!=0; i++){ ①;a/=10;}for (; i>1; i--){ k+=m[i-1]*t;②;}if ( ③) printf("%2d:%10d %10d\n", ++count, n, n*n);}}则①为( m[i]=a%10; )、②为( t*=10; )、③为( k==n*n )。

C语言题库数组(2021年整理精品文档)

(完整版)C语言题库数组编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整版)C语言题库数组)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整版)C语言题库数组的全部内容。

数组一、选择题1、假定int 类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组X在内存中所占字节数是(B).A 3B 6C 10D 202、执行下面的程序段后,变量k 中的值为(A).int k=3, s[2];s[0]=k; k=s[1]*10;A 不定值B 33C 30D 103、设有数组定义: char array []="China”; 则数组array 所占的空间为(C)。

A 4 个字节B 5 个字节C 6 个字节有0/的结束标志D 7 个字节4、下列描述中不正确的是 CA 字符型数组中可以存放字符串B 可以对字符型数组进行整体输入、输出C 可以对整型数组进行整体输入、输出D 不能在赋值语句中通过赋值运算符”=”对字符型数组进行整体赋值5、给出以下定义char x[]=”abcdefg”;char y[ ]={’a’,'b’,’c','d’,'e','f’,’g'};则正确的叙述为 CA 数组X 和数组Y 等价B 数组x 和数组Y 的长度相同C 数组X 的长度大于数组Y 的长度D 数组X 的长度小于数组Y 的长度6、下述对C 语言字符数组的描术中错误的是 CA 字符数组可以存放字符串B 字符数组中的字符串可以整体输入、输出C 可以在赋值语句中通过赋值运算符”=”对字符数组整体赋值D 不可以用关系运算符对字符数组中的字符串进行比较7、定义如下变量和数组int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是 Cfor(i=0;i<3;i++) printf(”%d",x[i][2—i]);A 1 5 9B 1 4 7C 3 5 7D 3 6 98、以下一维数组a 的正确定义是(D)A int a(10);B float n=10,a[n];C int n;scanf(”%d”,&n);float a[n];D #define size 10; long a[size];9、合法的数组定义是 DA int a[]="string";B int a[5]={0,1,2,3,4,5};C vhst s="string";D char a[]={0,1,2,3,4,5};10、以下关于数组的描述正确的是CA 数组的大小是固定的,但可以有不同的类型的数组元素;B 数组的大小是可变的,但所有数组元素的类型必须相同;C 数组的大小是固定的,但所有数组元素的类型必须相同;D 数组的大小是可变的,但可以有不同的类型的数组元素;11、在定义int a[10];之后,对a 的引用正确的是 AA a[9]B a[6.3]C a(6)D a[10]12、以下对一维数组a 进行不正确初始化的是 AA int a[10]=(0,0,0,0);B int a[10]={};C int a[]={0};D int a[10]={10*2};13、以下对二维数组a 进行正确初始化的是 BA int a[2][3]={{1,2},{3,4},{5,6}};B int a[][3]={1,2,3,4,5,6};C int a[2][]={1,2,3,4,5,6};D int a[2][]={{1,2},{3,4}};14、以下对字符数组进行不正确初始化的是 AA static char word[]=’cool\0’;B static char word[]={‘c’,’o’,’o’,’l’};C static char word[]={“cool\0”};D static char word[]="cool\0”;15、在定义int a[5][4];之后,对数组元素的引用正确的是 CA a[2][4]B a[5][0]C a[0][0]D a[0,0]16、下列选项中,能正确定义数组的语句是 DA int num[0。

数组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语言中,数组的元素可以是什么数据类型?答:数组的元素可以是任何数据类型,包括整型、浮点型、字符型、结构体等。

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

第五章数组一、单项选择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列)的转置(即行列互换)。

例如,输入下面的矩阵:100 200 300400 500 600700 800 900程序输出:100 400 700200 500 800300 600 900注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

*/#include <stdio.h>void fun(int array[3][3]){/********** Begin **********//********** End ***********/}NONO( ){/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。

*/inti,j;FILE *wf ,*in;int array[3][3]={{100,200,300},{400,500,600},{700,800,900}};in=fopen("a11.in","r");for(i=0;i<3;i++){ for(j=0;j<3;j++)fscanf(in,"%d",&array[i][j]);}wf = fopen("a11.out", "w") ;fun(array);for(i=0;i<3;i++){ for(j=0;j<3;j++)fprintf(wf,"%7d\n",array[i][j]);}fclose(wf) ;}int main(){inti,j;int array[3][3]={{100,200,300},{400,500,600},{700,800,900}};for (i=0;i<3;i++){ for (j=0;j<3;j++)printf("%7d",array[i][j]);printf("\n");}fun(array);printf("Converted array:\n");for(i=0;i<3;i++){ for(j=0;j<3;j++)printf("%7d",array[i][j]);printf("\n");}NONO( );return 0;}【参考代码】inti,j;int b[3][3];for (i=0;i<3;i++)for (j=0;j<3;j++)b[j][i]=array[i][j];===========================2./*请编写函数fun,其功能是:将所有大于1小于等于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。

例如,输入17,则应输出4 6 8 9 10 12 14 15 16。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:*/#include<conio.h>#include<math.h>#include<stdio.h>#include<stdlib.h>int fun(int m, int xx[]){/**********Begin*******//*********End*********/}int main(){FILE *wf,*in;int m, n, zz[100];printf("\nPlease enter an integer number between 10 and 100: ");scanf("%d",&n);m=fun(n,zz);printf("\n\nThere are %d non-prime numbers less than %d: ",m,n);for(n=0;n<m;n++)printf("\n %4d",zz[n]);/******************************/wf=fopen("1.out","w");in=fopen("1.in","r");fscanf(in,"%d",&n);m=fun(n,zz);for(n=0;n<m;n++)fprintf(wf,"%d\n",zz[n]);fclose(wf);fclose(in);/*****************************/return 0;}【参考代码】inti,j,n=0;for(i=4;i<=m;i++){for(j=2;j<i;j++)if(i%j==0) break;if(j<i)xx[n++]=i;}return n;===============3./*编写函数int fun(intlim, intaa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序: */#include<stdio.h>#include<math.h>#include<stdlib.h>#define MAX 100int fun(intlim, intaa[MAX]){/*********Begin********//*********End*********/}int main(){FILE *wf,*in;intlimit,i,sum;intaa[MAX];printf("输入一个整数");scanf("%d",&limit);sum=fun(limit,aa);for(i=0;i<sum;i++){if(i%10==0&&i!=0) /*每行输出10个数*/printf("\n ");printf("%5d ",aa[i]);}/******************************/in=fopen("2.in","r");fscanf(in,"%d",&limit);wf=fopen("2.out","w");sum=fun(limit,aa);for(i=0;i<sum;i++){fprintf(wf,"%d\n",aa[i]);}fclose(wf);fclose(in);/*****************************/return 0;}【参考代码】inti,j,k=0;for(i=2;i<=lim;i++){for(j=2;j<i;j++)if(i%j==0) break;if(j>=i)aa[k++]=i;}return k;===============4./*请编写函数fun,该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从0到p(p<=n-1)的数组元素平移到数组的最后。

例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值为3。

移动后,一维数组中的内容应为5,6,7,8,9,10,11,12,13,14,15,1,2,3,4。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号注释语句中填入所编写的若干语句。

试题程序: */#include <stdio.h>#define N 80void fun(int w[], int p, int n){/************Begin**************//************End**************/}int main(){FILE *wf,*in;int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};inti, p, n=15;printf("The original data:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\nEnter p: ");scanf("%d",&p);fun(a,p,n);printf("\nThe data after moving:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");/******************************/in=fopen("in49.dat","r");wf=fopen("out49.dat","w");fscanf(in,"%d %d",&n,&p);for(i=0;i<n;i++)fscanf(in,"%d",&a[i]);for(i=0;i<n;i++)printf("%3d",a[i]);fun(a,p,n);for(i=0;i<n;i++)fprintf(wf,"%3d",a[i]);fclose(wf);fclose(in);/*****************************/return 0;}*【参考代码】int i,j=0,b[N];for(i=p+1;i<n;i++)b[j++]=w[i];for((i=0);i<=p;i++)b[j++]=w[i];for(i=0;i<n;i++)w[i]=b[i];===============5./*请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。

相关文档
最新文档