c语言二维数组课堂编程练习

合集下载

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)

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语言之二维数组与指针--题+答案

计算机等级考试二级C语言之二维数组与指针--题+答案
C) 定义了一个名为*p的整型数组,该数组含有三个int类型元素
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语言上课编程练习题

C语言上课编程练习题
8
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语言二维数组刷屏练习

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++二维数组

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,该函数的功能是:求出二维数组周边元素之和,作为函数值返回。

二维数组中的值在主函数中赋予。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档