ImageVerifierCode 换一换
格式:DOC , 页数:28 ,大小:154KB ,
资源ID:2747565      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2747565.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(程序设计基础(C)离线作业答案.doc)为本站会员(dzzj200808)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

程序设计基础(C)离线作业答案.doc

1、浙江大学远程教育学院程序设计基础(C) 课程作业答案第章 语言的基本构成程序调试题1 编辑、调试以下程序步骤 1:在 Visual C+环境下新建文件可用 开始 程序Microsoft Visual C+6.0 Microsoft Visual C+6.0 文件 新建文件 C+ Sourse File,输入文件名 ex1-1.c,程序代码如下:include /*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/int add(int x,int y) int z; z=x+y; return z; int main( ) int add(int,int); /* 函数的说明,告诉系

2、统在主函数中要调用 add 函数 */int a,b,c; /* 变量的定义*/scanf(“%d %dn“,c=add(a,b); /* 函数调用 */ printf(“%d+%d=%dn“,a,b,c); /* 调用系统输出函数 printf,%d 为格式控制符,依次用后面的变量值填充,以整数形式输出 */请思考文件 ex1-1.c 由几个函数构成 2 个?调用了那几个系统函数 main,系统标识符scanf,printf?此程序中用到了哪几个保留字 int?哪几个用户自定义标识符add,x,y,z,a,b,c?步骤 3:编译并运行程序,程序运行时输入两个整数,20 40 ,观察程序运行的

3、结果。20+40=602 编辑、调试以下程序步骤 1:在 Visual C+环境下新建文件可用 开始 程序Microsoft Visual C+6.0 Microsoft Visual C+6.0 文件 新建文件 C+ Sourse File,输入文件名 ex1-2.c步骤 2:在文本编辑器中输入以下 C 程序#include /*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/#includeint main( ) int and(int,int); /* 函数的说明,告诉系统在主函数中要调用 and 函数 */int or(int,int); /* 函数的说明,告诉系统在主函数

4、中要调用 and 函数 */int a,b,c; /* 变量的定义*/scanf(“%d %d“,c=and(a,b); /* 函数调用 */ printf(“%d /*调用系统输出函数 printf,%d 为格式控制符,依次用后面的变量值填充,以整数形式输出 */c=or(a,b); /* 函数调用 */ printf(“%d | %d=%dn“,a,b,c); 步骤 3:文件 新建文件 C+ Sourse File,输入文件名 ex1-2-2.c,源程序代码为:int and(int a,int b)int c;c=areturn c;步骤 4:文件 新建文件 C+ Sourse File

5、,输入文件名 ex1-2-3.c,源程序代码为:int or(int a,int b)int c;c=a|b;return c;步骤 5:点击编译图标 ,编译程序 1-2.c 步骤 4:点击执行图标 ,执行程序 1-2.c ,当程序运行时,键盘输入 20 40,按回车。20 4020 2 仿照例子 2.2,定义一个字符数组,从键盘输入一字符串,然后输出的程序。char str80=”hello,world”; printf(“%sn”,str);3 从键盘输入十六进制整数,转化为八进制数输出。Scanf(“%x”,printf(“%on”,a)4 只定义两个整型数据并赋值,实现两个整型数的互换

6、。int x=3,y=6;temp=x;x=y;y=temp;5 从键盘上输入一个整数,分别输出 8、16 进制数的程序。int a;scanf(“%d”,printf”%-4o%-4x”,a,a);6 从键盘上输入一个整数,分别输出它的个位数,十位数,百位数。int a;scanf(“%d”,y1=y%10;y=y/10;y2=y%10;y=y/10;y3=y/10;7 以下程序输出结果是(i=9;j=10 ) 。#includevoid main()int i=010,j=10;printf(“%d,%dn“,+i,j- );8 运行程序,屏幕提示“您是一个学生吗” ,您输入y或 n进行回

7、答,屏幕输出您的选项。char,a;printf(“您是个学生吗n”);scanf(“%s”,if(a=y)printf(“您是个学生n”);else printf(“您不是个学生n”)9 从键盘输入一个角度 x,求 10*sin(x)的值。#include float a,b; scanf(%f”,b=10*sin(a);printf(“b=%fn”,b)第章 循环程序设计1以下 for 语句的循环次数是多少?int i,j=3;for(;i=j;i-,j-) printf(“%d“,i);2下面的语句显示输出 6 行 6 列的整数数组 h 的主对角线上的所有元素,请补充完整:for(int

8、 i=0;ivoid main() int a10=2,4,0,-5,10,6,-8,9,6,7;int i, count=0;for(i=0;ivoid main()int a10=2,4,0,-5,10,6,-8,9,6,7,tmp,k;for (k=0;kvoid main()int i,j;for(i=0;ivoid main( )int i,s;i=1; s=0;while(ivoid main( )int i,s;i=1;s=0;while(ivoid main( )int i=1,s;s=0while(iint main()int i;int s=0;int a;int j,js

9、;printf(“请输入一个 510 之间的整数:n“);scanf(“%d“,for(i=1;iint main()int i,j;for(i=1;i#includeint main()char str80;gets(str);int i=0;int num=0;while(stri!=0)if(striascanf(“%d“,for(;x;scanf(“%d“,int i,num=0;for(i=0;ia1) num+;else if(a9a8) num+;elsefor(i=1;iai+1) num+;printf(“比相邻数大的数据个数=%dn“,num);return 0;3将输入字

10、符的大写字符转换成小写字符输出,小写字符原样输出#includeint main()char ch;scanf(“%c“,if(chAint daxie=0;int num=0;int others=0;char a;while(a=getchar()!=n)if(aaelse(x80)7、用 switch 完成:读入一个实数 x,再输入一整数,若输入是 1,则计算 sin(x),若输入2,则计算 cos(x),若输入 3,则计算 tan(x),若输入其他值,则显示错误信息。#include#includeint main()int a=4;float x;printf(“请输入一个实数n“)

11、;scanf(“%f“,printf(“请输入需要的计算 1-sin;2-cos;3-tann“);scanf(“%d“,switch(a)case 1:printf(“%fn“,sin(x);break;case 2:printf(“%f“,cos(x);break;case 3:printf(“%f“,tan(x);break;default:printf(“信息出错n“);return 0;8、用 switch 完成:输入星期 1 到星期 5,输出它们对应的颜色星期 1:blue星期 2:red星期 3:white星期 4:yellow星期 5:green #includeint mai

12、n()char day;scanf(“%c“,switch(day)case m:printf(“bulen“);break;case t:printf(“redn“);break;default:printf(“errorn“);break;return 0;9、用 switch 完成:从键盘输入 A、B、C、D 四个等级中的一个,转化输出等级 输出A 优秀B 良好C 中等D 及格E 不及格#includeint main()char ch;scanf(“%c“,switch(ch)case A:printf(“A=优秀n“);break;case B:printf(“B=良好n“);bre

13、ak;default:printf(“error“);break;return 0;ch=getchar();putchar(ch);putchar(e);第章 数组及其应用.从键盘输入 12 个数,分别为:900,2,3,58,34,76,87,72,90,20,78,30,找出最大和最小数。#includeint main()int i,a12,max,min;printf(“请输入 12 个数:n“);for(i=0;ia0)max=a1;min=a0;elsemin=a1;max=a0;for(i=2;imax)max=ai;if(aiint main()int i,a12,y;pri

14、ntf(“请输入 12 个数:n“);for(i=0;i#define SIZE 10int main()int i,m,low=0,high=SIZE-1,mid,found=0;int aSIZE=2,3,20,58,72,76,78,87,90,900;scanf(“%d“,while(lowamid)low=mid+1;else found=1;if(found=1)printf(“%d n“,mid);for(i=mid;ifloat aver(int a)求平均的函数 int k,sum=0;float ave;for(k=0;k void abc( char str )int a

15、, b ;for(a = b = 0 ; stra!=0; a+ )if(stra!= c)strb+ = stra;strb=0;int main( )char str =“abcdef“ ;abc(str);printf(“str =%s “ , str );return 0;提示:数组str的首地址传递给形参str,stra就是实参中的数组元素stra,当数组元素不为c时进行复制。3写出以下程序的执行结果。5 54 4 41 1 1 11 1 1 1 1#includeint sort(int b,int n,int x)int k;for(k=n-1;k=0;k-)if(bkint f

16、un(int x) int p;if(x=0|x=1)return 3;elsep=x-fun(x-2);return p;int main( )printf(“n%d“,fun(9);return 0; 提示:fun(9)=9-fun(7),.,fun(1)=35写出以下程序的执行结果,并说明其作用是什么?1432#includeint f(int n)if(n=10)f(n/10);printf(“%d“,n%8);return 0;int main( )f(1234);printf(“n“);return 0; 提示:在函数f中,程序运行借助了堆栈,依次入栈的数据分别为1234、123

17、、12 ,最后n=1,n 对8 取余输出,然后数据依次出栈对8取余输出。二、程序设计1编写一个函数,计算 x 的 n 次的平方。 提示:for(y=1,i=0;i#includeint invert(char str)int len,i;char temp;len=strlen(str);for(i=0;i#includeint del(char str,char x,int n)int len,i,j;len=strlen(str);for(i=0;i=0for(s=0,i=0;stri;i+)if(stri0elsereturn n+f(n-1);int main( )int n;prin

18、tf(“请输入需求和的个数:n“);scanf(“%d“,printf(“求和=%dn“,f(n);return 0; 第章 变量存储类型与多文件系统1写出以下程序的执行结果。1,1#includeint x;void fun( )printf(“%d “,x+);void main( )int x=1;extern int x;printf(“%d,“,+x);fun( );Comment c3: static int y = 4 ; 9改成: static int y;y = 4 ; 6提示:在函数fun中及语句块extern int x;printf(“%d,“,+x);中使用的x是外部

19、变量,在语句块:if(x=1)int x=2;printf(“%d,“,x+);中使用的是刚刚定义x=2的变量。2写出以下程序的执行结果。18,18#include int kk( ) int x = 4 ; static int y ; y = 5 ; x*= 2 ; y*= 2; return(x+y);void main() int j , s = 0 ;for ( j = 0 ; j int t( )int x = 0 ;static int y = 4 ;y += +x ;return x+y;void main( ) printf(“%d n“,( t( ), t( ),t(),t

20、() );提示:语句printf(“%d n“,(t( ), t( );中(t( ),t( )属于“,”号表达式,即两次调用函数t( ),在函数 t( )中,y为静态内部变量,因而语句 static int y = 4 ;只执行一次。Comment c4: Felix 15:24:41是这样的没错。但是 fname是一个字符串变量,例如,它的值是:fname=“file.txt“;Felix 15:25:21如果加了双引号,就表示是值;如果没有,则是变量。我们是通过gets(filename)把文件名的值读到filename里第章 文件1下述程序从终端读入文本(用$作为文本结束标志)复制到一个

21、名为 out.dat的新文件中,请补全程序。#include int main()FILE *fp;char cx;if(fp=fopen(“out.txt“,“r+“ (1) )=NULL)return 0;while(cx=getchar( )!=$)fputc(cx,fp);fclose(fp) (2) ;return 1;提示:第1个空格是打开文件读,第2个空格是关闭文件。2下面的程序用来统计文件中字符的个数,请补全程序。#include#includeint main( ) FILE *fp;long num=0;if(fp=fopen(“fname.dat“,“r“)=NULL)p

22、rintf(“Cant open file!n“);exit(0);while( (1) !feof(fp) ) fgetc(fp); num+;printf(“num=%dn“,num);fclose(fp);return 1;提示:第1个空格表示文件没有结束,循环将持续。. 以下程序由终端键盘输入一个文件名,然后把从终端键盘输入的字符,依次存放到该文件中,用#作为结束输入的标志,请补全程序。#include#includevoid main( )FILE *fp;char ch,fname10;printf(“Input the name of filen“);gets(fname);if

23、(fp=fopen(fname,”r+” )=NULL)Comment c5: #include struct rec int a;float b;void recout(FILE *fp)struct rec r;dofread( if( feof(fp) )break ;printf(“%d,%fn“,r.a,r.b);while(1);void main() FILE *fp;fp=fopen(“a.txt“,“rb“);recout(fp);fclose(fp);printf(“Cannot openn“); exit(0);printf(“Enter datan“);while(ch

24、=getchar( )!=#)fputc( (ch,fp);fclose(fp);提示:文件名是从键盘读入的,因而文件名是用变量表示的,文件是打开写。4下述程序从一个二进制文件中读入结构体数据,并把读出的数据显示在屏幕上。请补全程序。#include struct rec int a;float b;void recout(FILE *fp)struct rec r;dofread( (1)if( (3) feof(fp) )(4) break ;printf(“%d,%f“,r.a,r.b);while(1);void main() FILE *fp;fp=fopen(“file.dat“,

25、“rb“);recout(fp);fclose(fp);提示:在fread 语句中,(1)中为存放所读出结构数据的内存地址,当然此数据是赋给变量r,(2)中是读出结构体变量数据的个数,(3)是与循环中止有关的判断,(4)为中止循环。.从键盘输入一个字符串,并逐个将字符串的每个字符传送到磁盘文件“l1.txt“中,字符串的结束标记为“#“。#include#includeint main()FILE *fp;int i;char str80;gets(str);if(fp=fopen(“11.txt“,“r+“)=NULL)printf(“Cannot openn“);exit(0);for(i

26、=0;stri!=#;i+)fputc(stri,fp);fclose(fp);return 0;有一文本文件 l1.txt,请编写一个程序将文件中的英文字母及数字字符显示在屏幕上。提示:#include#includeint main()FILE *fp;char ch;if(fp=fopen(“11.txt“,“r+“)=NULL)printf(“Cannot openn“);exit(0);doch=fgetc(fp);if(ch=0FILE *fp2;char ch;if(fp1=fopen(“11.txt“,“r+“)=NULL)printf(“Cannot open n“);exi

27、t(0);if(fp2=fopen(“12.txt“,“r+“)=NULL)printf(“Cannot open n“);exit(0);doch=fgetc(fp1);if(ch=0int x;float y;if(fp=fopen(“16.txt“,“r+“)=NULL)printf(“Cannot open n“);exit(0);for(x=0;x=0)printf(“%f“,y);return 0;第章 指针与数组一、程序阅读与填空题Comment c6: 中文逗号,错!Comment c7: *(+p)=*+p1分析下列程序,输出结果是(11,2.5 ) 。#includevoi

28、d main()int *p1,x=10;float *p2,y=2.5;p1= p2=printf(“%d, %fn“,+(*p1), (*p2)+ ); 提示:+ 都作用在内容上,前一项是先+再输出,后一项是先输出再+。2下列程序输出结果是(1,4 ) 。#includevoid main()int a =1,2,3,4,5,6,*p=a;printf(“%d,%dn“,*p,*(p+3);提示:语句*(p+3)+=2;指p+3 的地址上的内容加2,然后输出p及p+3的地址上内容。3下列程序输出结果是( 1,3,5 ) 。#includevoid main()int a =1,2,3,4,

29、5,6;int x,y,*p;p=x=*(p+2);y=*(p+4); printf(“*p=%d,x=%d,y= %dn“,*p,x,y);提示:p+2是指 int *p;p=a;printf(“*%d,n“,*p);printf(“*%d,n“,*(+p);printf(“*%d,n“,*+p);printf(“*%d,n“,*(p-);p+=3;printf(“*%d,%d n“,*p,*(a+3);提示:*(+p)、*+p都表示指针p向大地址方向移动,然后再取内容,要注意的是后一语句的输出受前一语句的影响。5下列程序输出的结果是(abdef ) 。#include void del(

30、char *str )int a, b ;for(a = b = 0 ; stra!=0; a+ )if(*(str+a)!=c)*(str+b+)=*(str+a);strb=0;void main( )char str =“abcdef“ ;del(str);printf(“str =%s “ , str );提示:在函数del中str+a地址上的内容不为字符c时不复制,实际上是指删除指针str所指的字符串中的字符c 。6以下程序输出的结果是( AGAAGAG ) 。#include#includevoid fun( char *w ,int m)char s, *p1 , *p2;p1

31、= w;p2= w+m-1;while(p1 void main( ) int a33 = 2,0,8,4,6;int i,*p = for(i = 0;iamid)(3) low=mid+1 ;else(4) return mid ;return(-1); 提示:用low、high、mid 分别表示数组 a低地址端、高地址端、中间元素的下标,只要低地址端下标小于高地址端下标循环一直持续,如果中间元素大于所查找的数,表示所查找的数在以low、high为边界的左侧,如果中间元素小于所查找的数,表示所查找的数在以low、high为边界的右侧,如都不是表示已找到。9下述函数从一个数组 v 中删除值为

32、 key 的元素。数组的元素个数由指针 n 指明,请填空。void delnode(double v,int *n,int key)int i,j,k=-1;for(i= (1) *n-1 ; (2)i=0 ;i-)if(vi=key)k+;for(j=i; (3)j=0)*n= (4)*n-k; 提示:由于在第1个for 循环中为i-,因而循环一定是从数组下标最大的元素*n-1开始,循环的条件是i=0,如果找到要删除的元素,后面的元素依次向前移,一直移到最后v*n-1,k标记删除的次数,*n存放最后数组中元素的个数。二、编程题 1用指针的方法编写一函数,交换从键盘读入的两个整型数 a,b。提

33、示:Comment c8: 有 4个错误,一个警告,做主函数能完成#include#includevoid main()char str80;int len;char *p1;char *p2;char temp;gets(str);len=strlen(str);p1=str;p2=str+len-1;while(p1int main()int a,*p1,b,*p2,temp;p1=p2=scanf(“%d %d“,temp=*p1;*p1=*p2;*p2=temp;printf(“%d %dn“,*p1,*p2);return 0;2编写一函数 void invert(char str

34、)将一个字符串的内容颠倒过来。提示:定义两个字符指针,测试字符串的长度,一个指针 p1指向字符串的首地址,另一个指针p2指向字符串最后一个字符,当 while(p2p1)满足时交换两个指针所指的内容。#include#includevoid invert(char str)int len;char *p1;char *p2;char temp;len=strlen(str);p1=str;p2=strlen-1;while(p1#include#define SIZE 100int main()char sSIZE;char tSIZE;int i,j,n;gets(s);gets(t);n=

35、strlen(t);for(i=0 ; si ; i+)for(j=0;si+j=tj;j+)if(j+1=n)printf(“%dn“,i);return -1;return 0;4编写函数,判断一字符串是否回文。若是回文,函数返回值为 1;否则返回值为 0。 (回文是按顺序读和倒读都一样的字符串) 。提示:设字符指针 p1、p2 分别指向字符串的第 1个字符与最后一个字符,考虑下列程序段:while(p2p1)if(*p1=*p2)p1+;p2-;elsereturn 0;if(p1p2)return 1; #include #include#define SIZE 80int main()char sSIZE;char *p1,*p2;int len;gets(s);len=strlen(s);p1=s;p2=s+len-1;while(p2p1)if(*p1=*p2)p1+;p2-;elseprintf(“不是回文n“);break;if(p1=p2)printf(“是回文n“);return 0;

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报