C语言复习题及答案 第七章 数组教程文件
C语言第七章复习题(含答案)

1.下列对C语言字符数组的描述中错误的是(C )。
(A)字符数组可以存放字符串 (B)字符数组中的字符串可以整体输入、输出(C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值(D)不可以用关系运算符对字符数组中的字符串进行比较2.不能把字符串:Hello!赋给数组b的语句是( B )。
(A)char b[10]={'H','e','l','l','o','!'};(B)char b[10];b="Hello!";(C)char b[10];strcpy(b,"Hello!");(D)char b[10]="Hello!";3.若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d,g;则数值为4的表达式是( D )。
(A)a[g-c] (B)a[4] (C)a['d'-'c'] (D)a['d'-c]4.以下程序的输出结果是( B )(A) 20 (B) 21 (C) 22 (D)23main(){ int i, k, a[10], p[3];k=5;for (i=0;i<10;i++) a[i ]=i;for (i=0;i<3;i++) p[i ]=a[i *(i+1)];for (i=0;i<3;i++) k+=p[i] *2;printf("%d\n",k);5.以下程序的输出结果是(C )。
(A) 1,5,9 (B) 1,4,7 (C) 3,5,7 (D)3,6,9main(){ int i, x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++) printf("%d,",x[i][2-i]);6.下面程序运行的结果是( C )。
c语言复习题及答案第七章数组

第七章数组(8学时)学习目的与要求:1、要点掌握一维数组的定义和引用;2、基本掌握二维数组的定义和引用;3、要点掌握字符型数组的定义与引用;4、能正确使用字符串办理函数;5、学会使用数组解决实质问题。
要点:1、一维数组的定义与引用;2、二维数组的定义与引用;3、字符数组的定义与引用;第 1 讲知识归纳:1、一维数组的定义:种类说明符数组名[常量表达式];(1) (1)数组名后一定用方括弧[ ],用其余括弧均错误;(2)方括弧中的常量表达式表示数组的元素个数;(3)方括弧中的常量表达式,一定是能计算出详尽数值,且不改变的常量,不可以是变量;2、一维数组的引用:数组名[下标]for ( i =0 ; i<7 ; i ++ ) printf(“%c” , c1[ i ] );(2) 将整个字符串一次输入输出,用格式符%s ;如:char c1[10];scanf (“ %s”, c1) ;100];D) int N=100;int num[N];(2003 年 9 月)25、有以下程序main(){ char a[ ]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’,‘0’}; int i,j;i=sizeof(a); j=strlen(a);printf( “%d,%d b”i,j);}程序运转后的输出结果是( )。
A) 9,9B) 8,9C) 1,8D) 9, 8(2002 年 9 月)21、 C 22、C 23、D 24、B 25 、D二、填空题1、下边 fun 函数的功能是将形参x 的值变换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为0 的元素中,其余依此类推。
请填空。
fun(int x,int b[]){ int k=0,r;do{ r=x% 2;b[k++]=r;x/= 2 ; } while(x); }(1996 年 4 月)2 22、以下程序用来对从键盘上输入的两个字符串进行比较 , 而后输出两个字符串中第一个不同样字符的 ASCII 码之差。
C语言程序设计教程第七章课后习题参考答案

C语言程序设计教程第七章课后习题参考答案P198 3 求主、副对角线元素之和#include#define M 4#define N 4int main(){int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; int i,j,m=0,n=0;for(i=0;i<m;i++)< p="">{for(j=0;j<n;j++)< p="">{printf("%4d",a[i][j]);}printf("\n");}for(i=0;i<m;i++)< p="">{for(j=0;j<n;j++)< p="">{if(i==j)m+=a[i][j];}}printf("主对角线元素之和为:%d\n",m);for(i=0;i<m;i++)< p="">{for(j=0;j<n;j++)< p="">{if(i+j==3)n+=a[i][j];}}printf("副对角线元素之和为:%d\n",n); return 0;}P198 4数组逆序存放#includevoid input(int a[],int n);void reverse(int a[],int n);int main(){int a[5];int size=sizeof(a)/sizeof(int);input(a,size);reverse(a,size);printf("\n");return 0;}void input(int a[],int n){int i;printf("请输入%d个整数:\n",n);for(i=0;i<n;i++)< p="">{scanf("%d",&a[i]);}}void reverse(int a[],int n) {int i,t;for(i=0;i<="" p="">{t=a[i];a[i]=a[5-i-1];a[5-i-1]=t;}for(i=0;i<n;i++)< p=""> {printf("%-3d",a[i]);}}198 4数组逆序存放(2)#includevoid reverse(int a[],int n); void print(int a[],int n);int main(){int a[]={1,2,3,4,5,11,16,13}; int size=sizeof(a)/sizeof(int); print(a,size);reverse(a,size);printf("\n");return 0;}void print(int a[],int n){int i;printf("原:\n");for(i=0;i<n;i++)< p="">{printf("%-4d",a[i]);}printf("\n");}void reverse(int a[],int n){int t,i;printf("逆序:\n");for(i=0;i<="" p="">{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}for(i=0;i<n;i++)< p="">{printf("%-4d",a[i]);}}P198 5对称矩阵#includevoid print(int a[][3],int rows,int cols); int fun(int a[][3],int rows,int clos); void main(){int a[3][3],i,j;printf("input:\n");for(i=0;i<3;i++){for(j=0;j<3;j++)scanf("%d",&a[i][j]);}print(a,3,3);if(fun(a,3,3)==0)printf("此矩阵是对称矩阵\n");elseprintf("此矩阵不是对称矩阵\n"); } void print(int a[][3],int rows,int cols) {int i,j;for(i=0;i<rows;i++)< p="">{for(j=0;j<cols;j++)< p="">printf("%-4d",a[i][j]);printf("\n");}}int fun(int a[][3],int rows,int clos) {int i,j,x=0;for(i=0;i<rows;i++)< p="">{for(j=0;j<clos;j++)< p="">{if(a[i][j]!=a[j][i]) x++;}}if(x>0) return 1;else return 0;}P198 5对称矩阵(2)#include#define M 3#define N 3void print(int a[][N],int m,int n); int yan(int a[][N],int m,int n); int main(){int a[][N]={1,2,3,4,5,6,7,8,9}; print(a,M,N);if(yan(a,M,N))printf("YES\n");elseprintf("NO\n");return 0;}void print(int a[][N],int m,int n) {int i,j;for(i=0;i<m;i++)< p="">{for(j=0;j<n;j++)< p="">{printf("%-4d",a[i][j]);}printf("\n");}}int yan(int a[][N],int m,int n){int i,j,x=0;for(i=0;i<m;i++)< p="">{for(j=0;j<n;j++)< p="">{if(a[i][j]!=a[j][i]) x++;}}if(x>0) //不是对称矩阵return 0;return 1;}P198 6矩阵求和#include#define M 3#define N 3void input(int a[][N],int m,int n);void sum(int a[][N],int b[][N],int m, int n); void print(int a[][N],int m,int n);int main(){int a[M][N];int b[M][N];printf("请输入%d*%d阶矩阵A:\n",M,N);input(a,M,N);print(a,M,N);printf("请输入%d*%d阶矩阵B:\n",M,N);input(b,M,N);print(b,M,N);printf("A+B=\n");sum(a,b,M,N);return 0;}void input(int a[][N],int m,int n){int i,j;for(i=0;i<m;i++)< p="">{for(j=0;j<n;j++)< p="">{scanf("%d",&a[i][j]);}}}void print(int a[][N],int m,int n){int i,j;for(i=0;i<m;i++)< p="">{for(j=0;j<n;j++)< p="">{printf("%4d",a[i][j]);}printf("\n");}}void sum(int a[][N],int b[][N],int m,int n) {int i,j;int c[M][N];for(i=0;i<m;i++)< p="">{for(j=0;j<n;j++)< p="">{c[i][j]=a[i][j]+b[i][j];}}print(c,M,N);}P198 7模拟骰子投掷#include#include#define N 10000int main(){int a[N],i;double x=0,y=0,z=0,l=0,m=0,n=0; for(i=0;i<n;i++)< p="">{a[i]=rand()%6+1;if(a[i]==1)x++;if(a[i]==2)y++;if(a[i]==3)z++;if(a[i]==4)l++;if(a[i]==5)m++;if(a[i]==6)n++;}printf("出现1的概率为:%lf\n",x/N); printf("出现2的概率为:%lf\n",y/N); printf("出现3的概率为:%lf\n",z/N); printf("出现4的概率为:%lf\n",l/N); printf("出现5的概率为:%lf\n",m/N); printf("出现6的概率为:%lf\n",n/N); return 0;}P67 1最大奇、偶数#include#define M 10int main(){int i,a[M];int max1=-1,max2=-1;for(i=0;i<m;i++)< p="">{printf("请输入第%d个正整数:",i+1); scanf("%d",&a[i]);}for(i=0;i<m;i++)< p="">{if(a[i]%2!=0){if(a[i]>max1)max1=a[i];}else{if(a[i]>max2)max2=a[i];}}if(max1==-1)printf("没有奇数\n");elseprintf("最大奇数是%d\n",max1); if(max2==-1)printf("没有偶数\n");elseprintf("最大偶数是%d\n",max2); return 0;}P69 3#includeint main(){int a[20];int p=0,n=0,i,j=0;double avg,sum=0;printf("请输入非0整数:"); while(1){scanf("%d",&a[j]);if(a[j]==0)break;j++;}for(i=0;i<j;i++)< p="">{sum=sum+a[i];}avg=sum/j;printf("平均数:%lf",avg);for(i=0;i<j;i++)< p="">{if(a[i]>0)p++;if(a[i]<0)n++;}printf("正数个数:%d 负数个数:%d\n",p,n); return 0;}P75 2冒泡排序#include#define N 10void bubble_sort(int a[],int n);void main(){int i, a[N]={1,3,6,8,9,2,11,12,14,7}; printf("原数组为:\n");for(i=0;i<n;i++)< p="">{printf("%4d",a[i]);}bubble_sort(a,N);printf("\n");}void bubble_sort(int a[],int n) {int i,j,tmp;for(i=0;i<n-1;i++)< p=""> {for(j=0;j<n-i-1;j++)< p=""> {if(a[j]>a[j+1]){tmp=a[j];a[j]=a[j+1];a[j+1]=tmp;}}}printf("\n");printf("排序后的数组为:\n"); for(i=0;i<n;i++)< p=""> {printf("%4d",a[i]);}}P76 3 成绩#includevoid input(int cla[50][3],int n); void print(int cla[50][3],int n);void sort(int cla[50][3],int n);void main(){int cla[50][3];int n;printf("请输入学生人数(小于50):\n"); scanf("%d",&n);if(n<=0 || n>=50)printf("error,请输入正确的人数。
c语言数组习题集

第7章数组习题A卷1. 单项选择题(1) int a[4]={5,3,8,9};其中a[3]的值为(D )。
D A. 5 B. 3 C. 8 D. 9(2) 以下4 个字符串函数中,( A)所在的头文件与其他3 个不同。
A. getsB. strcpyC. strlenD. strcmp(3) 以下4 个数组定义中,( D)是错误的。
A. int a[7];B. #define N 5 long b[N];C. char c[5];D. int n,d[n];(4) 对字符数组进行初始化,(B )形式是错误。
A. char c1[ ]={'1', '2', '3'};B. char c2[ ]=123;C. char c3[ ]={ '1', '2', '3', '\0'};D. char c4[ ]="123";(5) 在数组中,数组名表示(A )。
A. 数组第1 个元素的首地址B.数组第2 个元素的首地址C. 数组所有元素的首地址D.数组最后1 个元素的首地址(6) 若有以下数组说明,则数值最小的和最大的元素下标分别是(B )int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12};A. 1,12B. 0,11C. 1,11D. 0,12(7) 若有以下说明,则数值为4 的表达式是(D )。
int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12};char c=’a’, d, g ;A. a[g-c]B. a[4]C. a['d'-'c']D. a['d'-c](8) 设有定义:char s[12] = "string" ;则printf( "%d\n",strlen(s)); 的输出是( A)。
c语言教材第七章习题答案

c语言教材第七章习题答案《C语言教材第七章习题答案》在学习C语言的过程中,掌握基本的语法和逻辑结构是非常重要的。
第七章的习题涉及到了一些较为复杂的概念和技巧,需要我们对C语言有更深入的理解和掌握。
1. 题目:编写一个程序,计算并输出1到100之间所有偶数的和。
答案:我们可以使用循环结构和条件判断来解决这个问题。
具体的代码如下: ```#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}}printf("1到100之间所有偶数的和为:%d\n", sum);return 0;}```这段代码使用了for循环来遍历1到100之间的所有数字,然后通过条件判断判断是否为偶数,如果是偶数则累加到sum中,最后输出sum的值。
2. 题目:编写一个程序,输出九九乘法表。
答案:九九乘法表是一个经典的练习题,通过嵌套循环可以很容易地实现。
具体的代码如下:```#include <stdio.h>int main() {for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {printf("%d*%d=%d\t", j, i, i*j);}printf("\n");}return 0;}```这段代码使用了两层嵌套的for循环,外层循环控制行数,内层循环控制列数,通过printf语句输出乘法表中的每一项。
通过解答以上两道习题,我们不仅复习了C语言中的循环结构和条件判断,还锻炼了我们的编程思维和逻辑能力。
希望大家在学习C语言的过程中能够多多练习,不断提升自己的编程水平。
C语言答案第7章

第7章[习题7-1]输入3个整数,按从小到大的顺序输出。
/*c7_1.c*/#include <stdio.h>void swap(int *p1,int *p2){i nt p;p=*p1;*p1=*p2;*p2=p;}void main(void){i nt n1,n2,n3;i nt *pointer1,*pointer2,*pointer3;p rintf("请输入三个整数 n1,n2,n3:");s canf("%d,%d,%d",&n1,&n2,&n3);p ointer1=&n1;p ointer2=&n2;p ointer3=&n3;i f(n1>n2) swap(pointer1,pointer2);i f(n1>n3) swap(pointer1,pointer3);if(n2>n3) swap(pointer2,pointer3);p rintf("排序后三个整数为:%d,%d,%d\n",n1,n2,n3);}[习题7-2]编写程序,输入一个十进制的正整数,将其对应的八进制数输出。
/*c7_2.c*/#include<stdio.h>#define N 10void main(void){i nt x;c har *p,result[N];p rintf("输入十进制正整数:");s canf("%d",&x);f or(p=result;x!=0;p++){*p=x%8+'0';x=x/8;}f or(p--;p>=result;p--)putchar(*p);p utchar('\n');}[习题7-3]输入一个字符串,用指针方式逐一显示字符,并求其长度。
C语言第七章习题答案

7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。
两个整数由键盘输入。
hcf(u,v)int u,v;{ int a,b,t,r;if(u>v){ t=u;u=v;v=t; }a=u;b=v;while((r=b%a)!=0){ b=a;a=r; }return(a);}lcd(u,v,h)int u,v,h;{ int u,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("H.C.F=%dn",h);l=lcd(u,v,h);printf("L.C.d=%dn",l);return(u*v/h);}#include <stdio.h>void main(){ int u,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("H.C.F=%dn",h);l=lcd(u,v,h);printf("L.C.D=%dn",l);}7.2 求方程根float x1,x2,disc,p,q; greater_than_zero(a,b)float a,b;{x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); }equal_to_zero(a,b)float a,b;{ x1=x2=(-b)/(2*a);}smaller_than_zero(a,b)float a,b;{ p=-b/(2*a);q=sqrt(disc)/(2*a);}main(){float a,b,c;printf("n输入方程的系数a,b,c:n");scanf("%f,%f,%f",&a,&b,&c);printf("n 方程是:% 5.2f*x*x+%5.2f*x+%5.2f=0n",a,b,c);disc=b*b-4*a*c;printf("方程的解是:n");if(disc>0){ great_than_zero(a,b);printf("X1=%5.2ftX2=%5.2fnn",x1,x2);}else if(disc==0){zero(a,b);printf("X1=%5.2ftX2=%5.2fnn",x1,x2);}else{small_than_zero(a,b,c);printf("X1=%5.2f+%5.2fitX2=%5.2f-%2.2fin",p,q,p,q);}}7.3 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。
C语言第七章习题带答案

选择题1.已知:int *p, a;,则语句“p=&a;”中的运算符“&”的含义是( D )。
A.位与运算B.逻辑与运算C.取指针内容D.取变量地址2.已知:int a, x;,则正确的赋值语句是( C )。
A.a=(a[1]+a[2])/2; B.a*=*a+1; C.a=(x=1, x++, x+2); D.a="good"; 3.已知:int a, *p=&a;,则下列函数调用中错误的是( D )。
A.scanf("%d", &a); B.scanf("%d", p); C.printf("%d", a); D.scanf("%d", *p); 4.已知:char *p, *q;,选择正确的语句( C )。
A.p*=3; B.p/=q; C.p+=3; D.p+=q;5.已知:int x;,则下面的说明指针变量pb的语句( C )是正确的。
A.int pb=&x; B.int *pb=x; C.int *pb=&x; D.*pb=*x;一、选择题1.设有说明int (*ptr)[M];,其中的标识符ptr是( C )。
A.M个指向整型变量的指针B.指向M个整型变量的函数指针C.一个指向具有M列的二维数组的一行的指针D.具有M个指针元素的一维数组的指针2.已知:double *p[6];,它的含义是( C )。
A.p是指向double型变量的指针B.p是double型数组C.p是指针数组D.p是数组指针3.已知:char s[10], *p=s,则在下列语句中,错误的语句是( B )。
A.p=s+5; B.s=p+s; C.s[2]=p[4]; D.*p=s[0];4.已知:char s[100]; int i;,则在下列引用数组元素的语句中,错误的表示形式是( D )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言复习题及答案第七章数组第七章数组 (8学时)学习目的与要求:1 、重点掌握一维数组的定义和引用;2 、基本掌握二维数组的定义和引用;3 、重点掌握字符型数组的定义与引用;4 、能正确使用字符串处理函数;5 、学会使用数组解决实际问题。
重点:1 、一维数组的定义与引用;2 、二维数组的定义与引用;3 、字符数组的定义与引用;第1讲知识归纳:1、一维数组的定义:类型说明符数组名[ 常量表达式 ] ;(1) (1)数组名后必须用方括弧 [ ] ,用其他括弧均错误;(2) 方括弧中的常量表达式表示数组的元素个数;(3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量;2、一维数组的引用:数组名[ 下标 ] //下标从0开始,可以是整型常量或整型表达式;(1) 注意:数组元素引用时,不要超出数组范围;如 int a[10] ;//可以引用的数组元素为a[0]……a[9] , a[10] 不是本数组元素;3、一维数组的初始化:(1) (1)可以在定义数组后,立刻赋值;如 int a [3] = { 1,3, 5} ;但下面这样是错误的:int a[3] ;a = { 1,3, 5} ;(2) (2)可以给数组的部分元素赋值,不赋值的元素,默认值为int 0, char, ‘’,float 0.0 ;如 int a [3]= {1,3 } ; //a[0] =1 ; a[1]= 3 ; a[2]= 0 ;(3) 在对数组全部元素赋初值时,可以不指定元素个数;(4) 可以在循环控制下,给数组各元素赋值;如:int a[10] ;for ( i=0 ; i <10 ;i ++ )a [ i ] = i ;基础训练(A)一、选择题1、在c语言中,引用数组元素时,其数组下标的数据类型允许是()。
A)整型常量 B)整型表达式C)整型常量或整型表达式 D)任何类型的表达式2、要说明一个有10个int元素的数组,应当选择语句()。
A) int a[10]; B) int a(10); C) int a[9] D) int a[11]3、以下对数组的正确定义是:()。
A) float b[5.0] B) float b[5] C) float b(5) D) float b[]4、对以下说明语句的正确理解是()。
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)因为数组长度与初值的个数不相同,所以此语句不正确5、已知:int a[10];则对a数组元素的正确引用是()。
A) a[10] B) a[3.5] C) a(5) D) a[10-10]6、以下能对一维数组a进行正确初始化的语句是()。
A) int a[10]=(0,0,0,0,0); B)int a[10]={}C) int a[]={0}; D) int a[10]={10*1};7、以下能对一维数组a进行正确初始化的语句是()。
A) A)int a[5]; B)int a[3];a={0,1,2,3,4}; for(i=0;i<3;i++)scanf(“%d”,a);C) int a[3]={0,1,2,3}; D) int a[5];for(i=0;i<5;i++)scanf(“%d”,&a[i]);1、C2、A3、B4、B5、D6、C7、D二、填空题1、构成数组的各个元素必须具有相同的类型。
C语言中数组的下标必须是整正数、0或整型表达式。
如果一维数组的长度为n ,则数组下标的最小值为0,最大值为n-1。
2、在C语言中,一维数组的定义方式为:类型说说明符数组名[常量表达式]。
3、已知数组b定义为int b[ ]={9,6,3};,则b的各元素的值分别是,最小下标是,最大下标的。
9,6,3 0 , 24、在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, ‘’,float 0.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中的每个元素均可得到初值05、以下正确的语句是()。
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,sum2);}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) 逐个字符输入输出。