北京工业大学C语言作业9-数组
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语言数组作业编程题答案

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语言第九章题库及详解答案一、选择题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语言作业集

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语言学习中的一个重要章节,主要涉及指针和动态内存分配的知识。
在这一章中,我们将学习如何使用指针来操作内存,并且了解动态内存分配的概念和用法。
本文将为大家提供第九章习题的答案,帮助大家更好地理解和掌握这些知识。
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语言试题库及答案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语言部分练习答案
练习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语言的过程中,习题是巩固知识的重要方式之一。
第九章的习题涉及了指针、结构体、文件操作等内容,是对前几章知识的综合运用和拓展。
下面我们将针对第九章的习题进行解答和讨论。
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语言数组考试题及答案一、选择题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练习(数组含答案)
{ 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.有以下程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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。