c语言04-05冬试卷及答案
更新时间:2024-03-12 19:29:01 阅读量: 综合文库 文档下载
(042)上海大学2004-2005年冬季学期试卷 2005.3 课程名: 程序设计基础(C) 学分: 5
学号: 姓名: 学院/教师:
题号 题分 得分 一 23 二 30 三 8 四 14 卷面 75 上机 25 总分 100 考生须知:
1. 试卷和答题纸上的“学号、姓名、学院、教师”都要填上;
2. 所有答题内容都写在答卷纸上,交卷时将试卷和答卷纸一起交上; 3. 不遵守上述要求者考试成绩将为零分。
4. 本场考试的得分为卷面分,电脑上机考试(另行安排)的得分为上
机分,考试成绩为卷面分与上机分的总和。
一、基础题(23分,第1小题3分,其它小题2分)
1.定义int x=13,y=16,z=10;写出z+=(x++)+(--y);执行后各变量的值。 2.计算表达式:(float)15/(int)2.5与(int)(2.11*10+0.5)/(float)10*2。 3.分别判断表达式的真假:10>9>8与10>9&&9>8。
4.分别计算八进制165的十进制值和十进制165的十六进制值。 5.分别计算字符串的长度:“Shanghai”与“C:\\\\test.txt”。
6.设n为正整数,试写出逻辑表达式:n的个位数比十位数大。 7.定义char ch; 设ch为小写字母,试写表达式将ch转换为大写 字母。
8.定义int a[3]; 试写出语句:输入a数组中的三个整数。
9.写出语句for (i=10;i<=20;i+=3) printf(\ \的运行结果。 10.定义char *pc[]={ \计算表
达式strlen(pc[1])*strlen(pc[2])与pc[0][4] – *(*(pc+2)+2)的值。 11.定义int n;FILE *fp; fp已以文本方式打开文件写,试写出语句:
将变量n的值写到文件fp中。
二、阅读程序(30分,每小题3分)
1 / 10
仔细阅读下列程序,将各程序的运行结果写在答卷纸上。 (1)程序
#include
int a, b, c, n, i, sum;
scanf( \ n = (a>b) ? b : a; n = (n>c) ? c : n; printf( \
for ( sum = i = 0; i <= n; i++ ) sum += i;
printf( \}
输入:15 6 13 输出:?
(2)程序
#include
int sum = 0; switch ( n ) {
case 3: sum += 1234; case 2: sum += 123; case 1: sum += 12; }
printf( \}
main() {
int i;
for ( i = 1; i <= 3; i++ ) sumx( i ); }
输出:?
2 / 10
(3)程序(注:符号?表示空格) #include
int i, j, n;
scanf( \
for ( i = 1; i <= n; i++ ) {
for ( j = 1; j <= n-i; j++ ) printf( \?\
for ( j = 1; j <= i; j++ ) printf( \?\ printf( \ } }
输入:5 输出:?
(4)程序
#include
int a,i=2,j;
scanf( \ printf( \ while ( i <= a ) {
if ( a % i == 0 ) {
printf( \ a /= i; } else i++; } }
3 / 10
输入:12 输出:?
(5)程序
#include
static int lastn = 1; static long lastrst = 1; long rst; int i;
if ( n < lastn )
lastrst = lastn = 1;
for ( rst=lastrst, i = lastn+1; i<=n; i++ ) rst *= i; lastn = n; lastrst = rst; return rst; }
main() {
printf( \ printf( \ printf( \}
输出:?
(6)程序
#include
int d;
if ( n <= 2 ) d = 1; else
d = sdata(n-1) + sdata(n-2); return d;
4 / 10
}
main() {
int i;
for ( i = 1; i <= 6; i++ )
printf( \}
输出:?
(7)程序
#include
int a[8] = { 0, 8, 16, 30, 40, 50, 60, 70 }; int n = 2, *p = &a[1]; n += *(p++);
printf( \ n *= ++(*p);
printf( \ n -= (*(++p))--; printf( \}
输出:?
(8)程序
#include
int a[N] = { 10,25,20,15,30,35,50,45,90,60, 10,25,25,25,35,90,35,90,35,35 }; int i, j, ind=0, c1, c2;
for ( c2 = i = 0; i < N; i++ ) {
for ( c1=j=0; j < N; j++ ) if ( a[i] == a[j] ) c1++;
5 / 10
if ( c2
c2 = c1; ind = i; } }
printf( \ printf( \}
输出:?
(9)程序
#include
char * rev( char *src, char *dst ) {
int i, j, n;
for ( n = 0; *(src+n) != '\\0'; n++ ) ; for ( i = 0, j = n-1; i < n; i++, j-- ) *(dst+i) = *(src+j); *(dst+i) = '\\0'; return dst; }
main() {
char a[81];
puts( rev(\
puts( rev(\}
输出:?
(10)程序
#include
char str[100];
struct strline *next;
6 / 10
};
struct strline *create(void) {
struct strline *head = NULL, *p; char a[81]; while ( 1 ) {
gets( a );
if ( a[0] == 'Z' ) break; p = (struct strline *)malloc(sizeof(struct strline)); strcpy( p->str, a ); p -> next = head; head = p; }
return head; }
void list2(struct strline *head) {
struct strline *p; int n = 0;
for ( p = head; p != NULL; p=p->next, n++ ) if ( n % 2 == 0 ) puts( p->str ); }
main() {
struct strline *head; head = create(); list2( head ); }
运行时输入以下6行: Line First, Line Second, Line Third, Line 4th, Line 5th.
7 / 10
Z
输出:?
三、改错程序(8分,每错误点2分)
下列程序与函数中都各有两个错误(两个错误分别是在不同的行上),按原来程序的要求,纠正错误,并将错误所在行号以及错误行完整的正确内容写在答卷纸的对应栏内。
(1)以下程序输入10个数,从大到小排序后输出。
#include
/*1*/ int a[10],i,j,t; /*2*/ for ( i = 0; i < 10; i++ ) /*3*/ scanf( \/*4*/ for ( i = 0; i < 9; i++ ) /*5*/ for ( j = 0; j <= 10-i; j++ ) /*6*/ if ( a[j] < a[j+1] )
/*7*/ { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } /*8*/ for ( i = 0; i < 10; i++ ) /*9*/ printf( \
}
(2)以下函数统计字符串中数字字符的个数并返回。 /*1*/ int countdigit( char *str ) /*2*/ {
/*3*/ int n, i; /*4*/ n = 0;
/*5*/ for ( i = 0; *(str+i)!='\\0'; i++ )
/*6*/ if ( *(str+i)>='0' || *(str+i)<='9' ) /*7*/ n ++; /*8*/ return i; /*9*/ }
四、程序填空(14分,每填空2分)
阅读下列问题描述和相应的C程序,把应填入其中 (n) 处的
8 / 10
内容写在答卷纸的对应栏内。
(1)以下程序输入10个整数,输出其中不重复出现的数字。 #include
int a[10], i, j, k;
for ( i = 0; i < 10; i++ ) scanf( \
for ( i = 0; (1) ; i++ ) {
k = 0;
for ( j = 0; j < 10; j++ ) if ( (2) ) k ++; if ( k == 1 )
printf( \ } }
如输入:11 13 14 15 14 13 11 14 14 12 则输出:15 12 (在10个数中15和12只出现一次) (2)以下程序从文本文件worker.txt中输入10个职工的信息(包括工号和工资),然后计算并输出平均工资,再从键盘上输入一个职工号,查找并输出该职工的信息,如果没有找到,则输出Not Found。假设文件操作总是成功的。 #include
{ /* 职工结构体 */
int num; /* 工号 */ float pay; /* 工资 */ struct worker *next; };
float averpay( struct worker per[], int n ) {
float sum = 0; int i;
for ( i = 0; i < n; i++ )
9 / 10
sum += (4) ; return sum/n; }
struct worker *find( struct worker per[], int n, int num ) {
int i;
for ( i = 0; i < n; i++ ) if ( per[i].num == num )
return (5) ; return NULL; }
main() {
struct worker per[10], *p; float x, ave; int num, i; FILE *fp;
/* 从文件中输入10个职工的信息 */ fp = (6) ; for ( i = 0; i < 10; i++ ) {
fscanf( fp, \ per[i].num = num; per[i].pay = x; }
fclose( fp );
/* 计算并输出平均工资 */ ave = averpay( per, 10 );
printf( \ /* 查找某个职工 */ scanf( \ p = (7) ; if ( p != NULL )
printf( \ else
printf( \}
10 / 10
(042)上海大学2004-2005年冬季学期答卷 2005.3 课程名: 程序设计基础(C) 学分: 5
学号: 姓名: 学院/教师:
题号 题分 得分 一 23 二 30 三 8 四 14 卷面 75 上机 25 总分 100 考生须知: 5. 试卷和答题纸上的“学号、姓名、学院、教师”都要填上; 6. 所有答题内容都写在答卷纸上,交卷时将试卷和答卷纸一起交上; 7. 不遵守上述要求者考试成绩将为零分。
8. 本场考试的得分为卷面分,电脑上机考试(另行安排)的得分为上
机分,考试成绩为卷面分与上机分的总和。
小题 第 一 题 答 栏 (基础题) 23% 1 x =14 y =15 z =38 2 7.5 4.2 3 假 或 0 真 或 1 A5或 0xA5 4 117 a5 或 0xa5 5 8 11 n>n/10 6 或 n>n0/10 ch-32 或 ch-?a?+?A? 或 ch&0xDF 7 或 ch&~0x20 或 ch-=32 scanf(“%d%d%d”,&a[0],&a[1],&a[2]); 或for(i=o;i<3;i++) scanf(“%d”,&a[i]); 8 或for(i=o;i<3;i++) scanf(“%d”,&a[i]); 9 10 13 16 19 10 63 6 11 fprint ( fp, “%d”, n ); (以上第1小题3分,其余每小题2分) 小计: 11 / 10
得分 小题 1 2 第 二 题 答 栏 (阅读程序) 30% n=6 Sum=21 sum=12 sum=135 sum=1369 * * * * * * * * * * * * * * * 12=1*2*2*3 func(1) = 1 func(3) = 6 func(5) = 120 1 1 2 3 5 8 10, 170, 140 count = 5 data = 35 A iahgnahS Line 5th. Line Third, Line First 小计: 3分/格 3 4 5 6 7 8 9 10
12 / 10
第 三 题 答 栏 (改错程序) 8% 改错点 行号 修 改 后 程 序 行 scanf( \1. (1) /*3*/ 或 scanf( \ for(j=0;j<9-i;j++) 1. (2) /*5*/ 或 for(j=0;j<9;j++) 2. (3) if(*(str+i)>='0'&&*(str+i)<='9') /*6*/ 或 if(!(*(str+i) <='0'||*(str+i) >'9')) 2分/格 2. (4) /*8*/ return n; 小计: 填空号 1. (1) 1. (2) 1. (3) 2. (4) 2. (5) 2. (6) 2. (7)
第 四 题 答 栏 (程序填空) 14% 2分/格 i<10 a[i]==a[j] 或 a[i]==a[9-j] a[i] 或 *(a+i) per[i].pay 或 (per+i)->pay &per[i] 或 per+i fopen(\.txt\ find(per,10,num) 小计:
13 / 10
正在阅读:
c语言04-05冬试卷及答案03-12
大一学习总结05-02
内蒙古银行2012年年度报告05-25
共点力的平衡条件07-28
模型协会申请书 - 图文04-02
微 生 物 实 验 教 案12-13
机械式停车设备安装改造重大-维修施工自检记录 - 图文12-17
C3E6-视图的定义和操作 - 1 -03-03
新北师大版九年级数学《二次函数》复习学案07-10
眉毛之间的印堂命宫处生有痣12-03
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 试卷
- 答案
- 语言
- 04
- 05
- 西师版数学三年级上册教案完整版()
- 高层模板施工技术方案内容
- 湖南省衡阳市第八中学2018届高三实验班上学期第一次月考理综生物
- 最全需求确认书
- 企业信用管理八项制度
- 第一次佩戴本命佛吉时?佩戴本命佛的注意事项? - 图文
- 城市生态学ppt
- 劳务所目标监管工作意见
- 新课改下的初中物理教学反思
- CF各种心得很全
- 东北大学16春《物理化学》在线作业123(标准答案)
- 南铁院(苏州校区)机械系新生篮球比赛策划书
- 试析玻璃幕墙在建筑施工图设计中需要注意的事项
- 三年级下册多音字组词复习试题
- 青岛版一年级数学下册应用题与分类练习
- 生化学生题库464题含答案
- 修订版教科版六年级上册科学复习资料
- 基于AHP的连锁企业分类城市评估研究(征求)
- 7的乘法口诀教案
- 植物病害