"2015年1月试卷1"
该试卷是杭州电子科技大学的一份学生考试卷,主要考察C语言的基础知识,包括表达式的合法性、循环控制、输入输出格式、条件判断以及字符串处理等方面的内容。
1. 非法表达式的问题:在C语言中,选项A `i=j=0` 是合法的赋值表达式,B `(char)(65+13)` 转换并计算字符,C `0<=x<100` 是合法的逻辑表达式,而D `x+1=y+1` 不合法,因为C语言中不允许这样的赋值表达式,变量x和y之间不能直接用算术运算符连接。
2. 符合C语言语法的数组表达式:在C语言中,A `*a` 表示指针解引用,B `a[0]` 访问数组的第一个元素,C `a+1` 指向数组的第二个元素,而D `a++` 是非法的,因为数组名是常量,不能被自增或自减。
3. 循环控制表达式分析:C语言中的`while(!x!=0)s+=++x;` 表达式,实际上等同于 `while((!x)==1)s+=++x;`,当x为0时,!x为1,因此循环会执行一次,然后x变为1,!x变为0,循环结束。因此,输出为1。
4. 输入格式与变量赋值:在C语言中,使用`scanf("%d,%d",&a,&b)`来读取两个整数,正确的输入应该是`10,10`,这样a和b的值都会被赋为10。
5. 等价的for循环:给定的for循环语句用于打印不是3的倍数的数字,等价于C选项的`for(k=100;k<=200;k++)if(k%3!=0)printf("%4d",k);`,因为原循环在k是3的倍数时使用`continue`跳过当前迭代,并在其他情况下打印k。
6. 死循环避免:`do...while`循环中的条件`t!=n`,意味着只有当`t`不等于`n`时才执行循环体。如果`t`是每次加2,为了不陷入死循环,`n`应该是一个正奇数,使得`t`在某个时刻不再增加,即`t`等于`n`。
7. 字符串与数组处理:A选项中,`char*s="HDU"`是正确的字符串声明,而`char*s;s="HDU"`缺少类型说明;B选项,`chara[10]={"china"}`是初始化数组,而`chara[10];a={"china";}`的`a=`是错误的;C选项,`char*p="english"`声明了一个指向字符串的指针,等价于`const char*`,而`char`后面直接跟字符串常量是错误的。
8. 华氏-摄氏温度转换:题目描述中提到的温度转换,是编程问题中的一个经典例子,转换公式为`C = (F - 32) * 5/9`,其中C是摄氏温度,F是华氏温度。若要输出转换表,程序需要在一个范围内遍历华氏温度并进行转换。
这些题目覆盖了C语言的基础语法、逻辑表达式、流程控制、输入输出和字符串操作等多个核心知识点,旨在测试学生对C语言的基本理解和应用能力。