C语言复习题及答案-第七章-数组
- 格式:doc
- 大小:4.05 MB
- 文档页数:31
1、使用选择法、冒泡法对10个数进行排序,并输出排序前后的数列。
nk=0; mt=0; //用于记录出列顺序while(t<n){if(num[i]==0) k++;if(k==m){t++;num[i]=t;k=0;}i++;if(i==n)i=0; //或者 i=i%n,构成循环}for(i=0;i<n;i++)printf("%4d",i+1);printf("\n");for(i=0;i<n;i++)printf("%4d",num[i]);printf("\n");}4、编程打印直角杨辉三角形前六行。
#include <>#include <>void main(){int i,j,a[6][6];for(i=0;i<=5;i++){a[i][i]=1;a[i][0]=1;}for(i=2;i<=5;i++){for(j=1;j<=i-1;j++){a[i][j]=a[i-1][j]+a[i-1][j-1];}}for(i=0;i<=5;i++){for(j=0;j<=i;j++){printf("%4d",a[i][j]);}printf("\n");}}5、编写程序,把下面的数据输入一个二维数组中。
25 36 78 1312 26 88 9375 18 22 3256 44 36 58然后执行以下操作:①输出矩阵两个对角线上的数;②分别输出各行和各列的和;③交换第一行和第三行的位置;④交换第二列和第四列的位置;⑤输出处理后的数组。
#include<>#define SIZE 4void main(){inta[SIZE][SIZE]={{25,36,78,13},{12,26,88,93},{75,18,22,32},{56,44,36,58}};int i,j,t,sum;//输出二维数组printf("二维数组:\n");for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){printf("%5d",a[i][j]);}printf("\n");}printf("\n");printf("主对角线上的数:");for(i=0;i<SIZE;i++){printf("%4d",a[i][i]);}printf("\n");printf("副对角线上的数:");for(i=0;i<SIZE;i++){printf("%4d",a[i][SIZE-1-i]);}printf("\n\n");//各列的和for(i=0;i<SIZE;i++){sum=0;for(j=0;j<SIZE;j++){sum+=a[i][j];}printf("第%d行的和=%d\n",i+1,sum);}printf("\n");//各列的和for(j=0;j<SIZE;j++){sum=0;for(i=0;i<SIZE;i++){sum+=a[i][j];}printf("第%d列的和=%d\n",j+1,sum);}printf("\n");//交换第一行和第三行的位置for(j=0;j<SIZE;j++){t=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}//输出二维数组printf("交换第一行和第三行后的二维数组:\n"); for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){printf("%5d",a[i][j]);}printf("\n");}printf("\n");//交换第二列和第四列的位置for(i=0;i<SIZE;i++){t=a[i][1];a[i][1]=a[i][3];a[i][3]=t;}//输出二维数组printf("交换第2列和第4列后的二维数组:\n"); for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){printf("%5d",a[i][j]);}printf("\n");}} 6、求一个5×5矩阵中的马鞍数,输出它的位置,所谓马鞍数是指在行上最小而在列上最大的数。
一、选择题1. 以下对一维整型数组a的正确说明是。
A.int a(10); B.int n=0, 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]3. 以下能对一维数组a进行正确初始化的语句形式是。
A.int a[10]=(0, 0, 0, 0, 0); B.int a[10]={ };C.double a[ ][4]; D.int a[10]={10*1};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; 则错误的语句是。
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;}}。
习题一一、选择题1.C程序的基本单位是(A)。
A.函数B.文件C.语句D.字符2.C程序中的变量(B)。
A.不用说明B.先说明后引用C.先引用后说明D.引用和说明顺序无关3.变量的说明在(B)。
A.执行语句之后B.执行语句之前C.执行语句当中D.位置无关4.C语言是一种(C)。
A.机器语言B.符号语言C.高级语言D.面向对象的语言二、填空题1.一个C程序总是从主函数开始执行。
2.结构化程序由顺序、选择、循环三种基本结构构成。
3.一个C程序只有一个名为main的主函数。
4.C程序中的每个语句以分号结束。
5.C程序中,函数由函数首部和函数体组成。
6.每个基本结构有一个入口和一个出口,没有死循环和死语句。
7.算法是计算机解决问题所依据的步骤。
习题二一、选择题1.下列数据中属于字符串常量的是( B)。
A.ABC B."ABC" C.'abc' D.'A'2.在计算机内存中,'\n'占用的字节数是( C)。
A.4 B.3 C.1 D.23.字符串"ABC"在内存中占用的字节数是( D)。
A.6 B.8 C.3 D.44.在C语言中,合法的长整型常数是( B)。
A.568701400 B.0L C.0.03546287 D.2.654e115.char型常量在内存中存放的是( A)。
A.ASCII代码值B.BCD代码值C.十进制代码值D.内码值6.下列各项中正确的标识符是( D)。
A.?bb B.a=8 C. b.βD.b_47.下列不正确的转义字符是( D)。
A.\\ B.\ 0 C.\" D.0x48.设整型变量a、b的值均为5,则表达式(m=n=a++)/(n=b-2)的值为( B)。
A.0 B.1 C.2 D.39.设a的值为5,执行下列语句后,b的值不为2的是( C)。
A.b=a/2 B.b=6-(--a) C.b=a%2 D.b=(float)a/2 10.执行语句x=(a=3,b=a--)后,x、a、b的值依次是( 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. 请解释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语言中,数组的元素可以是什么数据类型?答:数组的元素可以是任何数据类型,包括整型、浮点型、字符型、结构体等。
第四部分数组4.1选择题1.以下关于数组的描述正确的是(c}A.数组的大小是固定的,但可以有不同的类型的数组元素B.数组的大小是可变的,但所有数组元素的类型必须相同C.数组的大小是固定的,所有数组元素的类型必须相同D.数组的大小是可变的,可以有不同的类型的数组元素2.以下对一维整型数组a的正确说明是(d)。
A.inta(10);C.intn;scanf("%d",&n);inta[n];B.intn=10,a[n];D.#defineSIZE10inta[SIZE];3.在C语言中,引用数组元素时,其数组下标的数据类型允许是(c)。
A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式页脚内容14.以下对一维数组m进行正确初始化的是(c)。
A.intm[10]=(0,0,0,0);B.intm[10]={};C.intm[]={0};D.intm[10]={10*2};5.若有定义:intbb[8];。
则以下表达式中不能代表数组元bb[1的地址的是(c>A.&bb[0]+1B.&bb[1]C.&bb[0]++D.bb+16.假定int类型变量占用两个字节,具有定义:intx[10]={0,2,4};,则数组x在内存中所占字节数是(d)A.3B.6C.10D.207.若有以下说明:inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};charc='a',d,g;则数值为4的表达式是(d)A.a[g-c]B.a[4]C.a['d'-'c']D.a['d'-c]8.以下程序段给数组所有的元素输入数据,请选择正确答案填入(a)。
#include<stdio.h>main(){inta[10],i=0;while(i<10)scanf("%d",);页脚内容2)A.a+(i++)B.&a[i+1]C.a+iD.&a[++i]9.执行下面的程序段后,变量k中的值为(a)。
C语言复习题及答案-第七章-数组第七章数组 (8学时)学习目的与要求:1 、重点掌握一维数组的定义和引用;2 、基本掌握二维数组的定义和引用;3 、重点掌握字符型数组的定义与引用;4 、能正确使用字符串处理函数;5 、学会使用数组解决实际问题。
重点:1 、一维数组的定义与引用;2 、二维数组的定义与引用;3 、字符数组的定义与引用;第1讲知识归纳:1、一维数组的定义:类型说明符数组名[ 常量表达式] ;(1) (1)数组名后必须用方括弧[ ] ,用其他括弧均错误;(2) 方括弧中的常量表达式表示数组的元素个数;(3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量;2、一维数组的引用:数组名[ 下标] //下标从0开始,可以是整型常量或整型表达式;(1) 注意:数组元素引用时,不要超出数组范围;如int a[10] ;二、填空题1、构成数组的各个元素必须具有相同的类型。
C语言中数组的下标必须是整正数、0或整型表达式。
如果一维数组的长度为n ,则数组下标的最小值为0,最大值为n-1。
2、在C语言中,一维数组的定义方式为:类型说说明符数组名[常量表达式]。
3、已知数组b定义为int b[ ]={9,6,3};,则b的各元素的值分别是,最小下标是,最大下标的。
9,6,3 0 ,2 4、在C语言中数组名是一个常量,不能对其进行加、减及赋值操作。
5、已知数组T为一有10个单元的整型数组,正序输出T中的10个元素的值的语句为:for (j=0;j<10;j++) printf(“%d”,T[j]);下面的语句试图按相反的顺序显示输出T中的10个元素的相反数;请补充完整下面的语句:for(j=9;j>=0;j- -)printf(“%d”,T[j]);三、综合题1、下面程序(每行程序前面的数字表示行号),请指出存在错误的行号(3)1 main()2 {3 int a[3]={3*0};4 int i;5 for(i=0;i<3;i++) scanf("%d",&a[i]);6 for(i=1;i<3;i++) a[0]=a[0]+a[i];7 7printf("%d\n",a[0]);8 }2、下面程序(每行程序前面的数字表示行号),请指出存在错误的行号(5)1 1main()2 2{3 3int a[3];4 4int i;5 5scanf(“%d”,&a);6 6for(i=0;i<3;i++) a[0]=a[0]+a[i];7 7printf(“a[0]=%d”,a[0]);8 8}3、下面程序(每行程序前面的数字表示行号),请指出存在错误的行号(7)1 1main()2 2{3 3int a[3];4 4int i;5 5for (i=0;i<3;i++) scanf(“%d”,&a[i]);6 6for(i=1;i<3;i++) a[0]=a[0]+a[i]);7 7printf(“%d\n”,a);8 8}第2讲知识归纳:1、二维数组的定义:类型说明符数组名[ 常量表达式 1 ][常量表达式2] ;(1)常量表达式1------可以形象理解为行数;常量表达式2-----可以形象理解为列数;(2) 二维数组中元素存放顺序是:先存放第一行的元素,再存放第二行的元素,依次类推;2、二维数组的引用:数组名[ 下标] [ 下标]//下标从0开始,可以是整型常量或整型表达式;(1) 注意:数组元素引用时,不要超出数组范围;如int a[3 ] [4] ;//可以引用的数组元素为a[0][0]……a[2][3] , a[3][4]不是本数组元素;(2) 可以在循环控制下,给二维数组各元素赋值;如:int a[3] [4];for ( i=0 ; i <3 ;i ++ )for ( j=0 ; j<4;j++)a [ i ] = i * j;3、二维数组的初始化:(1)可以在定义数组后,立刻赋值;如int a [3][4] = { 1,3, 5,7,9,11} ;但下面这样是错误的:int a[3][4] ;a = { 1,3, 5,7,9,11} ;(2) (2)可以给数组的部分元素赋值,不赋值的元素,默认值为int 0, char, ‘’, float0.0 ;(3) 在对数组全部元素赋初值时,可以省略行数,但不能省略列数;基础练习(A)一、选择题1、在C语言中,二维数组元素在内存中的存放顺序是()。
A)按行存放B)按列存放C)由用户自己定义D)由编译器决定2、以下对二维数组a的正确说明是()。
A)int a[3][] B) float a(3,4) C) double a[1][4]D) float a(3)(4)3、已知:int a[3][4];则对数组元素引用正确的是()。
A)a[2][4] B)a[1,3] C) a[2][0] D) a(2)(1)4、已知:int a[3][4]={0};则下面正确的叙述是()。
A)只有元素a[0][0]可得到初值0B)此说明语句是错误的C)数组a中的每个元素都可得到初值,但其值不一定为0D)数组a中的每个元素均可得到初值0 5、以下正确的语句是()。
A)int a[1][4]={1,2,3,4,5}; B) float x[3][]={{1},{2},{3}};C) long b[2][3]={{1},{1,2},{1,2,3}}; D) double y[][3]={0};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},{},{1,1}};1、A2、C3、C4、D5、D6、B二、填空题下面的程序是求出数组a的两条对角线上的元素之和。
#include "stdio.h"main(){ int a[3][3]={{1,3,6},{7,9,11},{14,15,17}},sum1=0, sum2=0,i,j;for (i=0;i<3;i++)for (j=0;j<3;j++)if (i==j) sum1=sum1+a[i][j];for (i=0;i<3;i++)for ( ; ; j--)if (i+j==2)sum2=sum2+a[i][j];printf("sum1=%d,sum2=%d\n",sum1,su m2);}1、j=22、j>=i三、编程题1、在一个二维数组中形成并输出如下矩阵:1 2 33 2 11 1 1main(){ int a[5][5],i,j;printf("input 5*5:\n");for (i=0; i<5; i++)for (j=0; j<5; j++)scanf("%d",&a[i][j]);for (i=0;i<5; i++){ for (j=0; j<5; j++)printf("%d",a[i][j]);printf("\n");}}2、有一个3*4的矩阵,求其中的最大元素的值。
main(){ int a[3][4],i,j,max;for (i=0;i<3; i++)for (j=0; j<4; j++)scanf("%d",&a[i][j]);max=a[0][0];for (i=0;i<3;i++)for (j=0;j<4;j++)if (a[i][j]>max) max=a[i][j];printf("max=%d\n",max);}第3讲知识归纳:1、字符数组的定义与引用:类型说明符数组名[ 常量表达式] ;(1) 与一维数组、二维数组定义、引用相同,只是类型说明符固定为:char2、字符数组的初始化:(1)逐字符赋值如char c1 [10] = { ‘W’,’e’,’l’,’c’,’o’,’m’,’e’} ;但下面这样是错误的:char c1 [10] ;c1 = { ‘W’,’e’,’l’,’c’,’o’,’m’,’e’} ;(2) 字符串赋值和字符串结束标志如char c1[10 ] = “ Welcome ” ;但下面这样是错误的:char c1 [10] ;c1 = “ Welcome ” ;注意:系统会自动在字符串末尾加一个结束标志’\0’ , 所以,定义字符数组时需要在字符个数基础上,多定义一个字节存储空间,存放结束标子;3、字符数组的输入输出:(1) 逐个字符输入输出。
用格式符%c 输入或输出一个字符;往往与循环结合使用;如:char c1[10] ;for ( i=0 ; i<7 ; i ++ ) scanf ( “%c” , &c1[ i ]);…….for ( i =0 ; i<7 ; i ++ ) printf( “%c” , c1[ i ] );(2)将整个字符串一次输入输出,用格式符%s ;如:char c1[10] ;scanf ( “ %s”, c1) ; //数组名代表数组的首地址……printf(“%s” , c1);基础练习(A)一、选择题1、要使字符数组str存放一个字符串"ABCDEFGH",正确的定义语句是()。
A) char str[8]={'A','B','C','D','E','F','G','H'};B) char str[8]="ABCDEFGH";C) char str[ ]={'A','B','C','D','E','F','G','H'};D) char str[ ]="ABCDEFGH";2、下面是对数组s的初始化,其中错误的是()。
A)char s[5]={"abc"} B) char s[5]={'a','b','c'};C) char s[5]=""; D) char s[5]="abcde";3、对两个数组a和b进行如下初始化char a[]="ABCDEF";char b[]={'A','B','C','D','E','F'};则以下叙述正确的是()。