国家二级C语言上机试题.doc_第1页
国家二级C语言上机试题.doc_第2页
国家二级C语言上机试题.doc_第3页
国家二级C语言上机试题.doc_第4页
国家二级C语言上机试题.doc_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

C语言实验指导 每一个实验后面都有作业,把作业做完后发到下面的邮箱:要求:邮件主题格式:学号 姓名 实验x实验一 C语言的运行环境和运行过程【目的与要求】1了解在该系统上如何编辑、编译、连接和运行一个C程序。2通过运行简单的C程序,初步了解C源程序的特点。【上机内容】1. 标题栏启动Visual C+6.0 程序以后,出现如下窗口:项目工作区输出区工具栏状态栏文件编辑区菜单栏2. 创建一个新文件单击“文件”菜单,在其下拉菜单中选择“新建”,屏幕上出现一个“新建”对话框,在该对话框中选择“文件”标签,出现“文件”选项卡,如图所示。lx_1.c在列表中选择“C+ Source File”,并在“文件”框内输入源文件名(如lx1.c),然后在“目录”框中输入你将要把所建立的文件放入何处的路径名,如D:VC031_01。也可以单击位于“目录”框右边的按钮,在弹出的对话框中选中你自己的文件夹,如图单击“确定”按钮,返回“文件”选项卡。单击“文件”选项卡的“确定”按钮出现编辑屏幕,即可编辑程序3. 编译、连接和运行程序程序编好后要进行编译、连接和运行,步骤如下:(1) 选择“编译”菜单,单击下拉菜单中的“编译 ”,(或者用组合键【CtrlF7】)这时系统开始对当前的源程序进行编译,在编译前,出现一个对话框,问你是否要建立一个项目,回答“是”。此时开始编译,在编译过程中,将所发现的错误显示在屏幕下方的“Build”窗口中。根据错误提示,修改程序后再重新编译,如还有错误,再继续修改、编译,直到没有错误为止。(2) 编译无误后进行连接,这时选择“编译”菜单中的“构建 lx_1.exe”选项(或者用【F7】键)。同样,对出现的错误要进行修改,直到编译、连接无错为止。在“编译”窗口中显示如下信息: 0 error(s), 0 warning(s),说明编译、连接成功,并生成以源文件名为名字的可执行文件(lx_1.exe)。(3) 运行程序。选择“编译”菜单中的“! 执行 lx_1.exe”选项(或者用组合键【CtrlF5】)。这时,会出现一个“MS-DOS”窗口,输出结果显示在该窗口中.(4) 运行结束后,可以回到“文件”菜单,点击“关闭工作区“选项,关闭当前文件窗口。若要编辑新的源程序,可以再次打开“文件”菜单,重新建立文件,步骤如上所述。【一般示例】【例1】编程实现在屏幕上显示如下三行文字 Hello, world ! Wolcome to the C language world! Everyone has been waiting for.程序example.c如下:main()printf(Hello,World!n);printf(Wolcome to the C language world!n);printf(Everyone has been waiting for.n);【例2】输入并运行程序,写出运行结果。main() int a,b,sum; a=123;b=456; sum=a+b; printf(“sum is %dn”,sum);运行方法同上,最后结果为:sum is 579。【例3】输入并运行程序,写出运行结果。main()int a,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“max=%d”,c);int max(int x,int y)int z;if (xy) z=x;else z=y;return(z);这个程序的功能是对于任意输入的两个整数,输出较大的那个数。所以程序运行之后,光标将停留在用户屏幕上,等待用户输入两个整数,比如输入“3,5”,回车,在用户屏幕上就会输出“max=5”。【作业】1参照例题,编写一个C程序,输出以下信息:* Hello,World!*#includemain()printf(Hello,world!n);printf(*n Hello,World!n*n);2编写一个C程序,输入a、b、c三个数,输出其中最大者。试想,如果求四个数中的最大者,则程序该如何编写。#includemain()int a,b,c,d;scanf(%e,%e,%e,&a,&b,&c);d=max(a,b);d=max(b,c);printf(max=%e,d);int max(int x,int y,int z)int m;if(xy,xz)m=x;else m=y;return(m);实验二 C语言的基础知识【目的与要求】1掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。2学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+)和自减(-)运算符的使用。【上机内容】 【一般示例】【例1】输入并运行下程序,写出运行结果。mian() char c1 , c2; c1=97;c2=98; printf(“%c %c”, c1, c2);在此基础上1)加一个printf语句,并运行之。printf(“%d,%d”, c1, c2 );2)再将第二行改为: int c1, c2;再使之运行。3)再将第三行改为: c1=300; c2=400;再使之运行,分析其运行结果。4)再将第3行改为:c1=a; c2=b;再使之运行,(你会发现程序有错误,a,b都没有加单引号,就应该是变量)5)再将第3行改为:c1= “a”; c2= “b”;再使之运行,(你会发现程序有错误)在该程序中,说明了字符型数据在特定情况下可作为整型数据处理,整型数据有时也可以作为字符型数据处理。【例2】分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。main() char c1=a,c2=b,c3=c,c4=101,c5=116;printf(“a%c b%ctabcn”,c1,c2,c3);printf(“tb%c %c”,c4,c5);在该程序中,主要考查对转义字符的掌握情况。【例3】分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。main()int i , j , m , n ;i=8; j=10;m=+i; n=j+;printf(“%d,%d,%d,%d”,i,j,m,n);分别作以下改动之后,先分析再运行:1)将第四行改为:m=i+; n= + j;2)程序改为:main() int i , j ;i=8; j=10;printf(“%d,%d”, i+, j+);3)在2)的基础上,将printf语句改为:printf(“%d,%d”, + i, + j );4)再将printf语句改为:printf(“%d,%d,%d,%d”,i,j,i+,j+);5)程序改为:main()int i , j , m=0 , n=0 ;i=8; j=10;m+= i +; n -= -j;printf(“i=%d,j=%d,m=%d,n=%d”,i,j,m,n);此程序主要考查自加、自减运算符以及复合运算符的用法。【作业】1要将“China”译成密码,密码规律是:用原来的字母后面第5个字母代替原来的字母。例如,字母“A”后面第5个是“F”,用“F”代替“A”。因此,“China”应译为“Hmnsf”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5五个变量的值分别为C、h、i、n、a,经过运算,使其分别变为H、m、n、s、f,并输出。#includevoid main( ) char c1,c2,c3,c4,c5; c1=C; c2=h; c3=i; c4=n; c5=a; c1=c1+5; c2+=5; c3+=5; c4+=5; c5+=5; printf(%c%c%c%c%c,c1,c2,c3,c4,c5);2求下面算术表达式的值。(1)x+a%3*(x+y)%2/4设x=2.5,a=7,y=4.71验证程序,要验证表达式的值,x,y,a只能定义为整型变量,或者用强制类型转换。#includevoid main( ) int x,y,z,a; x=2.5; a=7; y=4.7; z=x+a%3*(x+y)%2/4; printf(%d,z);(2)(float)(a+b)/2+(int)x%(int)y设a=2,b=3,x=3.5,y=2.52 #includevoid main( ) float x,y,z; int a,b; a=2; b=3; x=3.5; y=2.5; z=(float)(a+b)/2+(int)x%(int)y; printf(%f,z);总结:一个实数赋值给一个整型变量将自动执行强制类型转换。重点掌握 % 和/的知识点。先自己分析,再试着用程序求解,看得到的结果是否一致。3写出下面表达式运算后a的值,设原来a=10。设a和n已定义成整型变量。(1)a+=a (2)a-=2(3)a*=2+3 (4)a/=a+a(5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a先自(1)a+=a a的值为20 (2)a-=2 a的值为8(3)a*=2+3 a的值为50 (4)a/=a+a a的值为0(5)a%=(n%=2),n的值等于5 a的值为0 (6)a+=a-=a*=a a的值为0己分析,再试着用程序求解,看得到的结果是否一致。实验三 简单的C程序设计【目的与要求】 1理解C语言程序的顺序结构 2掌握常用的C语言语句,熟练应用赋值、输入、输出语句。【上机内容】【一般实例】【例1】按格式要求输入/输出数据#include stdio.hmain() int a,b;float x,y;char c1,c2;scanf(“a=%d,b=%d”,&a,&b);scanf(“%f, %e”,&x,&y);scanf(“%c %c”,&c1,&c2);printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn”,a,b,x,y,c1,c2);1运行该程序,按如下方式在键盘上输入数据a=3,b=7 8.5,71.82 a A 请同学们仔细看哈输出结果2运行该程序,按如下方式在键盘上输入数据a=3,b=7 8.5,71.82 a A 仔细比较这两次输出的结果有什么不一样?【例2】输入一个正整数x(100999),取出x的个位十位百位。任何一个整数除以10取余都得到这个数的个位,任何一个整数除以10取整都舍去个位。如:12%10=2,12/10=1。#includemain() int a,gw,sw,bw;printf(input a:);scanf(%d,&a);gw=a%10;sw=a/10%10;bw=a/100;printf(gw=%d,sw=%d,bw=%d,gw,sw,bw);请同学们思考:设x为整数 x=5689 ,x%100=? ,x/100=?【例3】输入一个数字字符,将它转换为数字输出。#includemain() int a;char c;printf(input c:);scanf(%c,&c);/以字符的形式输入数字就是输入数字字符a=c-0;/将数字字符转换为数字 或者a=c-48;printf(a=%d,a);数字和数字字符这是两个不同的概念,如:数字0 和数字字符0是不同的,因为他们的ASIIC码值不一样。【作业】1、 输入一个四位正整数,求出这个数的各位之和并输出这个数的各位与各位之和。#includemain()int a,h,gw,sw,bw,qw;printf(input a:);scanf(a=%d,&a);gw=a%10;sw=a/10%10;bw=a/100%10;qw=a/1000;h=gw+sw+bw+qw;printf(gw=%d,sw=%d,bw=%d,qw=%d,h=%d,gw,sw,bw,qw,h);2、 输入一个整数(0-9之间),把这个整数转换为它对应的数字字符输出。#includemain() int a;char c;printf(input a:);scanf(%d,&a);c=a+0;/将数字转换为数字字符printf(c=%c,c);实验四 选择结构程序设计【目的与要求】1了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”);2学会正确使用逻辑运算符和逻辑表达式;3 熟练掌握if语句和switch语句。【上机内容】【一般示例】【例1】 已知三个数a,b,c,找出最大值放于max中。分析:由已知可得在变量定义时定义四个变量a,b,c和max,a,b,c是任意输入的三个数,max是用来存放结果最大值的。第一次比较a和b,把大数存入max中,因a,b都可能是大值,所以用if语句中ifelse 形式。第二次比较max和c,把最大数存入max中,用if语句的第一种形式if形式。Max即为a,b,c中的最大值。include stdio.hmain() int a,b,c,max; /*定义四个整型变量*/scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);if (a=b)max=a; /*a=b*/else max=b; /*amax) max=c; /*c是最大值*/printf(max=%d,max); 若输入下列数据,分析程序的执行顺序并写出运行结果(1)a=1,b=2,c=3 (2)a=2,b=1,c=3 (3)a=3,b=2,c=1 (4)a=3,b=1,c=2 (5)a=3,b=3,c=2 (6)a=2,b=1,c=2 【例2】输入某学生的成绩,经处理后给出学生的等级,等级分类如下: 90分以上(包括90): A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下: E方法一:(用if嵌套)分析:由题意知如果某学生成绩在90分以上,等级为A;否则,如果成绩大于80分,等级为B;否则,如果成绩大于70分,等级为C;否则,如果成绩大于60分为D;否则,如果成绩小于60分,等级为E;但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。因此,再用if嵌套前,应先判断输入的成绩是否在0100之间。#includestdio.hmain() float score;char grade;printf(nplease input a student score:);scanf(%f,&score);if(score100|score=90) grade=A; else if(score=80) grade=B; else if(score=70) grade=C; else if(score=60) grade=D; else grade=E; printf(nthe student grade:%c,grade); 输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中得100分,60分,0分以及小于0和大于100的数据。方法二:用switch语句分析:switch 语句是用于处理多分支的语句。注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0100之间的成绩分别化成相关的常量。所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。则由此可得把score除十取整,化为相应的常数。#includemain()float g;int s;char ch;printf(ninput a student grade:);scanf(%f,&g);s=(int)g/10; /对成绩数据取整操作if(s10)printf(ninput error!);else switch (s) case 10: case 9: ch=A; break; case 8: ch=B; break; case 7: ch=C; break; case 6: ch=D; break; default: ch=E; printf(nthe student scort:%c,ch);输入测试数据。【例3】有一函数:x x1 y= 2x-1 1=x=10 用scanf函数输入x的值(分别为x1,1=x=10三种情况),求y值。分析:y是一个分段表达式。要根据x的不同区间来计算y的值。所以应使用If语句。main() int x,y;printf(“please input x :”);scanf(“%d”,&x);if (x1)y=x;printf(“y=%dn”,y);else if (xc&b= =c 0(2) a|b+c&b-c 1(3) !(ab)&!c|1 1(4) !(x=a)&(y=b)&0 0(5) !(a+b)+c-1&b+c/2 13有3个整数a、b、c,由键盘输入,输出其中最小的数。#includemain() int a,b,c,min; /*定义四个整型变量*/scanf(a=%d,b=%d,c=%d,&a,&b,&c);if (a=b)min=b; else min=a; if (cmin) min=c; printf(min=%d,min);4 给一个不多于5位的正整数,要求:a.求出它是几位数;b.分别打出每一位数字;c.按逆序打出各位数字,例如原数为321,应输出123。#includemain() int a,gw,sw,bw,qw,ww;printf(input a:);scanf(%d,&a);if(a=10000) gw=a%10; sw=a/10%10; bw=a/100%10; qw=a/1000%10; ww=a/10000; printf(n该数是%d位数,5); printf(n个位=%d 十位=%d 百位=%d 千位=%d 万位=%d,gw,sw,bw,qw,ww); printf(n逆序输出为:%d%d%d%d%d,gw,sw,bw,qw,ww); else if(a=1000) gw=a%10; sw=a/10%10; bw=a/100%10; qw=a/1000%10; printf(n该数是%d位数,4); printf(n个位=%d 十位=%d 百位=%d 千位=%d ,gw,sw,bw,qw); printf(n逆序输出为:%d%d%d%d,gw,sw,bw,qw); else if(a=100) gw=a%10; sw=a/10%10; bw=a/100%10; printf(n该数是%d位数,3); printf(n个位=%d 十位=%d 百位=%d ,gw,sw,bw); printf(n逆序输出为:%d%d%d,gw,sw,bw); else if(a=10) gw=a%10; sw=a/10%10; printf(n该数是%d位数,2); printf(n个位=%d 十位=%d ,gw,sw); printf(n逆序输出为:%d%d,gw,sw); else if(a=0) gw=a%10; printf(n该数是%d位数,1); printf(n个位=%d ,gw); printf(n逆序输出为:%d,gw); 5输入4个整数,要求按由小到大的顺序输出。#includemain() int a,b,c,d,t; printf(input a b c d : ); scanf(%d%d%d%d,&a,&b,&c,&d);if(ab)t=a;a=b ;b=t;if(bc)t=b;b=c;c=t;if(cd)t=c;c=d;d=t;/经过上面的执行 最大的数已经被存在了d这个变量里面了if(ab)t=a;a=b ;b=t;if(bc)t=b;b=c;c=t;/经过这两步 a b c 这3个值中最大的被存放在了变量c里面了if(ab)t=a;a=b ;b=t;printf(n%d %d %d %d ,a,b,c,d);实验五 循环结构程序设计【目的与要求】 熟练掌握while、dowhile和for三种循环语句的应用。【上机内容】【一般示例】【例1】求5!main()int n,t;n=1;t=1;while(t=5)n=n*t;t=t+1;printf(“%d”,n);【例2】求和s=1!+2!+3!main()int n,s=0,t=1;for(n=1;n=3;n+)t=t*n;s=s+t;printf(“%d”,s);【例3】求和s=1!+3!+5!main()int s=0,t,i,j;for(i=1;i=3;i+) t=1;for(j=1;j=2*i-1;j+)t=t*j;s=s+t;printf(“%d”,s);【例4】求和s= 3+33+333main()int s=0,t=3,i;for(i=1;i=3;i+)s=s+t;t=10*t+3;printf(“%d”,s);【例5】有一数列:2/1,3/2,5/3,8/5,求出这个数列的前10项之和。观察这个分数序列的规律,前一项的分子和分母之和是后一项的分子,前一项的分子是后一项的分母。main()int n,t;float a=2,b=1,s=0;for(n=1;n=10;n+) s=s+a/b;t=a;a=a+b;b=t;printf(“%f”,s); 【例6】打印500以内的“水仙花数”。“水仙花数”是一个三位数,其各位数立方和等于该数本身。 main() int i,j,k,n;for(n=100;n=500;n+)i=n/100;j=n/10-i*10;k=n%10;if(n= =i*i*i+j*j*j+k*k*k)printf(“ %d”,n);【例7】一个数如果恰好等于它的因子之和,这个数就称为完数。求100之内的所有完数。main() int n,s,j;for(n=1;n=100;n+)s=0;for(j=1;jn);其次,算法:使k为m除以n的余数,如果m能被n整除,则k值为0,n为这两个数的最大公约数,否则,使k代替n,n代替m,重复以上过程,直到k值为0。#includestdio.hmain()int m,n,k,result;printf(Enter two numbers:);scanf(%d,%d,&m,&n);if(m0&n0) /*限定两个正整数*/ do k=n%m; if(k=0)result=m;elsen=m;m=k;while(k0); /*循环取余求出最大公因子*/printf(最大公约数是:%dn,result);else printf(没有最大公约数n);【例2】打印下列图案 * * *算法分析:从图案中找出行数,空格数,星号数间的关系如下:行数空格数星号数131223315407i4-i2*i-1可用双重循环控制整个图案的输出。若用循环变量i,j 分别控制外层,内层循环,则i 的取值从1 到4,表示行数,在每行中要确定前面空格个数和星号个数,空格个数是4-i,星号个数是2*i-1。#include void main( )int i,j ;/*定义循环控制变量*/for(i=1;i=4;i+)for(j=1;j=4-i;j+)printf( ); /* 输出4-i 个空格*/for(j=1;j=2*i-1;j+)printf(*);printf(n);【例3】判断m是否是素数(质数)。(只能被1 和自己整除的数就叫素数)程序:#include main()int m,i,k;scanf(“%d”,&m);k=sqrt(m+1); /sqrt开平方函数for(i=2;i=k+1)printf(“%d is a prime numbern”,m);else printf(“%d is not a prime numbern”,m);【作业】1输入两个正整数m和n,求其最大公约数和最小公倍数。 .#includemain()int a,b,num1,num2,temp;printf(please input two numbers:n);scanf(%d,%d,&num1,&num2);if(num1!=0)temp=num1;num1=num2;num2=temp;a=num1;b=num2;while(b!=0) /*利用辗除法,直到b为0为止*/temp=a%b;a=b;b=temp;printf(最大公约数=%dn,a);printf(最小公倍数=%dn,num1*num2/a); 2求Sn=a+aa+aaa+aaa 之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5), n由键盘输入。#includemain()int s=0,a,n,i,t;printf(input a n:);scanf(%d %d,&a,&n);t=a;for(i=1;i=n;i+)s=s+t;t=10*t+a;printf(%d,s);3求和1!+2!+3!+4!+20!#includemain()int s=0,t,i,n,j;n=20;t=1;for(i=1;i=n;i+) t=t*i;s=s+t;printf(%d,s);4 打印100-999之间所有的“水仙花数”。“水仙花数”是一个三位数,其各位数立方和等于该数本身。如:153=1*1*1+5*5*5+3*3*3#includemain() int i,j,k,n;for(n=100;n=999;n+)i=n/100;j=n/10-i*10;k=n%10;if(n=i*i*i+j*j*j+k*k*k)printf(n %d=%d*%d*%d+%d*%d*%d+%d*%d*%d ,n,i,i,i,j,j,j,k,k,k);5 一个数如果恰好等于它的因子之和,这个数就称为完数。求1000之内的所有完数。#includemain() int n,s,j;for(n=1;n=1000;n+)s=0;for(j=1;jn;j+)if (n%j=0)s=s+j;if (s=n)printf( %d,s);6 打印下列图案*#includevoid main( )int i,j ;/*定义循环控制变量*/上三角型图for(i=1;i=3;i+)for(j=1;j=3-i;j+)printf( ); /* 输出3-i 个空格*/for(j=1;j=2*i-1;j+)printf(*);printf(n);/下三角型图for(i=1;i=2;i+) for(j=1;j=2*i-1;j-) printf(*);printf(n);实验六 一维数组【目的与要求】 1掌握一维数组的定义、赋值和输入输出的方法;2掌握字符数组的使用;3掌握与数组有关的算法(例如排序算法)。【上机内容】【一般示例】【例1】在键盘上输入N个整数,试编制程序使该数组中的数按照从大到小的次序排列。分析:C中数组长度必须是确定大小,即指定N的值。排序的方法有多种,我们取出其中两种作为参考。方法一:起泡排序从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍的(N-1)次比较后,最大的数已放在最后,第二遍只需考虑(N-1)个数,以此类推直到第(N-1)遍比较后就可以完成排序。源程序如下:#include#define N 10main()int aN,i,j,temp;printf(please input %d numbersn,N);for(i=0;iN;i+)scanf(%d,&ai);for(i=0;iN-1;i+)for(j=0;jaj+1) temp=aj;aj=aj+1;aj+1=temp;printf(the array after sort:n);for(i=0;iN;i+)printf(%5d,ai);方法二:选择排序首先找出值最小的数,然后把这个数与第一个数交换,这样值最小的数就放到了第一个位置;然后,在从剩下的数中找值最小的,把它和第二个数互换,使得第二小的数放在第二个位置上。以此类推,直到所有的值从小到大的顺序排列为止。#include#define N 10main()int aN,i,j,r,temp;printf(please input %d numbersn,N);for(i=0;iN;i+)scanf(%d,&ai);for(i=0;iN-1;i+) r=i;for(j=i+1;jN;j+)if(ajar)r=j;if(r!=i)temp=ar;ar=ai;ai=temp;printf(the array after sort:n);for(i=0;iN;i+)printf(%5d,ai);printf(n);【例2】输入一串字符,计算其中空格的个数。#include main( )char c30;int i,sum=0;gets(c);for(i=0;istrlen(c);i+)if(ci= )sum=sum+1;printf(空格数为:%d n,sum);【例3】一个已排好序(降序)的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。#include main( )int i,x,a5=9,5,3,2;printf(input x:);scanf(%d,&x);for(i=3;i=0;i-)/for循环的功能是把数顺序后移一个位置if(aix)/后移的条件, ai+1=ai;else break;ai+1=x;for(i=0;i5;i+)printf(%d ,ai);【作业】1 已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。如:1 2 4 6 7 9 输入 5 插入到数组中后:1 2 4 5 6 7 9 #include main( )int i,x,a7=1, 2, 4, 6 , 7, 9;printf(input x:);scanf(%d,&x);for(i=5;i=0;i-)/for循环的功能是把数顺序后移一个位置if(aix)/后移的条件, ai+1=ai;else break;ai+1=x;for(i=0;i7;i+)printf(%d ,ai);2 将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。#include main( )int i,j,t,a5=8,6,5,4,1;for(i=0,j=4;ij;i+,j-)/ j=4表示数组中最后一个元素的下标 t=ai; ai=aj;/当i=0,j=4时 第一个数与最后一个数对调, aj=t;/当i=1,j=3时请同学自己分析一下for(i=0;i5;i+)printf(%d ,ai);3 有15个数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。折半查找法:设数组长度为n,则将输入的数m与an/2比较,若mn/2,则将an/2到an的数继续折半进行查找。#includemain()int a10=12,32,45,62,71,76,80,85,90,95;int num,bott,top,mid;printf(input a number:n);scanf(%d,&num);bott=0;top=9;while(bott=top)mid=(bott+top)/2;if(num=amid)printf(%d is the %d numbern,num,mid+1);break;else if(numtop) printf(Non); 4 编一程序,将两个字符串连接起来,不要用strcat函数。#includemain() char a100=Hello ,b50=world!; int i,j;for(i=0;ai!=0;i+); /这个for循环是没有循环体语句的, /大家想想为什么没有。这个for循环的作用是找字符串的结束标志for(j=0;bj!=0;j+,i+)ai=bj;/i在字符串的结束标志位置,这个for循环的作用是把b中的字符复制到a中去。ai=0;/新字符串需要一个结束标志printf(nstring a: %sn,a); 实验七 函数【目的与要求

温馨提示

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

评论

0/150

提交评论