专升本C语言考试真题及解析

需积分: 5 11 下载量 67 浏览量 更新于2024-07-05 2 收藏 421KB PDF 举报
"专升本C语言真题.pdf" 是一份针对C语言考试的复习资料,包含多项选择题,涉及C语言的语法、运算符、流程控制语句、变量、数组以及函数调用等多个核心概念。 1. C语言标识符:标识符是编程时使用的变量名、函数名等,必须以字母或下划线开头,后面可以跟字母、数字或下划线。在题目中,选项C "_do" 是一个合法的标识符,而A、B、D均不符合规则。 2. 自增运算符与输出:`a++` 是自增运算符,会先使用当前值然后增加。题目中的程序段先输出 `a` 的原始值,然后增加 `a`。因此,输出为 `10`,之后 `a` 的值变为 `11`,所以答案是B。 3. if语句的格式:if语句需要遵循一定的语法结构。选项B中的if语句缺少结束的大括号,且else后面直接跟了scanf,这不是一个有效的if-else结构,所以B是错误的形式。 4. 条件判断与赋值:在if条件语句中,`a>b&&b>c` 表示如果 `a` 大于 `b` 且 `b` 大于 `c`,那么执行相应代码。由于没有具体数值,我们无法确定a的最终值,但题目给出了答案C,表示在满足条件的情况下,`a` 的值变为 `2`。 5. for循环的理解:for循环的通用形式是 `for(初始化; 布尔表达式; 更新)`。对于 `for(表达式1;;表达式3)`,省略了中间的布尔表达式,通常意味着始终为真,相当于 `for(表达式1;1;表达式3)`,所以C是正确答案。 6. 多层循环与输出:"1112"的程序段要求通过嵌套循环实现特定输出。在选项B中,外部循环每执行一次,内部循环都会打印两个数字并跳出,因此输出为 "1112",B是正确答案。 7. 字符数组的元素个数:静态字符数组 `str[10]="China"` 包含10个元素,包括字符串结束符`\0`,所以元素个数是D,10。 8. 函数参数传递:函数 `fun` 接收三个参数,但在调用时只传入了一个值。在C语言中,参数传递是按值传递,这意味着对函数内部的变量修改不会影响到函数外部的变量。因此,即使函数内部改变了 `a` 的值,输出仍然是调用前的值,即C,31。 9. 文件包含:在C语言中,文件包含允许将一个源文件的内容插入到另一个源文件中。被包含的文件可以是其他源文件或头文件,不一定以 ".h" 结尾,但通常头文件用 ".h"。选项B正确表示可以嵌套包含其他文件。 10. 指针与函数:`fun` 函数接收两个整型指针,并通过它们打印和修改值。在主函数中,`x` 和 `y` 的值被传递给 `fun`,然后 `fun` 修改了它们的值。但由于这些修改仅在函数内部有效,主函数中的 `x` 和 `y` 未改变,所以输出结果是未定义的,即C。 这些题目涵盖了C语言的基本概念,包括语法、逻辑控制、函数、数组、指针和文件包含等,对于准备C语言考试的考生来说,是很好的练习材料。
2010-09-30 上传
【程序1】 题目:有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数都是多少 1.程序分析:可填在百位,十位,个位的数字都是1,2,3,4.组成所有的排列后再去 掉不满足条件的排列. 2.程序源代码: main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i,j,k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); } } ============================================================== 【程序2】 题目:企业发放的奖金根据利润提成.利润(i)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数 1.程序分析:请利用数轴来分界,定位.注意定义时需把奖金定义成长整型. 2.程序源代码: main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03; else if(i<=1000000) bonus=bonus6+(i-600000)*0.015; else bonus=bonus10+(i-1000000)*0.01; printf("bonus=%d",bonus); }