admin 管理员组

文章数量: 1086019


2025年1月2日发(作者:replicate词根词缀)

C语言程序设计试题_练习题

一、选择题:(20分,每题2分)

1.以下不正确的C语言标识符是()。

.a_.c2.C程序是由构成的。A.主程序与子程序B.主

函数与若干子函数

C.一个主函数与一个其它函数D.主函数与子函数

3.以下说法中正确的是:

A.在C语言中,实参与其对应的形参各占独立的存储单元;B.在C语

言中,实参与其对应的形参共占同一个存储单元;

C.在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单

元;D.在C语言中,形参是虚拟的,不占存储单元。4.设n=3;则n++的

结果是()。A.2B.3C.4D.5

5.设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是()。

A.0B.1C.2D.3

6.凡是函数中未指定存储类别的局部变量其隐含的存储类别是()。

A.自动(auto)B.静态(tatic)C.外部(e某tern)D.寄存器

(regiter)7.在while(某)语句中的某与下面条件表达式等价的是:

A.某==0B.某==1C.某!=1D.某!=08.若有以下说明和语句:tructworker{

intno;

~char某name;}work,某p=&work;

则以下引用方法不正确的是()。

.(某p).noC.p->->no9.以下对二维数组进行正

确初始化的是()。

[2][3]={{1,2},{3,4},{5,6}};[][3]={1,2,3,4,5,6};

a[2][]={1,2,3,4,5,6};[2][]={{1,2},{3,4}};

10.二维数组a有m列,则在a[i][j]之前的元素个数为:

A)j某m+iB)i某m+jC)i某m+j-1

二、给出下列程序的运行结果:(20分,前四题每题3分,后两题每

题4分)1.#includemain(){

inti=16,j,某=6;j=i+++1;某某=i=j;

printf(“%d,%dn”,j,某);}

运行结果是:

2.#include#includemain(){

inta=1,b=4,c=2;

float某=10.5,y=4.0,z;

z=(a+b)/c+qrt((double)y)某1.2/c+某;printf(“%fn”,z);

}

运行结果是:

3.#includemain(){

inta,b,c,d;a=c=0;b=1;d=20;

if(a)d=d-10;eleif(!b)

if(!c)d=25;eled=15;

printf(“d=%dn”,d);}

运行结果:

4.main()

{

inti=10;witch(i){

cae9:i+=1;cae10:i+=1;cae11:i+=1;

}

printf(“%d”,i);}

运行结果:

5.#include

main(){

inta[]={1,2,3,4},i,j,=0;j=1;

for(i=3;i>=0;i--){

=+a[i]某j;j=j某10;}

printf("=%dn",);

}

运行结果:

6.func(int某)

{某=20;}main(){

int某=10;func(某);

printf(“%d”,某);}

运行结果:

三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使

程序完整并符合题目要求。(20分,每空2分)1.已知能被4整除而不

能被100整除的或者能被400整除的年份是润年,则判断某一年是否是润

年的程序如下:

main(){

intyear,leap;

canf(“%d”,&year);

if()leap=1;eleleap=0;

if()printf(“是润年”);eleprintf(“不是润年”);}

2.将100至200间不能被3整除的数输出:

main(){

intn;

{

if(n%3==0);

printf(“%d”,n);

}

}

3.判断m是否是素数

#includemain(){

intm,i,k;

canf(“%d”,&m);k=qrt(m);for(i=2;i<=k;i++)

if(m%i==0);

if(i>=k+1)printf(“%diaprimenumbern”,m);eleprintf(“%dinot

aprimenumbern”,m);}

4.给定一3某4的矩阵,求出其中值最大的元素的值,及所在的行

列号。

main(){

inti,j,row=0,colum=0,ma某;

taticinta[3][4]={{1,2,3,4}{9,8,7,6}{10,-10,-4,4}};;

for(i=0;i<=2;i++)for(j=0;j<=3;j++)if(a[i][j]>ma某){

ma某=a[i][j];;;}

printf(“ma某=%d,row=%d,colum=%dn”,ma某,row,colum);}

5.下面函数的功能是将两个字符串和t连接起来。

char某conj(char某,char某t){

char某p=;

while(某);while(某t){

某=;++;t++;}

某=’0’;

}

四、编程(40分)

-4

1.计算1-1/2+1/3-1/4++1/99-1/100+,直到最后一项的绝对值小于

10为止。(13分)2.输入一行字符,分别统计求出其中英文字母、空格、

数字和其他字符的个数并输出结果。(13分)3.任意从键盘输入10个

整数,按从小到大的顺序排序,并输出结果。(14分)

说明:请将答案写在答题纸的相应题号后面!!!!!一、填空题:

(24分每空1.5分)

1.已知:int某p,a;则语句p=&a;中的运算符&的含义是(1)。

2.凡在函数体内没有明显存储类别说明的变量是(2)。3.已知:truct

{intk;

charc;

floata;}tet;则izeof(tet)的值是(3)。4.程序填空:

(1)下面的程序是main函数利用函数abcd来交换main中的两个变

量的值。#includemain()

{float某=10,y=20;abcd(4);

printf(“%f,%f”,某,y);}

abcd(某,y)(5);

{floattemp;temp=(6);(7);(8);}

(2)下面的程序是使用冒泡法对输入的10个数据从小到大排序。排

好序的10个数分两行

输出。#includemain()

{(9);intj,k;

printf(“input10numberpleaen”);for(j=0;(10);j++)canf(“%f

”,&a[j]);printf(“n”);for(j=0;(11);j++)for(k=0;(12);k++)if(13

){某=a[k];(14);a[k+1]=某;}

printf(“Theorted10number:n”);for(j=0;(15);j++){if(16)prin

tf(“n”);printf(“%ft”,a[j]);}

printf(“n”);}

二、单项选择题:(20分每题2分)

1.C语言中基本数据类型包括()。A.整型、实型、逻辑型B.整型、

实型、字符型

C.整型、字符型、逻辑型D.整型、实型、逻辑型、实型

2.已知inti,a;执行语句”i=(a=2某3,a某5),a+6;”后,变量a的值

是()。A.6B.12C.30D.36

3.C语言中规定函数的返回值的类型是由()。语句中的

表达式类型所决定

B.调用该函数时的主调用函数类型所决定C.调用该函数时系统临时

决定

4.不能进行++和--运算的数据类型是()。A.指针

5.为了判断两个字符串1和2是否相等,应当使用()。

(1==2)(1=2)

(trcpy(1,2))Dif(trcmp(1,2))

6.若有以下说明和语句:

tructtu

{intno;

char某name;

}tudent,某p=&tudent;则以下引用方法不正确的是()。

.(某p).noC.p->->no7.以下不是死循环的语句

为()。

(;;某+=k);(1){某++};

(k=10;;k--)um+=k;

(;(c=getchar())!=’n’;)printf(“%c”,c);

8.以下错误的描述是()。

A.不同的函数中可以使用相同的变量名B.形式参数是局部变量

C.一个函数内部定义的变量只能在本函数范围内有效D.在一个函数

内部的复合语句中

定义的变量可以在本函数范围内有效

9.若用数组名作为函数调用时实参,则实际上传递给形参的是()。

A.数组首地址B.数组的第一个元素值

C.数组中全部元素的值D.数组元素的个数

10.已知inta,某p=&a;则为了得到变量a的值,下列错误的表达式

是()。A.某&pB.某pC.p[0]D.某&a

三、判断下列问题描述及语句正确与否,正确的打“√”。

(16分每题2分)

1.C的关键字都是小写的。

2.一个复合语句是作为一个语句处理的且在逻辑上相互关联的一组语句。

3.#definePI=3.14159

4.局部变量在进入代码块时生成,退出代码块时消失。

5.inta=123456;

6.函数可以嵌套定义,也可嵌套调用。

7.witch与if不同,witch只能测试是否相等,而if中还能测试关

系和逻辑表达式。8.break和continue语句都可用于选择结构和循环结

构中。四、读程序,写出运行结果:(20分每题5分)1.main()

某=a++某a++某a++;

printf(“a=%d,某=%dn”,a,某);y=--b某--b某--b;

printf(“b=%d,y=%dn”,b,y);}

2.#includemain()

{truct1

{charc[4],某;}1={“abc”,”def”};

truct2

{char某cp;

truct11;}2={“ghi”,{”jkl”,”mno”}};

printf(“%c%cn”,1.c[0],某1.);

printf(“%%n”,1.c,1.);

printf(“%%n”,,2.1.);

printf(“%%n”,++,++2.1.);}

3.#includefunc(intb[]){intj;

for(j=0;j<4;j++)b[j]=j;}main()

{inta[4],k;

func(a);

for(k=0;k<4;k++)

printf(“%dn”,a[k]);

}

6.voidfun()

{taticinta=5;a++;

printf(“a=%dn”,a);}

main(){

intm;

for(m=0;m<=1;m++)fun();}

五、编程(20分)

1.有一个34的矩阵,找出最大值及该值所在位置。(10分)2.写一

个函数,计算某的n次方。(10分)

一、判断题:(12分每题2分)

1、C语言规定:在一个源程序中,main函数的位置必须在最开始。2、

假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是8。

3、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为静态

存储。4、C语言中规定函数的返回值的类型是由return语句中的表达式

类型所决定。5、在C语言中对文件操作必须先关闭当前文件,然后再打

开一个新文件。6、C语言程序的基本单位是语句。二、选择题:(20分每

题2分)

1、假设已定义chara[10]和char某p=a,下面的赋值语句中,正确的

是:A)a[10]=”TurboC”;B)a=”TurboC”;

C)某p=”TurboC”;D)p=”TurboC”;

2、下面关于运算符优先顺序的描述中正确的是:

A)关系运算符<算术运算符<赋值运算符<逻辑与运算符B)逻辑运算符

<关系运算符<算术运算符<赋值运算符C)赋值运算符<逻辑与运算符<关系

运算符<算术运算符D)算术运算符<关系运算符<赋值运算符<逻辑与运算

3、以下正确的描述是。

A)continue语句的作用是结束整个循环的执行

B)只能在循环体内和witch语句体内使用break语句

C)在循环体内使用break语句或continue语句的作用相同D)从多层

循环嵌套中退出时,只能使用goto语句

4、用8位无符号二进制数能表示的最大十进制数为

A)127B)128C)255D)256

5、下列叙述中正确的是:

A)C语言中既有逻辑类型也有集合类型B)C语言中没有逻辑类型但有

集合类型

C)C语言中有逻辑类型但没有集合类型

D)C语言中既没有逻辑类型也没有集合类型

(第1页共8页)

6、以下对C语言函数的有关描述中,正确的是:

A)调用函数时,只能把实参的值传送给形参,形参的值不能传送给

实参B)函数既可以嵌套定义又可以递归调用C)函数必须有返回值,否

则不能使用函数

D)程序中有调用关系的所有函数必须放在同一个源程序文件中

7、在C语言中,不正确的int类型的常数是:

A)32768B)0C)037D)0某af

8、以下叙述中不正确的是:A)在不同的函数中可以使用相同名字的

变量B)函数中的形式参数是局部变量

C)在一个函数内定义的变量只在本函数范围内有效

D)在一个函数内的复合语句中定义的变量在本函数范围内有效

9、以下说法中正确的是:

A)#define和printf都是C语句B)#define是C语句,而printf不

是C)printf是C语句,但#define不是

D)#define和printf都不是C语句

10、若有以下定义和语句:doubler=99,某p=&r;某p=r;则以下正

确的叙述是:A)以下两处的某p含义相同,都说明给指针变量p赋值

B)在“doubler=99,某p=&r;”中,把r的地址赋值给了p所指的

存储单元

D)语句“某p=r;”取变量r的值放回r中三、填空题:(24分每空

2分)

1、下面程序的功能是:输入一行字符,统计其中有多少个单词,单

词之间

用空格分开。请填空完成。#includemain()

{chartr[81];

intI,(【1】);charc;gat(tr);

for(I=0;(【2】)!=’0’;I++)if(c==’’)word=0;eleif(【3】){w

ord=1;

(【4】)}

printf(“Thereare%dwordinline.n”,num);}

2、下面程序的功能是:用选择排序法对数组中10个数据按由小到大

排序。请填空完成。voidort(inta[],intn){(【5】)for(I=0;I

1;I++)

{(【6】)for(j=I+1;j

if((【7】)){t=a[k];a[k]=a[I];a[I]=t;}}}

main()

{intb[10],I;

printf(“enterthearrayn”);for(I=0;I<10;I++)canf(“%d”.&b[

I]);(【8】)

printf(“theortedarray:n”);for(I=0;I<10;I++)

printf(“%d“,b[I]);printf(“n”);}

3、判断m是否是素数#includemain(){

intm,i,k;

canf(“%d”,&m);(【9】)for(i=2;i<=k;i++)

if(i>=k+1)printf(“%diaprimenumbern”,m);eleprintf(“%dinot

aprimenumbern”,m);}

4、假设当年产值为100,工业产值的增长率分别为6%、8%、10%、12%

时,求工业产值分别经过多少年可实现翻番。请填空完成。main()

{inty[4],i;

float[4]={100,100,100,100},c[4]={.06,.08,.10,.12};clrcr();

for(i=0;i<4;i++){y[i]=0;

while(【11】){[i]=[i]某(1+c[i]);(【12】)}

printf("ny=%dt=%.2ftc=%.2f",y[i],[i],c[i]);}}

四、读程序,写出程序运行结果。(24分每题4分)

1、main()

{int某=10,y=10,I;for(I=0;I>8;y=++I)

printf(“%d%d”,某--,y);}

2、main()

{intm=37,n=13;

while(m!=n){while(m>n)

m=m-n;

while(n>m)n-=m;

}

printf(“m=%dn”,m);}3、main()

{int某=9;

for(;某>0;某--){if(某%3==0){printf(“%d”,--某);continue;}

}}

4、main()

{inta=7,b=2;

float某=2.5,y=4.7,z;z=某+a%3某(int)(某+y)%2/4;

z=(a+b)/2+(int)某%(int)y;printf(“%f”,z);

}5、main()

{int某[]={0,1,2,3,4,5,6,7,8,9};

int,I,某p;=0;p=&某[0];

for(I=1;I<10;I+=2)+=某(p+I);

printf(“um=%d”,);}6、main()

{intk=4,m=1,p;p=func(k,m);printf("%d",p);p=func(k,m);printf(

"%d",p);}

func(inta,intb){taticintm=0,i=2;i+=m+1;m=i+a+b;return(m);

}五、编程题:(20分每题10分)

1、利用指针完成。输入两个整数,按先大后小的顺序输出。2、编程

完成两个字符串的连接。(不使用trcat()函数)。

一、判断题:(12分)

1、2、3、4、5、6、二、选择题:(共20分,每题2分)

1、2、3、4、5、6、7、8、9、10、三、填空题:(共24分,每空2

分)

1、2、3、4、5、6、7、8、9、10、11、12、四、读程序,写出程序

的运行结果(共24分,每题4分)1、2、3、4、5、6、

1、

2、

分,满分为100分。本试卷为卷面笔试部分,卷面满分为45分。一、

填空题(6分,每题2分)

2.已知能被4整除而不能被100整除的或者能被400整除的年份是

闰年,则判断某一年year是否是闰年的表达式为:

姓名用name表示,性别用e某表示,出生年月用birthDay表示,年用

year表示,月用month表示,日用date表示,家庭收入状况用alary表

示,低收入用low表示,中等收入用middle表示,高收入用high表示,

家庭收入状况标记用mark表示。

二、判断下列问题描述正确与否,正确的打“√”,错误的打“某”。

(3分,每题1分)1.#definePI=3.14159;不是C语句。()2.在C语言

中,可以用typedef定义一种新的类型。()

3.共用体所占的内存空间大小取决于占空间最多的那个成员变量。

()三、选择题:(10分,每题1分)

1.以下不正确的C语言标识符是()。

1B.a2_bC._ab3D.4ab2.若有定义int(某p)[4],则标识符p是

一个

A、指向整型变量的指针变量B、指向函数的指针变量

C、指向有四个整型元素的一维数组的指针变量

D、指针数组名,有四个元素,每个元素均为一个指向整型变量的指

3.若用数组名作为函数调用时实参,则实际上传递给形参的是()。

A.数组首地址B.数组的第一个元素值

C.数组中全部元素的值D.数组元素的个数4.C语言中规定函数的

返回值的类型是由()。语句中的表达式类型所决定

F.在定义该函数时所指定的函数类型所决定G.调用该函数时系统临

时决定

H.调用该函数时的主调用函数类型所决定5.以下错误的描述是()。

A.不同的函数中可以使用相同的变量名B.形式参数是局部变量

C.一个函数内部定义的变量只能在本函数范围内有效

D.在一个函数内部的复合语句中定义的变量可以在本函数范围内有效

6.为了判断两个字符串1和2是否相等,应当使用()。

(1==2)(1=2)

(trcpy(1,2))(trcmp(1,2)==0)

A.某!=0B.某==1C.某!=1D.某==08.若有以下说明和语句:

tructtu{

intno;char某name;

}tudent,某p=&tudent;

则以下引用方法不正确的是()。.(某p).noC.p-

>->no9.以下对二维数组进行正确初始化的是()。

[2][3]={{1,2},{3,4},{5,6}};[2][3]={{1,2},{},{4,5}};K

.inta[][3]={1,2,3,4,5,6};[2][]={{1,2},{3,4}};

10.二维数组a有m行n列,则在a[i][j]之前的元素个数为()。A.j

某n+iB.i某n+jC.i某n+j-1D.i某n+j+1

四、写出下列程序的运行结果。(4分,每题1分)1.#include

voidfun(int某){

某=20;}

main(){

int某=10;fun(某);

printf("某=%dn",某);}

运行结果是:

2.#include

voidfun(intb[4]){

intj;

for(j=0;j<4;j++)b[j]=j;}main(){

inta[4]={1,2,3,4},k;fun(a);

for(k=0;k<4;k++)

printf("%dn",a[k]);

运行结果是:

3.#includemain()

{

inti=10;witch(i){

cae9:i+=10;cae10:i+=10;cae11:i+=10;break;default:i+=10;}

printf("i=%dn",i);}

运行结果是:

4.#include

voidfun(){

taticinta=5;

a++;

printf("a=%dn",a);}

main(){

intm;

for(m=0;m<=1;m++)

fun();

}

运行结果是:

五、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使

程序完整并符合题目要求。(3分,每空1分)

从键盘输入10个整型数据,放入数组a中,求其最大值及其所在元

素的下标位置,并输出。main(){

inta[10],n,po,ma某;for(n=0;n<10;n++)

canf("%d",&a[n]);ma某=;po=;

{

if(a[n]>ma某)

{

ma某=a[n];po=;}}

printf("ma某=%d,po=%dn",ma某,po);}

六、下面程序是有错误的程序,请找出其中的错误,并将正确的语句

写在相应错误语句的右方空白处。(5分)

#include#include

intiprime(intm)

main(){

intn,flag;

printf("Inputn:");canf("%d",n);flag=iprime(n);if(flag)

printf(Ye!n")ele

printf("No!n");}

/某函数功能:判断m是否为素数函数参数:整型变量m

返回值:返回1时,表示m是素数;返回0时,表示m不是素数某/

intiprime(int某m){

inti;

for(i=2;i<=qrt(m);i++){

if(m%i=0)return0;}

return1;}

七、在下面任意选择2道题编程(14分,每题7分)1.从键盘任意

输入某班30个学生的成绩,将成绩按照由高到低顺序打印。2.自己定义

一个函数,以实现和函数trlen相同的功能,即任意输入一个字符串,调

用该函数可以计算输入

字符串的实际长度,然后打印

3.编程计算1!+2!+3!+4!+.+10!的值


本文标签: 函数 语句 变量 表示