c语言08-09春试题及答案.doc_第1页
c语言08-09春试题及答案.doc_第2页
c语言08-09春试题及答案.doc_第3页
c语言08-09春试题及答案.doc_第4页
c语言08-09春试题及答案.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(083)上海大学2008-2009年春季学期试卷 2009.6课程名: 程序设计基础(C) 课程号:00863006学分:5 应试人声明: 我保证遵守上海大学学生手册中的上海大学考场规则,如有考试违纪、作弊行为,愿意接受上海大学学生考试违纪、作弊行为界定及处分规定的纪律处分。学号: 姓名: 学院/教师: 题号一二三四卷面上机总分题分21368127723100得分考生须知:1. 试卷和答题纸上的”学号、姓名、学院、教师”都要填上;2. 所有答题内容都写在答卷纸上,交卷时将试卷和答卷纸一起交上;3. 不遵守上述要求者考试成绩将为零分。4. 本卷考试的得分为卷面分,电脑上机考试(另行安排)的得分为上机分,考试成绩为卷面分与上机分之和。一、基础题(21分,第1小题3分,其它每小题2分)1 在下列符号中选出3个合法的C语言标识符: Abc, 123, _char, a*b, static, case, long,INT2假设C语言中一个int型数据在内存中占2个字节,请写出unsigned int 型数据的取值范围。3假设a,b,c分别表示三角形的三个边长,请写出a,b,c能够构成三角形的条件:任意两边之和大于第三边。4假设m是一个2位正整数, 请用一个表达式描述m的逆序整数。比如,m是12,则m的逆序整数是21。5设有定义int s=168; 请写出表达式s/2+(s+1)/2的值。6设有定义int x=8; 请写出表达式x2的值。7 设有定义int y=2009; 写出表达式 (y%4=0) & (y%100!=0) | (y%400=0) ? Leap Year : Normal Year 的值。8定义int a10=0,1,2,3,4,5,6,7,8,9,*p=a+5; 请写出表达式p-a和+(*(+p)的值。9设有定义:int x;char s80; 执行scanf(“%4d%s”,&x,s);语句,若从键盘第1列开始输入数据1234.56,请分别写出x和s的值。10请从以下有关字符串的描述中选出正确的说法(多选)。A. 字符数组的字符串可以整体输入输出B. 字符数组中只能存放键盘上可以找到的字符C. 字符串That小于字符串TheD. 可以使用形如That=The的表达式比较字符串的大小二、阅读程序(36分,每小题4分)仔细阅读下列程序,将各程序的运行结果写在答卷纸上。(1)程序#include main( ) int t, h, m; scanf( %d, &t ); h = t/100%12; if ( h=0 ) h = 12; printf( %d:, h ); m = t%100; if ( m10 ) printf( 0 ); printf( %d, m ); if( t1200 | t=2400 ) printf( AM ); else printf( PM );输入:1508输出:?(2)程序#include main( ) int a, b; char c;scanf( %d%c%d, &a, &c, &b ); switch( c ) case +: printf(%d+%d=%dn,a,b,a+b); break; case -: printf(%d-%d=%dn,a,b,a-b); break; default: printf(Pass.); 输入:33-11输出:(3)程序#include main( ) int i, j, n; scanf( %d, &n ); for( i=0; in; i+ ) for( j=0; jn; j+ ) if( i=0 | i+j=n-1 | i=n-1 ) printf( * ); elseprintf( - ); printf( n ); 输入:4输出:? (4)程序#include main( ) int a10, i, k; for ( i=0; i=2; i- ) ai = ai-2; for ( i=0; i10; i+ ) printf( %d , ai );输出:?(5)程序#include int comp( int a, int b ) int c; if ( ab ) c=1; else if ( a=b ) c=0; else c=-1; return( c );main( ) int a5, b4; int i, k; for ( i=0; i5; i+ ) scanf( %d, &ai ); for ( i=0; i4; i+ ) bi = comp( ai, ai+1 ); for ( i=0; i4; i+ ) printf( %d , bi );输入: 200 100 500 400 300输出:?(6)程序#include int getan( int n, int a ) if ( n=1 ) return a;else return getan( n-1, a ) + 2;main( )int a=3, b;b = getan( 5, a );printf( Last:%dn, b );输出:?(7)程序#include main( ) char s180, s2255; char table1010=Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine; int i, j, n, k; gets( s1 ); for ( i=j=0; s1i!=0; i+ ) if ( s1i9 ) s2j+ = s1i;continue; s2j+ = ; s2j = 0; puts( s2 );输入:Page2,Line39输出:?(8)程序#include struct stu int num; char name10; int age;void fun(struct stu *p) printf(%sn,p-name);main( ) struct stu students3 = 1,Zhao,20, 2,Qian,19, 3,Sun,18 ; struct stu *p=students; int i; for ( i=0; i3; i+,p+ ) fun(p);输出:?(9)程序#include main( ) int a10 = 2,4,6,8,10,12,14,16,18,20; int i; FILE *fp; fp = fopen( tt.dat, w ); for ( i=9; i=0; i- ) fprintf( fp, %dt, ai ); fclose(fp); fp = fopen( tt.dat, r ); for ( i=0; i10; i+ ) fscanf( fp, %d, &ai ); for ( i=0; i10; i+ ) printf( %dt, ai ); /* 假设文件操作总是成功 */输出:?三、改错程序(8分,每错误点2分)下列程序各有两个错误(两个错误分别是在不同的行上,并只在有注解行号所标注的行上),按原来程序的要求,纠正错误,并将错误所在行号以及错误行完整的正确内容写在答卷纸的对应栏内。(1)以下程序的功能是利用选择法将字符串str中的元素从小到大排序,其他元素保持不变,例如输入4a3d2c1b,输出1234abcd。#include #include main() char str80,t; int i,j,k; /*1*/ gets( str ); /*2*/ k = strlen( str80 ); /*3*/ for ( i=0; ik; i+ ) /*4*/ for ( j=i+1; jk; j+ )/*5*/ if ( stri strj ) /*6*/ t = stri;/*7*/ stri = strj;/*8*/ strj = t; /*9*/ puts( str );(2)以下程序的功能是测试从键盘输入的正整数num的各位数字是否都是素数,如果是输出“Yes”,否则输出“No”。例如,输入7823,输出No;输入7523,输出Yes。#include int IsPrime(int n) /*返回值为1表示n是素数*/ int i; if ( n2 ) return 0; /* 0和1当非素数处理 */*1*/ for ( i=2; i=n; i+ )/*2*/ if( n%i=0 ) return 0; /* 本行不允许修改 */ return 1; /* 本行不允许修改 */main( ) int num, flag=1;/*3*/ scanf( %d, &num );/*4*/ while( num!=0 ) /*5*/ if( IsPrime(num%10) ) /* 调用IsPrime函数 */ /*6*/ flag = 0;/*7*/ break; /*8*/ num = num/10; if ( flag=1 ) printf(Yes); else printf(No);四、程序填空(12分,每填空2分)阅读下列问题描述和相应的C程序,把应填入其中 (n) 处的内容写在答卷纸的对应栏内。(1)以下程序的功能是生成并打印某数列的前20项,该数列前2项均为1,以后每项是前2项之和。生成的20个数存在一维数组x中,最后按每行4项的形式输出。#include main( ) int x21,i,j; x1 = 1;x2 = 1; i = 3; do xi = (1) ; i = i + 1; while ( (2) ); for ( i=1; i=20; i+ ) printf( %5d, xi ); if ( (3) ) printf( n ); /* 输出 1 1 2 3 5 8 13 21 等 */(2)以下程序的功能是创建有ct个结点的链表,ct的值从键盘输入,每个结点中包含一个整数信息(同样从键盘输入)。计算该链表中每两个相邻结点的整数和,求其中的最小值及该最小值对应的结点序号(链表建成后结点序号从1到ct编号)。#include struct node int n; struct node *next;main( ) struct node *head=NULL, *tail=NULL, *p; int i, min, s=0, index=1, ct; scanf ( %d, &ct ); /*从键盘输入ct的值,设ct大于1*/ for ( i=0; in ); if ( head=NULL ) head = p; else tail-next = p; tail = p; min = head-n + head-next-n; i = 1; for ( p=head-next; p!=NULL & p-next!=NULL; p=p-next ) s = (5) ; i+; if( (6) ) min=s;index=i; printf( %d %d, index, index+1 );(083)上海大学2008-2009年春季学期学期 答题纸 2009.6课程名: 程序设计基础(C) 课程号:00863006 学分:5 应试人声明: 我保证遵守上海大学学生手册中的上海大学考场规则,如有考试违纪、作弊行为,愿意接受上海大学学生考试违纪、作弊行为界定及处分规定的纪律处分。学号: 姓名: 学院/教师: 题号一二三四卷面上机总分题分21368127723100得分考生须知:1. 试卷和答题纸上的“学号、姓名、学院、教师”都要填上;2. 所有答题内容都写在答卷纸上,交卷时将试卷和答卷纸一起交上;3.不遵守上述要求者考试成绩将为零分。4.本卷考试的得分为卷面分,电脑上机考试(另行安排)的得分为上机分,考试成绩为卷面分与上机分之和。小题第 一 题 答 栏 (基础题) 21%第1小题3分,其它每小题2分1Abc_charINT20 至 655353a+bc & a+cb & b+ca410*(m%10) + m/10516863227“Normal Year”8579 1234“.56”10A, C小计:小题第 二 题 答 栏 (阅读程序) 36%4分/格1 3:08PM2 33-11=223*-*-*-*41 2 1 2 3 4 5 6 7 85 1 -1 1 16 Last:117Page,Line8Zha

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论