建材秒知道
登录
建材号 > 设计 > 正文

计算机二级c语言程序设计有哪些题型

震动的煎蛋
美好的红酒
2022-12-31 02:41:38

计算机二级c语言程序设计有哪些题型?

最佳答案
可爱的花卷
怕黑的书本
2025-08-27 21:24:51

全国计算机二级C语言程序设计包括40个单选题(每题一分)和三道操作题(60分)。

单选题中1~10题为二级公共基础知识,单选题的11~40题是C语言的内容。

操作题包括程序填空(18分)、程序改错(18分)和编程题(24分)各一题。

程序填空是将一个完整的程序,扣掉两到三处,让考生将它填写完整。由于每位考生具体抽到的题目不同,程序填空有2到3个空要填。

程序改错也是一个完整的程序,其中有2~3处错误要求考生将他们改正。

编程题是要求考生编写一个程序,然后运行出题干要求的结果。题目中主函数main()会完整给出,在主函数中将调用fun()函数,fun函数由考生自己编写。编程题以运行结果给分,所编写完成后必须运行,否则没分。

二级C语言程序设计考试涉及公共基础知识和C语言两块。公共基础知识内容包括数据结构与算法、程序设计基础、软件工程基础、数据库设计基础四部分。考10个单选每个1分。

C语言有基础知识(C语言概述、常量与变量、数据类型、运算符和表达式),编程三大结构(顺序结构、选择结构、循环结构),数组、函数和指针,其他内容(预处理命令、结构体和共用体、位运算、文件)四大部分内容。重点是第二、三部分。

最新回答
简单的鸡翅
大力的曲奇
2025-08-27 21:24:51

1、答案:A

(单引号括起来的都是字符,而且一对单引号最多对应一个字符,\反斜杠是转义字符的开始,\72是ASCII码对应的字母H。也就是把H这个字母存到了变量char a中。就一个字符H。)

2、ACDE

解析:

int a=3,b=4,c=5,

A、a>b

B、a<=b

C、(a||b)>c

D、a<=(b||c)

E、!((a<b)&&!c||b)

优先级由大到小:() ! && ||

A选项,3>4错误,逻辑值0。

B选项,3<=4正确,逻辑值1。

C选项,(3||4)>5,(3||4)"或"逻辑运算符两边只要有一个非0的整个值就是1,1>5错,逻辑值0。

D选项,3<=(4||5)错误,逻辑值0。

E选项,!((3<4)&&!5||4),先(3<4)逻辑值1,!5逻辑值0,1&&0是0,0||4是1,!1是0,所以逻辑值0。

3、AC。

解析:A可以,B答案b不能被赋值(自左向右,计算||左侧就已经是1了右边就不用再计算了整个表达式无论右边如何整个逻辑值必定是1,计算机也就不会计算右边了)C可以(因为&&两边都必须计算才能得出最后的逻辑值答案),D不可以a不能被赋值(&&左边就一个a,构不成赋值,可能存放一个随机值,右边可以被赋值)。

4、ABCD。

外部函数几乎可以被所有函数调用。只要开头#include” "引入。

孝顺的彩虹
无语的高山
2025-08-27 21:24:51

完整的fun函数代码如下:

int fun(STU a[], int n, STU h[]) {

    int i, k = 0

    double avg = 0

    for (i = 0i <ni++) {

        a[i].sum = a[i].s1 * 0.7 + a[i].s2 * 0.3

        avg += a[i].sum// 先计算总分

    }

    avg = avg / n// 再计算平均分

    for (i = 0i <ni++) {

        if (a[i].sum >avg)  { // 统计平均分以上的学生

            strcpy(a[i].level, "均分以上")

            h[k++] = a[i]

        }

    }

    return k

}

运行结果如下:

可见成功输出了平均分以上的学生信息,望采纳~

霸气的眼神
明理的柚子
2025-08-27 21:24:51
分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

按工资高低纳税,已知不同工资s的税率p如下: s<1000 p=0%

1000≤s<2000 p=5%

2000≤s<3000 p=8%

3000≤s<5000 p=10%

5000≤s p=15%

编一程序,输入工资数,求纳税款和实得工资数,

要求:(1)改错; (2)用if多分支形式重写程序。

main()

{ float s,p,t,s1

int m

scanf(“%d”,&s)

m=s%1000

if s>5000 m=5

switch (m)

{ case 0: p=0

case 1: p=0.05break

case 2: p=0.08break

case 3:

case 4: p=0.1break

case 5: p=0.15break

}

t=s*ps1=s-t

printf(“%.2f,%.2f” ,t, s1)

}

解析:

错误有两个:

第一.

m=s%1000

不能用求余,要用除,而且要强制转化

第二.

case 0: p=0这一行少一个break

第三.

if s>5000 m=5

应该加括号

不足有一个.

scanf(“%d”,&s)

应该为 %f

程序修改为:

——-——--

main()

{

float s,p,t,s1

int m

scanf("%f",&s)

m=(int)s/1000

if (s>5000) m=5

switch (m)

{ case 0: p=0break

case 1: p=0.05break

case 2: p=0.08break

case 3:

case 4: p=0.1break

case 5: p=0.15break

}

t=s*ps1=s-t

printf("%.2f,%.2f" ,t, s1)

}

用If 为

main()

{

float s,p,t,s1

int m

scanf("%f",&s)

m=(int)s/1000

if (s>5000) m=5

if (m==0)

p=0

else if (m==1)

p=0.05

else if (m==2)

p=0.08

else if (m==3 || m==4)

p=0.1

else if (m==5)

p=0.15

t=s*ps1=s-t

printf("%.2f,%.2f" ,t, s1)

}

内向的人生
自由的雪碧
2025-08-27 21:24:51
...

我就看了选择 你确定你写的都是正确答案吗

感觉错了好多

1.B

2.? 不知道

3.C

4.D

5.C

6.D

7.B

8.A

9.A

10.D

貌似前10题就对了2个

。。。

自求多福吧

孝顺的招牌
追寻的小懒猪
2025-08-27 21:24:51

一、判断题(每小题1分,共15分)

1.标准C中,只有数值型数据才能进行4则混合运算。

2.标准C中,_a是合法的自定义标识符。

3.有定义:float f表达式f+=(int)3.6%2”不符合C语言语法。

4.标准C中,逻辑运算的结果只有是1表示满足条件,而结果是0表示不满足条件。

6.以下运算符排列顺序满足按照优先级从高到低的排列:‘&&’、‘!’、‘==’、‘-’。

7.语句for()是非法的。

8.在C语言程序中可以由多个源文件构成,每个源文件都可以有自己的main()函数。

9.while和do-while的主要区别是后者至少无条件执行一次。

10.数组名代表数组的首地址是常量,所以将实参数组名表示地址传给形参数组名是错误的。

11.当函数没有返回值类型时,表示函数类型为void。

12.C语言中,指针变量作函数参数时,它们不是采取单向值传递的方式。

13.一个函数中只允许有一条return语句。

14.在C语言中,如果没有说明变量的存储类型是auto类型的。

15.由于指针中所存放的地址都是整数,所以整型指针和浮点型指针可以相互赋值。

二、填空题(每空1分,共15分)

1. 若a=4b=5,c=6则表达式c==(b=-a)中c的值是 (1) 。

2. 计算表达式的值:

4&&-4的值: (2) ;

设int a=3,b=4,c=5,则表达式a||b+c&&b==c的值: (3) ;

设x=2.5, a=7, y=4.7,则表达式x+a%3*(int)(x+y)%2/4的值: (4) ;

设a=12,则表达式a*=a/5的值: (5) ;

3. 若int x = 4,y = 6,z = 0;有循环while(x = y) {z ++;y--;}

则循环语句执行完后,z值为 (6) 。

4. 变量的指针就是指该变量的 (7) 。

5. 若有定义int (*p)[4],则标识符p是 (8) ;若有定义int *p[4],则标识符p是 (9) ;

6. 已有定义:char *p[ ]={“France”,“Chinese”,“Russia”,“America”};则语句printf(“%s”,p[2]);printf(“%c”,*(p[1]+2));printf(“%c”,*(*(p+1)+1));

的输出结果分别为: (10) 、 (11) 、 (12) 。

7. 已有定义: int x=65若格式化输出结果为“A, 65”,则对应的格式化输出语句为printf(“ (13) , (14) ”, x, x)。

8. 已定义:int a[][2]={1, 2, 3, 4, 2, 6, 7, 2};则a[3][0]= (15) 。

三、简答题(每题4分,共12分)

1、简述选择语句if和else语句对与switch语句的区别。

2、简述在循环语句中,break和continue的区别。

3、若int a[5],*p=a;简述*p++和(*p)++的区别。

四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4分,共16分)

五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分)

六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分)

七、编程题(8分)

编译程序,其功能是比较字符串的大小( 不允许 用系统提供的字符串比较函数strcmp)。要求是:

(1) 通过主函数调用一个函数strcompare来实现。

(2) 要求函数strcompare实现两个字符的比较:如第一个字符小于第二个字符则返回一个负值;如两个字符相等则返回0值;如第一个字符大于第二个字符则返回一个正值。

(3) 并输出两个字符串中相同部分的子串。

《C语言程序设计基础》试卷参考答案

一、判断题(每小题1分,共15分)

1~5 ; 6~10 ; 11~15

二、填空题(每空1分,共15分)

(1) 6 (2) 1 (3) 1 (4) 2.5 (5) 24 (6) 6

(7)地址 (8) 行指针,指向有四个元素的一维数组

(9)指针数组名,该数组有四个元素,每个元素都是指针

(10)Russia (11)i (12)h (13) %c (14) %d (15)7

三、简答题(每题4分,共12分)

1、if总是判断其后面的表达式的值是否为非零值,如是非零值则执行其后面的语句或由{}括起来的复合语句,否则执行else后面的语句。而switch语句则根据其后面表达式的可数值来判断,执行switch语句体内与其中的一个case:常量值相等语句后面的语句。执行break语句后,跳出switch语句体。

2、break是终止整个循环过程;continue是终止本次循环。

3、*p++首先取a[0]的值,然后p指向a[1];(*p)++使得a[0]的值自增1,但p保持不变。

四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4 分,共16分)

1、 (1)缺#include ; (2)scanf(“%f”,a)改为 scanf(“%f”,&a)

2、 (1)缺sum=0(2)for(i=1i<=3i++) 改为for(i=0i<3i++)

3、 (1)p1=p2 改为 *p1=*p2 (2)swap(&a, *p) 改为swap(&a, p)

4、 (1)在if(m<0)语句后添加else if(m==0) a=1(2) 添加 return(a)

五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分)

1、 (1)x=0(2)if(n==x) (3)s++或s=s+1

2、 (4)&num[i] (5)max<num[i]? (6)num[i]!=0

3、 (7)n-i-1 (8)a[j]>a[j+1] (9)a[j+1]=temp

4、 (10)count=0(11)n%10 (12)n>0或n!=0或n

六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分)

1、 #*#*#*

2、 main i=1 j=2 k=2

sub i=1 j=2 k=1 x=2

sub i=1 j=2 k=1 x=3

七、编程题(8分)

#include

main()

{

int i,j, flag=0

char str1[90],str2[90]

gets(str1)

gets(str2)

i=0

do{

flag=strcompare(str1[i],str2[i])

i++

}while(str1[i]!=’’ &&str2[i]!=’’ &&flag=0)

if(flag<0)printf(“%s小于%s ”,str1,str2)

else if(flag==0) printf(“%s 等于%s ”,str1,str2)

else printf(“%s大于%s ”,str1,str2)

printf(“两个字符串中相同的字串为:”)

j=0

i--后3句可用str1[i]=’’printf(“%s”,str1)代替//用str2也可以。

while(j<i){printf(“%c”,str1[i])j++} span=""></i){printf(“%c”,str1[i])j++}>

}

int strcompare(char c1,char c2)

{

int v

v=c1-c2

return v

}