长江师范学院计算机C语言练习及答案_第1页
长江师范学院计算机C语言练习及答案_第2页
长江师范学院计算机C语言练习及答案_第3页
长江师范学院计算机C语言练习及答案_第4页
长江师范学院计算机C语言练习及答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2/2计算机C语言练习一、单项选择题(每小题2分,共40分)1、关于字符常量,以下叙述正确的是________。 A、空格不是一个字符常量 B、字符常量能包含大于一个的字符 C、单引号中的大写字母和小写字母代表的是相同的字符常量 D、所有的字符常量都可以作为整型量来处理2、b等于() A、1000字节 B、1024字节 C、1000×1000字节 D、1024×1024字节3、有以下程序

main()

{

chark;

inti;

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

{

scanf("%c",&k);

switch(k)

{

case‘0’:printf("another\n");

case‘1’:printf("number\n");

}

}

}

程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是________。 A、another

number B、another

number

another C、another

number

number D、number

number4、以下语句中,循环次数不为10次的语句是()。 A、for(i=1;i<10;i++); B、i=1;do{i++;}while(i<=10); C、i=10;while(i>0){--i;} D、i=1;m:if(i<=10){i++;gotom;}5、定义如下变量和数组:intk;inta[3][3]={9,8,7,6,5,4,3,2,1};则下面语句的输出结果是________。

for(k=0;k<3;k++)printf("%d",a[k][k]); A、753 B、951 C、963 D、7416、表达式y=(13>12?15:6>7?8:9)的值为________。 A、9 B、8 C、15 D、17、关于数组的叙述中,下列说法不正确的是________。 A、数组是最简单的复合数据类型,是有限元素的有序集合 B、数组的元素可以是值(基本数据类型)、对象或其他数组 C、定义数组时,必须分配内存 D、一个数组中的元素都必须是相同的类型8、若变量均已正确定义并赋值,以下合法的c语言赋值语句是________。 A、x=y=5; B、x=n%2.5; C、x+n=l; D、x=5=4+19、char*s="\t\\name\\address\n";指针s所指字符串的长度为:。 A、说明不合法 B、19 C、18 D、1510、下面的C程序完成的功能是________。

#defineSIZE5

voidfunc(intdata[SIZE]);

main()

{

inti,buf[SIZE];

printf(""Pleaseinput%dnumbers:"",SIZE);

for(i=0;idata[j+1])

{

d=data[j];

data[j]=data[j+1];

data[j+1]=d;

}

} A、对一维数组降序排序 B、对一维数组升序排序 C、对一维数组逆向排序 D、对一维数组顺序排序11、在c语言程序中,以下描述正确的是______。 A、函数的定义可以嵌套,但函数的调用不可以嵌套 B、函数的定义不可以嵌套,但函数的调用可以嵌套 C、函数的定义和函数的调用均不可以嵌套 D、函数的定义和函数的调用均可以嵌套12、下面实现换行功能的格式符为________。 A、\t B、\n C、\a D、\k13、请选出正确的程序段 A、int*p;

scanf("%d",p);

… B、int*s,k;

*s=100;

… C、int*s,k;

char*p,c;

s=&k;

p=&c;

*p='a';

… D、int*s,k;

char*p,e;

s=&k;

p=&c;

s=p;

*s=1;

…14、若有下面的说明和定义,则sizeof(structaa)的值是______。

structaa

{

intr1;

doubler2;

floatr3;

}

maya; A、20 B、18 C、14 D、1615、有以下程序

#include<stdio.h>

intf(intx)

{

inty;

if(x==0||x==1)return(3);

y=x*x-f(x-2);

returny;

}

main()

{

intz;

z=f(3);

printf("%d\n",z);

}

程序的运行结果是________。 A、0 B、9 C、6 D、816、程序设计语言中________。 A、while循环语句的执行效率比do-while循环语句的执行效率高 B、while循环语句的循环体执行次数比循环条件的判断次数多1,而do-while语句的循环体执行次数比循环条件的判断次数少1 C、while语句的循环体执行次数比循环条件的判断次数少1,而do-while语句的循环体执行次数比循环条件的判断次数多1 D、while语句的循环体执行次数比循环条件的判断次数少1,而do-while语句的循环体执行次数等于循环条件的判断次数17、已知函数的原形如下,其中结构体a为已经定义过的结构,且有下列变量定义

structa*f(intt1,int*t2,structat3,structa*t4)structap,*p1;

inti;

则正确的函数调用语句为 A、&p=f(10,&i,p,p1); B、p1=f(i++,(int*)p1,p,&p); C、p=f(i+1,&(i+2),*p,p); D、f(i+1,&i,p,p);18、下述程序段的输出结果是________。

intx=10;

inty=x++;

printf("%d,'%d,(x++,y),y++); A、11,10 B、11,11 C、10,10 D、10,1119、若已定义实参数组inta[3][4]={2,4,6,8,10};则在被调用函数f的下述定义中,对形参数组b定义正确的选项是__________. A、f(intb[][6]) B、f(b)intb[][4]; C、f(intb[3][]); D、f(b)intb[4][5];20、在C语言中,下面那种数据类型不属于构造类型____ A、枚举类型 B、数组类型 C、结构体类型 D、共用体类型二、填空题(每小题2分,共20分)1、执行下面程序段后,k值是________。

k=1;

n=263;

do

{

k*=n%10;

n/=10;

}

while(n);2、预处理命令以______开头。3、在c语言中,标识符是由英文字母、数字、________组成的。4、C标准库函数中,字符串的处理函数包含在______头文件中,数学函数包含在math.h头文件中。5、下面程序段的运行结果是________.

inti=1,s=3;

do

{

s+=i++;

if(s%7==0)continue;

else++i;

}

while(s<15);

printf("%d",i);6、已知"floatx=0.5;inty=8;",则算术表达式"(int)(x+y/5)"的值是________。7、在函数中使用______语句返回值。8、ferror函数用来检测文件读写时是否发生错误,若未发生读写错误,则返回值是________。9、以下程序的输出结果是________。

#include<stdio.h>

voidswap(int*a,int*b)

{

int*t;

t=a;

a=b;

b=t;

}

main()

{

inti=3,j=5,*p=&i,*q=&j;

swap(p,q);

printf("%d%d\n",*p,*q);

}10、执行下列程序的输出结果是________。

main()

{

floata=1,b;

b=++a*++a;

printf("%f\\n",b);

}三、编程题(每小题分,共40分)1、求出10至1000之内能同时被2、3、7整除的数,并输出。(本题10分)2、编写程序:字符串排序。如下:

请输入3个字符串,每个字符串以回车结束!:

b

a

t

排序后的结果为:

a

b

t(本题14分)3、有以下学生信息,使用结构体数组存储这些信息

structstudent{

intnum;//学号

intcomputer;//计算机成绩

}s[5]={{101,75},{103,80},{104,85},{106,90}};

再输入一条新记录,插入到结构体数组中,让5条记录按计算机成绩升序有序。

【输入形式】2个数据都使用空格分隔

【输出形式】分五行输出数据,每行数据均使用空格分隔

【输入样例】10288

【输出样例】每行数据均使用一个空格分隔,分五行输出

10175

10380

10485

10288

10690(本题16分)

参考答案及解析一、单项选择题1、D【解析】本题考查字符常量的4个知识点:①空格是一个字符常量,而且单引号中的空格不可以省略:②字符常量只能包含一个字符:⑨单引号中的大写字母和小写字母代表的是不相同的字符常量:④所有的字符常量部作为整型量来处理,在计算机内部,其对应的整数值就是ASCII码值。2、D3、C4、A5、B【解析】本题中二维数组的每个元素就是一个由三个元素构成的一维数组,根据条件for(k=0;k<3;k++)和要求的a[k][k]可以得出本题的答案应该是951。6、C7、C【解析】【命题目的】考查数组的基本概念。【解题要点】定义数组时,并不分配内存,所以对数组的定义并不要求给出其元素的个数。【考点链接】数组分配内存是通过new操作符或静态初始化来实现的。8、A9、D10、B11、B12、B13、C【解析】本题的选项A)和B)犯了一个同样的错误,即指针变量p定义后并没有指向具体的变量。也就是说,p中没有确定的地址值,它的值是不可预见的,所指向的单元也是不可预见的,因此不能进行赋值操作。另外,在选项D)中,s是int型指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变量s。14、D15、C16、D17、B【解析】本题目中函数f的返回值为结构类型的指针,函数的四个形参分别为:t1为整型,t2为整型的指针,t3为structa类型,t4为structa类型的指针。在进行函数调用的时候,函数的实参必须要与形参说明相对应,函数的返回值也要赋给相应类型的变量。选项A)函数的返回值不能赋给一个常量;选项C)&(i+2)没有什么意义;选项D)返回值没有传递给任何变量,向函数传递的应该是structa类型的指针,可是传的却是变量。18、A19、B20、A二、填空题1、362、#3、下划线4、string.h5、86、17、return8、0#零9、['35']10、['6.000000']三、编程题1、#include"stdio.h"

main()

{inti;

for(i=10;i<=1000;i++)

if(i%2==0&&i%3==0&&i%7==0)

printf("%8d",i);

printf("\n");

}2、#include<stdio.h>

#include<stdlib.h>

#include<string.h>

voidswap(char*str1,char*str2);

intmain()

{

charstr1[20],str2[20],str3[20];

printf("请输入3个字符串,每个字符串以回车结束!:\n");

fgets(str1,(sizeofstr1/sizeofstr1[0]),stdin);

fgets(str2,(sizeofstr2/sizeofstr2[0]),stdin);

fgets(str3,(sizeofstr3/sizeofstr3[0]),stdin);

if(strcmp(str1,str2)>0)swap(str1,str2);

if(strcmp(str2,str3)>0)swap(str2,str3);

if(strcmp(str1,str2)>0)swap(str1,str2);

printf("排序后的结果为:\n");

printf("%s\n%s\n%s\n",str1,str2,str3);

return0;

}

voidswap(char*str1,char*str2)

{

chartem[20];

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论