12.C语言(数组)单元练习四 31

合集下载

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语言数组练习题及答案

c语言数组练习题及答案

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;}}。

C语言测试四(带有答案)

C语言测试四(带有答案)

测试四(数组)姓名:学号:一.选择题1.若有以下定义语句:int a[]={1,2,3,4,5,6,7,8,9,10}; 则值为5的表达式是:()a) a[5] b) a[a[4]]c) a[a[3]]d) a[a[5]]2.要求定义具有80个、char类型元素的一维数组,错误的定义语句是()a) #define N 80 b) int N=80;char s[N]; char s[N];c)#define N 40 d) char s[40+40];char s[2*N];3. 若有以下定义语句:int a[10]={1,2,3,4,5,6,7,8,9,10}; 则对a数组元素正确的引用是:()a) a[10] b) a[a[3]-5] c) a[a[9]]d) a[a[4]+4]4.若有以下定义语句:float a[11]={0,1,2,3,4,5,6,7,8,9,10}; 则以下叙述中错误的是:()a) a数组在内存中占44个字节b) a数组的最后一个元素为a[10]c) a数组的第一个元素为a[0]d) 以上定义语句给a数组所赋初值是整数,不能正确赋值5.若有以下定义语句:double a[5]; int i=0; 能正确给a数组元素输入数据的语句是:()a) scanf(“%lf%lf%lf%lf%lf”,a);b)for(i=0 i<=5 i++) scanf(“%lf”,a+i);c) while(i<5) scanf(“%lf”,&a[i++]);d) while(i<5) scanf(“%lf”,a+i);6. 以下关于数组的描述正确的是:()a) 数组的大小是固定的,但可以有不同数据类型的数组元素b) 数组的大小是可变的,但所有数组元素的数据类型须相同c) 数组的大小是固定的,且所有数组元素的数据类型须相同d) 数组的大小是可变的,且可以有不同数据类型的数组元素7. 若有说明:int a[10];,则对a数组元素引用不正确的是:()a) a[5+5]b) a[5.5] c) a[10-10]d) a[5]8. 执行int a[ ][3]={1,2,3,4,5,6,7};语句后,a[1][0]的值是()a) 1 b) 3 c) 5d) 49. 若有以下程序:void main(){ int k[9]={19,16,17,15,13,11,10,9}, i=1,s=0;while(i<9 && k[i]%3)s=s+k[i++];printf(“%d\n”,s);}程序执行后的输出结果是:()a) 33b) 52 c) 101d) 11010. 若有以下程序:void main(){ int m[ ][3]={1,3,2,4,5,7,6,8,9,10,11};int i,k=2;for(i=0;i<3;i++)printf(“%d”,m[k][i]);}程序执行后的输出结果是:()a) 4 5 7 b) 2 7 9 c) 9 10 11d) 6 8 911. 若有以下程序:void main(){ int a[3][4]={1,0,2,1,0,2,1,0,1,1,0,1};int i,j,sum=0;for(i=0;i<=2;i++)for(j=0;j<=i;j++)sum+=a[i][j]; }程序执行后的输出结果是:()a) 0 b) 4 c) 5d)312. 下面程序段的输出结果是( )。

C程序设计(数组)习题与答案

C程序设计(数组)习题与答案

C程序设计(数组)习题与答案C程序设计(数组)习题与答案数组是C语言中常用的数据结构之一,它可以存储多个相同类型的元素。

掌握数组的使用对于C程序设计至关重要,下面将为大家介绍一些关于C数组的习题及其答案。

1. 习题一:计算数组元素的和题目描述:编写一个程序,计算给定数组中所有元素的和,并输出结果。

解题思路:```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5}; // 定义一个包含5个元素的整型数组int sum = 0; // 用于存储和的变量// 遍历数组,累加每个元素的值for (int i = 0; i < 5; i++) {sum += arr[i];}printf("数组元素的和为:%d\n", sum);return 0;}```2. 习题二:查找数组中的最大值题目描述:编写一个程序,找出给定整型数组中的最大值,并输出结果。

解题思路:```c#include <stdio.h>int main() {int arr[7] = {4, 7, 2, 9, 1, 5, 8}; // 定义一个包含7个元素的整型数组int max = arr[0]; // 假设第一个元素为最大值// 遍历数组,比较每个元素的值与当前最大值的关系for (int i = 1; i < 7; i++) {if (arr[i] > max) {max = arr[i];}}printf("数组中的最大值为:%d\n", max);return 0;}```3. 习题三:查找数组中的特定元素题目描述:编写一个程序,在给定整型数组中查找是否存在指定元素,并输出结果。

解题思路:```c#include <stdio.h>int main() {int arr[6] = {3, 6, 9, 2, 5, 8}; // 定义一个包含6个元素的整型数组 int target = 2; // 指定要查找的元素int found = 0; // 用于标记是否找到目标元素的变量// 遍历数组,比较每个元素的值与目标值的关系for (int i = 0; i < 6; i++) {if (arr[i] == target) {found = 1;break;}}if (found) {printf("数组中存在目标元素:%d\n", target);} else {printf("数组中不存在目标元素:%d\n", target);}return 0;}```4. 习题四:数组元素逆序排列题目描述:编写一个程序,将给定整型数组的元素逆序排列,并输出结果。

c语言数组练习题

c语言数组练习题

c语言数组练习题C语言中的数组是一种用于存储多个相同类型数据的数据结构。

通过练习数组的使用,可以更好地理解和掌握C语言编程的基本概念和技巧。

本文将为您提供一些C语言数组练习题,帮助您巩固对数组的理解和运用。

1. 请编写一个程序,从键盘输入10个整数,并将它们存储到一个数组中。

然后,计算数组中所有元素的和并输出结果。

解答:```c#include<stdio.h>int main(){int nums[10];int sum = 0;for(int i=0; i<10; i++){scanf("%d", &nums[i]);sum += nums[i];}printf("数组元素的和为:%d\n", sum);return 0;}```2. 编写一个程序,从键盘输入一个整数n(n大于等于1),然后动态创建一个大小为n的整数数组,并将1到n的所有奇数存储到该数组中。

最后,输出该数组的所有元素。

解答:```c#include<stdio.h>#include<stdlib.h>int main(){int n;printf("请输入一个整数n:");scanf("%d", &n);int* nums = (int*)malloc(n * sizeof(int));int count = 0;for(int i=1; i<=n; i++){if(i % 2 != 0){nums[count] = i;count++;}}printf("数组中的奇数为:");for(int i=0; i<count; i++){printf("%d ", nums[i]);}printf("\n");free(nums);return 0;}```3. 编写一个程序,定义一个大小为10的整数数组,然后通过随机数生成10个0到100的整数,并将它们存储到数组中。

C语言题库数组(2021年整理精品文档)

C语言题库数组(2021年整理精品文档)

(完整版)C语言题库数组编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整版)C语言题库数组)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整版)C语言题库数组的全部内容。

数组一、选择题1、假定int 类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组X在内存中所占字节数是(B).A 3B 6C 10D 202、执行下面的程序段后,变量k 中的值为(A).int k=3, s[2];s[0]=k; k=s[1]*10;A 不定值B 33C 30D 103、设有数组定义: char array []="China”; 则数组array 所占的空间为(C)。

A 4 个字节B 5 个字节C 6 个字节有0/的结束标志D 7 个字节4、下列描述中不正确的是 CA 字符型数组中可以存放字符串B 可以对字符型数组进行整体输入、输出C 可以对整型数组进行整体输入、输出D 不能在赋值语句中通过赋值运算符”=”对字符型数组进行整体赋值5、给出以下定义char x[]=”abcdefg”;char y[ ]={’a’,'b’,’c','d’,'e','f’,’g'};则正确的叙述为 CA 数组X 和数组Y 等价B 数组x 和数组Y 的长度相同C 数组X 的长度大于数组Y 的长度D 数组X 的长度小于数组Y 的长度6、下述对C 语言字符数组的描术中错误的是 CA 字符数组可以存放字符串B 字符数组中的字符串可以整体输入、输出C 可以在赋值语句中通过赋值运算符”=”对字符数组整体赋值D 不可以用关系运算符对字符数组中的字符串进行比较7、定义如下变量和数组int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是 Cfor(i=0;i<3;i++) printf(”%d",x[i][2—i]);A 1 5 9B 1 4 7C 3 5 7D 3 6 98、以下一维数组a 的正确定义是(D)A int a(10);B float n=10,a[n];C int n;scanf(”%d”,&n);float a[n];D #define size 10; long a[size];9、合法的数组定义是 DA int a[]="string";B int a[5]={0,1,2,3,4,5};C vhst s="string";D char a[]={0,1,2,3,4,5};10、以下关于数组的描述正确的是CA 数组的大小是固定的,但可以有不同的类型的数组元素;B 数组的大小是可变的,但所有数组元素的类型必须相同;C 数组的大小是固定的,但所有数组元素的类型必须相同;D 数组的大小是可变的,但可以有不同的类型的数组元素;11、在定义int a[10];之后,对a 的引用正确的是 AA a[9]B a[6.3]C a(6)D a[10]12、以下对一维数组a 进行不正确初始化的是 AA int a[10]=(0,0,0,0);B int a[10]={};C int a[]={0};D int a[10]={10*2};13、以下对二维数组a 进行正确初始化的是 BA 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}};14、以下对字符数组进行不正确初始化的是 AA static char word[]=’cool\0’;B static char word[]={‘c’,’o’,’o’,’l’};C static char word[]={“cool\0”};D static char word[]="cool\0”;15、在定义int a[5][4];之后,对数组元素的引用正确的是 CA a[2][4]B a[5][0]C a[0][0]D a[0,0]16、下列选项中,能正确定义数组的语句是 DA int num[0。

数组c语言试题库及答案

数组c语言试题库及答案

数组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语言中,数组的元素可以是什么数据类型?答:数组的元素可以是任何数据类型,包括整型、浮点型、字符型、结构体等。

C语言练习题数组

C语言练习题数组

Problem C: 颠倒字符串Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 3015 Solved: 1665 Description输入一个以回车结束的字符串(少于80个字符),将字符串的内容颠倒过来再输出Input多组测试数据,每组输入一个以回车结束的字符串(少于80个字符)。

Output将这个字符串颠倒过来输出Sample InputSample OutputDescription将输入一行字符串(小于80个字符),将其中的所有小写字母改为大写,其他字符不变。

Input输入一行字符串,以回车结束。

Output将字符串中小写字母改大写后输出。

Sample InputSample OutputHINTProblem E: 统计元音字母数Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 1659 Solved: 1256Description输入一行字符串,统计字符串中所有英文字母中的各元音字母'a/A'、'e/E'、'i/I'、'o/O'、'u/U'的个数Input输入一行字符串(少于80个字符),以回车结束。

Output逐行输出字符串中各元音字母'a/A'、'e/E'、'i/I'、'o/O'、'u/U'的个数。

Sample InputSample OutputHINTProblem F: 加密程序2Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 1892 Solved: 1203Description有一行电文,请将电文中大写字母按A→Z,B→Y,C→X, D→W,……,X→C,Y→B,Z→A,的规律译成密文,其他字符保持不变。

C语言(数组)习题与答案

C语言(数组)习题与答案

一、单选题1、下列描述中不正确的是()A.字符串的结束符是'\0'。

B.可以对字符型数组进行整体输入、输出。

C.字符型数组中能存放字符串。

D.字符串函数声明在ctype.h中。

正确答案:D2、下面是有关C语言字符数组的描述,其中错误的是()A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组只能存放字符串D.字符数组中的内容不一定是字符串正确答案:C3、下面是对数组s的初始化操作,其中不正确的是()A.char s[5]= " ";B.char s[5]={'a'};C.char s[5]={"a"};D.char s[5]= "abcdef";正确答案:D4、下面叙述正确的是()A.字符串"123 "与"123"相等。

B.字符串"123"小于字符串"2"。

C.两个字符串所包含的字符个数不相同时,才能进行大小比较。

D.字符个数多的字符串比字符个数少的字符串大。

正确答案:B5、下面程序段的输出结果是()char a[7]=“123456”;char b[4]=”ABC”;strcpy(a,b);printf(“%c”,a[5]);A.\0B.C.5D.6正确答案:D6、以下对二维数组a的正确说明是__。

A.double a[1][4];B.float a(3)(4);C. floatf a(3,4);D. int a[3][];正确答案:A7、以下能对二维数组a进行正确初始化的语句是__。

A. int a[][3]={{1,2,3},{4,5,6}};B.int a[2][]={{1,0,1},{5,2,3}};C.int a [2][4]={{1,2,3},{4,5},{6}};D. int a[][3={{1,0,1},{},{1,1}};正确答案:A8、若有说明: int a[3][4]={0};则下面正确的叙述是__。

C语言第四章练习题

C语言第四章练习题

C语⾔第四章练习题注意,本套题⽬中有些涉汲到函数的调⽤和指针的使⽤,⼤家⾃已先去看下,不懂就问,培养⾃⼰的⾃学能⼒。

⼀,选择题1.若有以下定义int x[10], *pt=x;则对x数组元素的正确引⽤是A) pt+3B) *&x[10]C) *(pt+10)D) *(x+3)2.有以下程序#includemain(){ int i, s=0, t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2) s+=*(t+i);printf("%d\n",s);}程序执⾏后的输出结果是A) 20B) 25C) 45D) 363.#includemain(){ int c[6]={10,20,30,40,50,60}, *p,*s;p = c; s = &c[5];printf("%d\n", s-p );}程序运⾏后的输出结果是A) 5B) 50C) 6D) 60{ int a[3]={0}, i, j, k=2;for( i=0; ifor( j=0; jprintf("%d\n", a[1] );}程序运⾏后的输出结果是A) 0B) 2C) 15..有以下程序#includemain(){ int a[5]={2,4,6,8,10}, *p,**k;p = a; k = &pprintf("%d ", *( p++ ) );printf("%d\n", **k );}程序运⾏后的输出结果是A) 4 6B) 4 4C) 2 2D) 2 46.以下叙述中正确的是A) ⼀条语句只能定义⼀个数组B) 每个数组包含⼀组具有同⼀类型的变量,这些变量在内存中占有连续的存储单元C) 数组说明符的⼀对⽅括号中只能使⽤整型常量,⽽不能使⽤表达式D) 在引⽤数组元素时,下标表达式可以使⽤浮点数7.以下叙述中正确的是A) 数组下标的下限是1B) 数组下标的下限由数组中第⼀个⾮零元素的位置决定C) 数组下标的下限由数组中第⼀个被赋值元素的位置决定D) char c1, c2, *c3, c4[40];是合法的变量定义语句8.以下叙述中正确的是C) 语句 char a[2] = {"A", "B"}; 是合法的,定义了⼀个包含两个字符的数组D) 语句 char a[3]; a = "AB"; 是合法的,因为数组有三个字符空间的容量,可以保存两个字符9.有以下程序#includemain(){ int a[ ]={ 2,4,6,8,10 }, x, *p, y=1;p = &a[1];for( x=0; x<3; x++ ) y += *(p+x);printf( "%d\n",y );}程序的输出结果是A) 13B) 19C) 1110.有以下程序#includemain(){int a[ ] = { 2,4,6,8 }, *p=a, i;for( i=0; i<4; i++ )a[i]=*p++;printf( "%d\n" ,a[2] );}程序的输出结果是A) 2B) 8C) 4D) 611.以下叙述正确的是A) 不能在数组说明符的⼀对⽅括号中使⽤表达式B) char c1, *c2, **c3, c4[2]; 是C语⾔的合法语句C) 数组下标的最⼩值可以是负值D) 若有数组定义 int array[5]; 则语句printf("%d",array[1.23]);是合法的int b[] = {9};char c[3] = {"A", "B"};char d = "12";以下叙述正确的是A) a, b的定义合法,c, d的定义不合法B) a,b,c,d的定义都是合法的C) a,b,c的定义是合法的,d的定义不合法D) 只有a的定义是合法的12.对于函数声明void fun(float array[], int *ptr);下叙述正确的是A) 调⽤函数时,array数组的元素和ptr都是按值传送B) 函数声明有语法错误,参数 array 缺少数组⼤⼩定义C) 调⽤函数时,array数组中将存储从实参中复制来的元素值D) 函数参数 array, ptr 都是指针变量13.要求定义⼀个具有6个元素的int型⼀维数组,以下选项中错误的是A) int a[2*3] = {0};B) int N = 6, a[N];C) #define N 3int a[N+N];D) int a[] = {1,2,3,4,5,6};14.设有定义:int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a,i;,若0≤i≤9,则对a数组元素的引⽤错误的是A) *(&a[i])B) a[10]C) p[i]D) a[p-a]15.有以下程序#includeint fun(int x[],int n){static int sum=0, i;for(i=0;ireturn sum;{int a[]={1,2,3,4,5}, b[]={6,7,8,9}, s=0; s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序执⾏后的输出结果是A) 55B) 50C) 45D) 60⼆,填空题1. #includevoid fun(int *s, int n1, int n2){int i, j, t;i=n1; j=n2;while( i{t=s[i]; s[i]=s[j]; s[j]=t; i++; j--;}}main(){int a[10]={1,2,3,4,5,6,7,8,9,0}, k; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(k=0;k<10;k++)printf("%d", a[k]);printf("\n");}则输出结果是。

c语言数组考试题及答案

c语言数组考试题及答案

c语言数组考试题及答案C语言数组考试题及答案一、选择题1. 以下哪个选项是正确的数组声明方式?A. int a[5] = {1, 2, 3, 4, 5};B. int a = [5] = {1, 2, 3, 4, 5};C. int a[5] = {1, 2, 3};D. int a = {1, 2, 3, 4, 5};答案:A2. 对于数组int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 以下哪个表达式是合法的?A. a[10]B. a[-1]C. a[3.5]答案:D3. 假设有数组int a[5] = {1, 2, 3, 4, 5}; 以下哪个表达式可以得到数组a的元素个数?A. sizeof(a) / sizeof(int)B. sizeof(a) / sizeof(char)C. sizeof(a) / sizeof(float)D. sizeof(a) / sizeof(double)答案:A4. 以下哪个选项是正确的二维数组声明方式?A. int a[3][2] = {{1, 2}, {3, 4}, {5, 6}};B. int a[3][2] = {1, 2, 3, 4, 5, 6};C. int a[3][2] = {{1, 2}, {3, 4, 5}, {6, 7}};D. int a[3][2] = {1, 2, 3, 4, 5, 6, 7, 8};5. 对于二维数组int a[3][2] = {{1, 2}, {3, 4}, {5, 6}}; 以下哪个表达式可以得到元素a[1][1]的值?A. a[1][1]B. a[1] + 1C. *(a[1] + 1)D. a[1] * 1答案:A二、填空题1. 假设有数组int a[5] = {10, 20, 30, 40, 50}; 则a[0]的值是______。

答案:102. 对于数组int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 则a[9]的值是______。

数组练习题及答案

数组练习题及答案

数组练习题及答案问题1:数组的基本操作题目:编写一个程序,实现以下功能:1. 初始化一个整型数组,大小为10,所有元素初始化为0。

2. 将数组中的元素依次设置为1到10。

3. 输出数组中的所有元素。

答案:```c#include <stdio.h>int main() {int arr[10] = {0};for (int i = 0; i < 10; i++) {arr[i] = i + 1;}for (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}return 0;}```问题2:数组的反转题目:编写一个函数,实现对整数数组的反转。

答案:```cvoid reverseArray(int arr[], int size) {int start = 0;int end = size - 1;while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}}```问题3:数组的查找题目:编写一个函数,实现在数组中查找特定元素的索引,如果找到返回该元素的索引,如果未找到返回-1。

答案:```cint findElement(int arr[], int size, int element) {for (int i = 0; i < size; i++) {if (arr[i] == element) {return i;}return -1;}```问题4:数组的排序题目:使用冒泡排序算法对整数数组进行排序。

答案:```cvoid bubbleSort(int arr[], int size) {for (int i = 0; i < size - 1; i++) {for (int j = 0; j < size - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}```问题5:数组的动态扩展题目:编写一个函数,实现对数组的动态扩展,使其能够存储更多的答案:```cvoid dynamicArrayExpansion(int *arr, int *size, int capacity, int newElement) {if (*size >= capacity) {int newCapacity = capacity * 2;int *newArr = (int *)malloc(newCapacity *sizeof(int));for (int i = 0; i < *size; i++) {newArr[i] = arr[i];}free(arr);arr = newArr;capacity = newCapacity;}arr[(*size)++] = newElement;}```结束语:这些练习题涵盖了数组的基本操作、查找、排序和动态扩展等常见问题,希望能够帮助您更好地理解和掌握数组的使用。

c语言数组练习题大全

c语言数组练习题大全

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 164 6 13 20 2210 12 19 21 311 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;按升序排列。

C语言各章节单元测试题及答案——数组

C语言各章节单元测试题及答案——数组

第4章数组4.1 典型考试题剖析4.1.1 选择题【例1】以下能正确定义一维数组的选项是。

A)int num[]; B) #define N 100 int num[N];C)int num[0..100]; D) int N=100; int num[N];✧考点:本例考查一维数组的初始化。

✧分析:此类型为常考题型。

可以用以下方法对一维数组初始化:1.在定义数组时对数组元素赋初值。

如static int a[3]={3,4,12}。

2.可以对部分元素赋初值。

Static int a[10]={1,2,3}。

3.如果对全部元素都赋初值(即提供全部初始数据),可以不指定数组长度。

✧答案:B【例2】以下不能正确定义二维数组的选项是_______。

A) int a[2][2]={{1},{2}}; B) int a[][2]={1,2,3,4};C) int a[2][2]={{1}, 2,3}; D) int a[2][]={{1,2},{ 3,4}};✧考点:本例考查二维数组的初始化。

✧分析:此类型为常考题型。

可以用以下方法对二维数组初始化:1.分行给二维数组赋初值。

如static inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}。

2.可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。

如static inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}。

3.可以对部分元素赋初值。

Static int a[3][4]={{1},{5},{9}},a答案中赋值正确。

4.如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省略,b、d答案中赋值正确。

✧答案:C【例3】以下程序的输出结果是_______。

main(){int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);}A) 0650 B) 1470 C) 5430 D) 输出值不定✧考点:本例仅仅考查二维数组的初始化。

C语言(数组)习题与答案

C语言(数组)习题与答案

一、单选题1、下列描述中不正确的是()A.字符串的结束符是B.可以对字符型数组进行整体输入、输出。

C.字符型数组中能存放字符串。

D.字符串函数声明在ctype.h中。

正确答案:D2、下面是有关C语言字符数组的描述,其中错误的是()A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组只能存放字符串D.字符数组中的内容不一定是字符串正确答案:C3、下面是对数组s的初始化操作,其中不正确的是()A.char s[5]="B.char s[5]={'a'};C.char s[5]={"a"};D.char s[5]= "abcdef";正确答案:D4、下面叙述正确的是()A.字符串“123 “与“123”相等。

B.字符串“123”小于字符串C.两个字符串所包含的字符个数不相同时,才能进行大小比较。

正确答案:BD.字符个数多的字符串比字符个数少的字符串大。

5、下面程序段的输出结果是()char a[7]=''123456w;char b[4]=〃ABC〃;strcpy(a z b);printfC'%c w z a[5]);A.\0B.C.5D.6正确答案:D6、以下对二维数组a的正确说明是一。

A.double a[l][4];B.float a(3)(4);C.floatf a(3,4);D.int a[3][];正确答案:A7、以下能对二维数组a进行正确初始化的语句是A. Int a[][3]={{l/2,3},(4,576}};B.int a⑵口={{1,0,1},{5,2,3}};C.int a ⑵[4]={{1,2,3},{4,5},{6}};D. int a[][3={{l/0/l},{},{l,l});正确答案:A8、若有说明:int a[3][4]={0};则下面正确的叙述是A.数组a中各元素都可得到初值,但其值不一定为0。

C语言数组练习题

C语言数组练习题

C程序设计(数组)12.23【题1】在C 语言中,引用数组元素时,其数组下标的数据类型允许是 C 。

A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式【题2】C语言中,数组名代表BA.数组全部元素的值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】合法的数组定义是DA.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代表空格)DA.输出abcd B.输出aC.输出abcd u u u u u D.编译不通过【题6】有以下语句,则下面是正确的描述Bstatic char x [ ]=“12345”;static char y[ ]={‘1’,‘2’,‘3’,‘4’,‘5’};A.x数组和y数组的长度相同。

AB.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 。

C语言练习题库----数组

C语言练习题库----数组

C语⾔练习题库----数组有如下语句 int a[10] = {1,2,3,4,5,6,7,8,9,10};int *p = a;则数值为9的表达式是______*p+9 b) *(p+8) c) *p+=9 d) p+7解析:B数组的下标是从 0 开始的,9 在 a [ 8 ] 这个位置上,p当前指向 a [ 0 ] ,所以需要向后移动8位,a和c 都是移动9位,d是地址偏移 7 位 .若有定义语句:int a[3][6];按在内存中存放的顺序,a数组的第10个元素是_____a[0][3] b) a[1][4] c) a[0][4] d) a[1][3]解析:D这个⼆维数组的正确理解⽅式应该是:定义了⼀个名字为a的数组,a数组⾥⾯有三个元素,每个元素包含6个int类型的变量,数组的第⼗个元素应该是a[0][6]之后的a[1][3],这个知识点的考察点在于要认识⼆维数组中的元素和指针都是怎么存储和指向的,指针是如何偏移的。

以下数组定义中错误的是______A. int x[][3] = {0};B. int x[2][3] = {{1,2}, {3,4}, {5, 6}};C. int x[][3] = {{1,2,3}, {4,5,6}};D. int x[2][3] = {1,2,3,4,5,6};解析:B第⼀个中括号表⽰数组当中元素的个数,第⼆个中括号表⽰每个元素中(类似⼀维数组的)变量的个数。

在定义⼆维数组的时候第⼆个中括号(元素的个数)是必须被定义的。

B中等号右边的正确定义应该是a[][2].若有说明:int i,j=2, *p=&i;, 则能完成i=j赋值功能的语句是_____A)*p=*&j; B)i=*p C)i+&j; D)i=**p;解析: A下列程序的运⾏结果是______int main(){int a[5][2] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};int* p = a; //p指向0 ,偏移量是int字节int (*p2)[2] = &a[1]; // p2指向{2,3}中的⾸地址,偏移量是int*[2]字节(两个int字节)++p; //p向后偏移⼀个int字节指向1++p2; //p2向后偏移两个int字节指向4printf("%d\n", *p);printf("%d\n", **p2);printf("%d\n", p2[1][2]); //p2 先向后偏移⼀个int*2字节(两个int) p2[1]再向后偏移两个int字节得到p2[1][2] 指向8return 0;}下⾯的程序输出结果为________#include <stdio.h>int main(){int a[] = {10,20,30,40,50};int *p = (int*)(&a+1); // &a的含义为a[]的地址,偏移量为5个int *p指向50后⾯的⼀个元素printf("%d %d\n",*(a+1),*(p-1)); // a为⾸元素的地址,偏移量为⼀个,所以指向20 p-1指向50的地址,间接引⽤后的结果为50 return 0;}。

C语言数组练习及答案

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语言数组编程练习题

c语言数组编程练习题

c语言数组编程练习题随着计算机科学和编程语言的发展,C语言一直被广泛使用于软件开发和算法设计。

在C语言中,数组是一种非常重要的数据结构,用于存储和操作一系列相同类型的数据。

通过编程练习题,我们可以让自己更好地理解和掌握数组的使用。

接下来,让我们来看一些具有挑战性的C语言数组编程练习题。

1. 倒置数组请编写一个函数,将一个整数数组中的元素按逆序进行排列,并将结果写入另一个数组。

例如,给定输入数组为{1, 2, 3, 4, 5},则输出数组应为{5, 4, 3, 2, 1}。

解决这个问题的一种方法是使用两个指针,一个指向数组的起始位置,另一个指向数组的末尾位置,然后逐个交换它们所指向的元素,直到指针相遇。

2. 查找数组中的最大元素请编写一个函数,从给定的整数数组中查找并返回最大的元素。

例如,给定输入数组为{4, 8, 2, 10, 5},则输出应为10。

解决这个问题的一种方法是将数组的第一个元素设置为最大值,然后遍历数组,依次比较每个元素与当前最大值的大小,如果遇到更大的元素,则更新最大值。

3. 数组元素的平均值请编写一个函数,计算一个整数数组中所有元素的平均值,并返回结果。

例如,给定输入数组为{2, 4, 6, 8, 10},则输出应为6。

解决这个问题的一种方法是遍历数组,将每个元素累加起来,然后将累加值除以数组的长度,即可得到平均值。

4. 查找数组中的重复元素请编写一个函数,从给定的整数数组中查找并返回所有重复的元素。

例如,给定输入数组为{1, 2, 3, 2, 4, 3},则输出应为{2, 3}。

解决这个问题的一种方法是使用嵌套循环,依次比较数组中的每个元素与其他元素是否相同,如果相同且尚未添加到结果数组中,则将其添加到结果数组中。

5. 数组元素的移动请编写一个函数,将给定的整数数组中的所有0元素移到数组的末尾,并保持其他元素的相对顺序不变。

例如,给定输入数组为{0, 1, 0, 3, 12},则输出应为{1, 3, 12, 0, 0}。

c语言数组练习题及答案

c语言数组练习题及答案

5*5 矩阵中每行的绝对值最大值,与同行对角线互换*/ #include "stdio.h"#include "math.h"void main(){int a[5][5]={{1,2,3,4,-5},{3,5,-2,4,2},{4,1,2,3,-2},{1,3,-2,4,6},{2,2,0,7,4}} ;int i,k,max,sub,temp;/* i循环变量,控制行,k 循环变量,控制列, max目前最大绝对值, sub目前最大绝对值元素的下标temp 暂时用于互换的变量*/printf("互换以前,输出\n"); /* 互换以前,输出*/for(i=0;i<=4;i++){for(k=0;k<=4;k++)printf("%4d",a[i][k]);printf("\n");}/* 互换 */for(i=0;i<=4;i++){/* 假定第一个元素最大 */max=fabs(a[i][0]);sub=0;/* 找寻绝对值最大的元素记下下标*/for(k=1;k<=4;k++){if(fabs(a[i][k])>max){max=fabs(a[i][k]);sub=k;}}/* 互换 */temp=a[i][i];a[i][i]=a[i][sub];a[i][sub]=temp;}/* 互换以后,输出 */printf("互换以后,输出\n");for(i=0;i<=4;i++){for(k=0;k<=4;k++)printf("%4d",a[i][k]);printf("\n");}}/* 在一个一维数组中寄存随意4 个数,如: 5 ,1 ,8 ,6 ,生成以下矩阵5555555511111551888155186815518881551111155555555*/#include "stdio.h"#include "conio.h"void main(){int FourNumbers[4], array[7][7], i , row, column;printf(" 请输入 4 个整数 \n");scanf("%d%d%d%d",&FourNumbers[0],&FourNumbers [1],&FourNumbers[2],&FourNumbers[3]);for(i=0;i<=3;i++){for(row=i;row<=6-i;row++){for(column=i;column<=6-i;column++)array[row][column]=FourNumbers[i];}}/* 输出矩阵*/for(row=0;row<=6;row++){for(column=0;column<=6;column++)printf("%4d",array[row][column]);printf("\n");}getch();}/*习题对一行电文加密,每个字母变换为字母表中循环右移的第三个字母,a-d, b-e, ......z-c */#include "stdio.h"void main(){int c;while((c=getchar())!='\n'){if( (c>='a' && c<='z') || (c>='A' && c<='Z') ){c=c+3;if ((c>'Z' && c<='Z'+3) || c>'z')c=c-26;}putchar(c);}}。

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

(数组)单元练习四一.单选1. 下面给出的是使用typedef 定义一个新数据类型的4项工作,如果要正确定义一个新的数据类型,进行这4项工作的顺序应当是______。

1.把变量名换成新类型名2.按定义变量的方法写出定义体3.用新类型名定义变量4.在最前面加上关键字typedefA. 2,4,1,3B. 1,3,2,4C. 2,3,4,1D. 4,2,3,12. 设有以下链表,则不能将q所指的结点插入到链表末尾的是______。

A. q->next=NULL;p=p->next;p->next=q;B. p=p->next;q->next= p->next; p->next=q;C. p=p->next;q->next= p; p->next=q;D. p=(*p).next;(*q).next= (*p).next; (*p).next=q;3. 阅读程序,选择正确的输出结果______。

#include <stdio.h>void main(){ union{ int i[2]; long k; char c[4]; } t, *s = &t;s->i[0] = 0x39; s->i[1] = 0x38;printf("%c\n",s->c[0]); }A. 39B. 9C. 38D. 84. 设有以下定义,则不正确的引用是______。

struct student{int age;int num;}stu,*p;p=&stu;A. stu.ageB. p->ageC. (*p).ageD. *p.age5. 设有以下说明union { int i; char c; float f; }a;则错误的叙述是______。

A. a所占的内存长度等于成员f的长度B. a的地址和它的各成员地址都是同一地址C. a可以作为函数参数D. 不能对a赋值,也不能在定义a时对它初始化6. 阅读程序,选择正确的输出结果______。

#include <stdio.h>void main(){ union{ char c; int i; }t;t.c = 'A'; t.i = 1;printf("%d,%d",t.c , t.i); }A. 65,1B. 65,65C. 1,1D. 以上都不对7. 结构体类型变量所占内存是______。

A. 各成员所需内存的总和B. 结构体中第一个成员所需内存量C. 结构体中占内存量最大者所需内存量D. 结构体中最后一个成员所需内存量8. 对结构体类型变量定义不正确的是______。

A. #define STUDENT struct studentB.struct studentSTUDENT { char name;{char name; int num;int num; }stu;}std;C. structD. struct{char name; {char name;int num; int num;}std; }student;struct student stu;9. 设有以下定义,则不正确的引用是______。

struct student{int age;int num;}*p;A. ( p++)->numB. p++C. (*p).numD. p=&student.age10. 设有以下定义,p指向num域的是______。

struct student{int num;char name[10];}stu,*p;A. p=&stu.num;B. *p=stu.num;C. p=(struct student *)&(stu.num);D. p=(struct student *)stu.num;11. 设有以下定义,则不正确的引用是______。

struct student{int age;char sex;char name[10];}stu[5],*p;p=stu;A. scanf("%s",stu[0].name);B. scanf("%d",&stu[0].age);C. scanf("%c",&(p->sex));D. scanf("%d", p->age);12. 阅读程序,选择正确的输出结果______。

#include <stdio.h>void main(){ union{ short int i[2]; long k; char c[4]; } t, *s = &t;s->i[0] = 0x39; s->i[1] = 0x38;printf ("%x\n",s->k); }A. 390038B. 380039C. 3938D. 383913. 以下对C语言中共用体类型数据的正确叙述是______。

A. 一旦外定义了一个共用体变量,即可引用该变量或该变量中的任意成员。

B. 一个共用体变量中可以同时存放其所有成员。

C. 一个共用体变量中不能同时存放其所有成员。

D. 共用体类型数据可以出现在结构体类型定义中,但结构体类型数据不能出现在共用体类型定义中。

14. C语言中结构体类型变量在程序执行期间______。

A. 所有成员一直驻留在内存中B. 只有一个成员驻留在内存中C. 部分成员驻留在内存中D. 没有成员驻留在内存中15. 选择一种格式填入,使下面程序段中指针p指向一个整型变量。

int *p;p=_______maclloc(sizeof(int));A. intB. int *C. (* int)D. (int *)16. 设有以下说明union { int i; char c; float a; }test;则sizeof(test)的值是______。

A. 4B. 5C. 6D. 717. 已知:union u{ int i; char ch; }temp;现在执行"temp.ch= 'a'" ,temp.i的值为______。

A. 266B. 256C. 97D. 118. 以下程序的输出结果是______。

typedef union {long a[2];int b[4];char c[8];}UN;UN u;main(){printf("%d\n",sizeof(u));}A. 32B. 16C. 8D. 2419. 以下程序输出为______。

#include "stdio.h"mai(){struct birthday{int year,month,day;}birth;printf("%d\n",sizeof(struct birthday));}A. 6B. 8C. 10D. 1220. 下面对枚举类型名的正确定义是______。

A. enum a={one,two,three};B. enum a {one=9,two=-1,three};C. enum a={"one","two","three"};D. enum a {"one","two","three"};二.多选1. 有以下定义:struct student{ int num;float score;}stu;则下面叙述正确的是______。

A. struct是结构体类型的关键字B. struct stu是用户定义的结构体类型C. stu是用户定义的结构体类型名D. num和score是结构体成员名三.判断1. 共用体类型变量的地址及其中所有成员的起始地址都不相同。

2. 共用体类型变量必须在不同时间内维持相同类型的成员值。

3. C语言中可以用typedef为类型定义新的类型名。

4. 可以用指向结构体的指针作为函数参数。

5. 同数组一样,可以对链表中的结点进行随机存取。

6. 链表在内存中可以是不连续存放的。

7. C语言中可以用typedef同#define一样,都是在预编译时处理的。

8. 枚举型变量只能取枚举类型定义中的某个枚举值,不能是其它值。

9. 链表是动态地进行存储分配的一种结构。

10. 链表中各结点的联系是通过指针来实现的。

11. 结构体类型变量中各成员名不能与程序中的其他变量同名。

12. 结构体类型变量中的成员不能是结构体类型。

13. 共用体也称为联合。

14. 可以把结构体类型变量作为整体进行输入、输出。

15. 在C编译系统中,枚举元素不能被赋值。

16. 在C语言中,可以定义不同类型的数据共享同一段内存区域,这种形式的数据构造类型称为结构体。

17. 结构体类型变量中各成员共用一段内存。

18. C语言中可以用typedef来定义变量。

19. 共用体类型变量在定义时进行的初始化,只能根据第一个成员的类型来进行。

20. 在C编译系统中,将枚举元素作为常量来处理。

21. 结构体类型变量可以在定义时赋初值。

22. 共用体类型变量可以在不同时间内维持不同类型的成员值。

23. 共用体中的所有成员是以同一个地址开始存放。

四.填空1. 下面程序的输出结果是________。

struct stu{ int x,*y;}*p;int d[4]={10,20,30,40};struct stu a[4]={50,&d[0],60, &d[1],70, &d[2] ,80,&d[3]};main(){ p=a;printf("%d,",++p->x);printf("%d,",(++p)->x);printf("%d\n",++(*p->y));}2. 设有以下定义:union{int i;char c;flaot f;}u;则共用体变量u在内存中占的字节数是________。

3. 以下程序的运行结果是________。

union un{ int a;int b;};union un s[4];union un *p;main(){ int n=1,i;for(i=0;i<4;i++){s[i].a=n; s[i].b=s[i].a+1; n=n+2;}p=&s[0];printf("%d,",p->a);printf("%d",++p->a);}4. 以下程序段定义一个结构体,使有两个域data和next,其中data存放整形数据,next为指向下一个结点的指针。

相关文档
最新文档