版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
各章练习题答案C语言概述简答题答:C语言单词分为保存字、标记符、字面常量、运算符和分隔符5类。答:首字符必须是英文字母或下划线;其余位置上的字符必须是英文字母、十进制数字符号或下划线。答:它们的首字符不同,此外各自尚有具体的格式规定。其中,数值字面常量以数字、正负号或小数点(如.01表达0.01)开头,字符字面常量必须用单引号括起来,字符串字面常量必须用双引号括起来,标记符首字符必须是英文字母或下划线。答:分类如下。数值常量3个:25-8+3.42字符常量3个:'4''D''+'字符串7个:"x1""-28""y=m+1""a12.c""else""+""intx;"标记符7个:x2ncountmainHlistxyMaxA_1保存字3个:intvoidif运算符1个:+分隔符0个:非法数据1个:3ab以上共计25个。答:C语句除空语句外,按照语句功能,可分为以下8类:类型定义语句、变量定义语句、函数原型语句、表达式语句、复合语句、选择语句、循环语句和跳转语句。在以上8类语句中,前3类属于说明性语句,后5类属于执行性语句。答:其格式为:#include<头文献>或#include“头文献"。对于每条预解决包含命令,在预解决阶段将把该命令置换为所指定“头文献”中的所有内容,换句话说,是用该“头文献”保存的所有内容代替该预解决包含命令行。对于上述给出的两种包含命令格式,系统解决时的查找头文献的途径有所不同。对于第一种格式(即尖括号格式),将从C语言系统层次目录中查找头文献,若查找不到则给犯错误信息;对于第二种格式(即双引号格式),假如头文献名没有给出磁盘号和途径名,则一方面从当前工作目录(即包含该命令的程序文献所属的目录)中查找头文献,若查找不到,再接着从C语言系统层次目录中查找头文献,若还是查找不到则给犯错误信息。在第二种格式中,假如头文献名带有磁盘号和途径名,则只在该指定途径中查找头文献,若查找不到则给犯错误信息。(关于第二种格式中头文献名带有磁盘号和途径名的情况,教材的叙述是错误的)答:第一步需要上机建立相应的工作区和项目并建立、输入和编辑该程序中的相应文献,通常一方面建立主文献;第二步对每个程序文献进行编译生成各自的目的代码文献,通常主文献被一方面编译并生成目的文献;第三步使主目的文献与同一程序中的其他目的代码文献以及有关C语言系统库函数文献相连接,生成一个可执行文献;第四步运营最后生成的可执行文献。选择题1.B 2.C 3.A 4.D 5.A 6.B 7.Dﻩ8.C上机实验题程序代码:#include<stdio.h>voidmain(){ﻩintx,y; x=5;y=6;ﻩprintf("x+y=%d,",x+y);ﻩprintf("x*y=%d\n",x*y);}运营结果:x+y=11,x*y=30程序代码:#include<stdio.h>intcube(int);voidmain(){ printf("cube(3)=%d\n",cube(3)); printf("cube(5)=%d\n",cube(5)); printf("cube(8)=%d\n",cube(8));}intcube(intx){returnx*x*x;}运营结果:cube(3)=27cube(5)=125cube(8)=512程序代码:A.主程序文献代码:#include<stdio.h>#include"abc.cpp"voidmain(){ doublea,b,c; doubleaverageValue; a=2;b=3;c=4;ﻩaverageValue=AVE(a,b,c); printf("averageValue:%lf\n",averageValue);ﻩaverageValue=AVE(a+1,b+2,c+5);ﻩprintf("averageValue:%Lf\n",averageValue);}B.abc.cpp文献代码:(新建时选择“File|New|C++SourceFile”。注意去掉“Addtoproject…:”前面的勾,以后新建其他程序文献或头文献时还要勾上)doubleAVE(doublex,doubley,doublez){ﻩreturn(x+y+z)/3;}运营结果:averageValue:3.000000averageValue:5.666667程序代码:A.主程序文献代码:#include<stdio.h>#include"example.h"voidmain(){ inta,b,c; printf("请输入任意三个整数:"); scanf("%d%d%d",&a,&b,&c); printf("求和:%d\n",Sum(a,b,c));ﻩprintf("乘积:%d\n",Product(a,b,c));}B.example.h头文献代码:(新建时选择“File|New|C/C++HeaderFile”。注意勾上“Addtoproject…:”前面的勾)intSum(int,int,int);intProduct(int,int,int);C.另一个程序文献的代码:(新建时选择“File|New|C++SourceFile”。注意勾上“Addtoproject…:”前面的勾)intSum(inta,intb,intc){ﻩreturna+b+c;}intProduct(inta,intb,intc){ returna*b*c;}运营结果随输入不同而不同,请自行记录
基本数据类型与表达式2.1选择题1.Dﻩ2.Aﻩ3.B 4.Bﻩ5.D 6.C 7.Cﻩ8.A 9.C 10.D11.B 12.C 13.A2.2把下列数学算式或不等式表达成C表达式1.2.0*x*(1+x*x/3.0)2.(1+exp(x))/(1-exp(x))3.(-b+sqrt(b*b-4.0*a*c))/2/a4.1/(3.0*x*log(2.0*x+k))5.pow(sin(x+3.14159/4),3)/(3+pow(cos(x-3.14159/4),3))6.pow(1+exp(x+1),n)/77.0<=x&&x<=208.(a*x-b*y)!=c9.(4*x+7*y-2)==3*a*b10.(3.0*x+2)!=0&&fabs((2.0*x*x+1)/(3.0*x+2))<=5/*(3.0*x+2)先判断避免去0*/11.age>=55||pay>=82012.!strcmp(place,"江苏")&&!strcmp(sex,"女")/*strcmp函数详见教材第127页*/13.('a'<=ch&&ch<='z')||('A'<=ch&&ch<='Z')14.s[2]=='0'&&(s[1]=='x'||s[1]=='X')/*s[1]、s[2]为数组元素,详见第4章*/2.3求出下列逻辑表达式的相反式1.!x2.x!=03.x<104.p==NULL||x==465.x<=0||x>=106.ch!='d'&&ch!='D'7.!p||p->data==x/*p->data是对结构成员的间接访问,详见教材第193页7.3*/8.i>=n&&a[i]%3!=0/*a[i]为数组元素,详见第4章*/2.4根据下列题目规定编写出相应程序1.(题目中仅规定两边之和大于等于第三边是不对的。两边之和等于第三边只能连成直线(根据公式计算面积也为0),不能组成三角形。边长也不应为负数。故应规定两边之和大于第三边,且任一边长大于0。但是目前没有学习第3章的if语句,程序自身无法控制在碰到不能构成三角形的情况时如何解决,需要用户输入时自行掌握。)#include<stdio.h>#include<math.h>voidmain(){ﻩdoublea,b,c,s;ﻩprintf("请输入三角形三条边长:"); scanf("%lf%lf%lf",&a,&b,&c); s=(a+b+c)/2; printf("该三角形面积为:%lf\n",sqrt(s*(s-a)*(s-b)*(s-c)));}2.(每年都是上一年的110%,即1.1倍,5年后则将是1.1的5次方。其实只有5次方,为什么一定要用pow(1.1,5)呢^_^?1.1*1.1*1.1*1.1*1.1效率多高!但是要注意人数是没有零头的,所以要ceil()一下。之所以用ceil()而不是floor()是为了保证完毕任务,一个都不能少,呵呵。本题这样算出来的是4832人。但是更严格的做法就是要每年都ceil()一下,否则中间某个年份招生人数就有零头了,本题这样算出来的是4836人。只是那样的话就成了:ceil(ceil(ceil(ceil(ceil(3000*1.1)*1.1)*1.1)*1.1)*1.1)晕吧,哈哈。要想不晕,得学好第3章的循环语句。)#include<stdio.h>#include<math.h>voidmain(){ printf("5年后计划招生%lf人。\n",ceil(3000*pow(1.1,5)));}3.(算术平均值:求和之后除以n,几何平均值:乘积的n次方根(即1.0/n次方)。为了防止数值过大溢出(超过整数类型的范围),所以对第一个数就使用了强制类型转换为double。此外本题计算乘积的4次方根,规定输入的四个整数假如全都不为0,则应有0、2或4个为正,否则乘积为负,无实数4次方根。)#include<stdio.h>#include<math.h>voidmain(){ﻩinta,b,c,d;ﻩprintf("请输入4个整数:"); scanf("%d%d%d%d",&a,&b,&c,&d);ﻩprintf("算术平均值:%lf,几何平均值:%lf。\n",ﻩﻩ((double)a+b+c+d)/4, ﻩpow((double)a*b*c*d,1.0/4));}4.(唯一规定:a和b不能是相反数,即a不等于-b。拜托,拜托!)#include<stdio.h>#include<math.h>voidmain(){ﻩdoublea,b; printf("请输入a和b的值:"); scanf("%lf%lf",&a,&b); printf("x=%lf,y=%lf\n",ﻩ 2*a*sin(a)/3/(a+b),ﻩ 2*b*cos(b)/3/(a+b));}上机实验题1.#include<stdio.h>#include<stdlib.h>#include<time.h>constintN=10;voidmain(){ﻩinti,x,y,z,c=0; srand(time(0)); for(i=1;i<=N;i++){ﻩﻩx=rand()%90+10;//[0+10,89+10]ﻩ y=rand()%90+10;//[0+10,89+10]ﻩ printf("%d+%d=",x,y);ﻩ scanf("%d",&z); if(x+y==z)c++;//本题回答对的ﻩ} printf("最后得分:%d\n",c*10);}2.(与教材不同,使用了'\t'。这是制表符,相称于按Tab键排版。由于使用了'\t',所以%10.2lf也省略为%.2lf,即不限定宽度,只限定小数位数为2位。注意教材上第一个printf语句中,"cos"误为"con"了。请尝试将while改为for、do~while。)#include<stdio.h>#include<math.h>constdoubleRAD=3.14159/180;voidmain(){ﻩinti=0;ﻩprintf("\ti\tsin\tcos\n"); while(i<=90){ printf("\t%d\t%.2lf\t%.2lf\n",i,sin(i*RAD),cos(i*RAD));ﻩ i+=5;ﻩ}}3.(正整数范围大约21亿多,故输入的数以9位或以下(小于10亿)为宜,牢记牢记!)#include<stdio.h>voidmain(){ﻩintnum,rem; printf("输入一个整数:"); scanf("%d",&num);ﻩdo{ﻩ rem=num%10;//得到个位的值ﻩ /*去掉个位,这样下次的个位就是现在的十位。ﻩﻩ每次如此,即可逐次得到从个位到最高位的各位*/ ﻩnum/=10; //输出现在的个位。由于从个位开始逐位输出,所以顺序反过来了 printf("%d",rem);ﻩﻩ/*循环必须用do~while,这样当num为0时也会循环一次,输出一个0。 开始不为0时,当去掉最高位后num自然也就是0了,结束循环*/ﻩ}while(num>0);ﻩﻩprintf("\n");}4.(呵呵,for语句与教材的不同。其中表达式1可以省略,这不奇怪;每次循环ch++和d1++都执行一次,所以表达式2只需要判断ch<='F',这也不奇怪。两条printf合成一句,大多数同学也会。但是ch++和d1++怎么和printf合并成表达式3?因素在于由于是后缀++,所以给printf()的值事实上都是d1和ch,值给了printf()之后才增长1,所以++事实上仍然是在printf()输出之后做的。)#include<stdio.h>voidmain(){ charch='A',d1='a';ﻩfor(;ﻩ ch<='F'; ﻩprintf("%c:%d,%c:%d\n",ch++,ch,d1++,d1));}5.(比教材多了一点换行,程序排版好看点。注意有整数除法,所以y不能为0,并且输入除法答案的时候要舍去小数部分啊!)#include<stdio.h>voidmain(){ intx,y,z,c=0; printf("输入两个整数:"); scanf("%d%d",&x,&y); printf("%d+%d=",x,y);scanf("%d",&z);if(x+y==z)c++; printf("%d-%d=",x,y);scanf("%d",&z);if(x-y==z)c++; printf("%d*%d=",x,y);scanf("%d",&z);if(x*y==z)c++; printf("%d/%d=",x,y);scanf("%d",&z);if(x/y==z)c++; printf("%d%%%d=",x,y);scanf("%d",&z);if(x%y==z)c++; printf("\n共5道题,答对%d道题\n",c);}ﻬ流程控制语句3.1选择题1.A 2.Bﻩ3.Cﻩ4.D 5*.Cﻩ6.Bﻩ7.Cﻩ8.B 9.Aﻩ10.D(问题一:第5小题。一般而言,循环体每次执行完之后都会执行<表达式3>,然后再计算<表达式2>,判断是否中止循环,即使在循环体中碰到continue也不会跳过<表达式3>的执行。但是,假如在循环体中执行break则会立即终止循环,也就是说<表达式3>会被跳过,在这种情况下,循环体就被多执行了一次。)3.2写出下列程序运营结果并上机验证1.(第一个if改用条件表达式,注意最后一个printf之前的一行,每执行一个赋值语句,相关变量的值就被改变了,变量的新值参与下一个赋值语句中的运算,所以执行了a+=b;b+=a;之后,b和a的值不等。)#include<stdio.h>voidmain(){ﻩinta=2,b=5,c;ﻩc=(a+b>10)?(a*b):(3*a+2*b);ﻩif(c>=20)printf("%d",c*c); elseif(a>b)printf("%d",3*(a+b)); elseprintf("%d",4*c-5); printf("\n"); a+=b;b+=a;c+=a+b; printf("a=%d,b=%d,c=%d\n",a,b,c);}2.(注意三处:x+=2、switch(x-1)、除了case10之后有break,别的没有break。)#include<stdio.h>voidmain(){ intx; for(x=5;x<12;x+=2){//x:57911ﻩﻩswitch(x-1){ ﻩcase4:printf("%d\n",x);//x:5ﻩ case7:printf("%d\n",2*x+1);//x:5ﻩ case10:printf("%d\n",3*x-1);break;//x:511 default:printf("default\n");//x:79ﻩ }ﻩ}}3.(规定输入的数在第96页)#include<stdio.h>voidmain(){ﻩints0,s1,s2,x; s0=s1=s2=0; printf("从键盘输入一组整数(以-1结束):\n");ﻩscanf("%d",&x);ﻩwhile(x!=-1){//-1结束 ﻩswitch(x%3){ﻩﻩcase0:s0+=x;break;//能被3整除的数之和ﻩﻩcase1:s1+=x;break;//除以3余1的数之和 ﻩcase2:s2+=x;break;//除以3余2的数之和ﻩ } scanf("%d",&x);ﻩ}ﻩprintf("s0=%d,s1=%d,s2=%d\n",s0,s1,s2);}4.(学会数数,呵呵。)#include<stdio.h>voidmain(){ intc1=0,c2=0,c3=0; inti,j,k;ﻩfor(i=0;i<5;i++){ for(j=i;j<5;j++)c1++;//循环5+4+3+2+1=15次ﻩ for(k=5;k>=i;k--)c2++;//循环6+5+4+3+2=20次 c3++;//5次ﻩ} printf("%d%d%d\n",c1,c2,c3);}5.#include<stdio.h>constintB=2;voidmain(){ﻩinti=0,p=1,s=1;ﻩwhile(s<100){//s>=100循环才结束ﻩﻩi++;p*=B;s+=p;ﻩﻩ//循环次数ﻩﻩi pﻩsﻩﻩ//1 ﻩﻩ1ﻩ2ﻩ3 ﻩ//2ﻩﻩﻩﻩ2ﻩ4ﻩ7ﻩﻩ//3ﻩ ﻩﻩ3 8ﻩ15 ﻩ//4 ﻩ 4 16ﻩ31ﻩﻩ//5 ﻩ ﻩ5 32 63 ﻩ//6ﻩﻩ ﻩ6 64 127ﻩ} printf("i=%d\n",i); printf("s=%d\n",s);}6.(对正整数10~16分解质因数。)#include<stdio.h>voidmain(){ inti; for(i=10;i<=16;i++){ﻩ intj=2,k=i;//j从最小的质数2开始ﻩﻩprintf("%d:",i);ﻩ do{ﻩ /*在下面的循环中,假如k能被j整除,则j必为k的质因数。由于j是从最小的质数2开始逐个增长的,只要可以整除k的j都会完全被while循环分解(k/=j),所以当j增长到合数j'时,j'的各个质因数(均小于j')都已经被分解完毕,故而此时的k已经不能被j'整除了。j必为k的质因数。合数就是可以被1和自身之外的数整除的数,即:j'=p1*p2*p3*…*pn,其中pi为质数,且pi<j',i=1,2,3,…,n,n>1。*/ﻩﻩﻩwhile(k%j==0){printf("%d",j);k/=j;}ﻩﻩ j++;ﻩ }while(k>=j);ﻩﻩprintf("\n"); }}7.(不要光靠数数啊,呵呵。)#include<stdio.h>constintT=6;voidmain(){ inti,j,k=0; for(i=1;i<=T;i+=2)//i:135ﻩﻩfor(j=2;j<=T;j++)//j:23456 if(i+j==T)printf("+");//(i,j):(1,5)(3,3)ﻩﻩ elseif(i*j==T)printf("*");//(i,j):(1,6)(3,2) ﻩ elsek++;//共循环3*5=15次,上面两种情况4次,这里11次 printf("\nk=%d\n",k);}8.(对照第6小题。这里的while循环和第6小题的while很像吧?不错,这里的i和第6小题的j类似,是用来寻找质因数的。只是由于while的条件表达式不同,寻找的是x和y两者的公共质因数i。p将所有的公共质因数i乘起来,得到的是两者的最大公约数。最小公倍数本应当是两数乘积除以最大公约数,但是由于在while循环中x和y已经各自除以所有的公共质因数,也就是说x和y各自都已经除以一次最大公约数了,总共除了两次,所以最后反而要乘回来一次。因此printf中的附加参数是p*x*y。)#include<stdio.h>voidmain(){ﻩintx,y;ﻩinti=2,p=1; printf("请输入两个正整数x和y:"); scanf("%d%d",&x,&y);ﻩdo{ﻩﻩwhile(x%i==0&&y%i==0){ﻩﻩﻩp*=i;ﻩ x/=i; ﻩﻩy/=i; }ﻩ i++;ﻩ}while(x>=i&&y>=i); printf("x和y的最小公倍数为%d\n",p*x*y);}3.3指出下列程序功能并上机验证1.(程序功能:计算数学公式,其中n从键盘输入,规定n>=2。本程序用到了函数定义的知识。)#include<stdio.h>doublef1(intn){//函数f1:规定一个整型参数,计算结果(返回值)为实数 inti;ﻩdoublesign=1,s=1; for(i=2;i<=n;i++){//从2开始累加至n ﻩs+=sign/(i*i);//sign含义见下。s每次加上(-1)i/i2 ﻩsign*=-1;//sign每次都乘以-1,初值为1=(-1)2,故sign=(-1)iﻩ}ﻩreturns;//返回计算结果s}voidmain(){ﻩinta; printf("输入一个大于等于2的整数:");ﻩdoscanf("%d",&a);while(a<=1);//输入的数a不大于等于2则要重新输入 printf("%lf\n",f1(a));//调用f1(a)计算,并将计算结果输出}2.(与第2章上机实验题第3小题功能相同,请参照阅读。注意48是'0'的ASCII码,由于'0'~'9'在ASCII码表中连续排列,所以数字0~9加上48就成为相应的数字字符。)#include<stdio.h>voidmain(){ﻩintx;ﻩprintf("输入一个整数:");ﻩscanf("%d",&x); while(x){ ﻩintk=x%10;ﻩ printf("%c",k+48); x=x/10;ﻩ}ﻩprintf("\n");}3.(答案很简朴!看到最后两行printf就行了,呵呵。考试考这题多好啊!函数f2求两数的最小公倍数,与本章练习题3.2的第8小题的算法同样。函数f1求两数的最大公约数,虽然f2中求最小公倍数的同时也得到了最大公约数p,但f1的效率高得多。f1采用的算法称为辗转相除法,又称欧几里得算法,具体描述见教材第82页对程序3-12的说明。辗转相除法的证明:设a整除以b的余数为r,即a=q*b+r,其中q为整数。将a和b的最大公约数写作gcd(a,b),b和r的最大公约数则为gcd(b,r)。由于r=a-q*b,而a、b均能被gcd(a,b)整除,所以r显然也能被gcd(a,b)整除。既然b和r都能被gcd(a,b)整除,则gcd(a,b)是b和r的公约数,所以gcd(a,b)不也许大于b和r的最大公约数gcd(b,r)。反过来,由于b和r均能被gcd(b,r)整除,而a=q*b+r,所以a也能被gcd(b,r)整除。既然a和b都能被gcd(b,r)整除,则gcd(b,r)是a和b的公约数,从而不也许大于a和b的最大公约数gcd(a,b)。绕了半天,我们得到gcd(a,b)<=gcd(b,r)并且gcd(b,r)<=gcd(a,b),那么就只能有:gcd(a,b)=gcd(b,r)。即,a和b的最大公约数必然也是它们的余数和它们的最大公约数。这样,可以进行辗转相除,迅速将参与运算的两个数变小,不久得到结果。)#include<stdio.h>intf1(inta,intb){ intr;ﻩwhile(b!=0){ﻩ r=a%b; a=b;b=r;ﻩ} //此时有b=0。由于循环结束前进行了a=b;b=r;的赋值,所以实际是最后一次求得的ﻩ//余数r=0,也就是最后一次循环时(执行a=b;b=r;前)有a=n*b,其中n为整数。ﻩ//这时的a和b的最大公约数自然是b,也就是执行了a=b;后的a是最大公约数。 returna;}intf2(inta,intb){ inti=2,p=1; do{ ﻩwhile(a%i==0&&b%i==0){ﻩ p*=i;a/=i;b/=i;ﻩﻩ}ﻩﻩi++;ﻩ}while(a>=i&&b>=i);ﻩreturnp*a*b;}voidmain(){ﻩinta,b; printf("输入两个正整数:"); doscanf("%d%d",&a,&b);while(a<=0||b<=0);ﻩprintf("%d和%d的最大公约数:%d\n",a,b,f1(a,b)); printf("%d和%d的最小公倍数:%d\n",a,b,f2(a,b));}4.(教材错误:ff函数中的scanf语句应在switch语句之前。程序功能:出10道20以内整数加减乘除运算题,记录用户得分。每做对一题得10分。)#include<stdio.h>#include<stdlib.h>#include<time.h>constintN=10;intff(intx,inty,charop);voidmain(){ﻩinti,a,b,c=0,d;ﻩcharop;ﻩsrand(time(0)); for(i=0;i<N;i++){ﻩ a=rand()%20+1; b=rand()%20+1;ﻩﻩd=rand()%4;ﻩ if(d==0)op='+'; elseif(d==1)op='-'; elseif(d==2)op='*'; ﻩelseop='/';ﻩﻩif(ff(a,b,op))c++; }ﻩprintf("得分:%d\n",c*10);}intff(intx,inty,charop){ﻩintz; printf("%d%c%d=",x,op,y); scanf("%d",&z);//判断对op指定的运算,用户给出的答案是否对的。返回判断结果(逻辑值)ﻩswitch(op){ﻩcase'+':returnx+y==z;//都return了,就不用break了ﻩcase'-':returnx-y==z; case'*':returnx*y==z; case'/':returnx/y==z;ﻩ//尽管本程序可以不要default,但ff也许用于别处,op也许会被指定错误的值ﻩ//检查非法参数取值,这是好习惯。但是简朴地exit在大程序中是不好的解决ﻩdefault:{printf("运算符错!\n");exit(1);} }}3.4根据下列题目规定编写程序并上机得到运营结果1.(不要用pow函数啊,同志!整数的整数次方,还是这个好。假如只求一两个高次幂,则有更高效的办法而不要象下面那样逐次乘上去。此外高次幂要小心溢出整数范围。后记:糗事一件,居然开始的时候习惯性地把p*=3写成p*=i了,最终结果就成了1。哈哈,我还纳闷,这个程序怎么会错呢?)#include<stdio.h>voidmain(){ inti,p=1,sum=0;ﻩfor(i=0;i<=10;i++){ﻩ sum+=p;ﻩﻩp*=3;ﻩ}ﻩprintf("%d\n",sum);}2.(见注释。)#include<stdio.h>voidmain(){ﻩinti,sum;ﻩfor(i=0,sum=0;sum<1000;){ﻩ i+=2; sum+=i*i; }ﻩ//循环结束时,sum已经大于等于1000,即多加了一项//所以最大的n应是前一项,即i-2ﻩprintf("%d\n",i-2);}3.(注意printf里x<=0为假时的求值表达式。对于多项式计算,反复用高项系数乘以自变量加低项系数,可以极大地减少乘法次数。即,对于多项式,可以写成:((...((an*x+an-1)*x+an-2)*x...+a2)*x+a1)*x+a0假如按本来的多项式计算,不作任何优化,则需要n+(n-1)+...+2+1=(n+1)n/2次乘法;而改造后只需要n次乘法。当n较大时两者的差异是明显的。)#include<stdio.h>#include<math.h>constdoublea=1.0;voidmain(){ﻩdoublex; printf("请输入一个实数x:"); scanf("%lf",&x); printf("y=%lf\n",ﻩﻩ(x<=0)?ﻩﻩﻩsqrt(a*a+x*x) :((3*a*a*x+4)*a*x-1) );}4.(一般教材当然认为这种题目应当用双重循环,对a、b的所有也许取值情况所有判断一下不定方程是否成立。对于复杂一点的方程也许不得不如此,但是这儿用那种办法显然笨死了!对每个a的取值,计算相应的b,然后看b是否符合条件这不就够了吗?记住由于求b用了整数除法,所以得到的b只是真正的解的整数部分。所以在判断b是否在15~36之间的同时还要检查b是不是真的是原方程的解。由于本方程很简朴,所以直接重新计算一下就行了。此外,假如用b作为循环变量,只需要从15循环到36,循环22次,比用a更快。)#include<stdio.h>#include<math.h>voidmain(){ﻩinta; for(a=6;a<=30;a++){ﻩﻩintb=(126-2*a)/5;//复合语句开头也可以定义变量ﻩﻩif(15<=b&&b<=36&&(2*a+5*b)==126)ﻩ printf("(%d,%d)",a,b); }ﻩprintf("\n");}ﻬ数组和字符串4.1选择题1.Bﻩ2.Cﻩ3.Bﻩ4.D 5.A 6.Cﻩ7.Aﻩ8.D 9.Bﻩ10.D4.2写出下列程序运营结果并上机验证1.(i1:a中奇数个数;i2:a中偶数个数。此题即形考册作业2第三大题第1小题。)#include<stdio.h>voidmain(){ﻩinta[10]={12,39,26,41,55,63,72,40,83,95}; inti,i1=0,i2=0; for(i=0;i<10;i++) ﻩ(a[i]%2)?i1++:i2++;ﻩprintf("%d%d\n",i1,i2);}2.(将a中元素逆序后输出。)#include<stdio.h>#defineN8voidmain(){ inta[N]={36,25,48,14,55,40,32,66};ﻩinti,x;ﻩfor(i=0;i<N/2;i++){//逆序ﻩ x=a[i];a[i]=a[N-1-i];a[N-1-i]=x; } for(i=0;i<N;i++)printf("%d",a[i]);//输出 printf("\n");}3.(记录数组a中所有元素有多少个小于b中各元素(且不小于b中该元素之前的各元素),并输出。此程序粗看非常无聊,实则在生活中可以找出很多实例:例如买鞋子——a是一堆人,他们的脚有大有小;b是鞋子尺码,只有几种,并且从小到大排列。鞋子当然不能买小了,应当稍大一点,但是又不能太大。那么,对于a中所有的人,b中各种尺码的鞋子应当买多少双呢?用这个程序就可以记录出来,结果是分别应当购买c[i]双尺码为b[i]的鞋子。)#include<stdio.h>#defineN10#defineM4voidmain(){ inta[N]={76,83,54,62,40,75,90,92,77,84}; intb[M]={60,76,90,101}; intc[M]={0};ﻩinti,j; for(i=0;i<N;i++){ ﻩj=0; ﻩwhile(a[i]>=b[j])j++; c[j]++;ﻩ} for(i=0;i<M;i++)printf("%d",c[i]);ﻩprintf("\n");}4.(在二维数组a中找最大元素,输出其值和下标。此题功能与形考册作业2第三大题第5小题的相同,只是a中数据不同。)#include<stdio.h>voidmain(){ inta[3][4]={{1,2,7,8},{5,6,11,12},{9,10,3,4}};ﻩintx=a[0][0];ﻩintii=0,jj=0;ﻩinti,j; for(i=0;i<3;i++) ﻩfor(j=0;j<4;j++)ﻩﻩ if(a[i][j]>x){x=a[i][j];ii=i;jj=j;}ﻩprintf("a[%d,%d]=%d\n",ii,jj,a[ii][jj]);}5.(通过比较找出最大字符串,将其存到s1中;同时找出最小字符串,将其存到s2中。第二个if前加else可提高一点效率,由于假如a[i]已经比s1大了,自然就不也许比s2小,只需要在a[i]不大于s1时才有必要和s2比较。此题功能与形考册作业2第三大题第2小题的相同,但本题采用数组,需要反复调用strcpy复制字符串,效率较低。)#include<stdio.h>#include<string.h>voidmain(){ chara[5][10]={"student","worker","soldier","peasant","cadre"};ﻩchars1[10],s2[10];ﻩinti;ﻩstrcpy(s1,a[0]);strcpy(s2,a[0]);ﻩfor(i=1;i<5;i++){ﻩﻩif(strcmp(a[i],s1)>0)strcpy(s1,a[i]); elseif(strcmp(a[i],s2)<0)strcpy(s2,a[i]);ﻩ} printf("%s%s\n",s1,s2);}4.3指出下列函数功能并上机调试和验证(本题需要一点函数的知识。数组作为函数参数声明时不需要指定第一维大小)1.(将一维整型数组a的前n个元素中大于等于60的数换到小于60的数后面保存。)voidf1(inta[],intn){ﻩinti=0,j=n-1,x; do{ while(a[i]<60)i++;//找到第一个大于等于60的数 while(a[j]>=60)j--;//找到最后一个小于60的数ﻩ //假如大于等于60的数在前面则换到后面去 ﻩif(i<j){x=a[i];a[i]=a[j];a[j]=x;i++;j--;} }while(i<j);//循环,直到大于等于60的数所有在小于60的数之后}2.(输出双精度数数组a的前n个元素中不小于平均值的元素,然后回车。此题与形考册作业3第四大题第6小题类似,但本函数并未记录和返回符合条件的元素个数,而是输出它们。)voidf2(doublea[],intn){ inti;doublesum=0;ﻩfor(i=0;i<n;i++)sum+=a[i];ﻩsum/=n;ﻩfor(i=0;i<n;i++) ﻩif(a[i]>=sum)printf("%2.0lf",a[i]); printf("\n");}3.(记录并输出一维字符数组a中逗号、分号、左右圆括号、左右方括号、左右花括号的个数并输出。函数最后一句多了个%)voidf3(chara[]){ inti,c[5]={0}; for(i=0;a[i];i++)ﻩﻩswitch(a[i]){ case',':c[0]++;break; case';':c[1]++;break; ﻩcase'(': case')':c[2]++;break;ﻩﻩcase'[': ﻩcase']':c[3]++;break; case'{':ﻩ case'}':c[4]++;break; } for(i=0;i<5;i++)printf("%d",c[i]);ﻩprintf("\n");}4.(用选择排序法按照字符串长度进行升序排序。本函数中反复调用strlen求字符串长度,要花费较多时间,可考虑用一个整型数组保存字符串长度以减少对strlen的调用。)voidf4(chara[][N],unsignedintm){ﻩunsignedinti,j,k,w;ﻩfor(i=1;i<m;i++){ ﻩcharx[N];ﻩﻩw=i-1;k=strlen(a[i-1]); ﻩfor(j=i;j<m;j++)ﻩ if(strlen(a[j])<k){k=strlen(a[j]);w=j;}ﻩﻩstrcpy(x,a[i-1]);strcpy(a[i-1],a[w]);strcpy(a[w],x);ﻩ}}4.4根据下列题目规定编写程序并上机调试和运营1.(又是斐波纳契数列!由于要逆序显示,所以要在算出最后一项后再开始显示,可以用数组先保存计算结果。当然,也可以使用第6章学到的递归函数。)#include<stdio.h>voidmain(){ intfibonacci[20]={0,1},i; for(i=2;i<sizeof(fibonacci)/sizeof(fibonacci[0]);i++)ﻩ fibonacci[i]=fibonacci[i-1]+fibonacci[i-2];ﻩfor(i=sizeof(fibonacci)/sizeof(fibonacci[0]);i--;) printf("%d",fibonacci[i]);ﻩprintf("\n");}2.(长度不超过50个字符,大小就最多为51。)#include<stdio.h>voidmain(){ﻩcharline[51];ﻩinti,count[10]={0}; printf("请输入一行字符串(不超过50个字符):\n"); gets(line);//允许空格 for(i=0;line[i];i++){ intdigit=line[i]-'0';ﻩﻩif(digit>=0&&digit<=9)//是十进制数字字符ﻩﻩﻩcount[digit]++;ﻩ} for(i=0;i<10;i++)ﻩﻩprintf("%d",count[i]); printf("\n");}3.(无语。看三次不懂?再次无语。看十次不懂?还是先看看第3章吧。)#include<stdio.h>voidmain(){ﻩinta[][4]={ {3,0,4,5},ﻩ ﻩ{6,2,1,7}, ﻩﻩﻩﻩ{4,1,5,8}};ﻩintb[][4]={ {1,4,0,3},ﻩﻩ ﻩ {2,5,1,6},ﻩﻩ ﻩﻩ{0,7,4,4},ﻩ ﻩ {9,3,6,0}}; //乘积矩阵行数等于第一个矩阵的行数,列数等于第二个矩阵的列数 intc[sizeof(a)/sizeof(a[0])][sizeof(b[0])/sizeof(b[0][0])]; inti,j,k; for(i=0;i<sizeof(a)/sizeof(a[0]);i++)ﻩ for(j=0;j<sizeof(b[0])/sizeof(b[0][0]);j++)ﻩ for(c[i][j]=0,k=0;k<sizeof(b)/sizeof(b[0]);k++) ﻩﻩﻩc[i][j]+=a[i][k]*b[k][j];ﻩfor(i=0;i<sizeof(a)/sizeof(a[0]);i++,printf("\n"))ﻩ for(j=0;j<sizeof(b[0])/sizeof(b[0][0]);j++) ﻩprintf("%10d",c[i][j]);}4.(此题题意不明:什么叫做“每个同学的总成绩和平均值”?“每个同学的总成绩”应当是指对于每个学生将其各门课程成绩累加起来的数值。可是“平均值”呢?是指每一个同学的总成绩按课程门数M平均,还是所有同学的总成绩加起来按学生人数N平均?此外此程序中scanf的第一个参数里%d前面必须有空格,后面不能有空格,否则仿佛会有问题。想念C++里的cin>>,多么方便!)#include<stdio.h>#defineN3#defineM2voidmain(){ inta[N][M]; inti,j,sum;ﻩfor(i=0;i<N;i++){ﻩ printf("请输入第%d位同学所有%d门功课的成绩:",i+1,M); ﻩfor(j=0;j<M;j++)ﻩﻩ scanf("%d",a[i]+j); } printf("\n");ﻩfor(sum=0,i=0;i<N;i++){ﻩ intsumi=0;//该生总成绩ﻩ for(j=0;j<M;j++)ﻩ ﻩsumi+=a[i][j];ﻩﻩprintf("第%d位同学%d门课程总成绩%d分,平均%5.2lf分\n",i+1,M,sumi,(double)sumi/M); ﻩsum+=sumi;//各生成绩汇总ﻩ}ﻩprintf("\n所有同学平均总成绩%5.2lf分\n",(float)sum/N);}
指针5.1选择题1.Bﻩ2.Aﻩ3.C 4.C 5.D 6.A 7.B 8.C 9.Bﻩ10.D11.Aﻩ12.Cﻩ13.Bﻩ14.D 15.B(15用到了C++中的new进行动态分派,newint表达动态分派一个int变量)5.2写出下列程序运营结果并上机验证1.(记录并输出数组a中2、3、5的倍数各有多少。注意三个if语句之间不能用else连起来,必须各自分开独立成句。由于一个数也许同时是2、3、5中一个或多个数的倍数,需要分别判断。)#include<stdio.h>voidmain(){ inta[8]={25,18,36,42,17,54,30,63}; int*p=a;ﻩintc2,c3,c5;ﻩ c2=c3=c5=0;ﻩwhile(p<a+8){ ﻩif(*p%2==0)c2++; if(*p%3==0)c3++;ﻩﻩif(*p%5==0)c5++; ﻩp++;ﻩ} printf("%d%d%d\n",c2,c3,c5);}2.(输出数组中第6~3项的值、它们的和以及平均值。)#include<stdio.h>voidmain(){ﻩinta[8]={46,38,72,55,24,63,50,37};ﻩints=0;ﻩint*p=a+2; while(p<a+6)s+=*p++; while(--p>=a+2)printf("%5d",*p); printf("\n");ﻩprintf("%5d%5.1lf\n",s,s/4.0);}3.(按照字典顺序查找最大字符串并输出。其间每当找到一个更大的字符串a[i]时,都会输出a[0]~a[i-1]中最大的字符串。)#include<stdio.h>#include<string.h>voidmain(){ﻩchar*a[5]={"computer","telephone","typewriter","television","fridge"}; char*p=a[0];ﻩinti; for(i=1;i<5;i++)ﻩﻩif(strcmp(a[i],p)==1){printf("%s",p);p=a[i];} printf("\n%s\n",p);}4.(无语。)#include<stdio.h>voidmain(){ﻩintx=20,y=40,*p;ﻩp=&x;ﻩprintf("%d",*p); *p=x+10;ﻩp=&y; printf("%d\n",*p);ﻩ*p=y+20; printf("%d%d\n",x,y);}5.(计算i2+1,i=0,1,2,...,8。并逆序输出其中不小于25的值。)#include<stdio.h>#include<stdlib.h>#defineNN8voidmain(){ﻩinti,*p; int*x=malloc(sizeof(int)); int*a=calloc(NN,sizeof(int)); *x=25; for(i=0;i<NN;i++)a[i]=i*i+1;//1251017263750 p=a+NN-1;ﻩdo{ﻩ if(*p>=*x)printf("%d",*p--); ﻩelsebreak; }while(1);ﻩprintf("\n"); free(x);ﻩfree(a);}5.3指出下列函数功能并上机调试和验证1.(随机生成和输出m个0~99的整数,计算其总和和平均值并输出。其中m由用户输入。)#include<stdio.h>#include<stdlib.h>#include<time.h>voidmain(){ﻩinti,m,*a,s=0; srand(time(0)); printf("从键盘上输入一个整型数组的长度:");ﻩscanf("%d",&m); a=calloc(m,sizeof(int)); for(i=0;i<m;i++){ ﻩa[i]=rand()%100;ﻩ s+=a[i];ﻩ printf("%d",a[i]);ﻩ}ﻩprintf("\n总和:%d;平均值:%5.2lf\n",s,s*1.0/m);}2.(又是不可思议的事情!我在已有的工程项目中,把本来的程序文献内容所有删除,然后输入下面的代码,居然报错,说宏N为重定义(macroredefinition,也就是说VC编译时认为在下面的#define之前已经在某处定义了宏N),删掉那一行居然就没警告了,通过实验,发现此时N的值为10。尽管不知道确切的因素,但是我试着选择了Build菜单下的Clean菜单项,将所有编译、链接生成的文献所有清除,然后重新编译链接,果然就没问题了,特记于此,如有类似情况不妨试一下Clean。此外,可看看下面程序中关于calloc的注释。)#include<stdio.h>#include<stdlib.h>#include<string.h>#defineN30voidmain(){ inti,m;ﻩcharx[N];ﻩchar(*a)[N]; printf("从键盘上输入待解决字符串的个数:");ﻩscanf("%d",&m); //尽管结果同样,但是从calloc参数的含义来讲,应当写成calloc(m,sizeof(a[0])) a=calloc(m*N,sizeof(char)); printf("从键盘上输入%d个字符串:\n",m); for(i=0;i<m;i++)scanf("%s",a[i]);//不支持包含空格 printf("从键盘上输入待查找的一个子串:");ﻩscanf("%s",x); for(i=0;i<m;i++) ﻩif(strstr(a[i],x)!=NULL)printf("%s\n",a[i]);}函数6.1选择题1.Bﻩ2.A 3.D 4.Cﻩ5.A 6.Bﻩ7.D一、显然第2小题选项和题干对不上。题干中的intw[][N]应改为charw[][N]二、第6小题中提到了“末尾递归”,这是递归的特例:只在函数返回前的最后一步进行递归调用。末尾递归又称“尾递归”。假如递归函数中只存在尾递归,则一般来说可以比较容易地改成循环程序,在两次循环之间修改各变量(递归函数形参)的值即可。由于递归函数效率较低,所以只要能改成循环等非递归方式实现而不会使程序变得更难懂的,都应当避免使用递归方式实现。6.2写出下列程序运营结果并上机验证1.(同名覆盖。注意同名变量b。)#include<stdio.h>intc=15;voidmain(){ﻩinta=10,b=20; printf("%d%d%d\n",a,b,c); {ﻩ intb=a+15;ﻩﻩa=b/3;c=2*(a+b);ﻩﻩprintf("%d%d%d\n",a,b,c);ﻩ} printf("%d%d%d\n",a,b,c);}2.(实参与形参的关系:实虚结合、按值传递。)#include<stdio.h>intf1(intx,inty){ﻩx=x+y;y=x+y;ﻩprintf("x=%3d,y=%3d\n",x,y);ﻩreturnx+y;}voidmain(){ intx=5,y=8;ﻩintz=f1(x,y);ﻩprintf("x=%3d,y=%3d,",x,y); printf("z=%3d\n",z);}3.(指针形参(含数组形参)的用途:高效传递大量数据(如下例中函数f2的形参a)、通过指针访问甚至修改其指向的对象数据(如下例中函数f2的形参s)。)#include<stdio.h>voidf2(inta[],intn,int*s);voidmain(){ﻩinta[5]={2,7,5,4,9};ﻩintx; f2(a,5,&x); printf("%d\n",x);}voidf2(inta[],intn,int*s){ inti; *s=0;ﻩfor(i=0;i<n;i++)*s+=a[i];}4.(返回值类型为指针的指针函数。注意不能返回自动局部变量的地址,由于返回后就超过其作用域和生存期,从而使返回的地址无效。寄存器变量本就没有地址可言,自然不存在返回其地址的问题。)#include<stdio.h>#include<stdlib.h>#include<string.h>char*f3(constchar*x,constchar*y);voidmain(){ﻩchar*a="apple"; charb[10]="pear"; char*p;ﻩp=f3(a,b);ﻩprintf("%s\n",p); free(p);}char*f3(constchar*x,constchar*y){ﻩchar*p=malloc(strlen(x)+strlen(y)+2); strcpy(p,x); strcat(p,"");ﻩstrcat(p,y);ﻩreturnp;}5.(二维数组参数。)#include<stdio.h>intf4(inta[][4],intm,intn){ﻩinti,j,max=a[0][0]; for(i=0;i<m;i++)ﻩ for(j=0;j<n;j++) if(a[i][j]>max)max=a[i][j];ﻩreturnmax;}voidmain(){ﻩinta[3][4]={ﻩﻩﻩ{25,38,46,72},ﻩﻩ {35,20,50,66},ﻩﻩ {18,74,38,69}ﻩ};ﻩintx=f4(a,3,4); printf("x=%d\n",x);}6.3指出下列函数功能并上机调试和验证1.(计算并返回)intfun1(intn){ inti,p=1,s=0; for(i=1;i<=n;i++){ﻩﻩp*=i;s+=p; } returns;}2.(插入排序法升序排序。类似形考册作业3第三大题第5小题,只是此处为升序排序,那儿是降序排序。)voidfun2(int*a,intn){ﻩinti,j,x; for(i=1;i<n;i++){ ﻩx=a[i]; ﻩfor(j=i-1;j>=0;j--) if(x<a[j])a[j+1]=a[j];//将x<a[j]改为x>a[j]则为降序排序ﻩ elsebreak; a[j+1]=x;ﻩ}}3.(将字符串b的内容复制到字符指针a所指向的存储空间中并返回。)char*fun3(char*a,constchar*b){ﻩwhile(*b)*a++=*b++; *a=0; returna;}4.(本题与形考册作业3第四大题第4小题虽然写法有着微小的差别,但功能完全相同,都是把练习题3.2第8小题中求最小公倍数的算法改写为递归形式。比起非递归形式,显然难读了很多,效率也低了。调用本函数求a和b的最小公倍数时,形参k的实参应当固定给2,即应当调用:Multiple(a,b,2)。为了保证对的调用,不妨将本函数声明为static,限制其他程序员在其程序文献中调用,而在本函数的程序文献中此外定义一个全局函数供其他程序员使用。如下:intLeastCommonMultiple(inta,intb){returnMultiple(a,b,2);})intMultiple(inta,intb,intk){ if(a>=k&&b>=k){ﻩ if(a%k==0&&b%k==0)returnk*Multiple(a/k,b/k,k); ﻩelsereturnMultiple(a,b,k+1); }ﻩelsereturna*b;}5.(问题一:第一次调用时返回与x的十进制形式各位数字顺序相反的数。即,假如x为123,则函数最终返回321。以后的各次调用,最终返回结果与之前的调用有关,不能拟定。第一次调用时,x不断地在递归过程中去掉低位(Contrary(x/10)),而这被去掉的低位则加到了y的后面(y=y*10+x%10),下次递归时x的较高一位也会被再次加到y后面,也就是说较高位会排到低位的后面,从而把x的各位数字顺序反了过来。由于y为静态变量,所以第二次调用开始时,y不为0。x的新实参值各位将加在y本来的值之后,假如y或者x较大还也许由于超过无符号整型数的范围而产生溢出,因此结果值难以预计。问题二:y及返回值类型与参数类型不一致,更容易导致溢出。应统一为unsignedint。综上,应修改如下:unsignedintContrary(unsignedintx){ staticunsignedinty=0;ﻩif(x){ﻩ y=y*10+x%10; returnContrary(x/10); }else{ﻩ unsignedinttemp=y;ﻩ y=0; returntemp; }}最后,这显然又是一个末尾递归,可以改成非递归形式如下:unsignedintContrary(unsignedintx){ unsignedinty=0;ﻩwhile(x){ y=y*10+x%10;ﻩﻩx/=10; }ﻩreturny;})intContrary(unsignedintx){ﻩstaticinty=0;ﻩif(x){ﻩﻩy=y*10+x%10;ﻩ Contrary(x/10); } returny;}6.4根据下列题目规定编写程序并上机调试和运营1.intfun1(inta[],intn){ if(n==0)return0; returna[n-1]*a[n-1]+fun1(a,n-1);}2.(参见4.2第1小题及形考册作业2第三大题第1小题。)voidfun2(inta[],intn,int*c1,int*c2){ﻩfor(*c1=*c2=0;n--;)ﻩﻩ(a[n]%2)?(*c1)++:(*c2)++;//(*c1)和(*c2)括号不能省略!}3.(参见3.3第3小题函数f1。)intfun5(intm,intn){ﻩintr;ﻩwhile(n!=0){ﻩ r=m%n; ﻩm=n;n=r; }ﻩreturnm;}ﻬ结构与联合7.1选择题1.C 2.Dﻩ3.A 4.A 5.Bﻩ6.Dﻩ7.Cﻩ8.B 9.Aﻩ10.C本大题有如下问题:一、第1小题使用了C++语法:在C++中则可直接使用结构名。而在C语言中,结构名除非使用typedef定义为类型别名了,否则必须在其前面加关键字struct,形考册作业4第一大题第1小题正是考核此点。所以本题中结构定义应改为:structA{inta,b;structA*c;};二、第3小题D*前应当有struct,因素同上。此外,不知道为什么,在VC98中采用默认设立,通过实际编译的结果是联合成员b和c的地址偏移为8,也就是说在成员a之后有4个字节空闲没用。所以实际的结构大小为24。但是估计此处对的答案应当是20三、第5小题中“类型为Worker”也应改为“类型为structWorker”四、第10小题涉及链表的插入操作。p->next=f执行后,则可以看作形成了以p为表头指针的链表,其表头为p所指向的结点,之后是通过指针域链接的本来的链表。所以要将新的表头指针p赋值给f,使f指向新的表头结点。7.2写出下列程序运营结果并上机验证1.#include<stdio.h>structAAA{ﻩinta[10];ﻩintn;};structAAAx;voidmain(void){ﻩinti; intb[6]={20,35,46,18,24,52}; x.n=6; for(i=0;i<x.n;i++)x.a[i]=b[i];//将b拷贝到x.a开头ﻩx.a[x.n]=37;x.n++;//增长一个数 for(i=0;i<x.n;i++)printf("%d",x.a[i]);//输出ﻩprintf("\n");}2.#include<stdio.h>#include<stdlib.h>#include<string.h>structCCC{ char*a; intn;};voidm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年收费的生产服务项目评估分析报告
- 2024至2030年中国皮辊轴承数据监测研究报告
- 2024至2030年中国布纹板数据监测研究报告
- 2024至2030年中国圆袋形内滤式空气过滤器数据监测研究报告
- 关于艾滋病的预防
- 公羊去势手术
- 内蒙古巴彦淖尔市(2024年-2025年小学五年级语文)统编版小升初模拟(上学期)试卷及答案
- 内蒙古呼伦贝尔市(2024年-2025年小学五年级语文)人教版小升初真题(上学期)试卷及答案
- 台湾省(2024年-2025年小学五年级语文)统编版专题练习(下学期)试卷及答案
- 吉林省白山市(2024年-2025年小学五年级语文)人教版开学考试(上学期)试卷及答案
- 幽门螺杆菌健康宣教PPT
- 山西省灵丘县山西省刁泉银铜矿业有限公司银、铜矿资源开发利用、地质环境保护与土地复垦方案附件
- CQI-12涂装系统评审
- 初一数学考试重点100题(附答案解析)6
- 教学课件 国际货运代理-肖旭
- 中国图书馆分类法讲座
- 教学评一体化的教学案例 课件
- 《语言学概论》第五章 语义和语用
- 内科学教学课件:Tuberculous Meningitis (TBM)
- 导读工作总结优秀范文5篇
- 超声波UTⅠ级考试题库2023
评论
0/150
提交评论