广技师C语言复习题5.练习(数组)(有答案)
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. 请编写一个程序,要求用户输入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程序设计(数组)习题与答案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语言题库数组(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语言数组练习题及答案

/* 4.16 5*5矩阵中每行的绝对值最大值,与同行对角线交换*/ #include "stdio.h"#include "math.h"void main(){int a[5][5]={{1,2,3,4,-5},{3,5,-2,4,2},{4,1,2,3,-2}, {1,3,-2,4,6},{2,2,0,7,4}} ;int i,k,max,sub,temp;/* i 循环变量,控制行,k 循环变量,控制列,max 当前最大绝对值,sub 当前最大绝对值元素的下标temp 临时用于交换的变量*/printf("交换之前,输出\n"); /*交换之前,输出*/for(i=0;i<=4;i++){for(k=0;k<=4;k++)printf("%4d",a[i][k]);printf("\n");}/*交换*/for(i=0;i<=4;i++){/*假设第一个元素最大*/max=fabs(a[i][0]); sub=0;/*寻找绝对值最大的元素记下下标*/for(k=1;k<=4;k++){if(fabs(a[i][k])>max){max=fabs(a[i][k]); sub=k;}}/*交换*/temp=a[i][i]; a[i][i]=a[i][sub]; a[i][sub]=temp; } /*交换之后,输出*/printf("交换之后,输出\n");for(i=0;i<=4;i++){for(k=0;k<=4;k++)printf("%4d",a[i][k]);printf("\n");}}/* 4.17 在一个一维数组中存放任意4个数,如:5,1,8,6,生成如下矩阵5 5 5 5 5 5 55 1 1 1 1 1 55 1 8 8 8 1 55 1 86 8 1 55 1 8 8 8 1 55 1 1 1 1 1 55 5 5 5 5 5 5*/#include "stdio.h"#include "conio.h"void main(){int FourNumbers[4], array[7][7], i , row, column;printf("请输入4个整数\n");scanf("%d%d%d%d",&FourNumbers[0],&FourNumbers [1],&FourNumbers[2],&FourNumbers[3]);for(i=0;i<=3;i++){for(row=i;row<=6-i;row++){for(column=i;column<=6-i;column++)array[row][column]=FourNumbers[i];}}/* 输出矩阵*/for(row=0;row<=6;row++){for(column=0;column<=6;column++)printf("%4d",array[row][column]);printf("\n");}getch();}/* 习题4.19 对一行电文加密,每个字母转换为字母表中循环右移的第三个字母,a-d, b-e, ......z-c */#include "stdio.h"void main(){int c;while((c=getchar())!='\n'){if( (c>='a' && c<='z') || (c>='A' && c<='Z') ){c=c+3;if ((c>'Z' && c<='Z'+3) || c>'z') c=c-26;}putchar(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语言 第五章 数组期末测试习题与答案

D.p和q数组中都没有字符串结束符,故长度都不能确定。
正确答案:A
5、设有程序段:
#define N 3
#define M N+2
float a[M][N];
则数组a的元素个数和最后一个元素分别是()。
A.15,a[4][2]
B.15,a[3][5]
{
int i,j;
for(i=0;i<M;i++)
{
b[i]=ary[i][0] ;
for(j=0;j<N;j++)
if( (1) )
b[i]=ary[i][j];
}
}
int main()
{
int a[M][N]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[M],i;
#define N 5
int i;
char str[10], min[10];
gets(min);
for (i=1; i<N; i++)
{
gets(str);
if (strcmp(min,str>0)
(1) ;
}
printf("%s\n",min);
正确答案:strcpy(min,str)
fun(a,b);
for(i=0;i<M;i++)
printf("%4d",b[i]);
printf("\n");
return 0;
}
正确答案:ary[i][j]>b[i]或b[i]<ary[i][j]
c语言数组练习题及答案

/* 4.16 5*5矩阵中每行的绝对值最大值,与同行对角线交换*/ #include "stdio.h"#include "math.h"void main(){int a[5][5]={{1,2,3,4,-5},{3,5,-2,4,2},{4,1,2,3,-2},{1,3,-2,4,6},{2,2,0,7,4}} ;int i,k,max,sub,temp;/* i 循环变量,控制行,k 循环变量,控制列,max 当前最大绝对值,sub 当前最大绝对值元素的下标temp 临时用于交换的变量*/printf("交换之前,输出\n"); /*交换之前,输出*/for(i=0;i<=4;i++){for(k=0;k<=4;k++)printf("%4d",a[i][k]);printf("\n");}/*交换*/for(i=0;i<=4;i++){/*假设第一个元素最大*/max=fabs(a[i][0]); sub=0;/*寻找绝对值最大的元素记下下标*/for(k=1;k<=4;k++){if(fabs(a[i][k])>max){max=fabs(a[i][k]); sub=k;}}/*交换*/temp=a[i][i]; a[i][i]=a[i][sub]; a[i][sub]=temp; }/*交换之后,输出*/printf("交换之后,输出\n");for(i=0;i<=4;i++){for(k=0;k<=4;k++)printf("%4d",a[i][k]);printf("\n");}}/* 4.17 在一个一维数组中存放任意4个数,如:5,1,8,6,生成如下矩阵5 5 5 5 5 5 55 1 1 1 1 1 55 1 8 8 8 1 55 1 86 8 1 55 1 8 8 8 1 55 1 1 1 1 1 55 5 5 5 5 5 5*/#include "stdio.h"#include "conio.h"void main(){int FourNumbers[4], array[7][7], i , row, column;printf("请输入4个整数\n");scanf("%d%d%d%d",&FourNumbers[0],&FourNumbers[1], &FourNumbers[2],&FourNumbers[3]);for(i=0;i<=3;i++){for(row=i;row<=6-i;row++){for(column=i;column<=6-i;column++)array[row][column]=FourNumbers[i];}}/* 输出矩阵*/for(row=0;row<=6;row++){for(column=0;column<=6;column++)printf("%4d",array[row][column]);printf("\n");}getch();}/* 习题4.19 对一行电文加密,每个字母转换为字母表中循环右移的第三个字母,a-d, b-e, ......z-c */#include "stdio.h"void main(){int c;while((c=getchar())!='\n'){if( (c>='a' && c<='z') || (c>='A' && c<='Z') ) {c=c+3;if ((c>'Z' && c<='Z'+3) || c>'z')c=c-26;}putchar(c);}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题1. 以下对一维整型数组a的正确说明是。
A.int a(10); B.int n=10, a[n];C.int n;scanf(“%d”,&n);int a[n]; D.#define SIZE 10 int a[SIZE]2. 若有说明:int a[10]; ,则对a数组元素的正确引用是。
A.a[10] B.a[3.5] C.a(5) D.a[10-10]4. 以下对二维数组a的正确说明是。
A.int a[3][ ]; B.float a(3,4);C.double a[ ][4]; D.float a(3)(4);5. 若有说明:int a[3][4]; 则对a数组元素的正确引用是。
A.a[3][4] B.a[1, 3] C.a[1+1][0] D.a(2)(1)6. 以下能对二维数组a进行正确初始化的语句是。
A.int a[2][ ]={{1, 0, 1}, {5, 2, 3}};B.int a[ ][3]={{1,2,3},{4,5,6}};C.int a[2][4]={{1,2,3},{4,5},{6}};D.int a[ ][3]={{1,0,1,0},{ },{1,1}};7. 下面程序段(每行代码前面的数字表示行号)。
1 int a[3]={3*0};2 int i3 for(i=0; i<3; i++) scanf(“%d”,&a[i]);4 for(i=1; i<3; i++) a[0]=a[0]+a[i];5 printf(“%d\n”,a[0]);A.第1行有错误B.第5行有错误C.第3行有错误D.没有错误8. 若有定义float x[4]={1.3, 2.4, 5.6},y=6; 则错误的语句是。
A.y=x[3]; B.y=x+1; C.y=x[2]+1 D.x[0]=y;9. 定义如下变量和数组:int k;int a[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是。
for(k=0; k<3; k++) printf(“%d”,a[k][2-k]);A.3 5 7 B.3 6 9 C.1 5 9 D.1 4 711. 下面是对数组s的初始化,其中错误的语句是。
A.char s[5]={“abc”}; B.char s[5]={‘a’, ‘b’, ‘c’}; C.char s[5]= “”; D.char s[5]= “abcde”;12. 下面程序段的运行结果是。
(□表示1个空格)char c[5]={'a','b','\0','c','\0'};printf("%s",c);A.'a''b' B.ab C.ab□c D.ab□13. 有两个字符数组a、b,则以下正确的输入格式是。
A.gets(a,b); B.scanf(“%s%s”,a,b);C.scanf(“%s%s”,&a,&b); D.gets(“a”),gets(“b”);14. 有字符数组a[80]和b[80],则正确的输出形式是。
A.puts(a,b); B.printf(“%s%s”,a[ ],b[ ]); C.putchar(a,b); D.puts(a); puts(b);15. 有下面的程序段,则。
char a[3],b[ ]="China";a=b;printf("%s",a);A.运行后将输出China B.运行后将输出Ch C.运行后将输出Chi D.编译出错18. 下面程序的运行结果是。
#include<stdio.h>int main(){char ch[7]={"12ab56"};int i,s=0;for(i=0;ch[i]>='0' && ch[i]<='9';i+=2)s=10*s+ch[i]-'0';printf("%d\n",s);return 0;}A.1 B.1256 C.12ab56 D.15 20. 下面程序的运行结果是。
#include<stdio.h>int main(){ char a[]="morning",t; int i,j=0;for(i=1;i<7;i++)if(a[j]<a[i]) j=i;t=a[j]; a[j]=a[7]; a[7]=t;puts(a);return 0;}A.mogninr B.mo C.morning D.mornin 答案:1. D2. D3. B4. C5. C6. B7. C8. B9. A 10. C11. D12. B 13. B 14. D 15. D 16. A 17. A 18. A 19. D 20. B二、填空题1. 若有定义float a[3][5];则a数组所含数组元素个数是,a数组所占的字节数是。
2. 若有定义:double x[3][5]; ,则x数组中行下标的下限为,列下表的上限为。
3. 假设M为已经声明的符号常量,则定义一个具有M×M个元素的双精度型数组a,且所有元素初值为0的形式是。
4. 若有定义:int a[3][4]={{1,2}, {0}, {4,6,8,10}}; 则初始化后,a[1][2]得到的初值是,a[2][1]得到的初值是。
5. 下面程序给a数组输入数据并以每行4个数据的形式输出。
请填空。
#include<stdio.h>#define N 20int main(){int a[N],i;for(i=0;i<N;i++) ;for(i=0;i<N;i++){if( )printf("%5d",a[i]);}printf("\n");return 0;}6. 下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中,请填空。
#include<stdio.h>int main(){ int a[2][3]={{1,2,3},{4,5,6}};int b[3][2],i,j;printf("array a:\n");for(i=0;i<=1;i++){for(j=0; ;j++){printf("%5d",a[i][j]);;}printf("\n");}printf("array b:\n");for(i=0; ;i++){ for(j=0;j<=1;j++)printf("%5d",b[i][j]);printf("\n");}return 0;}7. 下面程序段的运行结果是。
int x[5], i;x[0]=1; x[1]=2;for(i=2;i<5;i++) x[i]=x[i-1]+x[i-2];for(i=2;i<5;i++) printf("%d",x[i]);8. 下面程序的运行结果是。
#include<stdio.h>int main(){ int a[5][5],i,j,n=1;for(i=0;i<5;i++)for(j=0;j<5;j++)a[i][j]=n++;printf("The result is:\n");for(i=0;i<5;i++){ for(j=0;j<=i;j++)printf("%4d",a[i][j]);printf("\n");}return 0;}10. 下面程序的运行结果是。
#include<stdio.h>int main(){ int a[10]={7,3,5,2,9,1,0,6,8,4},i=0,j=9,t; while(i<j){t=a[i]; a[i]=a[j]; a[j]=t;i+=2; j-=2;}for(i=0;i<10;i+=2) printf("%d",a[i]);return 0;}12. 下面程序的功能是检查一个二维数组是否对称(即对所有i、j都有a[i][j]=a[j][i])。
请填空。
#include<stdio.h>int main(){int a[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4};int i,j,found=0;for(j=0;j<4;j++)for( ; i<4; i++)if(a[j][i]!=a[i][j]){ ; break;}if(found==1) printf("No\n");else printf("Yes\n");return 0;}13. 设数组a中的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。
请填空。
#include<stdio.h>int main(){int a[10]={1,2,3,4,5,6,7,8,9,10};int k,s,i;float ave;for(k=s=i=0; i<10; i++){if(a[i]%2!=0) ;s+= ;k++;}if(k!=0){ave=s/k; printf("%d,%f\n",k,ave);}return 0;}14. 以下程序是将矩阵a、b的和存入矩阵c中并按矩阵形式输出。
请填空。
#include<stdio.h>int main(){int a[3][4]={{3,-2,7,5},{1,0,4,-3},{6,8,0,2}};int b[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};int i,j,c[3][4];for(i=0;i<3;i++){for(j=0;j<4;j++){c[i][j]= ;printf("%3d",c[i][j]);};}return 0;}15. 以下程序段的功能是求数组num中小于零的数据之和。
请填空。
intnum[20]={10,20,1,-20,203,-21,2,-2,-2,11,-21,22,12,-2,-234,-90,22,90, -45,20};int sum=0,i;for(i=0;i<=19;i++)if( ) sum= ;printf("sum=%6d",sum);16. 以下程序段的功能是,运行后输出结果是。