四川大学C语言期末试题

  • 格式:pdf
  • 大小:239.79 KB
  • 文档页数:8

C 循环体只执行一次 D 是无限循环 3.下列说法不正确的是( )。 A 主函数main中定义的变量在整个文件或程序中有效 B 不同函数中,可以使用相同名字的变量 C 形式参数是局部变量 D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复 合语句中有效 4.具有相同类型的指针类型变量p与数组a,不能进行的操作是( )。 A p=a; B *p=a[0]; C p=&a[0]; D p=&a; 5.关于return语句,下列正确的说法是( )。 A 可以在同一函数中出现多次 B 必须在每个函数中出现 C 只能在除主函数之外的函数中出现一次 D 在主函数中不能出现 6.数组名作为实参传递给形参时,数组名被处理为( )。 A 该数组的长度 B 该数组的元素个数 C 该数组的首地址 D 该数组中各元素的值 7.要打开一个已存在的非空文件"file"用于修改,选择正确的语句( )。 A fp=fopen("file","r"); B fp=fopen("file","w"); C fp=fopen("file","r+"); D fp=fopen("file","w+"); 8. 定义结构体的关键字是( ) A. union B. enum C.struct D.typedef 9. 以下程序的输出结果是( ) #define f(x) x*x int main(void) { int a=6,b=2,c; c=f(a)/f(b); printf(“%d\n”,c); } A. 9 B. 6 C. 36 D. 18五、填空题(本大题共来自0小题,每空2分,共20分)。
1
2
3
4
5
6
7
8
9
10
1.设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为( )。 2.设 int a=7,b=9,t;执行完表达式t=(a>b)?a:b后,t的值是( )。 3.设有以下宏定义,则执行赋值语句 a=PP*20;(a为int型变量)后,a 的值是( )。 #define PR 80 #define PP PR+403 4. 下面程序的功能是:输出 100以内(不包含100)能被 3整除且个位数 为 6的所有整数,请填空。 int main( ) { int i; for(i=1; _____________; i++) if (_______________) printf("%d", i); } 5. 以下是使用指针,进行字符串复制的程序,请填空。 int main() { char a[]= “Tsinghua University”, b[30], *p1,*p2; p1=a; p2=b; for(; *p1!= ‘_____________’; p1++, p2++) _______________=______________; *p2= ‘_______________’;
{ case ‘g’: ++i; break; case ‘o’: continue; default: printf(“%c”,c); continue; } printf(“*”); } printf(“\n”); }
七、改错题(本大题共5小题,每小题4分,共20分,请指出错误的行号(一个或多个),并把 错误改正过来)。
四川大学期末考试试题(闭卷) (200 -200 学年第 学期)
课程号: 课程名称: 高级语言程序设计-Ⅰ 学号: 任课教师: 姓名: 适用专业年级: 计算机专业2009级
考试须知
四川大学学生参加由学校组织或由学校承办的各级各类考试,必须严格执行《四川大学考试工 作管理办法》和《四川大学考场规则》。有考试违纪作弊行为的,一律按照《四川大学学生考试违 纪作弊处罚条例》进行处理。 四川大学各级各类考试的监考人员,必须严格执行《四川大学考试工作管理办法》、《四川大 学考场规则》和《四川大学监考人员职责》。有违反学校有关规定的,严格按照《四川大学教学事 故认定及处理办法》进行处理。
题 号 得 分 阅卷教 师 阅卷时 间








卷面成绩
一、单项选择题(本大题共10小题,每小题1分,共10分)提示:在每 小题列出的四个备选项中只有一个是符合题目要求的,请将其代码 填写在题后的括号内。错选、多选或未选均无分 1 2 3 4 5 6 7 8 9 10
1.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。 a=125.534; a=20.0/3; a=(int)125.521%4; a=5<<2; A 125, 6, 31, 1 B 125, 6, 1, 20 C 125, 6.666666, 31, 20 D 125.534, 6.666666, 2, 20 2.设i和k都是int类型,则for循环语句( )。 for(i = 0,k= -1; k=1; i++, k++) printf("****\n"); A 循环结束的条件不合法 B 循环体一次也不执行
1.下面程序将输入的大写字母改写成小写字母输出,其他字符不变;请 判断下面程序的正误,如果错误请改正过来。 1> #include <stdio.h> 2> int main() 3> { char c; 4> c = getchar ( ) ; 5> c = (c>=’A’ | | c<=’Z’) ? c-32 : c+32 ; 6> printf(“%c”,c); 7> return 0; 8> } 2.下面函数输入两个运算数x,y和一个运算符号op,然后输出该运算结 果的值;请判断下面程序的正误,如果错误请改正过来。 1> float function(float x, float y, char op) 2> { 3> float r; 4> switch (op) { 5> case ‘+’ : r=x+y ; 6> case ‘-’ : r=x+y ; 7> case ‘*’ : r=x+y ; 8> case ‘/’ : r=x+y ; 9> } 10> return r; 11> } 3.下面程序的功能是:先将在字符串s中的字符按逆序存放到t串中,然
printf(“string a is:%s\n”,a); printf(“string b is:%s\n”,b); return 0; } 6.表示“x≥y≥z”的C表达式是_______。
六.简答题(本大题共6小题,每小题5分,共30分)。
1. #include<stdio.h> int main() { unsigned a,b,x; int n; a=0x176; n=8; b=a<<(12-n); x=(a>>n-2)^b; printf("\nb=%x,x=%x",b,x); return 0; } 运行结果是: 2. #include<stdio.h> int main() { int **k, *j, i=100; j=&i; k=&j; printf("%d\n",**k); return 0; } 运行结果是: 3. int main() { int w=10; printf("%d\n",fun(5)*w); return 0; } fun(int k) { if(k= =0) return 1; return(fun(k-1)*k);
后把s中的字符按正序连接到t串的后面。例如,当s中的字符串 为:“ABCDE”时则t中的字符串应为:“EDCBAABCDE”;判断下面程 序的正误,如果错误请改正过来。 1> int main ( ) 2> { char s[80],t[200]; int i,sl ; 3> gets(s); 4> sl = strlen(s); //得到字符串s的长度,不含0结尾符 5> for (i=0; i<sl; i++) 6> t[i] = s[sl-i]; 7> for (i=0; i<sl; i++) 8> t[sl+i] = s[i]; 9> puts(t); 10> } 4.下面add函数求两个参数的和;判断下面程序的正误,如果错误请改正 过来。 1> void add(int a,int b) // 2> { int c ; 3> c = a + b; 4> return (c) ; 5> } 2.下面函数fun的功能是:将长整型数中各位置上的数为偶数的依次取 出,构成一个新数返回,例如,当s中的数为:87653142时,则返回的 数为:8642;判断下面程序的正误,如果错误请改正过来。 1> long fun(long s) 2> { long t , sl=1; 3> int d ; 4> t=0; 5> while ( s > 0 ) { 6> d = s%10; 7> if (d%2=0) { 8> t=d* sl+ t; 9> sl *= 10; 10> } 11> s \= 10; 12> }
13> return (t); 14> } 5.下面函数fun的功能是:依次取出字符串中所有数字字符,形成新的字 符串,并取代原字符串;判断下面程序的正误,如果错误请改正过来。 1> void fun (char s[ ]) 2> { int i,j; 3> for (i=0,j=0; s[i]!=’\0’; i++) 4> if (s[i]>=0 && s[i]<=9) 5> s[j]=s[i]; 6> s[j]=”\0”; 7> } 八、编程及分析题(本大题共2小题,每题15分,共30分),提示:每 小题给出了一个程序设计要求,请按照要求写出源程序代码,如果 源程序代码中出现语法错误或逻辑错误,则酌情扣分。 1. 求两个正整数m和n的最大公约数和最小公倍数。 2.有一个已按升序排好序的数组,今输入一个数,要求按原来排序的规 律将它插入数组中。 1.(10分) 2.(10分)