版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序设计基础(c)作业第章 语言的基本构成一、选择题1( a )是构成c语言程序的基本单位。(a)函数 (b)过程 (c)子程序 (d)文件2( b )是c语言提供的合法的数据类型关键字。(a)float (b)signed (c)integer (d)char3以下选项中不合法的用户标识符是( a )。(a)abcc (b)file (c)main (d)printf4以下选项中不合法的用户标识符是( b )。(a)l23 (b)printf (c)a (d)dim5合法的语言长整型常数是( b )。(a)l (b)5712700 (c)0.054838743 (d)2.1869e10 c语
2、言中,要求运算数必须是整型的运算符是( a )。(a)% (b) / (c) (d)!以下选项中正确的整型常量是( b )。(a)12. (b)20 (c)l,000 (d)0458以下选项中不正确的实型常量是( b )。(a)2.607e1 (b)0.8103e2. (c)77.77 (d)456e2c语言中运算对象必需是整型的运算符是( d )。(a) (b) + (c) * (d) % 二、程序调试题1 编辑、调试以下程序步骤1:在visual c+环境下新建文件可用开始程序microsoft visual c+6.0 microsoft visual c+6.0 文件 新建文件 c+
3、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); /* 函数的说明,告诉系统在主函数中要调用add函数 */int a,b,c; /* 变量的定义*/scanf(%d %dn,&a,&b);c=add(a,b); /* 函数调用 */ printf(%d+%d=%dn,a,b,c); /* 调用系统输出函数printf,%d为格式控制符,依次用后面的变量
4、值填充,以整数形式输出 */请思考文件ex1-1.c由几个函数构成?调用了那几个系统函数?此程序中用到了哪几个保留字?哪几个用户自定义标识符?步骤3:编译并运行程序,程序运行时输入两个整数,20 40 ,观察程序运行的结果。答案:1、由2个函数组成;2、调用了scanf,printf两个系统函数;3、用到 int ,main,return,scanf,print;4、add,a,b,c,z,x,y;5、20+40=602 编辑、调试以下程序步骤1:在visual c+环境下新建文件可用开始程序microsoft visual c+6.0 microsoft visual c+6.0 文件 新建
5、文件 c+ sourse file,输入文件名ex1-2.c步骤2:在文本编辑器中输入以下c程序#include /*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/#includeint main( ) int and(int,int); /* 函数的说明,告诉系统在主函数中要调用and函数 */ int or(int,int); /* 函数的说明,告诉系统在主函数中要调用and函数 */int a,b,c; /* 变量的定义*/scanf(%d %d,&a,&b);c=and(a,b); /* 函数调用 */ printf(%d & %d=%dn,a,b,c); /*调用系统输
6、出函数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=a&b; return 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:
7、点击执行图标 ,执行程序1-2.c ,当程序运行时,键盘输入20 40,按回车。20 4020 & 40=120 | 40=1您可以输入其它的整数,观察程序的执行结果。答案:10 2010 & 20 =110 | 20 =1第章输入输出程序设计1 用printf输出一个中空的五角星。代码:#include void main( ) printf();2 仿照例子2.2,定义一个字符数组,从键盘输入一字符串,然后输出的程序。代码:#include void main( ) char string300; printf(请输入字符串:n); gets(%s,string); printf(您输入的
8、字符串:%sn,string);3 从键盘输入十六进制整数,转化为八进制数输出。代码:#include void main( ) int i; scanf(%x,&i); printf(%on,i);4 只定义两个整型数据并赋值,实现两个整型数的互换。代码:#include void main( ) int a=10,b=20; printf(初始值:a=%d,b=%dn,a,b); a = ab; b = ba; a = ab; printf(交换值:a=%d,b=%dn,a,b);5 从键盘上输入一个整数,分别输出8、16进制数的程序。代码:#include void main( ) in
9、t i; scanf(%d,&i); printf(八进制:%o,十六进制:%xn,i,i);6 从键盘上输入一个整数,分别输出它的个位数,十位数,百位数。代码:#include void main( ) int i; scanf(%d,&i); printf(个位数:%d,十位数:%d,百位数:%dn,i%10,(i/10)%10,(i/100)%10);7 以下程序输出结果是( )。#includevoid main() int i=010,j=10; printf(%d,%dn,+i,j- ); 答案:9,108 运行程序,屏幕提示“您是一个学生吗”,您输入y或n进行回答,屏幕输出您的选
10、项。代码:#includevoid main() char a; printf(您是一个学生吗?(y/n)n); scanf(%c,&a); if(a=y) printf(%cn,a); else if(a=n) printf(%cn,a); else printf(回答错误n); 9 从键盘输入一个角度x,求10*sin(x)的值。#include#includevoid main() double x; scanf(%lf,&x); printf(10*sin(x)=%lfn,10*sin(x);第章循环程序设计1执行语句for(i=0;i+5;);后,变量i 的值是( a )。(a)6
11、(b)5 (c)4 (d)02若int i=0;下列语句计算1+2+10的是( c )。(a)while(s+=i); (b)for(;i=10;i+,s+=i)(c)for(;i=10;s+=i,i+)(d)for(;i9;i+,s+=i)3若int i,x; 则语句 for(i=x=0;i9;i+=+x);的循环体要执行( 4 )次。10以下不是死循环的语句是( d )。(a)for(;x+); (b)while(1)x+;(c)doi+;while(1) (d)for(x=-10;x+;)4以下for语句的循环次数是多少?int i,j=3;for(;i=j;i-,j-) printf(
12、%d,i);答案:3次5下面的语句显示输出6行6列的整数数组h的主对角线上的所有元素,请补充完整:for(int i=0;i 6 ; i+ )printf(%d, hii )6写出以下程序运行的结果,此程序实现了什么功能?#includevoid main() int a10=2,4,0,-5,10,6,-8,9,6,7; int i, count=0; for(i=0;i10;i+) if(ai=0) count+; else continue;printf(%dn , count);答案:0。 数组a里有几个0。7写出以下程序的功能。#includevoid main()int a10=2
13、,4,0,-5,10,6,-8,9,6,7,tmp,k;for (k=0;k10/2;k+) tmp=ak; ak=a10-k-1;a10-k-1=tmp;答案:把数组倒置.8写出以下程序运行后的输出结果。#includevoid main() int i,j; for(i=0;i6;i+) for(j=0;ji;j+)printf( );for(j=0;j2*(5-i)-1;j+)printf(*);printf(n); 答案:* * * * *9请改正下列程序的错误,改正后的程序写在右边的空白处,并上机调试检验。(1)#includevoid main( ) int i,s;i=1; s=
14、0;while(i=100); s=s+i; i+; printf(“1+2+3+.+99+100=%dn”,s);代码:#includevoid main( ) int i,s; i=1; s=0; while(i=100) s=s+i; i+; printf(1+2+3+.+99+100=%dn,s);(2)#includevoid main( ) int i,s;i=1;s=0;while(i=100) s=s+i; i+; printf(“1+2+3+.+99+100=%dn”,s);代码:#includevoid main( ) int i,s;i=1;s=0;while(i=100
15、) s=s+i; i+; printf(1+2+3+.+99+100=%dn,s);(3)#includevoid main( ) int i=1,s;while(i=100) ; s=s+i; i+; printf(“1+2+3+.+99+100=%dn”,s);代码:#includevoid main( ) int i=1,s=0;while(i=100) s=s+i; i+; printf(“1+2+3+.+99+100=%dn”,s);10 输入一个基数,例如输入9,输出为:求1*3*9的值。输出为:1*3*5*7*9=945(?945 and 45)答案:#includevoid m
16、ain( ) int x,i=0,s=0; scanf(%d,&x); while(i=x) if(i=1) printf(%d,i); s+=i; else if(i%2!=0) printf(+%d,i); s+=i; i+; printf(=%dn,s);11 输入一个510之间的整数n,求1!+2!+3!+n!。例如输入5,输出为:1!+2!+3!+5!=153 答案:#includeint jiecheng(int x)int i,sum=1;for(i=1;i=x;i+) sum*=i;return sum;void main( ) int n,i=1,sum=0; printf(
17、输入一个510之间的整数:n); scanf(%d,&n); while(n10) printf(输入一个510之间的整数:n); scanf(%d,&n); while(i=n) if(i=1) printf(%d!,i); sum+=jiecheng(i); else printf(+%d!,i); sum+=jiecheng(i); i+; printf(=%dn,sum);12在屏幕上输出以下内容1 12 123 1234 12345 123456 1234567 12345678 123456789 答案:#includevoid main( ) int i=1,j; while(i
18、=9) for(j=1;j=i;j+) printf(%d,j); printf(n); i+; 12 求2+4+6+98+100的和,用多种for表达式来完成。答案:形式一:#include void main( ) int i=0,sum=0; for(;i=100;i+=2) sum+=i; printf(2+4+.+98+100=%dn,sum);形式二:#include void main( ) int i=0,sum=0; for(;i=100;) sum+=i; i+=2; printf(2+4+.+98+100=%dn,sum);形式三:#include void main(
19、) int i=0,sum=0; for(;) sum+=i; i+=2; if(i100) break; printf(2+4+.+98+100=%dn,sum);形式四:#include void main( ) for(int i=2,sum=0;i=100;sum+=i, i+=2); printf(2+4+.+98+100=%dn,sum);14输入一行字符,统计它有多少个字母?答案: #include void main( ) char string100,c; int total = 99,count=0,scount=0; while(count=a & c=a & c=z)
20、scount+; count+; printf(%s count=%dn,string,scount);第章分支程序设计1输入若干整数给x,使用if语句输出x的绝对值,当输入0时结束。 答案:#include#includevoid main( ) double x; scanf(%lf,&x); while(1) if(x!=0) printf(fabs(%lf)=%lfn,x,fabs(x); scanf(%lf,&x); else break; 2输入一批数,输出比相邻数大的数,当输入0时结束。 答案:#include#includevoid main() int a100,i,n; p
21、rintf(请输入数组到个数:n); scanf(%d,&n); for(i=0;in;i+) scanf(%d,&ai); for(i=0;iai+1) printf(%d ,ai); if(i=n-1) if(ai-10 & iai+1&aiai-1) printf(%d ,ai); 3将输入字符的大写字符转换成小写字符输出,小写字符原样输出。答案:#include void main( ) char string10; scanf(%s,string); int i; for(i=0;i=a & stringi=z) printf(%c,stringi-32); else printf(
22、%c,stringi); 4输入一批字符,按回车时结束,统计小写字符、大写字符、数字字符、或其它字符的个数。 答案:#includevoid main( ) ; int total = 99,count=0,bcount=0,scount=0,ncount=0,ocount=0; while(count=a & c=a & c=0 & c=9) ncount+; else ocount+; count+; printf(%s 小写字符:%d,大写字符:%d,数字字符:%d,其它字符:%dn,string,scount,bcount,ncount,ocount);5编写程序,计算分段函数:答案:
23、#includevoid main( ) double x,y; scanf(%lf,&x); while(x=10) printf(x!=10 n); scanf(%lf,&x); if(x10) y=3/(x-10); else y=2*x; printf(y=%lfn,y);6根据输入的百分制按五分制的成绩输出。百分制与五分制之间的关系见下表。百分制五分制90 100580 89470 79360 692601答案:#includevoid main( ) int x,y; scanf(%d,&x); while(x100 | x 0) printf(0=x=100 n); scanf(
24、%d,&x); if(x=90) y=5; else if(x=80) y=4; else if(x=70) y=3; else if(x=60) y=2; else y=1; printf(y=%dn,y);7、用switch完成:读入一个实数x,再输入一整数,若输入是1,则计算sin(x),若输入2,则计算cos(x),若输入3,则计算tan(x),若输入其他值,则显示错误信息。答案:#include#includevoid main( ) int s; double x=0.3; scanf(%d,&s); switch(s) case 1: printf(sin(x)=%lfn,sin
25、(x); break; case 2: printf(cos(x)=%lfn,cos(x); break; case 3: printf(tan(x)=%lfn,tan(x); break; default: printf(错误:请输入1-3的数字!); break; 8、用switch完成:输入星期1 到星期5,输出它们对应的颜色星期1:blue星期2:red星期3:white星期4:yellow星期5:green答案:#include void main( ) int s; scanf(%d,&s); switch(s) case 1: printf(星期1:bluen); break;
26、case 2: printf(星期2:redn); break; case 3: printf(星期3:whiten); break; case 4: printf(星期4:yellown); break; case 5: printf(星期5:greenn); break; default: printf(错误:请输入1-5的数字!); break; 9、用switch完成:从键盘输入a、b、c、d四个等级中的一个,转化输出等级输出a优秀b良好c中等d及格e不及格答案:#include void main( ) switch(getchar() case a: printf(优秀n); br
27、eak; case b: printf(良好n); break; case c: printf(中等n); break; case d: printf(及格n); break; case e: printf(不及格n); break; default: printf(错误:请输入a-e的字符!); break; 第章数组及其应用.从键盘输入12个数,分别为:900,2,3,58,34,76,87,72,90,20,78,30,找出最大和最小数。答案:#include void main( ) int a12,i=0; while(i12) scanf(%d,&ai); i+; int maxa
28、=a0,mina=a0; for(i=1;imaxa) maxa = ai; if(ai mina) mina = ai; printf(max=%d,min=%d,maxa,mina); .采用遍历查找,在数组asize=2, 3,20,58, 72, 76,78,87,90,900中,找出偶数。答案:#include #define size 10void main( ) int asize=2, 3,20,58, 72, 76,78,87,90,900; int i; printf(asize=2, 3,20,58, 72, 76,78,87,90,900中偶数:n); for(i=1;
29、i10;i+) if(ai%2=0) printf(%d,ai); .采用折半查找,在数组asize=2, 3,20,58, 72, 76,78,87,90,900中,找到87,然后进行删除。答案:#include #define size 10void main( ) int asize=2, 3,20,58, 72, 76,78,78,90,900; int i,j=0,k,newsize; newsize=size; k=newsize; printf(删除78前的数组:); for(i=0;inewsize;i+) if(i=newsize-1) printf(%dn,ai); els
30、e printf(%d,ai); i=(j+k)/2; while(j78) k=i-1; else if(ai78) j=i+1; else for(j=i;jnewsize-1;j+)/*找到后删除 并且继续查找是否有*/ aj=aj+1; newsize-; k=newsize; j=0; i=(j+k)/2; printf(删除78后的数组:); for(i=0;inewsize;i+) if(i=newsize-1) printf(%dn,ai); else printf(%d,ai); 第章函数及其应用练习与实践一、阅读程序,写出程序运行的结果。1写出以下程序的执行结果。#incl
31、udefloat aver(int a) int k,sum=0;float ave;for(k=0;k10;k+) sum+=*(a+k); ave=(float)sum/10;return (ave);int main( ) float ave;static b=78,89,98,76,78,45,88,81,92,85;ave=aver(b);printf(ave=%fn,ave);提示:数组b的首地址传递给形参a,*(a+k)就是数组元素bk.答案:81.0000002阅读程序,写出程序的执行结果。#include void abc( char str )int a, b ;for(a
32、 = 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时进行复制。答案:str =abdef3写出以下程序的执行结果。#includeint sort(int b,int n,int x)int k;for(k=n-1;k=0;k-)if(bkx)bk+1=bk;elsebreak;bk+1=x;retu
33、rn 0; int main( )int i,j;static int a5=8,5,4,1,6;int b8;b0=a0;for(i=1;i5;i+)sort(b,i,ai);for(j=0;j=i;j+) printf(%d ,bi);printf(n);return 0; 提示:循环体中if(bkx)bk+1=bk;elsebreak;如果bkx成立,执行语句bk+1=bk;表示数组元素b向后移,不满足时插入x,即从大到小排序。答案:5 5 4 4 4 1 1 1 11 1 1 1 1 4写出以下程序的执行结果。#includeint fun(int x) int p; if(x=0|x
34、=1) return 3; else p=x-fun(x-2); return p;int main( )printf(n%d,fun(9);return 0; 提示:fun(9)=9-fun(7),.,fun(1)=3答案:75写出以下程序的执行结果,并说明其作用是什么?#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取余输出,然后数据依次出栈对
35、8取余输出。答案:1432。作用?二、程序设计1编写一个函数,计算x的n次的平方。 提示:for(y=1,i=0;in;i+) y=y*x;答案:#include int main( )int x,n,y,i;printf(please input x and n:n);scanf(%d %d,&x,&n);for(y=1,i=0;in;i+) y=y*x; printf(x的n次的平方:%dn,y); 2编写一个函数,计算对角线上元素之和。提示:for(s=0,i=0;in;i+) for(j=0;jn;j+) if(i=j) s=s+aij; 答案:#include int main( )
36、int s,i,j,n=3;int a33 = 3,5,6,7,4,6,4,9,4; for(s=0,i=0;in;i+) for(j=0;jn;j+) if(i=j) s=s+aij; printf(s=%dn,s); 3编写一个函数int invert(char str ),将一个字符串的内容颠倒过来。提示:先求字符串str的长度n,for(i=0;in/2;i+)ai与an-1-i交换答案:#include int invert(char str)int n =strlen(str); int i; char temp; for(i=0;in/2;i+) temp = stri; str
37、i=strn-i-1; strn-i-1=temp; void main() char a12=1c32323cvwd; printf(invert before:%sn,a); invert(a); printf(invert after:%sn,a);4编写函数,删除字符串中,从指定位置m开始的n个字符。删除成功,函数返回被删除字符串;否则返回空的值。提示:for(k=m , i=0 ; stri ; i+) strm+i=strm+n+i; strm+i=0;答案:#includeint cutstring(int m,int n,char str) int l =strlen(str)
38、; if(m+n-1=l) return 0; int k,i; char nstrn; for(k=m , i=0 ; stri ; i+) strm+i=strm+n+i; strm+i=0; return 0; void main()int m,n;char str11 = ddksosekci; printf(%sn,str); printf(please input m and n:n); scanf(%d %d,&m,&n); cutstring(m,n,str); printf(%sn,str); 5编写一个程序,从键盘输入的字符串,删去非数字字符,转换成整型数输出。 提示:for(s=0 , i=0 , j=0 ; stri;i+) if(stri=0&stri=9) s=s*10+stri-0; 答案:#include void main() char str11; int s,i,j; for(i=0;i=0&stri=9) s=s*10+stri-0; printf(%dn,s);6用递归的方法编写一个函数sum(int n),求1至n的累加和。 提示:f(n)=n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 村里意识形态考核制度
- 初中学校工作考核制度
- 经办中心绩效考核制度
- 物业小区管理考核制度
- 资产运营公司考核制度
- 医生业务培训考核制度
- 团总支负责人考核制度
- 疫情防控班级考核制度
- icu 绩效考核制度
- 卫生院人事管理考核制度
- 水利系统各单位年后复工复产安全工作部署
- GB/T 47060-2026特种信封国际邮政公事信封
- 纪委监委安全办案课件
- 常减压生产工艺培训
- 《道路工程碳纤维电缆融雪抗凝冰技术规程》
- DL∕T 1057-2023 自动跟踪补偿消弧线圈成套装置技术条件
- 《山东省建设工程消防设计审查验收技术指南(建筑、结构)》
- 西南大学心理学专硕347测试题
- GB/T 43884-2024金属覆盖层钢铁制件的锌扩散层-渗锌技术要求
- 【人教版】五年级数学下册第一单元知识点+同步练习+测试卷及答案
- 术中获得性压力性损伤评估量表
评论
0/150
提交评论