江西中医药大学2022年C语言程序设计及答案_第1页
江西中医药大学2022年C语言程序设计及答案_第2页
江西中医药大学2022年C语言程序设计及答案_第3页
江西中医药大学2022年C语言程序设计及答案_第4页
江西中医药大学2022年C语言程序设计及答案_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

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

文档简介

2/2C语言程序设计一、单项选择题(每小题2分,共40分)1、在c语言中,要求运算数必须是整数的运算符是________。 A、< B、% C、/ D、>【答案】B2、在c语言中,能表示无符号长整型常数的是________。 A、OL B、4962710U C、912374u D、2UL【答案】D3、有定义intn=789;下列表达式结果为8的是________。 A、n/10%2 B、(n-n%10)/100 C、n%10 D、n%100/10【答案】D【解析】/比%的优先级要高。注意:n/10%2的结果应是0,n/10结果为78,用78在除以2求余则得0;(n-n%10)/100的结果应是7,n%10得9,780/100得7;n%10的结果显而易见是9。4、有如下程序:

main()

{

intx=1,a=0,b=0;

switch(x)

{

case0:

b++;

case1:

a++;

case2:

a++;

b++;

}

printf("a=%d,b=%d\n",a,b);

}

该程序的输出结果是________。 A、a=2,b=1 B、a=1,b=1 C、a=1,b=0 D、a=2b=2【答案】A5、设i和x都是int类型,则for循环语句。for(i=0,x=0;i<=9&&x!=876;i++)scanf("%d",&x); A、最多执行10次 B、最多执行9次 C、是无限循环 D、循环体一次也不执行【答案】A6、已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是______。 A、p=max; B、*p=max; C、p=max(a,b); D、*p=max(a,b);【答案】A7、设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是________。 A、x&&y B、x<=y C、x||y+z&&y—Z D、!((x<Y)&&!Z||1)【答案】D8、若希望下列的程序运行后输出25,程序空白处的正确选项是________。

main()

{

inti,j=50,a[]={7,4,10,5,8};

for(_____)

j+=a[i];

print(”%d”,j-40);

} A、i=1;i<4;++i B、i=1;i<3;++i C、i=4;i>2;i-- D、i=2;i<4;++i【答案】D【解析】要想使程序输出25,则j-40=25,j=65,而j初值是50,所以填入for循环的语句,使引用的数组元素累加65-50=15即可,D选项中,i下标从0开始,i=2指向第3个数50+a[2]=50+10=60,继续循环60+a[3]=65+5=65,此时i=4跳出,循环结束。9、若有以下定义语句charc1=’b’,c2=’e’;

printf("%d,%c\n",c2-c1,c2-‘a’+’a’);

则输出结果是________。 A、2,M B、3,E C、2,E D、输出项与相应的格式控制不一致,输出结果不确定【答案】B10、以下正确的字符串常量是________。 A、"\\\" B、'abc' C、OlympicGames D、""【答案】D11、以下函数func()的功能是:使具有n个元素的一维数组b的每个元素的值都增加2,划线处应填入_____.

func(intb[],intn)

{

int;

for(i=0;i<n;i++)__________;

} A、b[i++] B、b[i]++ C、b[i+=2] D、b[i]+=2【答案】D12、以下叙述中正确的是______。 A、全局变量的作用域一定比局部变量的作用域范围大 B、静态(static)类别变量的生存期贯穿于整个程序的运行期间 C、函数的形参都属于全局变量 D、未在定义语句中赋初值的auto变量和static变量的初值都是随机值【答案】B13、在64位计算机中,一个字长所占字节数为________。 A、64 B、8 C、4 D、1【答案】B14、以下叙述正确的是________。 A、在C程序中,主函数必须位于程序的最前面 B、在C程序中,一行只能写一条语句 C、C程序的基本结构是程序行 D、C语句是完成某种程序功能的最小单位【答案】D15、有以下程序

voidsum(inta[])

{

a[0]=a[1]+a[2];

}

main()

{

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

sum(&a[2]);

printf("%d\n",a[2]);

}

程序运行后的输出结果是______。 A、6 B、7 C、5 D、9【答案】D16、下面程序输出的结果为________。

#include<stdio.h>

intmain()

{

int

s=3;

switch(s)

{

case

5:printf("我");

break;

case

4:printf("是");

case

3:printf("好");

case

2:printf("学");

break;

default:printf("生");

}

} A、好 B、好学 C、好学生 D、我是好学生【答案】B17、设有如下定义:

structsk

{

intn;

floatx;

}data,*p;

若要使p指向data中的n域,正确的赋值语句是________。 A、p=&datn; B、*p=datn; C、p=(structsk*)&datn; D、p=(structsk*)datn;【答案】C【解析】本题主要考查了结构体变量引用成员数据的方法,主要有以下几种:结构体变量名,成员名或结构体指针->,成员名的方法来引用结构体成员。18、下面程序段的运行结果是________.chara[7]="abcdef";charb[4]="abc";strcpy(a,b);printf("%c",a[5]); A、空格 B、\0 C、e D、f【答案】D19、以下叙述中正确的是________。 A、一条语句只能定义一个数组 B、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元 C、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式 D、在引用数组元素时,下标表达式可以使用浮点数【答案】B【解析】A选项中,一条语句只能定义一个数组是不准确的,可以通过一条语句定义多个数组;C选项中,数组说明符的一对方括号中可以是整型常量,可以是整型常量表达式;D选项中,在引用数组元素时,下标表达式必须是整型的。因此B选项正确。20、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是

structnodechardata;

structnode*next;

a,b,*p=&a,*q=&b; A、next=q; B、next=&b; C、p->next=&b; D、(*p).next=q;【答案】B【解析】要把结点b连接到结点a之后,必须把b的地址给a的next指针,选项A中,指针变量q保存的就是变量b的地址,选项B中的p是指针变量,应该是p->next=&b;在选项D中,用*运算符取出结构体变量,并且保存的就是b的地址,所以正确。二、判断题(每小题2分,共20分)()1、若变量定义为intfahr;,则表达式5*(fahr-32)/9和表达式5/9*(fahr-32)是等价的。【答案】错误()2、c语言中,所有的变量在使用前都必须先声明。【答案】正确()3、内层break语句可以终止嵌套的switch,使最外层的switch结束。【答案】错误()4、continue语句的作用是结束本次循环。【答案】正确()5、比较两个字符串是否相等不能通过条件运算符"=="。【答案】正确()6、c语言中不允许嵌套定义函数。【答案】正确()7、在c语言中,引用数组元素时,数组下标的数据类型只能是整型常量。()【答案】错误()8、当函数的实参与形参同名时,它们将共占内存单元。()【答案】错误()9、一个数组是由连续的一块内存单元组成的,指针变量就是这块连续内存单元的首地址【答案】错误()10、全局静态变量的作用域限制在定义它的源文件内,只能为该源文件内的函数公用。【答案】正确三、编程题(每小题分,共40分)1、从键盘输入10个数,统计非负数的个数,并计算非负数的和。(本题10分)【答案】#include

voidmain()

{

inti,n=0,sum=0;

inta[10];

printf(“请输入10个数:”);

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

scanf(“%d”,&a[i]);

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

if(a[i]>=0)

{

sum=sum+a[i];

n++;

}

printf("非负个数是%d,sum=%d\n",n,sum);

}2、编写程序,从输入的一行字符串中抽取一部分(从第n个字符开始,抽取m个字符)构成一个新的字符串,并输出。其中n>0且n<=字符串的长度,否则打印“起始位置n越界”

要求:n和m都由用户输入。

如果抽取的字符串长度不够,则按照实际长度抽取,例如,字符串为“abcde”,若n=2,m=3,则抽取结果为“bcd”;若n=3,m=5,则抽取结果为“cde”;若n=0,m=4则输出:起始位置0越界;若n=6,m=2则输出:起始位置6越界(本题14分)【答案】#include<stdio.h>

#include<string.h>

intmain()

{

intn,m,i;

unsignedlongl;

chars[80];

gets(s);

scanf("%d%d",&n,&m);

l=strlen(s);

if(n+m-1>l){

m=l+1-n;

}

if(n>0&&n<=l){

for(i=n-1;i<n+m-1;i++){

printf("%c",s[i]);

}

}else{

printf("起始位置%d越界",n);

}

return0;

}3、有以下职工信息,使用结构体数组存储这些信息,从键盘输入5条记录,

之后在屏幕上依次输出职工信息。

structstuff{

intstuffID;//职工编号

floatbonus;//工资

};

【输入形式】5条职工信息,分行输入,数据间空格隔开

【输出形式】分行输出5条职工信息和最低工资,每行数据均使用1个空格分隔

【输入样例】

10018540.59

10026345.45

10033500.65

10044898.86

10055345.80

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

10018540.59

10026345.45

10033500.65

10044898.86

10055345.80

minBonus=3500.65(本题16分)【答案】#include<stdio.h>

structstuff

{

intstuffID;

floatbonus;

}a[5];

intmain()

{

inti;

floatmin;

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

scanf("%

温馨提示

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

评论

0/150

提交评论