北京工业大学C语言作业9-数组

合集下载

c语言数组试题及答案

c语言数组试题及答案

c语言数组试题及答案1. 请编写一个程序,要求用户输入10个整数,然后将其存储在一个数组中,并输出这个数组的内容。

答案:```c#include <stdio.h>int main() {int numbers[10];int i;printf("请输入10个整数:\n");for (i = 0; i < 10; i++) {scanf("%d", &numbers[i]);}printf("数组内容为:\n");for (i = 0; i < 10; i++) {printf("%d ", numbers[i]);}return 0;}```2. 请编写一个程序,要求用户输入一个整数n(n>0),然后分别输入n个整数存储在一个数组中,计算并输出这个数组中所有元素的和。

答案:```c#include <stdio.h>int main() {int n;int numbers[100];int sum = 0;int i;printf("请输入整数n:\n");scanf("%d", &n);printf("请输入%d个整数:\n", n);for (i = 0; i < n; i++) {scanf("%d", &numbers[i]);sum += numbers[i];}printf("数组元素之和为:%d\n", sum);return 0;}```3. 请编写一个程序,要求用户输入一个整数n(n>1),然后分别输入n个整数存储在一个数组中,计算并输出这个数组中最大和最小的元素。

答案:```c#include <stdio.h>int main() {int n;int numbers[100];int max, min;int i;printf("请输入整数n:\n");scanf("%d", &n);printf("请输入%d个整数:\n", n);for (i = 0; i < n; i++) {scanf("%d", &numbers[i]);}max = numbers[0];min = numbers[0];for (i = 1; i < n; i++) {if (numbers[i] > max) {max = numbers[i];}if (numbers[i] < min) {min = numbers[i];}}printf("数组中的最大元素为:%d\n", max);printf("数组中的最小元素为:%d\n", min);return 0;}```4. 请编写一个程序,要求用户输入两个整数m和n(1<=m<=n<=100),然后生成并输出m到n之间(包含m和n)的所有整数。

C语言数组作业编程题答案

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、假定整型数组中的元素值不重复。

c语言第九章题库及详解答案

c语言第九章题库及详解答案

c语言第九章题库及详解答案C语言第九章题库及详解答案一、选择题1. 在C语言中,以下哪个关键字用于定义数组?A. arrayB. listC. setD. define2. 以下哪个选项是正确的C语言数组声明?A. int myArray[];B. int myArray[10] = {};C. int myArray = 10;D. int myArray(10);3. 数组元素的默认初始化值是什么?A. 0B. 1C. -1D. 随机值4. 在C语言中,数组的索引是从哪个数字开始的?A. 0B. 1C. -1D. 105. 以下哪个函数可以用于计算数组中元素的个数?A. count()B. size()C. length()D. sizeof()二、填空题6. 在C语言中,声明一个具有10个整数元素的数组的语句是:________。

答案:int myArray[10];7. 如果数组的索引从0开始,那么数组myArray[10]的最后一个元素的索引是:________。

答案:98. 要初始化一个数组的所有元素为0,可以使用:________。

答案:int myArray[10] = {0};9. 在C语言中,可以使用________运算符来访问数组的元素。

答案:[]10. 当数组作为参数传递给函数时,实际上传递的是数组的________。

答案:首地址三、简答题11. 解释C语言中数组的内存分配方式。

答案:在C语言中,数组是连续存储在内存中的。

数组的内存分配是静态的,即在编译时分配。

数组的元素按照声明的顺序在内存中连续排列。

12. 说明数组和指针在C语言中的关系。

答案:在C语言中,数组名可以作为指针使用。

数组名代表数组的首地址。

当数组作为参数传递给函数时,数组名退化为指向数组第一个元素的指针。

四、编程题13. 编写一个C语言程序,实现对一个整数数组的排序。

答案:```c#include <stdio.h>void sortArray(int arr[], int size) {int i, j, temp;for (i = 0; i < size - 1; i++) {for (j = i + 1; j < size; j++) {if (arr[i] > arr[j]) {temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}}int main() {int myArray[] = {5, 3, 8, 2, 1};int size = sizeof(myArray) / sizeof(myArray[0]);sortArray(myArray, size);printf("Sorted array: ");for (int i = 0; i < size; i++) {printf("%d ", myArray[i]);}return 0;}```14. 编写一个C语言程序,实现查找数组中的最大值和最小值。

北工大C语言作业集

北工大C语言作业集

1、输入华氏温度f,计算并输出相应的摄氏温度c(保留2位小数)。

c = 5/9(f-32)#include <stdio.h>main(){float f,c;printf("f=");scanf("%f", &f);c=5*(f-32)/9;printf("The temprature is %.2f\n",c);return 0;}2、输入一个大写英文字母,输出相应的小写字母。

#include <stdio.h>int main(){char ch;ch=getchar();ch=ch+32;putchar(ch);putchar('\n');return 0;}3、输入一个学生的数学成绩,如果它低于60,输出“Fail”,否则,输出“Pass”。

#include <stdio.h>int main(){int score;printf("Enter a score:");scanf("%d",&score);if(score>=60){printf("Pass\n");}else{printf("Fail\n");}return 0;} 4、输入1个四位数,将其加密后输出。

方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。

#include <stdio.h>int main(){int num;printf("Enter a number(1000<=num<=9999):\n");scanf("%d",&num);num=(num/1000+9)%10*10+((num/100)%10+9) %10+((num/10)%10+9)%10*1000+(num%10+9) %10*100;printf("The encrypted number is %d\n",num); return 0;}5、输入1个实数x,计算并输出其平方根(保留1位小数)。

c语言习题第九章答案

c语言习题第九章答案

c语言习题第九章答案C语言习题第九章答案第九章是C语言学习中的一个重要章节,主要涉及指针和动态内存分配的知识。

在这一章中,我们将学习如何使用指针来操作内存,并且了解动态内存分配的概念和用法。

本文将为大家提供第九章习题的答案,帮助大家更好地理解和掌握这些知识。

1. 以下代码的输出结果是什么?```c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int *ptr = arr;printf("%d\n", *ptr++);printf("%d\n", *ptr++);printf("%d\n", *ptr++);return 0;}```答案:输出结果为1、2、3。

解析:在这段代码中,我们定义了一个整型数组arr,并且定义了一个指针ptr,将arr的首地址赋值给ptr。

在输出语句中,我们使用了后置自增运算符,这意味着先输出ptr指向的值,然后再将指针ptr的值加1。

因此,第一个输出语句输出的是arr[0]的值1,第二个输出语句输出的是arr[1]的值2,第三个输出语句输出的是arr[2]的值3。

2. 以下代码的输出结果是什么?```c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int *ptr = arr;printf("%d\n", *(ptr++));printf("%d\n", *(ptr++));printf("%d\n", *(ptr++));return 0;}```答案:输出结果为1、2、3。

解析:这段代码与上一题的代码非常相似,唯一的区别在于输出语句中对指针的解引用操作使用了括号。

这是因为后置自增运算符的优先级比解引用运算符高,为了保证先解引用再自增,我们需要使用括号来明确优先级。

数组c语言试题库及答案

数组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语言部分练习答案

北京工业大学C语言部分练习答案

练习1 分支1.若从键盘输入58,则以下程序段的输出结果是(58 58 58):int main(void){int a;scanf(“%d”,&a);if (a>50) printf(“%d”,a);if(a>40) printf(“%d”,a);if(a>30) printf(“%d”,a);return 0;}2.下列程序运行的输出结果是(9):没有遇到break语句,继续执行到switch语句结束int main(void){char c=’b’;int k=4;switch(c) {case ‘a’: k=k+1; break;case ‘b’: k=k+2;case ‘c’: k=k+3;}printf(“%d\n”,k);return 0;}练习2 循环一、读程序写结果1.阅读下列程序并回答问题:main(){inti,j,k=0,m=0;for(i=0;i<2;i++){; /*第6行*/for(j=0;j<3;j++)k++;m++; /*第9行*/}printf(“k=%d,m=%d\n”,k,m);}(1)程序的输出是___k=6,m=2___________。

(2)将第9行改为“m=m+k;“ ,程序的输出是____k=6,m=9_________。

(3)将第6行改为“k=0;”,将第9行改为“m=m+k;”,程序的输出是________k=3,m=6____________。

2.请阅读下面的程序,并回答下列问题#include <stdio.h>int main(){int digit=0,letter=0, other=0;charch;printf("Enter a line text:");do {ch = getchar();if((ch>= 'a' &&ch<= 'z' ) || ( ch>= 'A' &&ch<= 'Z'))letter ++;else if(ch>= '0' &&ch<= '9')digit ++;elseother ++;}while(ch!='\n');printf("letter=%d, digit=%d, other=%d\n", letter, digit, other); }(1)若在程序运行时输入 Today_is_2013/12/28<回车>letter=7, digit=8, other=5(2)简述程序的主要功能:统计输入字符串中字母数字和其他字符的个数。

c语言习题第九章答案

c语言习题第九章答案

c语言习题第九章答案C语言习题第九章答案在学习C语言的过程中,习题是巩固知识的重要方式之一。

第九章的习题涉及了指针、结构体、文件操作等内容,是对前几章知识的综合运用和拓展。

下面我们将针对第九章的习题进行解答和讨论。

1. 请编写一个程序,输入10个学生的学号、姓名和成绩,然后按成绩从高到低输出学生的信息。

```c#include <stdio.h>#include <string.h>typedef struct {char id[10];char name[20];float score;} Student;void sort(Student *stu, int n) {int i, j;Student temp;for (i = 0; i < n - 1; i++) {for (j = 0; j < n - 1 - i; j++) {if (stu[j].score < stu[j+1].score) {temp = stu[j];stu[j] = stu[j+1];stu[j+1] = temp;}}}}int main() {Student stu[10];int i;for (i = 0; i < 10; i++) {printf("请输入第%d个学生的学号、姓名和成绩:", i+1); scanf("%s %s %f", stu[i].id, stu[i].name, &stu[i].score);}sort(stu, 10);printf("按成绩从高到低输出学生的信息:\n");for (i = 0; i < 10; i++) {printf("%s %s %.1f\n", stu[i].id, stu[i].name, stu[i].score);}return 0;}```2. 请编写一个程序,将一个文件的内容复制到另一个文件。

c语言数组考试题及答案

c语言数组考试题及答案

c语言数组考试题及答案C语言数组考试题及答案一、选择题1. 以下哪个选项是正确的数组声明方式?A. int a[5] = {1, 2, 3, 4, 5};B. int a = [5] = {1, 2, 3, 4, 5};C. int a[5] = {1, 2, 3};D. int a = {1, 2, 3, 4, 5};答案:A2. 对于数组int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 以下哪个表达式是合法的?A. a[10]B. a[-1]C. a[3.5]答案:D3. 假设有数组int a[5] = {1, 2, 3, 4, 5}; 以下哪个表达式可以得到数组a的元素个数?A. sizeof(a) / sizeof(int)B. sizeof(a) / sizeof(char)C. sizeof(a) / sizeof(float)D. sizeof(a) / sizeof(double)答案:A4. 以下哪个选项是正确的二维数组声明方式?A. int a[3][2] = {{1, 2}, {3, 4}, {5, 6}};B. int a[3][2] = {1, 2, 3, 4, 5, 6};C. int a[3][2] = {{1, 2}, {3, 4, 5}, {6, 7}};D. int a[3][2] = {1, 2, 3, 4, 5, 6, 7, 8};5. 对于二维数组int a[3][2] = {{1, 2}, {3, 4}, {5, 6}}; 以下哪个表达式可以得到元素a[1][1]的值?A. a[1][1]B. a[1] + 1C. *(a[1] + 1)D. a[1] * 1答案:A二、填空题1. 假设有数组int a[5] = {10, 20, 30, 40, 50}; 则a[0]的值是______。

答案:102. 对于数组int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 则a[9]的值是______。

二级C语言9练习(数组含答案)

二级C语言9练习(数组含答案)
for ( i=1; i<=2; i++ )
{ n[i]=n[i-1]*3 + 1;
printf("%d",n[i]);
}
printf("\n");
}
8.有以下程序
#include <stdio.h>
main()
{ int c[3]={0}, k, i;
while ( (k=getchar() )!='\n')
scanf(“%d”,&start);
for(i=0;i<3;i++) printf(“%d”,arr[(start+i)%8] );
}
若在程序运行时输出整数10<回车>,则输出结果为572
5.以下定义数组的语句中错误的是
A)int num[]={1,2,3,4,5,6}B)int num[][3]={{1,2},3,4,5,6};
#include <stdio.h>
void fun( int s[], int *n, int k, int x)
void fun(int X[N])
{ int m;
for(m=N-1;m>=0;m--) scanf(“%d”,);
}
A) &x[++m]B) &x[m+1]C) x+(m++)D) x+m
4.有以下程序
#include<stdio.h>
main()
{ int arr[]={1,3,5,7,2,4,6,8}, i, start;
2.有以下程序

2022年北京工业大学公共课《C语言》科目期末试卷A(有答案)

2022年北京工业大学公共课《C语言》科目期末试卷A(有答案)

2022年北京工业大学公共课《C语言》科目期末试卷A(有答案)一、填空题1、设x是一个整数(16bit),若要通过xly使x低8位置1,高8位不变,则y的八进制数是_______。

2、C语言源程序文件的后缀是;经过编译后,生成文件的后缀是;经过连接后,生成文件的后缀是3、一个C语言源程序由若干函数组成,其中至少应含有一个________4、表达式x=6应当读做_______5、若有定义语句:inte=1,f=4,g=2;float m=10.5,n=4.0,k;,则执行表达式k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是_______。

6、以下程序段通过指针变量q,但不移动q,将如图所示连续动态存储单元的值,从第一个元素起依次输出到终端屏幕。

请填空。

(假设程序段中的所有变量均已正确说明。

)for(k=0;k<10;k++) printf("%d,",_______); printf("\n");7、下面程序段的运行结果是_______。

x=2;do{printf("*");x--;)while(!x==0);8、已有定义int a;float b,x;char cl,c2;为使a=3、b=6.5、x=12.6、cl='a'、c2='A',正确的scanf函数调用语句是_______,数据输入的形式应为_______。

9、执行以下程序时,若从第一列开始输入数据,为使变量a=3、b=7、x=8.5、y=71.82、c1='A'、c2='a',正确的数据输入形式是_______。

#include <stdio.h>int main(){int a,b;float x,y;char cl,c2;scanf("a=%d b=%d",&.a,&.b);scanf("x=%f y=%",8.x,8.y);scanf("c1=%cc2=%c”,8.cl,8.c2);printf("a=%d,b=%d,x=%f,y=%f,cl=%c,c2=%c",a,b,x,y,cl,c2);return0;}10、若有定义:doublex[3][5];,则x数组中行下标的下限为_______,列下标的上限为_______。

c语言数组练习题

c语言数组练习题

c语言数组练习题C语言数组练习题在学习C语言的过程中,数组是一个非常重要的概念。

数组可以用来存储一系列相同类型的数据,它能够提供快速访问和处理数据的能力。

为了巩固对数组的理解和运用,我们可以进行一些练习题。

1. 数组的初始化数组的初始化是指在定义数组的同时给数组元素赋初值。

例如,我们可以定义一个长度为5的整型数组,并给它的元素赋初值:```cint arr[5] = {1, 2, 3, 4, 5};```请尝试定义一个长度为10的字符型数组,并给它的元素赋初值。

2. 数组元素的访问数组的元素可以通过下标来进行访问。

数组的下标从0开始,最大下标为数组长度减1。

例如,我们可以通过下标访问数组的元素:```cint num = arr[2]; // 获取arr数组中下标为2的元素```请尝试定义一个长度为6的浮点型数组,并访问其中的第4个元素。

3. 数组的遍历数组的遍历是指依次访问数组中的每个元素。

我们可以使用循环语句来遍历数组。

例如,我们可以使用for循环遍历数组并打印每个元素:```cfor (int i = 0; i < 5; i++) {printf("%d ", arr[i]);}```请尝试定义一个长度为8的整型数组,并使用循环语句遍历数组并打印每个元素。

4. 数组的求和数组的求和是指将数组中的所有元素相加。

我们可以使用循环语句遍历数组,并将每个元素累加到一个变量中。

例如,我们可以计算数组中所有元素的和:```cint sum = 0;for (int i = 0; i < 5; i++) {sum += arr[i];}```请尝试定义一个长度为7的整型数组,并计算数组中所有元素的和。

5. 数组的逆序数组的逆序是指将数组中的元素颠倒顺序。

我们可以使用两个指针分别指向数组的首尾元素,并交换它们的值,然后逐步向中间移动。

例如,我们可以将数组逆序:```cint start = 0;int end = 4;while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}```请尝试定义一个长度为6的整型数组,并将数组逆序。

c语言数组练习题及答案

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;}}。

数组作业参考答案

数组作业参考答案

Company Logo
3、在主函数中输入n(1<n<=10)个数整数,编写函数实现将他们从大到小排序,在主函数中输出排好序的数。
Company Logo
4、输入一个正整数n和n阶矩阵a中的元素,如果a是上三角形,输出“YES”;否则,输出“NO”(上三角形矩阵,即主对角线以下的元素都为0,主对角线为从矩阵的左上角至右下角的连线)。
Company Logo
1、输入一个正整数n(1<n<=10),再输入n个整数,按逆序输出这些整数。(第1个数和最后一个数交换,以此类推)
参考答案
Company Logo
2、输入一个正整数n(1<n<=10),再输入n个整数,将最小值与第一个数交换,最大值和最后一个数交换,然后输出交换后的n个数。
Company Logo
7、编写程序,计算并输出1000以内的fiboቤተ መጻሕፍቲ ባይዱacci数。
答案1:(递归)
Company Logo
答案2:非递归
Company Logo
5、插入一个数,使原来排好序的数依然保持有序。
Company Logo
6、判断输入的一串字符是否为“回文”。例如:xyzzyx,abcba都是回文。 输入: Input a string:abcddcba Yes 输入: Input a string:abcddcb No

c语言第九章题库及详解答案

c语言第九章题库及详解答案

c语言第九章题库及详解答案C语言第九章题库及详解答案一、选择题1. 下列哪个选项是C语言中的关键字?- A. `int`- B. `float`- C. `double`- D. `string`答案:A2. 在C语言中,哪个运算符用于计算两个数的乘积?- A. `+`- B. `-`- C. `*`- D. `/`答案:C3. 以下哪个语句是正确的C语言数组声明?- A. `int array[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1};` - B. `int [10] array = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1};` - C. `int array[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1};`- D. 以上都是答案:D二、填空题1. 在C语言中,用于定义函数的关键字是______。

答案:void 或其他返回类型(根据函数定义)2. 以下代码段中,`printf`函数的返回类型是______。

```cint main() {printf("Hello, World!\n");return 0;}```答案:void三、简答题1. 请简述C语言中指针和引用的区别。

答案:在C语言中,指针是一个变量,它存储了另一个变量的内存地址。

指针可以被重新赋值为其他地址,并且可以通过指针来修改它所指向的变量的值。

而引用在C语言中并不存在,这是C++中的一个概念,它是一个别名,引用必须在定义时被初始化,并且不能被重新赋值为另一个变量的别名。

2. 解释C语言中的递归函数是如何工作的。

答案:递归函数是在其定义中调用自身的函数。

它通常用于解决可以被分解为相似子问题的问题。

递归函数工作时,首先检查是否有基本情况(base case),如果没有达到基本情况,它会进入递归调用,每次调用都会处理问题的一个更小的部分,直到达到基本情况,然后逐层返回结果。

c语言数组练习题

c语言数组练习题

c语言数组练习题C语言中的数组是一种用于存储多个相同类型数据的数据结构。

通过练习数组的使用,可以更好地理解和掌握C语言编程的基本概念和技巧。

本文将为您提供一些C语言数组练习题,帮助您巩固对数组的理解和运用。

1. 请编写一个程序,从键盘输入10个整数,并将它们存储到一个数组中。

然后,计算数组中所有元素的和并输出结果。

解答:```c#include<stdio.h>int main(){int nums[10];int sum = 0;for(int i=0; i<10; i++){scanf("%d", &nums[i]);sum += nums[i];}printf("数组元素的和为:%d\n", sum);return 0;}```2. 编写一个程序,从键盘输入一个整数n(n大于等于1),然后动态创建一个大小为n的整数数组,并将1到n的所有奇数存储到该数组中。

最后,输出该数组的所有元素。

解答:```c#include<stdio.h>#include<stdlib.h>int main(){int n;printf("请输入一个整数n:");scanf("%d", &n);int* nums = (int*)malloc(n * sizeof(int));int count = 0;for(int i=1; i<=n; i++){if(i % 2 != 0){nums[count] = i;count++;}}printf("数组中的奇数为:");for(int i=0; i<count; i++){printf("%d ", nums[i]);}printf("\n");free(nums);return 0;}```3. 编写一个程序,定义一个大小为10的整数数组,然后通过随机数生成10个0到100的整数,并将它们存储到数组中。

C语言数组试题[1](2021年整理精品文档)

C语言数组试题[1](2021年整理精品文档)

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

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

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

第4章 数组4。

1内容概述本章主要介绍了数值数组和字符数组的定义、初始化、元素引用和数组数据的输入与输出,字符数组实现字符串、字符串函数的实现与调用。

指针数组与数组指针定义、元素引用。

利用一维数组实现如挑数、排序、求和等实际应用问题。

利用二维数组实现矩阵的应用问题。

利用字符数组实现字符串的各种操作。

本章知识结构如图4.1所示。

图4。

1 第4章知识结构图考核要求:掌握一维数组、二维数组、字符数组和指针数组的定义和初始化;掌握数组元素存储地址计算;掌握数组元素的下标法、指针法引用;掌握字符数组与字符串的区别与联系;掌握有关字符串处理函数的使用方法;能利用一维数组、二维数组解决向量、矩阵等实际应用问题。

重点难点:本章的重点是一维数组、二维数组和字符数组的定义、初始化、元素引用,字符串处理函数的使用.本章的难点是字符串与字符数组的区别,指针数组和数组元素的指针法引用。

核心考点:数组的定义、初始化和数组元素的引用方法,一维数组、二维数组和字符数组的实际应用,字符串的处理方法。

数组数值数组 定义 初始化 元素引用 数组元素输入和输出 指针数组 定义初始化 应用字符数组 定义 初始化 元素引用 数组元素输入和输出4.2 典型题解析【例4.1】以下对一维数组a的定义中正确的是( )。

A。

char a(10); B。

int a[0。

.100];C. int a[5]; D。

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

1.选择法排序
1.1.题目要求:
输入一个正整数n (1<n<=10),再输入n 个整数,将它们从大到小排序后输出。

1.2.测试结果(输入结束回车符用<回车>表示,括号内为说明)
(1)输入:4 <回车>(n=4)
5 1 7 6<回车>
输出:After sorted: 7 6 5 1
(2)输入:5 <回车>(n=5)
5 4 3 2 1 <回车>
输出:After sorted: 5 4 3 2 1
2.在数组中查找指定的元素
2.1.题目要求
输入一个正整数n (1<n<=10),再输入n 个整数,将它们存入数组 a 中,再输入一个整数x,然后在数组 a 中查找与x 相同的元素,如果找到,输出x 在数组a 中对应元素的最小下标,如果没有找到,输出相应信息。

2.2.测试结果(输入结束回车符用<回车>表示,括号内为说明)
(1)输入:6<回车>(n=6)
1 3 5 7 9 5<回车>
5<回车>(x=5)
输出:5: a[2]
(2)输入:4<回车>(n=4)
1 3 5 7<回车>
2<回车>(x=2)
输出:2: not found
3.输出字符在字符串中所对应的最大下标
3.1.题目要求
输入一个字符,再输入一个以回车结束的字符串(少于80个字符),在字符串中查找该字符,如果找到,输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。

3.2.测试结果(输入结束回车符用<回车>表示)
(1)输入:m<回车> (字符'm')
programming<回车> (字符串"programming")
输出:index = 7 ('m'在"programming"中对应的最大下标是7)
(2)输入:a<回车> (字符'a')
1234<回车> (字符串"1234")
输出:Not Found ("1234"中没有'a')
4.字符串替换
4.1.题目要求
输入一个以回车结束的字符串(少于80个字符),将其中的大写字母用下面列出的对应大写字母替换,其余字符不变,输出替换后的字符串。

原字母对应字母
A Z
B Y
C X
D W
……
X C
Y B
Z A
4.2.测试结果(输入结束回车符用<回车>表示)
(1)输入:A flag of USA<回车>
输出:After replaced: Z flag of FHZ
(2)输入:1+2=3<回车> (字符'a')
输出:After replaced: 1+2=3。

相关文档
最新文档