c语言试题月考

发布 2020-05-16 05:27:28 阅读 1740

计算机应用类专业2023年9月份月考c语言试题。

一、选择题( 5分*10=50分)

1、运行以下程序的输出结果是( d )

main( )

int x=10,y=10,i;

for( i=0;x>8;y=++i)

printf("%d %d",x--,y);}

a、10 1 9 2 b、9 8 7 6 c、10 9 9 0 d、10 10 9 1

解析】 本题中变量x值的变化取决于自增运算符,而变量y值的改变取决于循环语句表达3中变量i的变化,也就是执行循环体后再改变y的值。但最后一轮由于条件不满足而不输出y值。

2、运行以下程序的输出结果是( b )

main( )

int y=18,i=0,j,a[8];

dox-=3;

printf("%d",y);

a、2 b、 4 c、6 d、10

解析】根据程序可知,程序每次循环状态如表所示。

循环执行到第6次时,由于x=10所以退出循环。因此本题答案为c

5、运行以下程序的输出结果是( a )

#include< >

void main( )

char s[16]="12345\0\t\t\t";

printf("%d %d",strlen(s),sizeof(s));

a、 5 16 b、 9 16 c、 5 13 d、 13 16

解析】本题主要考查字符串处理函数strlen( )sizeof( )strlen( )是长度测试函数,在测试过程中如遇到字符串结束标志符时自动停止读取,题中第6个字符为字符串结束标志符就停止,所以有效字符数为5。sizeof( )函数是求某一数据类型所占的内存空间的长度,此题中测试的是字符数组s所占内存空间的长度,而数组s的长度在定义时已明确指出为16,所以sizeof( )测出的值是16。所以本题答案为a。

6、运行以下程序的输出结果是( b )

#include< >

void main( )

int i,a[10]=;

for(i=1;i<9;i++)a[i]=a[i-1]+a[i+1];

printf("%d%d",a[5],a[7]);

a b、 2035 c、 812 d、 2744

解析】本题主要考查数组元素的算术运算与其值的变化特点。

循环到第8次后,变量i的值变为9,不符合条件,退出循环。根据**所示本题答案为b。

7、以下程序的输出结果是( a )

main( )

int n=4;

while(n--)

printf("%d ",n);}

a、2 0 b、3 1 c、3 2 1 d、2 1 0

解析】本题考查while循环语句和自减运算符的运用。由程序段可知,循环的控制表达式while(n--)中,n相当于while(n) n--;所以每循环一次,n值减1,n值的变化是 4,3,2,1,0。但由于在printf("%d ",n);语句中又存在--n的变化,所以程序中n的变化实质是每循环一轮其值递减2,即420,当n变为0时while(n)条件不满足,退出循环。

8、若变量a,i已正确定义,且i已正确赋值,合法的语句是( b )。

a)a==1 b)++i;c)a=a++=5;d)a=int(i)

解析】本题考查c语言语句的特点,c语言中语句的结束是以“;”为标志。由此可排除选项a和d。其二常数不可以赋值给一个表达式也不可以常量赋给常量,由此可排除选项c。故答案为b。

9、运行以下程序的输出结果是(c)

#include<>

void main()

char i,s[5]=;

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

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

a abc b defgh c defghijk d defghijk

defgh ijk ijkxyz

ijk解析】此题考查字符串数组的含义,字符串数组实质是数组中每一个元素又都是存放一个字符串的数组,所以可以将一个字符数组视为一个二维字符数组。其中的元素按行占连续的存储单元,且其中有些存储单元是空闲的,各字符串并不是一串连着一串存放,总是从每行的第0个元素开始存放一个新的串。此题中第二行由于数组长度刚好与字符个数相等,即长度不够,则字符串结束标志符'\o'未能存入s中,而是存在s数组之后的一个单元里,所以本题的存放形式如图示。

题中使用了printf()函数的"%s"格式符来输出字符串,实现时从数组的第一个字符开始逐个字符输出,直到遇到第一个'\0'为止(其后即使还有字符亦不输出)。

10、某店一个月的收入和支出总共记录了 n个数据,,。其中入记为正数,支出记为负数。该店用右边的程序框图计算月总收入s和月净盈利v,那么在图中空白的判断框和处理框中,应分别填入下列四个选项中的( c )

a)a>0,v=s-t

b) a<0,v=s-t

c) a>0, v=s+t

d)a<0,v=s+t

解析】月总收入为s,因此a>0时归入s,判断框内填a>0,支出t为负数,因此月盈利v=s+t。

二、填空题(4分*5=20分)

1、有int a=3,b=4,c=5,x,y;,则以下表达式的值为 0 。

(x=a)&&y=b)&&0

解析】对于c语言中逻辑表达式有且只有“1”和“0”两个逻辑值,在运算过程中按从左至右的顺序进行运算,但要考虑运算符的优先级别。

2、以下程序对输入两个整数,按从大到小顺序输出。请在[ ]内填入正确内容。

main()

int x,y,z;

scanf(“%d,%d”,&x,&y);

if ( x

pringf(“%d,%d”,x,y);

解析】本题是要求按从大到小的顺序输出,程序中的z是用来交换x,y的中间变量,根据后一空中z=x;可知只有当x的值小于y的值时才会进行交换。

3、以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请填空。

sub(int k,int n)

int a1,a2;

a2= k%10; a2= k%10 ; a2=k/10 ;

a1= k/10; a2=(k-a2)/10; a2=k-a2*10 ;

if((k%3==0 &&a2==5)||k%3==0&&a1==5))

printf("%d",k);

n++;return n;

else return -1;

main()

int n=0,k,m;

for(k=10;k<=99;k++)

m=sub(k,n);

if(m!=-1) n=m;}

printf("n=%d",n);

解析】本程序是要求选出能被3整除且至少有一位是5的两位数,根据这一特点就说明要成立必须包含两个方面(1)能被3整除;(2)其中个位或者十位上有个数字5且同时成立,题中if语句中的条件中包含的第一个方面,所以只需从这个两位数中分别分离出个位或十位与其结合就可以。

n=6三、阅读程序写结果(5分*5=25分)

#include<>

void main()

C语言试题

鄂州高新技术学校1001班。c语言第二章试题。姓名分数。一 编写程序求出下面的数字表达式的值。每小题8分,共40分 1 v 2 r 3 y x3 3x 7 4 f g 其中g 6.637 10 3 二 设a 6,b 4,编写程序输出下列运算表达式的值,并写出下列运算表达式的结果。每小题5分,共30分...

C语言试题

鄂州高新技术学校1001班。c语言第四章试题。姓名分数。一 编写程序求1 2 3 4 5的值。10分 二 编写程序求1!2!3!4!5!的值。10分 三 编写程序,输入一个数,按相反次序输出。10分 四 编写程序,从键盘上输入10个整数,求其和。10分 五 编写程序,输入两个整数,求它们的最大公约数...

C语言试题

鄂州高新技术学校2011年秋季期末考试。1001班c语言试题。姓名分数。一 填空题 每小题5分,共20分 1 c语言的关系运算符中属于高优先级组的有 低优先级组的有。关系表达式是用关系运算符连接两个表达式组成的式子。2 若a 5,b 4,c 3,则逻辑表达式 a b c 1 b c 2 的值为 1 ...