c语言二维数组课堂编程练习
c语言 数组 练习题
c语言数组练习题C语言数组练习题C语言作为一门被广泛应用的编程语言,数组是其重要的数据结构之一。
掌握数组的使用和操作对于编写高效的程序至关重要。
本文将通过一些实际的练习题来帮助读者加深对C语言数组的理解和应用。
1. 求数组元素的和题目:给定一个整数数组,编写一个程序来计算数组中所有元素的和。
解法:使用一个变量sum来存储数组元素的和。
通过遍历数组,将每个元素累加到sum中,最后返回sum即可。
以下是示例代码:```c#include <stdio.h>int sumArray(int arr[], int size) {int sum = 0;for (int i = 0; i < size; i++) {sum += arr[i];}return sum;}int main() {int arr[] = {1, 2, 3, 4, 5};int size = sizeof(arr) / sizeof(arr[0]);int sum = sumArray(arr, size);printf("数组元素的和为:%d\n", sum);return 0;}```2. 查找数组中的最大元素题目:给定一个整数数组,编写一个程序来找到数组中的最大元素。
解法:使用一个变量max来存储数组中的最大值。
通过遍历数组,将每个元素与max比较,更新max的值为较大的那个元素。
以下是示例代码:```c#include <stdio.h>int findMax(int arr[], int size) {int max = arr[0];for (int i = 1; i < size; i++) {if (arr[i] > max) {max = arr[i];}}return max;}int main() {int arr[] = {3, 8, 2, 1, 5};int size = sizeof(arr) / sizeof(arr[0]);int max = findMax(arr, size);printf("数组中的最大元素为:%d\n", max);return 0;}```3. 数组元素的反转题目:给定一个整数数组,编写一个程序来反转数组中的元素。
C语言习题(6)
C语言习题(6)第六章数组一.填空题1.C语言数组的下标总是从开始,不可以为负数;构成数组各个元素具有相同的。
2.在C语言中,二维数组的元素在内存中的存放顺序是。
3.若有定义:double x[3][5],则x数组中行下标的下限为,列下标的上限为。
4.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]的值为,a[2][1]得到的值为。
5.若有定义int a[][4]={1,2,3,4,5,6,7,8,9},则数组a第一维的大小为。
6.设char str[100]=”Hangzhou”;则数组str所在内存空间应为字节。
7.下列程序的输出结果是。
char str[ ][10]={”abcd”,”1234”,”efgh”,”5678”};int k=1;printf(“%s”,str[k++]);8.欲将字符串S1复制到字符串S2中,其语句是。
9.如果在程序中调用了strcat函数,则需要预处理命令;如果调用了gets函数,则需要预处理命令。
10.字符串是以为结束标志的一维字符数组。
有定义:char a[]=”China”;则a数组的长度是。
11.数组在内存中占用一段连续的存储空间,该存储空间的首地址用表示。
12.调用strlen(“abcd\0ef\0g”)的返回值为。
二.选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是。
A)整型常量B)整型表达式C)整型常量或整型表达式C)任何类型的表达式2.以下对一维整型数组a的正确说明是。
A)int a(10) ; B)int n=10,a[n];C)int n; D)#define SIZE 10scanf(“%d”,&n);int a[SIZE];int a[n];3.若有定义:int a[10],则对数组a元素的正确引用是。
A)a[10] B)a[3.5] C)a(5) D)a[10-10]4.若有定义:int a[3][4],则对数组a元素的正确引用是。
二维数组、字符数组习题
5.选择出正确的输入语句(其中:char s[5],c; int b;) A)scanf(“%s%c”,s,c); D B)scanf(“%%d%c”,&b,&c); C)scanf(“%d%%c”,b,&c); D)scanf(“%s%c”,s,&c);
。
6.设有定义:char s[12]={“string”};,则 A printf(“%d\n”,strlen(s));的输出是 。 A)6 B)7 C) 11 D) 12
16.设输入的字符串为:The Windows‟95 Operating System则输出的第一行和最 后一行分别是: 和 __ The erating main() { char a[4][10],j,k; for(j=0;j<4;j++) scanf("%s",a[j]); for(j=0;j<4;j++) { k=j; printf("%s\n",a[j++]+k); } }
9.函数调用”strcat(strcpy(str1,str2),str3)”的功能是 C 。 A 将字符串str1复制到字符串str2中后再连接到字符串 str3之后 B 将字符串str1连接到字符串str2之后再复制到字符串 str3之后 C 将字符串str2复制到字符串str1中后再将字符串str3连 接到字符串str1之后 D 将字符串str2连接到字符串str1之后再将字符串str1复 制到字符串str3中 10.定义如下变量的数组: int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; C
10000 02000 00300 00040 00005
计算机等级考试二级C语言之二维数组与指针--题+答案
D) 定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
(10) 有以下程序
main()
{ int a[3][3], *p, i;
p=&a [0][0] ;
for ( i=0 ; i<9 ; i++) p[i]=i+1;
(5) 若有以下说明和语句,int c[4][5],(*p)[5];p=c;能正确引用c数组元素的是
A) p+1
B) *(p+3)
C) *(p+1)+3
D) *(p[0]+2))
(6) 有以下定义和语句
int a[3][2]={1,2,3,4,5,6,},*p[3];
pa=a;
for(i=0;i<3;i++)
if(i<2) pa[1][i]=pa[1][i]-1;
else pa[1][i]=1;
printf("%d\n",a[0][1]+a[1][1]+a[1][2]);
}
执行后输出结果是
A) 7
B) 6
C) 8
for(i=1;i<3;i++)
for(j=0;j<=i;j++)s+=a[i][j];
printf(“%dn”,s);
}
(21) 若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是
A) &t[3][2]
B) t[3]
C语言上课编程练习题
1! 2! 3! 4! i! 1 ... 2 3 3 5 3 5 7 3 5 7 9 3 5 ... (2 i 1)
输入一个整数 n,要求将其逆向输出。例如,输 输入两个正整数 a 和 n,求 a+aa+aaa+…+aa…a(n 验证哥德巴赫猜想: 任何一个不小于 6 的偶数均
money loan rate(1 rate) month (1 rate) month 1 (注:最新
5 年期以上贷款年
利率为 6.55%) 55. if、switch 题:输入月薪 salary,输出应缴的个人 所得税 tax (保留 2 位小数) 。 按照 2011 年实行的最 新 的 个 人 所 得 税 法 , 计 算 公 式 为 : tax=rate(salary-3500)-deduction。 当 salary<=3500 时,rate=0,deduction=0; 当 3500<salary<=5000 时,rate=3%,deduction=0; 当 5000<salary<=8000 时, rate=10%, deduction=105; 当 8000<salary<=12500 时, rate=20%, deduction=555; 当 当 12500<salary<=38500 38500<salary<=58500 时 , rate=25% , 时 , rate=30% , deduction=1005; deduction=2755;
14.
从键盘上输入一个秒数, 将其转换成对应的小时
数、分钟数和秒数。例如,输入 5000,则输出应为 “ 1 小时 23 分钟 20 秒 ” 。 15. 从键盘上输入一个天数, 将其转换成对应的年数、
c语言二维数组刷屏练习
// 二维数组的刷屏综合练习编制于2012.9.23#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<time.h>#define WIDTH 22//宏定义/***********************函数声明**********************************************/ void init();//数组赋初值void print();//显示当前数组void movebom(char scr[WIDTH][WIDTH]);//炸弹移动void movebul(char scr[WIDTH][WIDTH]);//子弹移动void bump(char scr[WIDTH][WIDTH]);//碰撞函数/********************全局变量************************************************/ //全局变量char scr[WIDTH][WIDTH];int flagbul = 0 ,flagpla = 0;//在函数体外赋初值int high,wide;//飞机的行和列/*********************数组操作函数********************************************///数组赋原始值void init(){int i,j;for(i = 0; i < WIDTH ; i++){for(j = 0; j < WIDTH; j++){scr[i][j] = 0;}printf("\n");}return ;}//显示当前数组动画void print(){int i,j;for(i = 0; i < WIDTH ; i++){for(j = 0; j < WIDTH ; j++){if(scr[i][j] == 0)printf(" ");if(scr[i][j] == 1)printf("A");//飞机if(scr[i][j] == 2)printf("@");//炸弹if(scr[i][j] == 3)printf(".");//子弹if(j == WIDTH-2 )printf("|");//围栏if(j == WIDTH-1 && i == 0)printf("得分:%d",flagbul*10);//得分信息if(j == WIDTH-1 && i ==1)printf("死亡:%d",flagpla);//死亡信息}printf("\n");}return ;}//炸弹移动函数(实质是改变数组值)void movebom(char scr[WIDTH][WIDTH]){int i,j;for(i = WIDTH-1; i >= 0; i--){for(j = 0; j < WIDTH; j++){if(scr[i][j] == 2){scr[i][j] = 0;scr[i+1][j] = 2;}}}return;}//子弹移动函数(实质是改变数组值)void movebul(char scr[WIDTH][WIDTH]){int i,j;for(i=1; i<WIDTH; i++){for(j=0;j<WIDTH;j++){if(scr[i][j] == 3){scr[i][j] = 0;scr[i-1][j] = 3;}if(scr[0][j] == 3)//用于消除0行的死角scr[0][j] = 0;}}return;}//碰撞函数(实质是数组里的数据呈现某种状态)void bump(char scr[WIDTH][WIDTH]){int i,j;for(i = 0; i < WIDTH -2; i++){for(j = 0; j < WIDTH; j++){if(scr[i][j] == 2 && scr[i+2][j] == 3)//炸弹和子弹相遇(奇数行的情况){scr[i][j] = 0;scr[i+2][j] = 0;flagbul++;}if(scr[i][j] == 2 && scr[i+1][j] == 3)//炸弹和子弹相遇(偶数行的情况){scr[i][j] = 0;scr[i+1][j] = 0;flagbul++;}if(scr[i][j] == 2 && scr[i+2][j] == 1)//炸弹和飞机相遇(奇数行的情况){scr[i][j] = 0;scr[i+2][j] = 0;high = WIDTH-1;//飞机行初值wide = WIDTH-2;//飞机列初值scr[high][wide] = 1;//飞机复位flagpla++;}if(scr[i][j] == 2 && scr[i+1][j] == 1)//炸弹和飞机相遇(偶数行的情况){scr[i][j] = 0;scr[i+1][j] = 0;high = WIDTH-1;//飞机行初值wide = WIDTH-2;//飞机列初值scr[high][wide] = 1;//飞机复位flagbul++;}}}return;}/*********************************主函数**********************************************///主函数int main(){int i;high = WIDTH-1;//飞机行初值wide = WIDTH-2;//飞机列初值init();//数组初值函数scr[high][wide] = 1;//设置数组这个位置为1srand(time(NULL));//设置随机种子while(1){if(kbhit())//有按键kbhit()返回1,执行switch()语句,否则返回0,不执行switch()语句switch(getch()){case 'a':case 'A'://像左移动飞机if(wide > 0){scr[high][wide] = 0;scr[high][--wide] = 1;}break;case 'd':case 'D'://像右移动飞机if(wide < WIDTH-2)//这里是WIDTH-2{scr[high][wide] = 0;scr[high][++wide] = 1;}break;case 'w':case 'W'://像上移动飞机if(high > 0){scr[high][wide] = 0;scr[--high][wide] = 1;}break;case 's':case 'S'://像下移动飞机if(high < WIDTH-2)//这里是WIDTH-2{scr[high][wide] = 0;scr[++high][wide] = 1;}break;case 'o':case 'O'://发出子弹if(high < WIDTH)//这里是WIDTHscr[high-1][wide] = 3;break;}//设置炸弹的改变速度是子弹和飞机的一半if(++i % 2 == 0){if(i == 3000)//防止i越界i = 0;scr[0][rand()%(WIDTH-1)] = 2; //用随机函数设置炸弹起始位置movebom(scr); //炸弹移动函数(用于更改数组值)}movebul(scr); //子弹移动函数(用于更改数组值)bump(scr);//碰撞函数system("CLS"); //清屏函数print(); //显示数组函数}return 0;}//本程序为飞机射击程序的雏形//本程序的思想是每改变一次数组,刷新一次屏幕,再输出一次数组//使用幻灯片原理,最终形成视觉动画,其实很简单(原来普通的二位数组能做出这么美妙的东西)。
二维数组练习题
二维数组练习题1、以下对二维数组a进行正确初始化的是__________。
A) 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}};2、在定义int a[5][4]; 之后,对a的引用正确的是________。
A) a[2][4] B) a[1,3] C) a[4][3] D) a[5][0]3、在执行语句:int a[ ][3]={1,2,3,4,5,6}; 后,a[1][0]的值是________。
A) 4 B) 1 C) 2 D) 54、在定义int a[5][6];后,数组a中的第10个元素是________。
(设a[0][0]为第一个元素)A) a[2][5] B) a[2][4] C) a[1][3] D) a[1][5]5、下列程序执行后的输出结果是__________。
main(){ int i,j,a[3][3];for(i=0;i<3;i++)for(j=0;j<=i;j++) a[i][j]=i*j;printf("%d,%d\n",a[1][2],a[2][1]);}A) 2,2 B) 不定值,2 C) 2 D) 2,06、有如下程序main(){ int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++) s+=a[i][j];printf("%d\n",s);}该程序的输出结果是________。
A) 18 B) 19 C) 20 D) 217、以下程序的输出结果是________。
main(){ int i,x[3][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i+=1) printf("%5d",x[1][i]);}A) 6 5 4 B) 9 6 3 C) 9 5 1 D) 9 8 78、以下程序的输出结果是_________。
C++二维数组
二维数组1. 编程题(41)请编写函数fun,该函数的功能是:将M 行N 列的二维数组中的字符数据,按列的顺序依次放到一个字符串中.例如,若二维数组中的数据为W W W WS S S SH H H H则字符串的内容应是:WSHWSHWSHWSH.2. 编程题:(80)程序定义了N ×N 二维数组,并在主函数中自动赋值,请编写函数fun(int a[][N],int n),该函数的功能是:使数组左下半三角元素中的值乘以n 。
例如,若n 的值为3,数组a 值为:197238456a ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦则返回主程序后a 数组中的值应为:397698121518a ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦3. 编程题:(53)编写函数fun ,其功能是:实现B=A+A ’,即将矩阵A 加上A 的转置,存放在矩阵B 中,计算结果在main 函数中输出。
例如,输入下面的矩阵:其转置矩阵为;123 456 789147 258 369程序输出:2610 61014 1014184\编程题:(55)请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。
例如,若二维数组中的数据为:333333334444444455555555则一维数组中的内容应该是:333333334444444455555555。
5 编程题(75)请编写函数fun,该函数的功能是将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中数据的个数存放在形参n所指的存储单元中。
例如,若二维数组中的数据为33 33 33 3344 44 44 4455 55 55 55则一维数组中的内容应是:33 44 55 33 44 55 33 44 55 33 44 55。
6.编程题:(14)请编写函数fun,该函数的功能是:求出二维数组周边元素之和,作为函数值返回。
二维数组中的值在主函数中赋予。
C语言编程二维数组
C语言编程二维数组1、创建一个二维数组,并求出数组中最大的一个元素、行号、列号。
代码示例:[liangjian@localhost ~]$ cat test1.c#include <stdio.h>int main(){int i,j,row= 0,colum= 0;int a[3][4]= {{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};int max= a[0][0];for (i = 0 ;i < 3 ;i ++){for (j = 0 ;j < 4 ; j ++){if(max< a[i][j]){max = a [i][j];row = i ;colum = j ;}}}printf("max=%d,row=%d,colum=%d\n",max,row,colum); return 0;}[liangjian@localhost ~]$ gcc test1.c &&./a.out max=10,row=2,colum=1[liangjian@localhost ~]$123456789101112131415161718192021222324252627282、从键盘上门输入9个数字,九宫格形式,要求输出24 5 6 格式的数字,即输出第一行,第一列的所有元素。
8代码示例:[liangjian@localhost ~]$ cat test2.c#include <stdio.h>int main(void){int i,j,a[3][3]; //创建一个三维数组存放9个数字;for (i= 0 ;i< 3 ;i++){for (j= 0 ;j< 3 ;j++){printf("a[%d][%d]= ",i,j);scanf("%d",&a[i][j]);}}for (i = 0 ; i < 3 ; i++){for (j = 0 ; j < 3 ; j++){if (i == 1 || j == 1){printf ("%-6d",a[i][j]); //%-6为控制间隔;若为%d,则输入的数字之间没有空格,eg:123不能看出为1 2 3 ,-6为左移6个字符。
二级C操作题-二维数组
main(){ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j; printf("\nThe original array:\n");for(i=0; i<N; i++){ for(j=0; j<N; j++) printf("%d ",t[i][j]);printf("\n");}fun(t,N);printf("\nThe result is:\n");for(i=0; i<N; i++){ for(j=0; j<N; j++) printf("%d ",t[i][j]);printf("\n");} }解题思路:第一处:在函数体fun中,已经使用了t整型数组,所以应填:t[][N]。
第二处:要求填写for循环语句的初始值和终止值,所以应填:i=0;i<n。
第三处:交换变量的值,根据循环体中的语句可知,s是存放交换的中间变量,所以应填:s。
※※※※※※※※※※※※※※※※※※※※※※※※计算矩阵最大、最小值请编写一个函数fun,它的功能是:求出一个2×M整型二维数组中最大元素的值,并将此值返回调用函数。
注意: 部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。
给定源程序:#include <stdio.h>#define M 4fun (int a[][M]){}main( ){ int arr[2][M]={5,8,3,45,76,-4,12,82} ;printf("max =%d\n", fun(arr)) ;NONO( ) ;}解题思路:本题是求出一个2×M整型二维数组中最大元素的值。
c语言编程练习题
c语言编程练习题C语言编程练习题C语言作为一门广泛应用于计算机科学领域的编程语言,对于初学者来说,掌握其基本语法和编程技巧是非常重要的。
为了提高编程能力和解决实际问题,练习题是一种非常有效的学习方法。
本文将介绍一些常见的C语言编程练习题,帮助读者提升自己的编程水平。
1. 求和问题编写一个程序,要求用户输入一个整数N,然后计算出从1到N的所有整数的和,并输出结果。
这个问题可以通过循环结构来解决,例如使用for循环或while循环。
2. 判断质数问题编写一个程序,要求用户输入一个整数N,然后判断N是否为质数(即只能被1和自身整除的数),如果是质数,则输出"是质数",否则输出"不是质数"。
这个问题可以通过循环结构和条件判断来解决。
3. 字符串反转问题编写一个程序,要求用户输入一个字符串,然后将字符串中的字符顺序反转,并输出结果。
这个问题可以通过使用数组和循环结构来解决,例如使用for循环或while循环。
4. 数组排序问题编写一个程序,要求用户输入一个整数数组,然后对数组中的元素进行排序,并输出结果。
这个问题可以通过使用数组和循环结构来解决,例如使用冒泡排序或选择排序等算法。
5. 矩阵转置问题编写一个程序,要求用户输入一个二维数组(矩阵),然后将矩阵进行转置,并输出结果。
这个问题可以通过使用二维数组和循环结构来解决,例如使用两层循环来交换矩阵中的元素。
6. 查找最大值和最小值问题编写一个程序,要求用户输入一个整数数组,然后找出数组中的最大值和最小值,并输出结果。
这个问题可以通过使用数组和循环结构来解决,例如使用一个变量来记录当前的最大值和最小值。
7. 斐波那契数列问题编写一个程序,要求用户输入一个整数N,然后输出斐波那契数列的前N个数。
斐波那契数列的定义是:第一个和第二个数为1,从第三个数开始,每个数都是前两个数的和。
这个问题可以通过使用循环结构来解决,例如使用for循环或while循环。
洛谷二维数组入门题
洛谷二维数组入门题全文共四篇示例,供读者参考第一篇示例:洛谷(Luogu)是一个中国的在线算法训练平台,旨在帮助用户提高算法水平和编程能力。
其中二维数组入门题是一类适合初学者练习的题目,通过这些题目的练习,可以帮助学习者熟悉二维数组的基本操作和应用。
二维数组是指在一个一维数组内部套上另一个一维数组,这样就构成了一个二维数组。
在编程中,二维数组常用于表示矩阵、表格等具有行列关系的数据结构。
在洛谷的二维数组入门题中,题目内容比较简单,适合初学者练习,并且循序渐进地引导学习者理解二维数组的基本概念和操作方法。
一般来说,二维数组的声明方式为`int a[N][M];`,其中N表示数组的行数,M表示数组的列数。
在洛谷的二维数组入门题中,常常需要学习者完成一系列的操作,比如初始化数组、遍历数组、求解数组元素的最大值或最小值等等。
举个例子,一道简单的二维数组入门题是要求学习者计算一个N x M的矩阵中所有元素的和。
对于这道题目,学习者需要先声明一个二维数组a,然后使用两层循环遍历数组中的所有元素,并将每个元素的值累加到一个变量sum中,最后输出sum的值即可完成题目。
洛谷的二维数组入门题还涉及到一些更复杂的操作,比如矩阵的转置、矩阵元素的旋转等。
通过这些题目的练习,学习者可以逐步提高自己对二维数组的理解和运用能力,为日后解决更具挑战性的算法问题奠定坚实的基础。
除了基本的操作和运算外,二维数组在实际应用中还有很多种形式和用途。
比如在图像处理中,二维数组可以用来表示图片的像素点;在游戏开发中,二维数组可以用来表示游戏地图等。
掌握好二维数组的基本概念和操作方法对于提高编程能力和解决实际问题都有很大的帮助。
在学习二维数组的过程中,除了通过洛谷的题目练习外,学习者还可以参考一些相关的教程和资料,比如《算法导论》、《数据结构与算法分析》等书籍。
还可以通过参与一些编程竞赛或社区讨论,与其他程序员交流经验和思路,共同进步。
洛谷的二维数组入门题是一个很好的学习资源,适合初学者通过实际操作来巩固所学知识,为进一步学习和应用算法打下基础。
第C语言习题 九章(二维数组)第10章
第九章(二维数组)A:二维数组定义1.定义语句形式:类型名数组名[常量表达式1][常量表达式2]如:int a[3][4];(可看成一个矩阵)在内存中存放顺序为:先放0行,再放1行的元素。
2.在C语言中,可把二维数组看成一个一维数组,每个数组元素又包含有若干个元素的一维数组。
3.C语言系统把a[0]、a[1]、a[2]作为数组名处理的。
B、二维数组元素的引用引用形式:数组名[下标表达式1][下标2]要求:(1)下标值必为整数(2)下标不能越界C、二维数组初始化如:int a[4][3]={{1,2,3,},{…..}}1.当某一对花括号内的初值个数少于该行中元素的个数时,系统自动给该行后面的元素补初值0如:int a[4][3]={{1,2},{4,5},{7},{10}};a[0][2],a[2][1]的初值为03.所赋初值行数少于数组行数时,系统自动给后面各行元素补初值04.赋初值时省略花括号时如:int a[4][3]={1,2,4,5};依照在内存中排列顺序,不足补0a[0][0]=1 a[0][1]=2 a[0][2]=4 a[1][0]=5 a[1][1] a[1][2]a[2][0] a[2][1] a[2][2] a[3][0] a[3][1] a[3][2]D、通过赋初值定义二维数组大小1、对于二维数组,只可省略第1个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式(牢记)。
如:书上125页2、当用下列形式赋初值时:int c[][3]={1,2,3,4,5};第一维大小按以下规定:(1)当初值的个数能被第二维的常量表达式除尽时;所得商就是第一维大小(2)当初值的个数不能被第二维常量表达式除尽时,则:第一维大小:所得商+1 上面:5/3=商1余2 +1=2E、二维数组定义和数组元素引用举例(见书126页)F、二维数组和数组元素地址(1)二维数组a由若干一维数组组成,(2)a[0]、a[1]、a[2]都是一维数组名,也是一个地址常量,不能a[0]++等如定义*p a[I] p=a[I] 合法a[I]=*(a+I) p=*(a+I)合法(3)二维数组名也是一个地址常量(行指针)(4)数组名a与a[0]的值相同,但基类不同,数组名a基类为具有4个整型元素的数组类型。
C语言程序设计:二维数组与字符数组单元测试与答案
一、单选题1、有以下程序#include <stdio.h>int main( ){ int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t; for(i=0;i<3;i++)for(k=i+1;k<4;k++)if(a[i][i]<a[k][k]){t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}for(i=0;i<4;i++)printf("%d,",a[0][i]);return 0;}程序运行后的输出结果是()A. 1,1,2,6B. 6,4,3,2C. 2,3,4,6D. 6,2,1,1正确答案:B2、下述对C语言字符数组的描述中错误的是()A.字符数组可以存放字符串B.可以在赋值语句中通过赋值运算符"="对字符数组整体赋值C.字符数组的下标从0开始D.字符数组中的字符串可以进行整体输入/输出正确答案:B3、对两个数组a和b进行如下初始化char a[]=”ABCDEF”;char b[]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’}则下述叙述正确是()A.a和b长度相同B.a和b数组完全相同C.a和b都存放字符串D.a数组比b数组长度长正确答案:D4、下面程序的功能是将字符串s中的字符c删除,请选择填空()#include <stdio.h>int main( ){char s[80];int i,j;gets(s);for(i=j=0;s[i]!='\0';i++)if(s[i]!='c')______;s[j]='\0';puts(s);return 0;}A. s[i]=s[j]B. s[j++]=s[i]C. s[++j]=s[i]D. s[j]=s[i]正确答案:B5、下面程序的运行结果是#include "stdio.h"#include"string.h"int main( ){char a[80]="AB",b[80]="LMNP"; int i=0;strcat(a,b);while(a[i++]!='\0')b[i]=a[i];puts(b);return 0;}A.ABB.ABLMNPC.LBD.LBLMNP正确答案:D6、若二维数组a有m列,则在a[i][j]前的元素个数为A.i*m+j-1B.i*m+jC.i*m+j+1D.j*m+i正确答案:B二、判断题1、如果strcmp(s1,s2)的返回值为一个负数,则表明字符串s1小于字符串s2。
C语言程序设计:第8章 二维数组
1.定义函数实现:对3*4的二维数组求其最大值 2.定义函数实现:对3*4的二维数组求其平均值
26
总结
❖二维数组可以认为是由多个一维数组组成, 如int a[3][4];可以理解成由3个长度为4的一 维数组组成。
❖对二维数组的遍历,其实就是循环的嵌套,对 行操作则最外层是行下标的遍历,对列操作则 最外层是列下标的遍历。
须有值
15
本次课议题
❖二维数组的定义 ❖二维数组的存储 ❖二维数组的引用 ❖二维数组的初始化 ❖二维数组的遍历 ❖二维数组作为函数参数
16
二维数组的遍历
沿着某条搜索路线,依次对二维数组中的每个元素 做一次访问。
int arr[3][4] = {{1,4,7,10},{2,5,8,11}, {3,6,9,12}};
#define M 3
#define N 4
int main(void)
{
int arr[M][N] = {{1,4,7,10},{2,5,8,11},{3,6,9,12}};
int i = 0,j = 0;
for( j=0;j<N;j++)//列下标遍历
{
for(i=0;i<M;i++)//行下标遍历
int a[M][N]; return 0; }
5
本次课议题
❖二维数组的定义 ❖二维数组的存储 ❖二维数组的引用 ❖二维数组的初始化 ❖二维数组的遍历 ❖二维数组作为函数参数
6
二维数组的存储
二维数组占用多个连续的内存空间
int a[2][3];//在内存中的结构
0
1
2
3
4
5
a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]