当前位置:文档之家› c语言数组典型试题设计含答案

c语言数组典型试题设计含答案

c语言数组典型试题设计含答案
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};

【题11】若有说明:int a[3][4]={0};则下面正确的叙述是。

A)只有元素a[0][0]可得到初值0

B)此说明语句不正确

C)数组a 中各元素都可得到初值,但其值不一定为0

D)数组a 中每个元素均可得到初值0

【题12】若有说明:int a[][4]={0,0};则下面不正确的叙述是。

A)数组a 的每个元素都可得到初值0

B)二维数组a 的第一维大小为1

C)因为二维数组a 中第二维大小的值除以初值个数的商为1,故数组a 的行数为1

D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

【题13】若有说明:int a[3][4];则全局数组a 中各元素。

A)可在程序的运行阶段得到初值0

B)可在程序的编译阶段得到初值0

C)不能得到确定的初值

D)可在程序的编译或运行阶段得到初值0

【题14】以下各组选项中,均能正确定义二维实型数组a 的选项是。

A)float a[3][4]; B)float a(3,4);

float a[][4]; float a[3][4];

float a[3][]={{1},{0}}; float a[][]={{0};{0}};

C)float a[3][4]; D)float a[3][4];

static float a[][4]={{0},{0}}; float a[3][];

auto float a[][4]={{0},{0},{0}}; float a[][4];

【题15】下面程序如果只有一个错误,那么是(每行程序前面的数字表示行号)。

1 main()

2 {

3 float a[3]={3*0};

4 int i;

5 for(i=0;i<3;i++) scanf(“%d”,&a[i]);

6 for(i=1;i<3;i++) a[0]=a[0]+a[i];

7 printf(“%d\n”,a[0]);

8 }

A)第3 行有错误B)第7 行有错误

C)第5 行有错误D)没有错误

【题16】下面程序(每行程序前面的数字表示行号)。

1 main()

2 {

3 float a[10]={0.0};

4 int i;

5 for(i=0;i<3;i++) scanf(“%d”,&a[i]);

6 for(i=1;i<10;i++) a[0]=a[0]+a[i];

7 printf(“%f\n”,a[0]);

8 }

A)没有错误B)第3 行有错误

C)第5 行有错误D)第7 行有错误

【题17】下面程序中有错误的行是(每行程序前面的数字表示行号)。

1 main()

2 {

3 float a[3]={1};

4 int i;

5 scanf(“%d”,&a);

6 for(i=1;i<3;i++) a[0]=a[0]+a[i];

7 printf(“a[0]=%d\n”,a[0]);

8 }

A)3 B)6 C)7 D)5

【题18】下面程序(每行程序前面的数字表示行号)。

1 main()

2 {

3 float a[3]={0};

4 int i;

5 for(i=0;i<3;i++) scanf(“%f”,&a[i]);

6 for(i=1;i<4;i++) a[0]=a[0]+a[i];

7 printf(“%f\n”,a[0]);

8 }

A)没有错误B)第3 行有错误

C)第5 行有错误D)第6 行有错误

【题19】若二维数组a 有m 列,则计算任一元素a[i][j]在数组中位置的公式为。(假设a[0][0]位于数组的第一个位置上。)

A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1

【题20】对以下说明语句的正确理解是。

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)因为数组长度与初值的个数不相同,所以此语句不正确

参考答案:1~5 CDDAC 6~10 CCDBC

11~15 DDBCA 16~20 CDDDB

二.程序分析(10*2)

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 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);

}

1. 51,60,21

2. 2,3

四.程序设计(10*4)

1、将二维数组(5行5列)的右上半部分置零。

即:

#include

main()

{

int a[5][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};

for(int i=0;i<5;i++)

{

for(int j=0;j<5;j++)

{

if(i

{

printf("%3d",0);

}

else

{

printf("%3d",a[i][j]);

}

}

printf("\n");

}

}

2、求二维数组(3行3列)的对角线元素的和

#include

main()

{

int a[3][3]={{10,12,13},{14,15,16},{17,18,19}},sum=0;

for(int i=0;i<3;i++)

{

for(int j=0;j<3;j++)

{

if(i==j)

{

sum=sum+a[i][j];

}

}

printf("%d",sum);

}

3、求二维数组(5行5列)中最大元素值及其行列号

#include

main()

{

int a[5][5],i,j;

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

scanf("%d",&a[i][j]);

}

}

int sum=a[0][0],x,y;

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

if(sum

{

sum=a[i][j];

x=i;

y=j;

}

}

}

printf("a[%d][%d]=%d",x,y,sum);

}

4、从键盘上输入9个整数,保存在二维数组中按数组原来位置输出第一行和第一列的所有元素

#include

main()

{

int a[3][3],i,j;

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

{

scanf("%d",&a[i][j]);

}

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

{

if(i==0||j==0)

{

printf("%d",a[i][j]);

}

}

printf("\n");

}

}

C语言程序设计实验报告(数组)

C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。

3算法描述流程图

4源程序 #include #include void catStr(char str1[],char str2[]) { int i,j; for (i=0;str1[i]!='\0';i++); for(j=0;str2[j]!='\0';j++) str1[i+j]=str2[j]; str1[i+j]='\0'; } lenStr(char m[] ) {int i;

for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。

嵌入式C语言经典笔试题目

嵌入式c语言经典笔试题目 1 .用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3)意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4)如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 .写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B)((A)<= (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1)标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 3)懂得在宏中小心地把参数用括号括起来 4)我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b); 3.预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops) 4.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,

C语言练习题(带答案)-绝对经典题目不看后悔

1单选题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

c语言笔试题(答案)(精心整理)

笔试题 一、填空题(每个空4分,共28分) 1)struct tagABC { char name[10]; char sex; long sno; float score[4]; }*pAbc;(四字节对齐) pAbc=NULL; 那么,执行pAbc+=2;之后pAbc的值为(64 ) 2)如下代码,最终value的值是(8) int *p1,*p2; int value; p1=(int*)0×400; p2=(int*)0×408; value = p2-p1; 3)如下代码,printf的结果为(2) #include〈stdio.h〉 #include〈string.h〉 void main(void) { char acNew[20]= “\\0\0”; printf(“%d\n”,strlen(acNew)); } 4) 有如下程序段,运行该程序的输出结果是(33) main () { int y=3,x=3,z=1; printf(“%d%d\n”,(++x,y++),z+2); } 5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2)6)struct tagAAA { Unsigned char ucId:1; Unsigned char ucPara0:2; Unsigned char ucState:6; Unsigned char ucTail:4; Unsigned char ucAvail; Unsigned char unTail2:4; Unsigned long ulData; }AAA_S 问:AAA_S在字节对齐分别为1,4情况下,占用的空间大小分别是多少?( 9)(12 )

大学经典C语言编程试题

1.输入两个正整数,m和n,求其最大公约数和最小公倍数。 #include<> void main() { int hcf(int,int); /*函数声明*/ int lcd(int,int,int); /*函数声明*/ int u,v,h,l; printf("Please inputtwo numbers:\n"); scanf("%d,%d",&u,&v); h=hcf(u,v); printf("",h); l=lcd(u,v,h); printf("",l); } int hcf(int u,int v) { int t,r; if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v;v=r;} return(v); } int lcd(int u,int v,int h) { return(u*v/h); } 2.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。#include<> int letter,digit,space,others; void main() { void count(char[]); char text[80]; printf("Please inputstring:\n"); gets(text); printf("string:\n"); puts(text); letter=0; digit=0; space=0; others=0; count(text); printf("letter:%d,digit:%d,space:%d,others:%d\n",letter,digit,space,others);

C语言数组编程题

实验4 数组 一.实验目的: 1.掌握一维数组的定义、赋值和输入输出的方法; 2.掌握字符数组定义、初始化、赋值的方法; 3.了解常见的字符串函数功能及其使用方法; 4.掌握二维数组的定义与引用。 二.实验内容: 1.编写程序,输入10个整数存入一维数组,统计输出其中的正数、负数和零的个数。 2.编写程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。 3.编写程序,输入10个整数存入一维数组,对其进行升序排序后输出。 4.编写程序,求二维数组中元素的最大值和最小值。 5.编写程序,求一个4×4矩阵中所有元素之和。 6.编写程序:从键盘上输入一字符串,统计输出该字符串中的字母字符、数字字符、空格以及其他字符的个数。 7.编写程序:从键盘上输入一字符串,并判断是否形成回文(即正序和逆序一样,如“abcd dcba”)。 8. 产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 9. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,按原来的规律将其插入并输出。 页脚内容1

10. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,则输出找不到。 11. 找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小。可能没有鞍点。 12. 编程输出杨辉三角。(要求输出10行)(杨辉三角:每行端点与结尾的数为1.每个数等于它上方两数之和。每行数字左右对称,由1开始逐渐变大) 13. 输入一行字符,统计大写字母、小写字母、数字、空格以及其它字符个数。 14. 编写程序,将两个字符串连接起来,不用strcat。 15. 编写程序实现strcpy函数功能。 16. 编程实现strlen函数功能。 17. 编程求2-4+6-8…-100+102的值。 18. 假设某人有100,000现金。每经过一次路口需要进行一次交费。交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000。请写一程序计算此人可以经过多少次这个路口。 19. 输入若干个正整数,以0结束,将其中大于平均值且个位为5的数排序后输出。(按由大到小的顺序排序) 20. 输入一个字符串,将其中ASCII码值为基数的字符排序后输出。(按由小到大的顺序) 21. 输入一个以回车结束的字符串(少于80个字符),滤去所有的非16进制字符后,组成一个新字符串(16进制形式),然后将其转换为10进制数后输出。 22. 读入一个正整数n(1<=n<=6),再读入n阶矩阵,计算该矩阵除副对角线、最后一行、最后一列 页脚内容2

c语言笔试题目及答案

c语言笔试题目及答案 C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面是c语言笔试题目及答案,请参考。 c语言笔试题目及答案 一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选 项涂写在答题卡相应位置上,答在试卷上不得分。 (1)数据的存储结构是指________。 A)存储在外存中的数据 B)数据所占的存储空间量 C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示 答案:D 评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。 (2)下列关于栈的描述中错误的是________。 A)栈是先进后出的线性表

B)栈只能顺序存储 C)栈具有记忆作用 D)对栈的插入与删除操作中,不需要改变栈底指针 答案:B 评析:栈是一种特殊的线性表,又称先进后出表(FILO—First In Last Out)。 (3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ________。 A)冒泡排序为n2 B)冒泡排序为n C)快速排序为n D)快速排序为n(n一1)/2 答案:D 评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序法的最坏情况比较次数也是n(n-1)/2。 (4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为________。 A)log2n B)n/2 C)n D)n+l 答案:C 评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性表中所有的元素进行比较。对长度为n的线性表进行顺序查找,在最坏情况下需要比较

经典练习C语言编程的题目及答案整理

1.逆序输出正三位数 #include int main() { int input,output= 0; scanf("%d",&input); while(input != 0) { output = output*10 + input%10; input /= 10; } printf("%d\n",output); return 0; } 2.百元找零函数 #include int main() { int amount=100; int price=0; printf("请输入金额(元)"); scanf("%d",&price); printf("请输入票面"); scanf("%d",&amount); int change=amount-price; printf("找您%d元。\n",change); return 0; } 3.求平均数 #include int main() { int a,b; scanf("%d %d",&a,&b);

double c=(a+b)/2.0; /* scanf("%d",&amount); 这是注释,我随便放的,没意义 int change=amount-price;*/ printf("%d和%d的平均值是%f\n",a,b,c); return 0; } 4.写出程序的输出: int i=1; switch ( i/3 ) { case 0: printf("zero"); case 1: printf("one"); case 2: printf("two"); } 正确答案是:zeroonetwo。 5.水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例如:153 = 13 + 53+33。本题要求编写程序,计算所有N位水仙花数。 输入格式: 输入在一行中给出一个正整数N(3<=N<=7)。 输出格式: 按递增顺序输出所有N位水仙花数,每个数字占一行。 输入样例: 3 输出样例: 153 370 371 407

C语言笔试题带答案

一、选择题(1)~(10)每小题2分,? (11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)在数据结构中,从逻辑上可以把数据结构分为_______。 A)动态结构和静态结构??? ??B)紧凑结构和非紧凑结构 C)线性结构和非线性结构??? D)内部结构和外部结构 答案:C 评析:逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对一的关系,非线性结构表示数据元素之间一对多或多对一的关系。 (2)若进栈序列为l,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是_______。 A)1,4,3,2??? B)2,3,4,l C)3,1,4,2 ???D)3,4, 2,1 答案:C 评析:栈是一种后进先出表,选项c中,先出栈的是3,说明此时栈内必然有1,2,由于l先于2进栈,所以l不可能在2之前出栈,故选项C这种出栈序列是不可能的。 (3)排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为_______。 A)希尔排序??? B)冒泡排序??? C)插入排序??? D)选择排序 答案:A 评析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。 (4)在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为_______。 A)2??? ??B)3?????? C)4 ???????D)5 答案:C

评析:二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判断是结束查找,还是在左边或者右边子表按相同的方法继续查找。本题中,与 ll比较的关键码分别为15,8,10,12四个。 (5)对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为_______。 A)n-1??? B)n??? C)n+l ?????D)2n 答案:C 评析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。 (6)在软件开发过程中,软件结构设计是描述_______。 A)数据存储结构?? ??B)软件体系结构??? C)软件结构测试??? D)软件控制过程 答案:B 评析:从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。概要设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。 (7)模块本身的内聚是模块独立性的重要性度量因素之一。在7类内聚中,具有最强内聚??? 的一类是_______。 A)顺序性内聚? ???B)过程性内聚? ????C)逻辑性内聚??? D)功能性内聚 答案:D 评析:内聚性是一个模块内部各元素间彼此结合的紧密程度的度量。内聚共有7类,它们之间的内聚性由弱到强排列顺序为:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚。 (8)数据存储和数据流都是_______,仅仅是所处的状态不同。 A)分析结果??? B)事件??? C)动作??? D)数据 答案:D 评析:数据流图有4种成分:源点或终点、处理、数据存储和数据流。数据存储是处于静止状态的数据,数据流是处于运动中的数据。 (9)数据的完整性是指数据的正确性、有效性和_______。 A)可维护性??? B)独立性??? C)安全性??? D)相容性

c语言常见笔试题总结

c语言常见笔试题总结 此句出自北宋诗人林逋的七律《山园小梅》,原诗为“众芳摇落独暄妍,占尽风情向小园。疏影横斜水清浅,暗香浮动月黄昏。霜禽欲下先偷眼,粉蝶如知合断魂。幸有微吟可相狎,不须檀板共金尊。” 【1 使用宏】 1.1 #ifdef NDEBUG now i will introduce myself briefly. i am 21 years old. i was born in heilongjiang province, northeast of china. i am a senior student at beijing xx university. my major is packaging engineering. and i will receive my bachelor degree after my graduation in june. in the past 4 years, i spend most of my time on study. i have passed cet4/6 with an ease. and i have acquired basic knowledge of packaging and publishing both in theory and in practice. besides, i have attended several packaging exhibition held in beijing. this is our advantage study here. moreover, i have taken a tour to some big factory and company. through these i have a deeply understanding of domestic packaging industry. 勤思考研解析:此题考查了初中生出现反抗心理的原因,有三个:自我意识高涨;独立意识增强;中枢神经系统的兴奋性过强,因此答案是C。 #define TRACE(S) S #else #define TRACE(S) printf(“%s;\n”, #S); S #endif 问:以上TRACE()宏的作用是什么? 1.2 #error的作用? 1.3 定义一个宏,求出给定数组中的元素的个数 人员绩效考评的成对比较法中,管理者只有在对每个员工与其他所有员工进行成对比较之后,才能得出对其业绩的总的评价结果。如某部门有五名员工,用该方法所需的总的成对比较次数为

C语言操作题常考编程题库完整

C语言编程题覆盖到的算法: 1、个人所得税计算; 2、求一组数的正、负数(或奇、偶数)的个数和平均值; 3、二维数组主、次对角线之和; 4、求素数(用函数实现); 5、级数有限项求和问题; 6、两个一维数组相加(用函数实现); 7、求最大、最小值; 8、判断闰年(用函数实现); 9、求水仙花数; 10、百钱百鸡; 11、求最大公约数、最小公倍数。 12、求回文数; 13、排序; 14、二维数组的转置; 15、递归函数求阶乘; 16、求斐波那契数列; 17、求和:a+aa+aaa+aaaa+....; 18、求符合条件的整数(如:是某个二位数的平方,个位、十位、百位数各不相同等);(包括素数,回文,完数,等等) 19、字符串加密; 20、统计字符串中字母和数字的个数;

/*1.个人所得税计算,以实验指导P24T5为标准*/ #include void main() { int i,n; double a,b,c; n=i/400; printf("please input income:\n"); scanf("%d",&i); a=(i-800)*0.05,b=20+(i-1200)*0.08,c=84+(i-2000)*0.2; switch(n) {

case 1:printf("不需缴税\n");break; case 2:printf("需交纳%lf元\n",a);break; case 3: case 4:printf("需交纳%lf元\n",b);break; default:printf("需交纳%lf元\n",c);break; } } /*2. 求一组数的奇数个数,偶数个数和平均值#include #define N 10 void main() { int a[N]; int i,m=0,n=0,sum=0; double average; printf("please input 10 numbers:\n"); for(i=0;i

《C语言程序设计》第7章 数组

第7章数组 第1次课:2学时 一、教学内容 1、一维数组的定义和引用 2、二维数组的定义和引用 二、教学目标 1.了解一维数组、二维数组的基本概念; 2.掌握数组的定义与引用; 3.掌握数组元素的引用 三、教学重点及难点 重点:数组的定义和引用 难点:数组的定义和引用 四、教学方法 多媒体教学,案例驱动,实例演示,提问。 五、教学过程设计 在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。本章介绍数值数组和字符数组,其余的在以后各章陆续介绍。 7.1 一维数组的定义和引用 7.1.1 一维数组的定义方式 在C语言中使用数组必须先进行定义。 一维数组的定义方式为:类型说明符数组名[常量表达式]; 其中:类型说明符是任一种基本数据类型或构造数据类型;数组名是用户定义的数组标识符;方括号中的常量表达式表示数据元素的个数,也称为数组的长度。 对于数组类型说明应注意以下几点: (1) 数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。 (2) 数组名的书写规则应符合标识符的书写规定。 (3) 数组名不能与其它变量名相同。 (4) 方括号中常量表达式表示数组元素的个数,如a[5]表示数组a 有5 个元素。但是其下标从0 开始计算。因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。 (5) 不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。

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语言经典面试题

C语言面试题大汇总之华为面试题 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错. 4、请写出下列代码的输出内容 #include int main(void) { int a,b,c,d; a=10;

c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; } 答:10,12,120 5、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 2) 从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。3) static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对

C语言经典题目

C语言经典题目 一、舍罕王的失算——不可忽视的和与积 1 舍罕王的失算 ,,,,,,,,,,,,,,,,,,,, 2 分数不等式 3 阶乘与阶乘和数 4 综合高精度计算 5 个人所得税计算 6 大奖赛现场统分 7 图形点扫描 二、勾股数——古老文明的精华 8 最大公约数与最小公倍数 9 水仙花数 10 勾股数 ,,,,,,,,,,,,,,,,,,,,,, 11 完全数 12 相亲数 13 守形数 三、素数——上帝用来描写宇宙的文字 14 素数 15 乌兰现象 16 孪生素数 .17 梅森尼数 18 金蝉素数 19 素数多项式 20 等差素数列 21 验证歌德巴赫猜想

22 合数世纪探求 四、桥本分数式——优美的智慧 23 逆序乘积式 24 巧妙的三组平方 25 完美和式 26 完美乘积式 27 完美综合运算式 28 桥本分数式 29 埃及分数式 五、斐波那契序列——递推的学问 30 分数序列 31 斐波那契序列与卢卡斯序列 32 幂序列 33 双关系递推数列 34 基于2x+3y的递推数列 35 汉诺塔问题 36 猴子吃桃 37 猴子爬山 38 购票排队 *39 神秘的数组 六、韩信点兵——远古的神机妙算 40 破解数字魔术 41 鸡兔同笼与羊犬鸡兔问题 42 百鸡问题 43 韩信点兵 44 整币兑零 *45 解佩尔方程 七、泊松分酒——奇妙的分解 46 分解质因数 47 积最大的整数分解 48 整数的拆分

49 整数的分划 50 泊松分酒 *51 西瓜分堆 *52 水手分椰子 *53 矩形的优化剪切 八、角谷猜想——精巧的转化 54 分数化小数 55 数制转换 56 角谷猜想 57 黑洞数495与6174 58 回文数 九、幻方——古今中外的数阵奇葩 59 杨辉三角 60 数字三角形 61 折叠方阵与旋转方阵 *62 幻方 *63 三阶素数方阵 64 可逆素数方阵 十、插入乘号——决策的最优化 65 删除中的最值问题 *66 最长公共子序列 67 古尺神奇 68 数码珠串 *69 数阵中的最优路径 *70 插入乘号问题 71 智能甲虫的安全点 72 点的覆盖圆 十一、尾数前移——运算模拟的典范 73 均位奇观探索 74 多少个1能被2009整除 75 01串积问题 76 连写数整除问题

(完整版)C语言100个经典题目

C语言程序设计习题 授课对象:信息奥赛辅导成员 授课时间: 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔 子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数 为多少? __________________________________________________________________ 程序分析:兔子的规律为数列1,1,2,3,5,8,13,21…. ___________________________________________________________________ 程序源代码: main() { long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf(“%12ld %12ld”,f1,f2); if(i%2==0) printf(“\n”);/*控制输出,每行四个*/ f1=f1+f2;/*前两个月加起来赋值给第三个月*/ f2=f1+f2;/*前两个月加起来赋值给第三个月*/ } } 上题还可用一维数组处理,you try! 题目:判断101-200之间有多少个素数,并输出所有素数。 __________________________________________________________________ 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 ___________________________________________________________________ 程序源代码: #include “math.h” main() { int m,i,k,h=0,leap=1;

C语言必背的典型程序设计题目-数组函数答案

数组部分必须会编写的程序(参考答案)1、使用选择法、冒泡法对10个数进行排序,并输出排序前后的数列。 //选择法 #include void main() { int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,i,j,t,temp; printf("Before sort:"); for(i=0;i<10;i++) { printf("%4d",a[i]); } printf("\n"); //排序 for(i=0;i<9;i++) { t=i; for(j=i+1;j<10;j++) { if(a[t]>a[j]) { t=j; } } if(t!=i) { temp=a[i]; a[i]=a[t];a[t]=temp; } } printf("Aftere sorted:"); for(i=0;i<10;i++) { printf("%4d",a[i]); } printf("\n"); } //冒泡法 #include void main() { int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,I,j,t; printf(“Before sort:”); for(i=0;i<10;i++) { printf("%4d",a[i]); } prtintf(“\n”); //排序 for(i=0;i<=n-1;i++) { for(j=0;ja[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;} } printf(“Aftere sorted:”); for(i=0;i<10;i++)

C语言经典面试题目集锦

1.前言 2.声明和初始化 2.1我如何决定使用那种整数类型? 2.264位机上的64位类型是什么样的? 2.3怎样定义和声明全局变量和函数最好? 2.4extern在函数声明中是什么意思? 2.5关键字auto到底有什么用途? 2.6我似乎不能成功定义一个链表。我试过typedef struct{char*item;NODEPTR next;}*NODEPTR;但是编译器报了错误信息。难道在C语言中一个结构不能包含指向自己的指针吗? 2.7怎样建立和理解非常复杂的声明?例如定义一个包含N个指向返回指向字符的指针的函数的指针的数组? 2.8函数只定义了一次,调用了一次,但编译器提示非法重定义了。 2.9main()的正确定义是什么?void main()正确吗? 2.10对于没有初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为``零",它可否作为空指针或浮点零? 2.11代码int f(){char a[]="Hello,world!";}不能编译。 2.12这样的初始化有什么问题?char*p=malloc(10);编译器提示``非法初始式"云云。 2.13以下的初始化有什么区别?char a[]="string literal";char*p="string literal";当我向p[i]赋值的时候,我的程序崩溃了。 2.14我总算弄清除函数指针的声明方法了,但怎样才能初始化呢? 3.结构、联合和枚举 3.1声明struct x1{...};和typedef struct{...}x2;有什么不同? 3.2为什么struct x{...};x thestruct;不对? 3.3一个结构可以包含指向自己的指针吗? 3.4在C语言中实现抽象数据类型什么方法最好? 3.5在C中是否有模拟继承等面向对象程序设计特性的好方法? 3.6我遇到这样声明结构的代码:struct name{int namelen;char namestr[1];};然后又使用一些内存分配技巧使namestr数组用起来好像有多个元素。这样合法和可移植吗? 3.7是否有自动比较结构的方法? 3.8如何向接受结构参数的函数传入常数值? 3.9怎样从/向数据文件读/写结构? 3.10我的编译器在结构中留下了空洞,这导致空间浪费而且无法与外部数据文件进行"二进制"读写。能否关掉填充,或者控制结构域的对齐方式? 3.11为什么sizeof返回的值大于结构的期望值,是不是尾部有填充? 3.12如何确定域在结构中的字节偏移? 3.13怎样在运行时用名字访问结构中的域? 3.14程序运行正确,但退出时却``core dump''了,怎么回事? 3.15可以初始化一个联合吗?

c语言常见面试题

C/C++程序员面试重点以及应对方法: 非技术方面: 1. 仪表 2. 礼仪 3. 个人素养 技术部分: 基础: 一.C语言基础语法 1.进程中的内存布局 2.指针相关(野指针、数组越界)、数组与指针、二位指针3.数组与二维数组 4.动态内存分配(内存泄漏) 5.预编译与有参宏 6.Static与const 7.结构体、共用体以及结构体空洞 8.位运算 9.Sizeof与strlen 二.C++基础语法 见C/C++求职就业手册 重点: 1.Inline函数

2.指针与引用 3.Const 、static、sizeof 4.Class与struct的区别 5.构造函数与析构函数 6.继承与多态 三.数据结构(计算机专业需要全部掌握) 1.单链表(非计算机专业必须掌握) 2.循环链表 3.双向链表 4.队列 5.栈 6.二叉树 四.各种排序 非计算专业需掌握冒泡与选择排序 计算机专业需要掌握5种常见的排序方法 五.常见Linux命令 六.Linux系统编程 1.不带缓冲的文件操作(堵塞与非堵塞) 2. 带缓冲的文件操作(行缓冲、全缓冲、不缓冲) 3. 进程的概念(fork、进程的五种状态与状态切换) 4. IPC 5. 线程(线程与进程的区别)

6. 线程间同步(互斥锁与信号量) 7.网络编程(TCP/IP四层、三次握手、TCP与UDP) 8.Shell脚本编程 七.数据库编程 数据库的基本概念与SQL语句 SQLite的用法 八.QT编程与GUI的概念 九.智力测验题(一般公司不会考,比较大的公司及校园招聘会往往会考到) 项目经验: 1. 做过的项目 2. 如何与别人交流沟通与协助 3. 思考问题的方法 附:常见C语言笔试题 1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2.写一个“标准”宏MIN ,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A)<= (B) ? (A) : (B)) 3.用变量a给出下面的定义 a) 一个整型数(An integer)

相关主题
文本预览
相关文档 最新文档