华东交通大学专升本C语言考试真题及解析

5星 · 超过95%的资源 需积分: 34 91 下载量 198 浏览量 更新于2024-07-30 12 收藏 85KB DOC 举报
"这是一套专为华东交通大学专升本考试准备的C语言试题,包含了多项选择题和具体的编程题目,旨在帮助考生复习C语言的基础知识和编程技能。" 1. C语言定义变量: 在C语言中,定义变量时需要指定变量类型,如`int a = 10, *b = &a;`定义了一个整型变量a和一个指向整型变量a的指针b。选项C展示了这种定义方式,是正确的。 2. 运算符优先级: C语言中,运算符的优先级各不相同,`->`具有较高的优先级,通常用于解引用指针并访问成员。`++`、`&&`和`=`的优先级依次降低。因此,选项A的`->`是最高优先级。 3. 逻辑表达式等价性: 表达式`!(x>0&&y>0)`等价于`!(x>0)||!(y>0)`,因为逻辑非`!`会先应用到整个条件`(x>0&&y>0)`上,如果两个条件都不满足,则整个表达式为真。 4. `printf`函数的使用: 当使用`printf`打印多个变量时,如果没有提供适当的分隔符,如逗号`,`,则所有变量会按顺序输出,没有默认的分隔。因此,选项D的`666,888`是正确答案。 5. `switch`语句的执行: C语言中的`switch`语句会逐行执行匹配的`case`,直到遇到`break`。如果缺少`break`,将继续执行下一个`case`。因此,程序将输出`022111`,对应选项A。 6. 表达式|x-y|<10的等价形式: 表达式`(x-y)*(x-y)<100`并不等价于`|x-y|<10`,因为平方后可能会导致绝对值超过10的数变得小于100。选项D是不正确的表达式。 7. 数组的元素个数: 对于声明`inta[11][11]`的二维数组,总元素个数为11行乘以11列,即121个元素,对应选项D。 8. 结构体指针与成员访问: `struct node`定义了一个结构体,`x`是一个结构体变量,`*p=&x`定义了指向`x`的指针。选项A和B都正确地访问了`k`成员,而选项D的`x->k=2`是错误的,因为`x`不是一个指针。 9. 赋值或赋初值的方式: 选项B是错误的,因为数组`str`需要预先指定大小,然后才能用字符串字面量赋值。正确的方式是`char str[10] = "string";` 10. 函数`main`中可使用的变量: 在`main`函数中,可以直接使用的变量包括局部变量、全局变量以及任何在函数中声明的指针变量,如果它们指向了全局或静态存储区的变量。在给出的代码片段中,没有定义新的变量,所以没有具体的变量列表。 这些题目覆盖了C语言的基本概念,如变量定义、运算符优先级、逻辑表达式、输入/输出、控制结构(如`switch`)、数组、结构体和指针等。解答这些问题需要对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); }