C语言程序设计练习题之 数组与结构体
c语言数组和结构题库
c语言数组和结构题库第四章数组和结构一、选择题1. 有结构型定义如下:struct person{char name[20];int age;int sex;}w[5],*p=w;那么下面scanf语句中对结构变量成员不正确的引用是( )。
A(scanf(“%s”,w[0].name); B(scanf(“%d”,&w[0].age);C(scanf(“%d”, &(p->sex)); D(scanf(“%d”, p->age); 答:D2. 处理字符串必须调用 (1) ,且首先要声明预编译命令 (2) 。
不能用赋值运算符“=”对字符串赋值,应调用 (3) 函数;也不能用关系运算符“= =”、“>”、“<”对字符串进行比较,应调用 (4) 函数。
答案:(1)字符串库函数 (2)# include <string.h> (3)strcpy (4)strcmp3. 有如下程序段:char str[14]={"I am "};strcat(str, "sad !");scanf("%s", str);printf("%s", str);当输入为happy~<CR>时,输出的结果是( )。
(A)I am sad! (B)happy!(C)I am happy! (D)happy!ad!答案:(B)4. 以下对二维数组a进行不正确初始化的是。
A(int a[ ] [3]={3,2,1,1,2,3};B(int a[ ] [3]={{3,2,1},{1,2,3};C(int a[2] [3]={{3,2,1},{1,2,3}};D(int a[ ] [ ]={{3,2,1},{1,2,3}}; 答案:D5. 以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。
C语言数组练习及答案
C语言数组练习及答案第四部分数组4.1 选择题1. 以下关于数组的描述正确的是(c )。
A. 数组的大小是固定的,但可以有不同的类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C. 数组的大小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同的类型的数组元素2. 以下对一维整型数组a的正确说明是(d )。
a(10); B. int n=10,a[n];n; D. #define SIZE 10scanf("%d",&n); int a[SIZE];int a[n];3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是(c )。
A. 整型常量B. 整型表达式C. 整型常量或整型表达式D. 任何类型的表达式4. 以下对一维数组m进行正确初始化的是(c )。
A. int m[10]=(0,0,0,0) ;B. int m[10]={ };C. int m[ ]={0};D. int m[10]={10*2};5. 若有定义:int bb[ 8];。
则以下表达式中不能代表数组元bb[1]的地址的是(c )。
A. &bb[0]+1B. &bb[1]C. &bb[0]++D. bb+16. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是(d )。
A. 3B. 6C. 10D. 207. 若有以下说明: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]8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入(a )。
#include<>main(){int a[10],i=0;while(i<10) scanf("%d",________ );┇}A. a+(i++)B. &a[i+1]C. a+iD. &a[++i]9. 执行下面的程序段后,变量k中的值为(a )。
C语言程序设计练习题之数组与结构体
一、单项选择题(在每小题列出的四个备选项中只有一个是符合题目要求的。
) 1.若有定义 int a[4] = {l, 2, 3, 4};则 a[a[0]+2 * a[2]-a[3]]等于A. 1B. 2C. 3D. 42 .设有数组定义:char array [ ]=〃China 〃;则数组array 所占的空间为A. 4个字节B. 5个字节C. 6个字节D. 7个字节3 .设有定义 char a 口=“xyz”, b □二{'x',' y',' z'};,则语句 cout«sizeof (a)«* ,,«sizeof (b) «endl;的输出结果为 A. 3 3B. 3 4C. 4 3D. 4 44 .设 int b[ ][5]={1,2,3,4,5,6,7};,则元素 b[l] [2]的值是A. 0B. 2C. 6D. 75 .数组定义为int a L2J [3j={1, 2, 3, 4, 5, 6},值为1的数组元素是A. a [0] [0] B, a [1] [1] C. a [1] [2] D. a [2] [3]6 . C++中,若有说明:int a[3] [4];则对a 数组元素的正确引用是9 .设 char x[][10] = {〃Windows 〃,〃dos 〃,〃unix 〃};,执行 cout«x[l][2];后输出的结果是A. nB. iC. oD. s10 .以下叙述中错误的是A.对于double 类型数组,不可以直接用数组名对数组进行整体输入或输出B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界” 的出错信息D.可以通过赋初值的方式确定数组元素的个数11 .设#pragma pack(l),则结构体类型变量占用内存的字节数是A.各成员占用内存字节数之和B.第一个成员占用的内存字节数C.占用内存最大成员所需的字节数D.最后一个成员占用的内存字节数12 .下面程序运行后,输出结果是#include <iostream> using namespace std;数组与结构体A. a[2][4] B, a[l + l][0] 7 .定义二维数组并初始化,正确的是A.mta[][]={l,2,3,4,5,6}; C.inta[][3]={ 1、2,3,4,5,6}; 8 .以下数组定义中,不正确的是A. inta[2][3];C. int c[100][100]={0};C. a(2)(l)D. a[l,3] B.int a[2][]={ 1,2,3,4,5,6};D.inta[2,3]={ 1,2,34,5,6};B. mt b[][3]={0,l,2,3);D. mt d[3][]={]l,2},{l,2,3},{l,2,3,4}};21int/mtp[8]={l,2,3,4,5,6,7,8}J=0,j=0;while(i++<7)if(p[i]%2) j+=p[i];cout<<j«endl;return 0;}A. 15B. 16C. 20D. 3613.下面程序运行后,输出结果是#include <iostream>using namespace std;int main()int a[3][3]={{l,2},{3,4},{5,6}},ij,s=0;fbr(i=l;i<3;i++)砧i(J=0jv=i;j++)s+=a[i][j];cout«s«endl;retuin 0;}A. 18B. 19C. 20D. 2114.下面程序运行后,输出结果是#mclude<iostieam>using namespace std;int main(){ mt a[3][3]={l,2,3,4,5,6,7,8,9},n,sum=0;fdi(n=0;n<3;n++)sum=sum+a [n] [n];cout«sum«endl;return 0:}A. 6B. 12C. 15D. 4515.下面程序运行后,输出结果是#include <iostream>using namespace std;stmct abc{ mt a, b, c; };int main。
C语言结构体习题及答案
第9章结构体1.定义以下结构体类型struct s{int a;char b;float f;};则语句printf("%d",sizeof(struct s))的输出结果为【】。
A) 3 B) 7 C) 6 D) 42.当定义一个结构体变量时,系统为它分配的内存空间是【】A)结构中一个成员所需的内存容量B)结构中第一个成员所需的内存容量C)结构体中占内存容量最大者所需的容量D)结构中各成员所需内存容量之和3.定义以下结构体类型struct s{ int x;float f;}a[3];语句printf("%d",sizeof(a))的输出结果为【】A) 4 B) 12 C) 18 D) 64.定义以下结构体数组struct c{ int x;int y;}s[2]={1,3,2,7};语句printf("%d",s[0].x*s[1].x)的输出结果为【】A) 14 B) 6 C) 2 D) 215.运行下列程序段,输出结果是【】struct country{ int num;char name[10];}x[5]={1,"China",2,"USA",3,"France",4, "England",5, "Spanish"};struct country *p;p=x+2;printf("%d,%c",p->num,(*p).name[2]);A) 3,a B) 4,g C) 2,U D) 5,S6.下面程序的运行结果是【】。
struct KeyWord{char Key[20];int ID;}kw[]={"void",1,"char",2,"int",3,"float",4,"double",5};main(){printf("%c,%d\n",kw[3].Key[0], kw[3].ID);}A) i,3 B) n,3 C) f,4 D) l,47.定义以下结构体类型struct student{char name[10];int score[50];float average;}stud1;则stud1占用内存的字节数是【】。
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. 习题四:数组元素逆序排列题目描述:编写一个程序,将给定整型数组的元素逆序排列,并输出结果。
结构体例题
结构体例题一、以下关于结构体定义的描述中,哪一项是正确的?A. 结构体可以包含不同类型的数据项B. 结构体只能包含相同类型的数据项C. 结构体定义后不能直接使用,必须先声明D. 结构体变量在定义时不能初始化(答案:A)二、在C语言中,如何访问结构体成员?A. 使用结构体变量名直接访问B. 使用结构体变量名加点号再加成员名C. 使用结构体类型名加点号再加成员名D. 使用结构体指针解引用后直接访问(答案:B)三、以下哪个关键字用于定义结构体类型?A. classB. structC. unionD. enum(答案:B)四、关于结构体数组,以下说法错误的是?A. 结构体数组中的每个元素都是结构体类型的变量B. 结构体数组可以像普通数组一样进行遍历C. 结构体数组不能作为函数参数传递D. 可以通过下标访问结构体数组中的特定元素(答案:C)五、以下哪个操作不能对结构体变量进行?A. 赋值B. 比较大小(使用, !=等)C. 取地址D. 作为函数返回值(答案:B,注:结构体变量通常不能直接使用或!=进行比较,除非逐个成员比较)六、在定义结构体时,以下哪项不是必须的?A. 结构体名B. 结构体成员类型C. 结构体成员名D. 结构体成员初始化值(答案:D)七、关于结构体指针,以下说法正确的是?A. 结构体指针不能直接访问结构体成员B. 结构体指针需要先解引用才能访问结构体成员C. 结构体指针不能直接赋值给另一个结构体指针变量D. 结构体指针不能用于动态内存分配(答案:B)八、以下哪种情况适合使用结构体?A. 当需要存储多个相同类型的数据时B. 当需要存储一个由多种类型数据组成的数据集合时C. 当需要对数据进行排序时D. 当需要进行大量的数学运算时(答案:B)九、在C语言中,如何声明一个结构体类型的指针?A. struct MyStruct *ptr;B. struct MyStruct ptr*;C. struct *MyStruct ptr;D. struct MyStruct* ptr[];(答案:A)十、关于结构体嵌套,以下说法错误的是?A. 结构体可以嵌套在其他结构体中作为成员B. 嵌套的结构体成员可以通过多级点号运算符访问C. 结构体不能嵌套自身作为成员,会导致无限递归D. 嵌套的结构体使得数据结构更加复杂和灵活(答案:C,注:结构体可以嵌套自身,但需要通过指针等方式避免无限递归的问题)。
C语言练习3(数组)=参考解答
C语言(数组)一、选择题1. 设有程序:main(){ int i,a[11];printf("给数组赋值:\n");for (i=0;i<=10;i++)scanf("%d",( ));... ...printf("输出数组:\n");for(i=0;i<=10;i++)printf("%d,",( ));}则在程序中的两个园括号中分别应填入:CA) &a[i]和&a[i]B) a[i]和&a[i]C) &a[i]和a[i]D) a[i]和a[i]2. 设已定义:int a[15]; 则数组a占用的内存单元数是( C ).A) 15 B) 16 C) 30 D) 323. 阅读程序:main(){ int a[2]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) a[j]=a[i]+1;printf("%d\n",a[k]);}以上程序的输出结果是( D ).A) 1 B) 3 C) 2 D) 不确定的值4. 阅读程序:f(int b[],int n){ int i,r=1;for(i=0;i<=n;i++) r=r*b[i];return r;}main(){ int x,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}以上程序的输出结果是( D ).A) 720 B) 6 C)24 D) 1205. 以下定义语句中,错误的是( B ).A) int a[ ] = {6,7,8};B) int n=5, a[n];C) char a[ ]= "string";D) char a[5 ]={'0','1','2','3','4'};6. 以下描述中正确的是( D ).A) 数组名后面的常量表达式用一对圆括弧括起来B) 数组下标从1开始C) 数组下标的数据类型可以是整型或实型D) 数组名的规定与变量名相同7. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'};指出以下错误语句( AB ).A) scanf("%c",a[0]);B) scanf("%s",&a);C) printf("%c",a[3]);D) printf("%s",a);8.若定义数组int a[10] ,其最后一个数组元素为( C ).A) a[0]C) a[9]D) a[10]9. 若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立( B )?A) a[8] 的值为0B) a[1] 的值为1C) a[3] 的值为4D) a[9] 的值为010. 指出以下错误语句( A ).A) int n=10,a[n];B) int n,a[10];C) int a[10]={1,2,3};D) int a[10]={1,2,3,4,5,6,7,8,9,10};11. 请读程序:main(){int n[2],i,j,k;for(i=0;i<2;i++) n[i]=0;k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) n[j]=n[i]+1;printf("%d\n",n[k]);}上面程序的输出结果是( A ).A)不确定的值 B)3 C)2 D)112. 若有以下的定义和语句:int str[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='e',则数值为2的表达式是( C ).A)str['g'-c] B)str[2] C)str['d'-'c'] D)str['d'-c]13. 设有数组定义:int a[5];则下列给数组元素赋值错误的是( B ).B) scanf("%c",a[3]);C) a[3]=getchar();D) a[3]='a'+3;14. 以下数组定义中错误的是( D ).A) #define N 30int a[N+30];B) #define N 30int a[N];C) int a[30];D) int a[N];15. 在定义一个一维数组时,不能用来表示数组长度的是( D ).A)常量 B)符号常量 C)常量表达式 D) 已被赋值的变量16. 若float型变量占用4个字节,有定义float a[20]={1.1,2.1,3.1};则数组a在内存中所占的字节数是( D ).A)12 B)20 C)40 D)8017. 设已定义:int x[2][4]={1,2,3,4,5,6,7,8}; 则元素x[1][1]的正确初值是( A ).A) 6 B) 5 C) 7 D) 118. 设有定义:int a[][3]={{1,2,3},{4,5,6},{7,8,9}}; 则a[1][2]的初值为( C ).A) 2 B) 4 C) 6 D) 819. 设有:int a[4][5]; 则数组a占用的内存字节数是( C ).A) 12 B) 24 C) 40 D) 2020. 以下数组定义中,不正确的是( B ).A) int b[3][4];B) int c[3][ ]={{1,2},{1,2,3},{4,5,6,7}};C) int b[200][100]={0};D) int c[ ][3]={{1,2,3},{4,5,6}};21. 定义数组:int x[2][3]; 则数组x 的维数是( 2 ).A) 1 B) 2 C) 3 D) 622. 若定义数组并初始化int b[2][3]= { 1,2,3,4,5,6},以下语句哪一个成立( C )?A) 表达式b[1][2]的值为1B) 表达式b[1][2]的值为4C) 表达式b[1][2]的值为6D) 表达式b[1][2]的值为223. 若定义数组并初始化int a[2][3]={{1,2,3},{4,5,6}};for(i=0;i<2;i++)for(j=0;j<3;j++)printf("%d",a[i][j]);语句的结果是哪一个( C )?A) 1,2,3,4,5,6B) 1 2 3 4 5 6C) 12345624. 若定义数组并初始化int a[2][3]= {{1,2, 3},{4,5,6}};以下语句哪一个不成立( B )?A) a数组中有6个元素B) a[2][3]是a数组的最后一个元素的引用C) a数组中每个元素都为整数D) a数组是整型数组25. 定义如下变量和数组:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是( C ).for(i=0;i<3;i++) printf("%d",x[i][2-i]);A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 926. 如有以下定义:double s[][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};则数值为2的元素是( C ).A) s[1][3] B) s[0][3] C) s[0][2] D) s[1][2]27. 以下程序的输出结果是( A ).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",s);}A) 18 B) 19 C) 20 D) 2128. 若已有char b[10][50];则该二维字符数组在内存所占字节数为( D ).A) 10 B)50 C)60 D)50029. 设有:char a[10]; 下列语句那个是正确的( D )?A) scanf("%s",a[0]);B) scanf("%s",&a);C) printf("%s",a[0])D) printf("%s",a)30. 阅读程序:main(){ char a[10];int i;for(i=1;i<=5;i++)scanf("%c",&a[i]);printf("%c",a[0]);}设从键盘输入字符串:abcde,则程序的输出结果是( C ).A) a B)空格 C)不确定D)031. 合法的数组定义是( 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'};32. 设有数组定义:char string[ ]="China";则数组string所占的空间为( B ).A) 5个字节B) 6个字节C) 7个字节D) 10个字节33. 定义字符数组c:char c[ ]={"c language"};数组c在内存中所占字节数是( C ).A) 9 B) 10 C) 11 D) 1234. 指出以下错误语句( C ).A) char a[10]={'0','1','2','3','4','5','6','7','8','9'};B) char a[10]={'0','1 ','2','3'};C) char a[2]= {"1","2"};D) char a[2]= {'a’,'b’};35. 若定义数组并初始化char a[10]={"hello"},该数组的元素个数是( A ).A) 10B) 5C) 6D) 736. 若定义数组并初始化char a[10]={"HELLO"},该数组的元素中 a[2]是( A ).A) 'L'B) 'E'C) 'H'D) 'O'37. 若定义数组并初始化int b[10]={ 1,2,3,4},以下哪几个语句成立( A C D)?A)b[8]的值为0B)b[1]的值为1C)b[3]的值为整数D)b[10]不是b数组中的元素38. 若定义数组int a[10];指出下列错误语句:ABCDA) a数组共有10个元素,其引用方法是:a[1],a[2]...a[10];B) a数组是整型数组,其元素自动初始化为0;C) a数组最后一个元素的引用方法是a[10];D) a数组第一个元素的引用方法是a[1];二、判断题1.数组是数目固定的若干变量的有序集合,数组中各元素的类型可以不同。
C语言程序设计专项训练题之 结构体
计算机等级考试二级C语言程序设计专项训练题——结构体一.程序填空题1.给定程序中,通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。
函数fun的功能是:输出这位学生的信息。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!#include <stdio.h>typedef struct{int num;char name[9];char sex;struct { int year,month,day;} birthday;float score[3];}STU;/**********found**********/void show(STU ___1___){int i;printf("\n%d %s %c %d-%d-%d",tt.num,,tt.sex,tt.birthday.year,tt.birthday.month,tt.birthday.day);for(i=0; i<3; i++)/**********found**********/printf("%5.1f", ___2___);printf("\n");}int main( ){STU std={1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0};printf("\nA student data:\n");/**********found**********/show(___3___);return 0;}2.人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。
函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。
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语言程序与设计基础知识试题及答案一、单项选择题(每题2分,共20分)1. C语言中,用于定义结构体的关键字是:A. structB. unionC. enumD. typedef答案:A2. 下列哪个选项是C语言中的合法整型常量?A. 0x12B. 0123C. 0.12ED. 12e答案:A3. 在C语言中,用于定义数组的关键字是:A. arrayB. listC. vectorD. none of the above答案:D4. 下列哪个函数用于将字符串转换为浮点数?A. atoiB. atofC. itoaD. sprintf答案:B5. C语言中,用于文件操作的库函数是:A. stdio.hB. string.hC. math.hD. stdlib.h答案:A6. 下列关于指针的描述,错误的是:A. 指针可以存储变量的地址B. 指针可以存储一个值C. 指针可以作为函数的参数D. 指针可以作为函数的返回值答案:B7. 在C语言中,用于定义函数的关键字是:A. functionB. defineC. defD. void答案:D8. 下列哪个选项不是C语言中的控制结构?A. if-elseB. switch-caseC. forD. goto答案:D9. 下列哪个选项是C语言中的合法变量名?A. 2variableB. variable2C. variable_2D. all of the above答案:D10. C语言中,用于定义枚举类型的关键字是:A. enumB. typedefC. structD. union答案:A二、填空题(每题2分,共10分)1. C语言中,用于定义一个名为“person”的结构体,包含姓名和年龄两个成员,正确的定义方式是:struct person { char name[50];int age; }。
答案:正确2. 在C语言中,使用________函数可以输出格式化的字符串到控制台。
C语言之结构体练习题
9.3.1 选择题选择题2.有以下程序输出结果是( )。
#include<stdio.h>struct stu{int num;char name[10];int age;};void fun(struct stu *p){printf("%s\n",(*p).name);}main(){struct stu students[3]= {{9801,"Zhang",20},{9802,"Wang",19},{9803,"Zhao",18}};fun(students+2);}A.ZhangB.ZhaoC.WangD.184.设有如下定义:struct sk{int a;float b;} data,*p;若有p=&data;则对data中的a 域的正确引用是( )。
A6.根据下面的定义,能打出字母M的语句是( )。
struct person{char name[9];int age;}struct person class[10]={ 〞John〞,17, 〞Paul〞,19, 〞Mary〞,18, 〞Adam〞,16};A.printf(〞%c\n〞,class[3].name);B.printf(〞%c\n〞,class[3].name[1]);C.printf(〞%c\n〞,class[2].name[1]);D.printf(〞%c\n〞,class[2].name[0];7. 下列程序的执行结果为( )。
#include<stdio.h>struct s1{char *s;int i;struct s1 *sip;}main(){static struct s1 a[]={{"abcd",1,a+1},{"efgh",2,a+2},{"ijkl",3,a}};struct s1 *p=a;int i=0;printf("%s%s%s",a[0].s,p->s,a[2].sip->s);printf("%d%d",i+2,--a[i].i);printf("%c\n",++a[i].s[3]); //VC下运行,出现错误}A.abcd abcd abcd 2 0 eB.abcd efgh ijkl 2 0 eC.abcd abcd ijkl 2 0 eD.abcd abcd abcd 2 1 e8. 下面程序的输出结果为( )。
C语言程序设计:第11章 复习C语言的数组与结构体
注意: 数组名传递给函数的是一个地址值,在函数中
引用的将是实参的数组元素,编译器只为形参开辟一 个存放地址的存储单元。
13ቤተ መጻሕፍቲ ባይዱ
二维数组的练习
思维一转天地宽
24
课后作业与预习
课后作业: 完成对应的实训报告2 预习: 预习第三次课--递归调用、作用域与存储类别 的知识
25
THANKS
26
int i = 0,j = 0;
for(i=0;i<M;i++)//行下标遍历
{
for( j=0;j<N;j++)//列下标遍历
{
printf("%d\t",arr[i][ j]);
}
printf("\n");
}
return 0;
}
11
复习二维数组(作为函数参数)
课堂练习:1.定义一个输出二维数组所有元素的函数。
4
复习一维数组(一维数组的遍历)
课堂练习:编写程序从键盘上接收10个整数存到一个一维数组中,之后
在屏幕上逐个输出这10个数。
#include <stdio.h>
#define ARR_SIZE 10
int main(void)
{
int a[ARR_SIZE] = {0}; int i = 0;
for(i = 0; i < ARR_SIZE ; i++)
int main(void) { //定义别名后,原先的结构体名称也可以用
c语言设计试题及答案
c语言设计试题及答案C语言设计试题及答案1. 写出C语言中定义一个结构体的语法格式。
答案:在C语言中,定义一个结构体的语法格式如下:```cstruct 结构体名 {成员列表;};```其中,结构体名是结构体的名称,成员列表是结构体成员的声明。
2. 说明C语言中数组和指针的区别。
答案:C语言中数组和指针的主要区别包括:- 数组是一组相同类型的元素的集合,而指针是一个变量,它存储了另一个变量的内存地址。
- 数组名本身是一个常量,它不能被改变,而指针变量的值可以改变。
- 数组的大小在编译时确定,指针的大小在运行时确定。
- 数组在内存中是连续存储的,而指针可以指向任意位置。
3. 编写一个C语言函数,实现将一个整数数组反转的功能。
答案:```c#include <stdio.h>void reverseArray(int arr[], int size) {int temp;for (int i = 0; i < size / 2; i++) {temp = arr[i];arr[i] = arr[size - 1 - i];arr[size - 1 - i] = temp;}}int main() {int array[] = {1, 2, 3, 4, 5};int n = sizeof(array) / sizeof(array[0]);reverseArray(array, n);for (int i = 0; i < n; i++) {printf("%d ", array[i]);}return 0;}```该函数通过交换数组的元素来实现数组的反转。
4. 解释C语言中宏定义的作用。
答案:C语言中的宏定义使用预处理指令`#define`来实现。
它允许程序员定义一个名称,该名称可以被替换为一个字符串。
宏定义通常用于定义常量、创建复杂的表达式、创建条件编译指令等。
c语言程序设计第2版习题答案
c语言程序设计第2版习题答案1. 基础语法练习题- 题目:编写一个程序,计算并输出1到10的和。
- 答案:使用一个循环结构,累加1到10的数值。
```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 10; ++i) {sum += i;}printf("The sum from 1 to 10 is: %d\n", sum);return 0;}```2. 数组和字符串练习题- 题目:编写一个程序,找出一个字符串中出现次数最多的字符,并输出它。
- 答案:使用数组来统计每个字符的出现次数,然后找出最大值。
```c#include <stdio.h>#include <string.h>int main() {char str[] = "example string";int maxCount = 0;char maxChar = str[0];int charCount[256] = {0};for (int i = 0; str[i] != '\0'; ++i) {charCount[(int)str[i]]++;if (charCount[(int)str[i]] > maxCount) { maxCount = charCount[(int)str[i]];maxChar = str[i];}}printf("The most frequent character is: %c\n", maxChar);return 0;}```3. 函数和指针练习题- 题目:编写一个函数,交换两个整数的值。
- 答案:使用指针来实现参数的传递。
```c#include <stdio.h>void swap(int *x, int *y) {int temp = *x;*x = *y;*y = temp;}int main() {int a = 5, b = 10;printf("Before swap: a = %d, b = %d\n", a, b);swap(&a, &b);printf("After swap: a = %d, b = %d\n", a, b);return 0;}```4. 结构体和文件操作练习题- 题目:定义一个结构体,包含学生姓名、学号和成绩,编写程序,将学生信息存储到文件中。
c语言结构体类型的编程题
c语言结构体类型的编程题当涉及到C语言结构体类型的编程题时,通常会涉及到定义结构体、访问结构体成员、结构体数组、结构体指针、结构体作为函数参数等方面的内容。
以下是一些可能涉及到的编程题目和解答:1. 定义一个表示学生的结构体,包括学生的姓名、年龄和成绩。
然后编写一个函数来打印学生的信息。
c.#include <stdio.h>。
struct Student {。
char name[50];int age;float score;};void printStudent(struct Student s) {。
printf("Name: %s\n", );printf("Age: %d\n", s.age);printf("Score: %.2f\n", s.score);}。
int main() {。
struct Student s1 = {"Alice", 20, 85.5}; printStudent(s1);return 0;}。
2. 定义一个表示日期的结构体,包括年、月和日。
然后编写一个函数来比较两个日期的先后顺序。
c.#include <stdio.h>。
struct Date {。
int year;int month;int day;};int compareDate(struct Date d1, struct Date d2) {。
if (d1.year > d2.year) {。
return 1;} else if (d1.year < d2.year) {。
return -1;} else {。
if (d1.month > d2.month) {。
return 1;} else if (d1.month < d2.month) {。
return -1;} else {。
c语言程序设计试题及答案解析
c语言程序设计试题及答案解析一、选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 以下哪个函数用于将字符串复制到另一个字符串中?A. strcat()B. strcpy()C. strcmp()D. strlen()答案:B3. 在C语言中,以下哪个选项表示十六进制数?A. 0x1AB. 0b1010C. 0.1e2D. 01A答案:A4. 关于C语言中的数组,以下说法正确的是?A. 数组的大小在定义后可以改变B. 数组的大小在定义后不能改变C. 数组可以存储不同类型的数据D. 数组可以不指定大小答案:B5. 在C语言中,以下哪个运算符用于取地址?A. *B. &C. %D. #答案:B6. 下列哪个选项是合法的C语言变量名?A. 2variableB. variable_nameC. _intD. variable-name答案:B7. 在C语言中,以下哪个关键字用于定义一个函数?A. functionB. defineC. voidD. int答案:C8. 以下哪个选项是C语言中的逻辑运算符?A. &&B. ||C. %=D. +=答案:A9. 在C语言中,以下哪个选项用于声明一个整型指针?A. int *p;B. int *p[];C. int *p[10];D. int *p[10][10];答案:A10. 关于C语言中的文件操作,以下说法正确的是?A. 文件必须在程序开始前打开B. 文件可以在程序运行时打开C. 文件只能在程序结束时关闭D. 文件不能在程序运行时关闭答案:B二、填空题(每题2分,共20分)1. 在C语言中,使用________运算符可以对变量进行自增操作。
答案:++2. 定义一个名为`sum`的函数,该函数接受两个整数参数并返回它们的和,函数定义的格式为:________。
c程序设计试题及答案
c程序设计试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述,不正确的是()。
A. C语言是一种高级语言B. C语言可以直接被计算机执行C. C语言具有结构化的特点D. C语言具有丰富的库函数答案:B2. 在C语言中,用于定义一个结构体的关键字是()。
A. structB. unionC. enumD. typedef答案:A3. 下列关于C语言中数组的描述,正确的是()。
A. 数组必须初始化B. 数组的大小在编译时确定C. 数组的下标从0开始D. 数组可以作为函数的参数答案:B4. 在C语言中,用于表示逻辑“与”操作的运算符是()。
A. &&B. ||C. !D. &答案:A5. 下列关于C语言函数的描述,不正确的是()。
A. 函数可以没有返回值B. 函数可以有多个返回值C. 函数的返回值类型必须在函数声明时确定D. 函数可以被递归调用答案:B6. 在C语言中,用于定义一个指针的语句是()。
A. int *p;B. int p;C. int *p = 0;D. int p = 0;答案:A7. 下列关于C语言中文件操作的描述,正确的是()。
A. 文件操作只能使用文本方式B. 文件操作只能使用二进制方式C. 文件操作可以使用文本方式或二进制方式D. 文件操作不能同时读写答案:C8. 在C语言中,用于表示逻辑“或”操作的运算符是()。
A. &&B. ||C. !D. &答案:B9. 下列关于C语言中循环的描述,正确的是()。
A. for循环不能嵌套B. while循环可以嵌套C. do-while循环至少执行一次D. 循环中可以使用break语句答案:C10. 在C语言中,用于表示逻辑“非”操作的运算符是()。
A. &&B. ||C. !D. &答案:C二、填空题(每题2分,共20分)1. 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语言结构体试题及答案1. 定义一个结构体,包含学生的姓名、学号和成绩。
```cstruct Student {char name[50];int id;float score;};```2. 编写一个函数,计算结构体数组中所有学生的平均成绩。
```cfloat calculateAverageScore(struct Student students[], int size) {float sum = 0.0;for (int i = 0; i < size; i++) {sum += students[i].score;}return sum / size;}```3. 给定一个结构体数组,编写一个函数,返回成绩最高的学生。
```cstruct Student* findHighestScoreStudent(struct Student students[], int size) {struct Student* highest = students;for (int i = 1; i < size; i++) {if (students[i].score > highest->score) {highest = &students[i];}}return highest;}```4. 编写一个函数,将结构体数组中的学生信息打印出来。
```cvoid printStudents(struct Student students[], int size) { for (int i = 0; i < size; i++) {printf("Name: %s, ID: %d, Score: %.2f\n", students[i].name, students[i].id, students[i].score);}}```5. 如何定义一个结构体,其中包含另一个结构体类型的成员?```cstruct Inner {int a;float b;};struct Outer {struct Inner inner;char c[100];};```6. 编写一个函数,交换两个结构体变量的值。
c语言程序设计考试题结构体
C语言程序设计考试题中,结构体是常见的一种数据类型,通常会涉及到下列相关考点:
1. 结构体的定义和初始化
结构体是一种用户自定义的数据类型,它可以包含多个不同类型的数据成员。
在考试中,会考察考生对结构体的定义和初始化方式是否熟悉,以及如何访问结构体成员。
2. 结构体作为函数参数传递
结构体可以作为函数的参数进行传递,这样可以方便地传递多个参数信息,同时也能够将相关的数据封装在一起,增加代码的可读性。
3. 结构体指针的使用
结构体指针可以用于访问结构体成员,也可以方便地将结构体作为函数的参数进行传递,此外还可以通过结构体指针来动态分配内存空间。
4. 结构体数组的使用
结构体数组是一种常见的数据类型,它可以存储多个结构体变量,每个结构体变量又可以包含多个数据成员。
在考试中,可能会考察考生对结构体数组的定义、初始化以及访问方式是否熟悉。
5. 结构体与文件操作
结构体可以方便地将多个数据成员存储在一个结构体变量中,同时也可以使用文件操作将结构体数据读取或写入到文件中,以实现数据的长期存储和管理。
总之,在考试中,需要对结构体的定义、初始化、访问方式、结构体指针、结构体数组、文件操作等相关知识点进行充分理解,并且能够熟练地运用到实际编程中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int main( )
{
int score[1000],sum=0,n=0,ave,x,i;
cout<<"Enter mark:"; cin>>x;
while(x>0)
{
sum+___________; //(1)
score[n]=__________; //(2)
for(i=1;i<3;i++)
for(j=0;j<=i;j++)
s+=a[i][j];
cout<<s<<endl;
return 0;
}
A.18B.19C.20D.21
14.下面程序运行后,输出结果是
#include<iostream>
using namespace std;
int main( )
{int a[3][3]={1,2,3,4,5,6,7,8,9},n,sum=0;
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.int a[2][3];B.int b[ ][3]={0,1,2,3};
A.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B.数组名代表的是数组所占存储区的首地址,其值不可改变
C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D.可以通过赋初值的方式确定数组元素的个数
11.设#pragma pack(1),则结构体类型变量占用内存的字节数是
return 0;
}
6.从键盘输入一个字符串(设其最大长度为80个字符),判断其是否是回文。若是输出“Yes”,否则输出“No”。回文是指正向、反向的拼写都一样。例如:ABCBA、aaaa等是回文;china、ABC等不是回文。
#include <iostream>
cout<<endl;
return 0;
}
4.统计从键盘输入的字符($作为结束)中每个小写英文字母出现的个数,并输出统计结果。程序中n[0]、n[1]、···、n[25]分别存放小写字母‘a’、‘b’、···、‘z’出现的个数。
#include <iostream>
using namespace std;
int main( )
{
char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int c[64],base,i;
long n;
cout<<"Enter a number:"; cin>>n;
cout<<"Enter new base:"; cin>>base;
int main( )
{
int n[26]={0},k;
char ch;
cin>>ch;
while(_______________)//(1)
{
if(ch>='a' && ch<='z')
n[___________]++;//(2)
cin>>ch;
}
for(k=0;_______________;k++)//(3)
i=0;
do
{
c[i]=______________;//(1)
i++;
n=_________________;//(2)
} while(n!=0);
cout<<"Transmite new base:";
for(--i;i>=0;--i)
cout<<__________________;//(3)
{
cout<<(char)(k+'a')<<":"<<n[k]<<" ";
if ((k+1)%5==0) cout<<endl;
}
cout<<endl;
return 0;
}
5.从键盘上输入若干个学生的成绩,统计计算出平均成绩(取整数),并输出低于平均分的学生成绩,用输入负数结束输入。
#include <iostream>
int main( )
{
char ch[]={"12yue25ri"};
int i,s=0;
for(i=0;ch[i]>='0' && ch[i]<='9';i++)
s=10*s+ch[i]-'0';
cout<<s<<endl;
return 0;
}
4.#include <iostream>
using namespace std;
int main( )
{
int n=0;
char str[80]="Beijing-China 2008";
cout<<str<<endl;
while(str[n]!='\0')
str[n++]=str[n]>='a' && str[n]<='z' ? str[n]-'a'+'A':str[n];
cout<<str<<endl;
for(i=0;j<4;i++)
for(j=0;j<=i;j++)
if(a[i][j]!=a[j][i])
{found=1;break;}
if(found) cout<<"No!"<<endl;
else cout<<"Yes!"<<endl;
return 0;
}
7.#include <iostream>
cin>>______________; //(1)
max=a[0];
sub=0;
for(n=1 ;n<10 ;n ++ )
{
if(a[n]>max)
{
max=______________;//(2)
sub=______________;//(3)
}
}
cout <<"max="<<max<<endl;
A.各成员占用内存字节数之和B.第一个成员占用的内存字节数
C.占用内存最大成员所需的字节数D.最后一个成员占用的内存字节数
12.下面程序运行后,输出结果是
#include <iostream>
using namespace std;
int main()
{
int p[8]={1,2,3,4,5,6,7,8},i=0,j=0;
{
fib[i]=_____+ ______;
}
for (i=0;i<=19;i++)
{
cout<<fib[i]<<“ ";
}
cout<<endl;
return 0;
}
3.将从键盘上输入的十进制数(long型)以二到十六进制形式输出
#include <iostream>
using namespace std;
for(n=0;n<3;n++)
sum=sum+a[n][n];
cout<<sum<<endl;
return 0;
}
A.6B.12C.15D.45
15.下面程序运行后,输出结果是
#include <iostream>
using namespace std;
struct abc
{ int a, b, c; };
cout<<setw(4)<<a[i][j];
cout<<endl;
}
return 0;
}
三
请将下列程序横线处缺少的部分补上,使其能正确运行。
1.输出数组int a[10]中的最大值及其下标。
#include<iostream.h>
int main()
{
int a[10],max,sub,n;
for(n=0;n<10;n++)
int main()