收藏 分享(赏)

程序设计基础(C)作业14689.doc

上传人:dzzj200808 文档编号:2310176 上传时间:2018-09-10 格式:DOC 页数:18 大小:144.50KB
下载 相关 举报
程序设计基础(C)作业14689.doc_第1页
第1页 / 共18页
程序设计基础(C)作业14689.doc_第2页
第2页 / 共18页
程序设计基础(C)作业14689.doc_第3页
第3页 / 共18页
程序设计基础(C)作业14689.doc_第4页
第4页 / 共18页
程序设计基础(C)作业14689.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、程序设计基础(C) 作业第章 语言的基本构成一、选择题1 ( A)是构成 C 语言程序的基本单位。(A)函数 (B)过程 (C)子程序 (D )文件2 ( C )是 C 语言提供的合法的数据类型关键字。(A)Float (B)signed (C)integer (D )Char3以下选项中不合法的用户标识符是( A ) 。(A)abcc (B)file (C)Main (D )PRINTF4以下选项中不合法的用户标识符是( C ) 。(A)l23 (B)printf (C)A (D )Dim5合法的语言长整型常数是( A ) 。(A)L (B)5712700 (C)0.054838743 (D

2、 )2.1869e10 C 语言中,要求运算数必须是整型的运算符是(A ) 。(A)% (B) / (C) /*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/int add(int x,int y) int z; z=x+y; return z; int main( ) int add(int,int); /* 函数的说明,告诉系统在主函数中要调用 add 函数 */int a,b,c; /* 变量的定义*/scanf(“%d %dn“,c=add(a,b); /* 函数调用 */ printf(“%d+%d=%dn“,a,b,c); /* 调用系统输出函数 printf,%d

3、为格式控制符,依次用后面的变量值填充,以整数形式输出 */请思考文件 ex1-1.c 由几个函数构成?调用了那几个系统函数?此程序中用到了哪几个保留字?哪几个用户自定义标识符?保留字:int ,标识符: add,main,scanf,printf,a,b,c 。步骤 3:编译并运行程序,程序运行时输入两个整数,20 40 ,观察程序运行的结果。2040602 编辑、调试以下程序步骤 1:在 Visual C+环境下新建文件可用 开始 程序Microsoft Visual C+6.0 Microsoft Visual C+6.0 文件 新建文件 C+ Sourse File,输入文件名 ex1-

4、2.c步骤 2:在文本编辑器中输入以下 C 程序#include /*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/#includeint main( ) int and(int,int); /* 函数的说明,告诉系统在主函数中要调用 and 函数 */int or(int,int); /* 函数的说明,告诉系统在主函数中要调用 and 函数 */int a,b,c; /* 变量的定义*/scanf(“%d %d“,c=and(a,b); /* 函数调用 */ printf(“%d /*调用系统输出函数 printf,%d 为格式控制符,依次用后面的变量值填充,以整数形式输出 *

5、/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,输入文件名 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,按

6、回车。20 4020 printf(“%d,%dn“,+i,j- );8 运行程序,屏幕提示“您是一个学生吗” ,您输入y或 n进行回答,屏幕输出您的选项。9 从键盘输入一个角度 x,求 10*sin(x)的值。第章 循环程序设计1执行语句 for(i=0;i+void 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;i#include void ma

7、in()int i,j;for(i=4;i-5;i-) for(j=0;jvoid 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;while(ifloat aver(int a) int k,sum=0;float ave;for(k=0;k void abc( char str )int a, b ;for(a = b = 0 ; stra!=0; a+ )if(stra!= c)strb+ = stra;strb=0;int main( )char str =“

8、abcdef“ ;abc(str);printf(“str =%s “ , str );return 0;提示:数组str的首地址传递给形参str,stra就是实参中的数组元素stra,当数组元素不为c时进行复制。3写出以下程序的执行结果。#includeint sort(int b,int n,int x)int k;for(k=n-1;k=0;k-)if(bkint fun(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、=9-fun(7),.,fun(1)=35写出以下程序的执行结果,并说明其作用是什么?#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 、12 ,最后n=1,n 对8 取余输出,然后数据依次出栈对8取余输出。二、程序设计1编写一个函数,计算 x 的 n 次的平方。 提示:for(y=1,i=0;i=0void fun( )printf(“%d “,x+);void

10、main( )int x=1;extern int x;printf(“%d,“,+x);fun( );提示:在函数fun中及语句块extern int x;printf(“%d,“,+x);中使用的x是外部变量,在语句块:if(x=1)int x=2;printf(“%d,“,x+);中使用的是刚刚定义x=2的变量。2写出以下程序的执行结果。#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

11、 t( )int x = 0 ;static int y = 4 ;y += +x ;return x+y;void main( ) printf(“%d n“,( t( ), t( ) );提示:语句printf(“%d n“,(t( ), t( );中(t( ),t( )属于“,”号表达式,即两次调用函数t( ),在函数 t( )中,y为静态内部变量,因而语句 static int y = 4 ;只执行一次。第章 文件1下述程序从终端读入文本(用$作为文本结束标志)复制到一个名为 out.dat 的新文件中,请补全程序。#include int main()FILE *fp;char cx

12、;if(fp=fopen( (1) )=NULL)return 0;while(cx=getchar( )!=$)fputc(cx,fp);(2) ;return 1;提示:第1个空格是打开文件读,第2个空格是关闭文件。2下面的程序用来统计文件中字符的个数,请补全程序。#includeint main( ) FILE *fp;long num=0;if(fp=fopen(“fname.dat“,“r“)=NULL)printf(“Cant open file!n“);exit(0);while( (1) ) fgetc(fp); num+;printf(“num=%dn“,num);fclos

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

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

15、se(fp);提示:在fread 语句中,(1)中为存放所读出结构数据的内存地址,当然此数据是赋给变量r,(2)中是读出结构体变量数据的个数,(3)是与循环中止有关的判断,(4)为中止循环。.从键盘输入一个字符串,并逐个将字符串的每个字符传送到磁盘文件“l1.txt“中,字符串的结束标记为“#“。有一文本文件 l1.txt,请编写一个程序将文件中的英文字母及数字字符显示在屏幕上。提示:把文本文件 l1.txt 中的数字字符复制到文本文件 l2.txt 中。x 从 0 到 360 度的 sin(x)值写入到文件 l6.txt 中,并将大于 0 的值显示在屏幕上。第章 指针与数组1下列程序输出的结

16、果是( ) 。#include void f(int * x )*x = 10 ; void main()int a,*p=f(p);printf(“%d“,+(*p);(A)输出的值是随机值 (B)因输出语句错误而不能执行者 (C)输出值为 10 (D )输出值为 11提示:指针 x 指与指针 p 指向同一个变量,10 赋给指针 x 所指的地址上的内容,+(*p)是指指针 p 所指地址上内容+。2下列程序片段中不正确的字符串赋值或初始化方式是( ) 。(A)char *str; str=“string“; (B)char str7=s,t,r,i,n,g,0;(C)char str10; s

17、tr=“string“; (D)char str =“string“; 提示:字符串赋值只能在初始化时进行。3如有定义:int x=2,*p=float *p2,y=2.5;p1= p2=printf(“%d, %fn“,+(*p1), (*p2)+ ); 提示:+ 都作用在内容上,前一项是先+再输出,后一项是先输出再+。2下列程序输出结果是( ) 。#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下列程序输出

18、结果是( ) 。#includevoid main()int a =1,2,3,4,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向大地址方向移动,然后再取内容,要注意的是后一语句的输出受前一语句的影

19、响。5下列程序输出的结果是( ) 。#include void del( 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以下程序输出的结果是( ) 。#include#includevoid fun( char *w

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

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

22、b。提示:void swap(int *p1,int *p2)int temp;temp=*p1;*p1=*p2;*p2=temp;2编写一函数 void invert(char str )将一个字符串的内容颠倒过来。提示:定义两个字符指针,测试字符串的长度,一个指针 p1 指向字符串的首地址,另一个指针p2 指向字符串最后一个字符,当 while(p2p1)满足时交换两个指针所指的内容。3编写一函数 int index(char *s,char *t)检查字符串 s 中是否包含字符串 t,若包含则返回t 在 s 中的开始位置(下标值) ,否则返回-1。提示:先计算 t 的长度 nfor(i=0 ; si ; i+)for(j=0;si+j=tj;j+)if(j+1=n)return i ;4编写函数,判断一字符串是否回文。若是回文,函数返回值为 1;否则返回值为 0。 (回文是按顺序读和倒读都一样的字符串) 。提示:设字符指针 p1、p2 分别指向字符串的第 1 个字符与最后一个字符,考虑下列程序段:while(p2p1)if(*p1=*p2)p1+;p2-;elsereturn 0;if(p1p2)return 1;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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


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

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

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