return 0; } 3.源代码为: #include voidhanshu(char *s) { while(*s) { if(*s>='A'&&*s<='Z') *s+=32; else if(*s>='a'&&*s<='z') *s-=32; *s++; } } void main() { char s[]="shaHUAHDJhhduahNBUahujJAWDhuwh8u"; hanshu(s); printf("改写后的字符串为:\n"); puts(s); } 4.源代码为: #include int add(int n) { int s=0; if(n==0) return 0; if(n==1) s=1; else s=n+add(n-1); return s; } void main() { intk,i; printf("输入一个整数:\n"); scanf("%d",&i); k=add(i); printf("%d累加的结果为:%d\n",i,k); } 测试数据为:4 运行结果为:10
c语言数组典型试题设计含答案
一.选择题(2*20) 【题1】在C 语言中,引用数组元素时,其数组下标的数据类型允许是。A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 【题2】以下对一维整型数组a 的正确说明是。 A)int a(10); B)int n=10,a[n]; C)int n; D)#define SIZE 10 scanf(“%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】在C 语言中,一维数组的定义方式为:类型说明符数组名; A)[整型常量表达式] B)[整型表达式] C)[整型常量] 或[整型表达式] D)[常量] 【题5】以下能对一维数组a 进行正确初始化的语句是。 A)int a[10]=(0,0,0,0,0); B)int a[10]={}; C)int a[]={0}; D)int a[10]=”10*1”; 【题6】以下对二维数组a 的正确说明是。 A)int a[3][]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4); 【题7】若有说明:int a[3][4];则对a 数组元素的正确引用是。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) 【题8】若有说明:int a[3][4];则对a 数组元素的非法引用是。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 【题9】以下能对二维数组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}}; 【题10】以下不能对二维数组a 进行正确初始化的语句是。 A)int a[2][3]={0}; B)int a[][3]={{1,2},{0}}; C)int a[2][3]={{1,2},{3,4},{5,6}}; D)int a[][3]={1,2,3,4,5,6};
C语言数组典型例题分析与解答
数组练习解答 1 定义一个名为a的单精度实型一维数组,长度为4,所有元素的初值均为0的数定义语句是________________ 【分析】按照一般数据定义语句的格式,可以直接写出方法一(参看答案);考虑到所有元素均赋初值时可以省略数组长度,可以写出方法二(参看答案);考虑到不省略数组长度,给部分元素赋初值时,所有未赋初值的元素均有空值(对数值型数组来说,初值为0),可以写出方法三(参看答案);考虑到选用静态型,不赋初值所有元素也自动赋予。空值(对数值型数组来说,初值为0),可以写出方法四(参看答案)。 【答案】方法一:float a[4]={0.0,0.0,0.0,0.0}; 方法二:float a[]={ 0.0,0.0,0.0,0.0}; 方法三:float a[4]= {0.0}; 方法四:static float [4]; 2 下列数组定义语句中,错误的是() ①char x[1]='a';②auto char x[1]={0}; ③static char x[l];④char x[l]; 【分析】显然答案①中给字符型数组赋初值的格式不对(不能直接赋予字符常量,必须用花括号括住),所以备选答案①是符合题意的答案。 【答案】① 3 用"冒泡排序法"对n个数据排序,需要进行n一1 步。其中第k步的任务是:自下而上,相邻两数比较,小者调上;该操作反复执行n-k次。现在假设有4个数据:4、l、3、2要排序,假定4为上、2为下,则利用"冒泡排序法"执行第2步后的结果是_________________。【分析】开始排序前的排列执行第1步后的排列执行第2步后的排列 41 1 14 2 32 4 23 3 【答案】l、2、4、3 4 用"选择排序法"对n个数据排序,需要进行n-1步。其中第k步的任务是:在第k个数据到第n个数据中寻找最小数,和第k个数据交换。现在假设有4个数据:4、1、3、2要排序,则利用"冒泡排序法"执行第2步后的结果是______________________。 【分析】开始排序前的排列为:413 2 执行第1步后的排列为:143 2 执行第2步后的排列为:123 4 【答案】1、2、3、4 5 下列数组定义语句中,正确的是() ①int a[][]={1,2,3,4,5,6};②char a[2]「3]='a','b'; ③int a[][3]= {1,2,3,4,5,6};④static int a[][]={{1,2,3},{4,5,6}}; 【分析】C语言规定,二维数组定义时不允许省略第二维的长度,所以备选答案①④是错误的。C语言还规定,定义字符型数组时不允许直接使用"字符常量"的方式赋初值,所以备选答案②也是错误的。显然备选答案③符合题意。【答案】③ 6 定义一个名为"s"的字符型数组,并且赋初值为字符串"123"的错误语句是() ①char s[]={‘1','2','3','\0 '};②char s「」={"123"}; ③char s[]={"123\n"};④char s[4]={'1','2','3'};
c语言数组练习题大全
231页; 本节设计程序完成一个简单的学籍; 3管理系统的案例,学生的基本信息:学号,姓名,年龄,c 语言成绩。假设班级有10名学生,能实现以下功能: (1)输入10名学生的基本信息。 (2)输出10名学生的基本信息。 (3)输入学号、姓名,输出该学生的基本信息。 (4)按学号年龄对学生进行排序(升序),按c 语言成绩降序排序。 (5)统计优 良 不及格。 1.数据结构分析 此案例是一位数组,二维数组的综合运用。10名学生的学号,年龄,c 语言成绩可分别用长度为10的一位数组sno (long ),sage (int 型),cs (float 型)存储;10名学生的姓名可用元素长度为20个字符的一位数组,既字符型二维数组sname 存储。 2算法分析 使用模块化设计思想,进入系统主界面时有六个主要模块,输入学生的基本信息,输出学生的信息,查找学生 的基本信息,排序,统计,退出。学籍管理系统的机构功能框架,如图 5-28 所示。 图 5-28 学生管理系统的结构功能框架 5.5.2 奇数阶魔方矩阵 本节将实现技术矩魔方矩阵。 项目任务:用数组实现N 阶魔方矩阵(N 为奇数)。所谓的N 阶魔方矩阵是指把1~N*N 自然数按一定的方法排列成N*N 的矩阵,使得:任意行、任意列以及两个对角线上的数之和都为65。 5阶魔方如下: 17 24 1 8 15 输 入 学 生 的 基 本 信 息 输 出 学 生 的 信 息 查 找 学 生 的 基 本 信 息 排 序 统 计 退 出 学籍管理系统
23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 本章习题: 1.设数组int a【N】的元素全部不相等,求a中最大元素和次大元素。 2.求有10个整数的数组a中奇数的个数和平均值,以及偶数个数和平均值。 3.统计输入的一串字符(“假设以‘\n’结束”)中,大写字母A,B...Z各出现的次数。 4.数组a:“1,7,9,11,13,15,17,19”;数组b:“2,4,6,8,10”两个数组合并为数组c;按升序排列。 5.输入10个数,将10个整数按升序排列输出,并且奇数在前,偶数在后。如果输入的10个数是:10 9 8 7 6 5 4 3 2 1,则输出:1 3 5 7 8 2 4 6 8 10 (编程提示、;可利用两个数组变量,一个用来存放输入的整数,输入后,对该数组进行排序,然后将数据复制到另一个数组中,先复制奇数再复制偶数)。 6.定义一个有10个元素的一位数组count ,从键盘上输入8个整数,将其按从大到小的顺序排列,并将排列后的数组输出。 7.求数组int a【M】【N】每行元素的平均值和平均最大的行号。 8.求A【M】【N】与B【M】【N】两矩阵的和矩阵C【M】【N】和差矩阵D【M】【N】(矩阵的值由键盘输入)。 9.有n个学生,每人考m门课。 (1)找出成绩最高的学生的学号和课程号 (2)找出有不及格课程的学生的学号及其各门课的全部成绩。 (3)求全部学生全部课程的平均分。
C语言-数组-实验题目及答案
实验六数组程序设计 【实验目的】 1、掌握使用一维数组编程方法 2、掌握使用二维数组进行程序设计 【实验内容】 一、上机验证程序,并分析结果 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。1、#include int main() { int a[ ]={1,2,3,4,5} , i, j, s=0 ; j = 1; for ( i = 4 ; i>=0 ; i--) { s = s+ a[i] * j ; j = j * 10 ; } printf(" s= %d \n" , s ); return 0; } 二、程序改错题 1.下面程序的功能,是从键盘输入一个数组(数组长度为10),查找数组中正数的个数。源代码如下,程序中存在错误,请将其改正。 #include int main()
{ int a(10);/*定义数组*/ int count,i;/* i循环变量 count 正数个数*/ for(i=0;i<=10;i++) {/*循环输入*/ scanf("%d",a[i]); } count=1; for(i=0;i<=10;i++) {/*查找正数*/ if(a(i)>0) count++; } printf("数组中正数有:%d个\n",count); return 0; } 三编写程序 1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。#include #define N 30 int main() { float score[N],sum=0,aver; int i; for(i=0;i<30;i++) { scanf("%f",&score[i]); sum=sum+score[i]; } aver=sum/30; printf("平均分为:%.2f\n",aver); for(i=0;iaver) printf("%.2f ",score[i]); printf("\n");
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. gets B. strcpy C. strlen D. 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,12 B. 0,11 C. 1,11 D. 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)。 A. 6 B. 7 C. 11 D. 12 (9) 设有定义:char s[12] = "string"; 则printf("%d\n ", sizeof(s)); 的输出是( B)。 A. 6 B. 7 C. 11 D. 12 (10) 合法的数组定义是( A)。 A. char a[ ]= "string " ; B. int a[5] ={0,1,2,3,4,5}; C. char a= "string " ; D. char a[ ]={0,1,2,3,4,5} (11) 合法的数组定义是(D )。 A. int a[3][ ]={0,1,2,3,4,5}; B. int a[ ][3] ={0,1,2,3,4}; C. int a[2][3]={0,1,2,3,4,5,6}; D. int a[2][3]={0,1,2,3,4,5}; (12) 下列定义的字符数组中,输出 printf("%s\n", str[2]) ;的输出是 (C )。 static str[3][20] ={ "basic", "foxpro", "windows"}; A. basic B. foxpro C. windows D. 输出语句出错 (14) 下列各语句定义了数组,其中哪一个是不正确的( C)。 A. char a[3][10]={"China","American","Asia"}; B. int x[2][2]={1,2,3,4}; C. float x[2][ ]={1,2,4,6,8,10}; D. int m[][3]={1,2,3,4,5,6};
c语言编程 有关数组的几道例题
实验四一维数组、二维数组 一、实验目的与要求 1、熟练掌握一维数组、二维数组的定义、赋值和输入输出的方法。 2、掌握与数组有关的算法。 二、实验内容 1、(1)输入N个整数,使用冒泡排序,将数据由大到小输出。 #include "stdafx.h" #include void swap2(int*,int*); void bubble(int a[],int n); int main(void) { int n,a[8]; int i; printf("Enter n(n<=8):"); scanf("%d",&n); printf("Enter a[%d]:", n); for(i=0;iprintf("%3d",a[i]); return 0; } void bubble(int a[],int n) /*n是数组a中待排序元素的数量*/ { int i,j; for(i=1;ia[j+1]) swap2(&a[j],&a[j+1]); /*交换*/ } void swap2(int *px,int *py) { int t; t=*px; *px=*py; *py=t; } 单向冒泡排序法: //输入10个整数,按从大到小输出// #include void main() { int i,j,t,a[10];
C语言数组练习题
第七章数组 1.在C语言中引用数组元素时,下面关于数组下表数据类型的说法错误的是()A)整型常量B)整型表达式 C) 整型常量或整型表达式D) 任何类型的表达式 2.以下能正确定义一维数组a的选项是() A)int a=[5]={0,1,2,3,4,5};B) char a[ ]={0,1,2,3,4,5}; C)char a={ 'A','B','C',};D) int a[5]= "0,1,2,3" 3.以下能正确定义一维数组a的选项是() A) int a(10);B) int n=10, a[n]; C) int n;D) #define SIZE 10 scanf("%d",&n);int a[SIZE]; int a[n]; 4.若有定义:int a[10];则正确引用数组a元素的是() A) a[10] B) a[3] C) a[5] D) a[-10] 5.以下不正确的数组定义是() A) double x[5]={2.0,4.0,6.0,8.0,10.0}; B) int y[5]={0,1,3,5,7,9}; C) char c1[ ]={'1','2','3','4','5'}; D) char c2[ ]={'\x10','\xa','\x8'}; 6.以下叙述中错误的是() A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出 B)数组名代表的是数组所占存储区的首地址,其值不可改变 C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息 D)可以通过赋初值的方式确定数组元素的个数 7.以下正确的二维数组定义是() A)int a[ ] [ ]={1,2,3,4,5,6};B)int a[2][ ]={1,2,3,4,5,6}; C)int a[ ][3]={1,2,3,4,5,6};D)int a[2,3]={1,2,3,4,5,6}; 8.以下对二维数组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}}; 9.以下不能对二维数组a进行初始化的是() A)int a[2][3]={0}; B)int a[ ][3]={{1,2},{0}}; C)int a[2][3]={{1,2},{3,4},{5,6}}; D)int a[ ][3]={1,2,3,4,5,6}; 10.若有定义:int a[3][4];则正确引用数组a元素的是() A)a[2][4] B)a[3][3] C)a[0][0] D)a[3][4]
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. gets B. strcpy C. strlen D. 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,12 B. 0,11 C. 1,11 D. 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)。 A. 6 B. 7 C. 11 D. 12
C语言数组练习题
C程序设计(数组)12.23 【题1】在C 语言中,引用数组元素时,其数组下标的数据类型允许是 C 。 A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 【题2】C语言中,数组名代表B A.数组全部元素的值B.数组首地址 C.数组第一个元素的值D.数组元素的个数【题3】以下对一维整型数组a 的正确说明是。 A)int a(10); B)int n=10,a[n]; C) int n; D)#define SIZE 10 scanf(“%d”,&n);int a[SIZE]; int a[n]; 【题4】合法的数组定义是D A.int a[ ]=”string”;B.int a[5]={0,1,2,3,4,5}; C.char a=”string”;D.char a[ ]={0,1,2,3,4,5}; 【题5】若有定义和语句:char s[10]; s=”abcd”; printf(“%s\n”,s); 则结果是(以下u代表空格)D A.输出abcd B.输出a C.输出abcd u u u u u D.编译不通过 【题6】有以下语句,则下面是正确的描述B
static char x [ ]=“12345”;static char y[ ]={‘1’,‘2’,‘3’,‘4’,‘5’}; A.x数组和y数组的长度相同。A B.x数组长度大于y数组长度。 C.x数组长度小于y数组长度 D.x数组等价于y数组。 【题7】若有说明:int a[10];则对a 数组元素的正确引用是 D 。 A)a[10] B)a[3.5] C)a(5) D)a[10-10] 【题8】在C 语言中,一维数组的定义方式为:类型说明符数组名C ; A)[整型常量表达式] B)[整型表达式] C)[整型常量] 或[整型表达式] D)[常量] 【题9】以下能对一维数组a 进行正确初始化的语句是C。 A)int a[10]=(0,0,0,0,0); B)int a[10]={}; C)int a[]={0}; D)int a[10]=”10*1”; 【题10】对以下说明语句的正确理解是 B 。 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)因为数组长度与初值的个数不相同,所以此语句不正确【题11】若已定义数组:float a[8];则下列对数组元素引用正确的是 A 。
C语言数组选择题
1、以下定义语句中,错误的是________。 A) int a[]={1,2}; B) char a[]={"test"}; C) char s[10]={"test"}; D) int n=5,a[n]; D 一维数组的定义方式:类型说明符数组名[常量表达式] 常量表达式中可以包括常量和符号常量,但不能包含变量。 2、以下对一维数组a进行正确初始化的是__________。 A) int a[10]=(0,0,0,0,0); B) int a[10]={ }; C) int a[ ]={0}; D) int a[10]={ 10*2}; C 1.在定义数组时对数组元素赋以初值。 2. 可以只给一部分元素赋值。 3. 如果想使一个数组中全部元素值为0,可以写成:int a[10]={0,0,0,0,0,0,0,0,0,0}; 或int a[10]={0}; 4.在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度,系统根据后面花括号里的数据决定数组的长度。 3、以下对二维数组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}}; B 4.如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。 可以用下面4种方法对二维数组初始化: 1.分行给二维数组赋初值。 2.可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。 3.可以对部分元素赋初值。 4、在定义int a[5][4]; 之后,对a的引用正确的是________。 A) a[2][4] B) a[1,3] C) a[4][3] D) a[5][0] C 在使用数组元素时,应该注意下标值应在已定义的数组大小的范围内。 5、以下给字符数组str定义和赋值正确的是________。 A) char str[10]; str={"China!"}; B) char str[ ]={"China!"}; C) char str[10]; strcpy( str,"abcdefghijkl"); D) char str[10]={"abcdefghijkl"}; B 不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。 只能用strcpy函数将一个字符串复制到另一个字符数组中去。strcpy(字符数组1,字符串2) 字符数组1必须定义得足够大,以便容纳被复制的字符串。字符数组1的长度不应小于字符串2的长度。用赋值语句只能将一个字符赋给一个字符型变量或字符数组元素。
C语言数组练习题.doc
C语言程序设计实验教学(6) 【实验目的】数组的应用是很重要的一章。通过实验掌握一维数组的主要应用,并理解数组的存储。对二维数组的处理要比较熟悉。 【实验要求】一维数组的题目要求全面掌握,应用循环结构完成一维数组的输入、处理和输出。二维数组能够完成简单的数据处理和应用。 【实验课时】8.0 【实验内容】 一维数组: 1、定义一个可以存放10个元素的int数组a,输入10个数,并逆序输出。 #include #include void main( ) {int a[10], i; clrscr(); printf("Please input array a :"); for(i=0;i<10;i++) scanf("%d", &a[i]);/* 由键盘逐次输入值赋予数组各元素*/ for(i=9;i>=0;i--) /* 变量i递减控制着数组元素倒序输出*/ printf("%5d", a[i]); } 2、用数组来保存Fibonacci数列前20项数值,以每5个数据为一行进行 输出。 #include #include void main( ) {int i; long f[20]; clrscr(); f[0]=1;f[1]=1; for(i=2;i<20;i++)
f[i]=f[i-1]+f[i-2]; for(i=0;i<20;i++) {if(i%5==0) printf("\n"); printf("%10ld",f[i]); } } 3、统计具有10个元素的自然数数组num中的奇数个数。 #include #include void main( ) {int i,num[10],count=0; clrscr(); for(i=0;i<10;i++) {printf("enter NO %d : ",i+1);/*给予输入提示*/ scanf("%d",&num[i]); if(num[i]%2!=0) count++;} printf("Count is:%d\n",count ); } 4、计算整数数组a中的最大值及其所在的下标。 #include #include void main( ) {int i,max,p,a[10]; clrscr(); printf("please enter 10 data:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); max=a[0];p=0; for(i=1;i<10;i++)