第4章程序控制结构
例4.1输入任意两个整数,求它们的和及平均值。要求平均值取两位小数输出。
#include
void main()
{
int num1,num2;
float sum,aver;
printf("Please input two integers: \n");
scanf("%d,%d",&num1,&num2);
sum=(float)num1+num2; /*求累计和*/
aver=sum/2.0; /*求平均值*/
printf("sum=%.0f,aver=%.2f\n",sum,aver);
}
例4.2给定一个三位正整数,分别输出它的个位数、十位数和百位数。
#include
void main()
{
int m,m0,m1,m2;
printf("Input a number(100~999): ");
scanf("%d",&m);
m0=m%10;
m1=(m/10)%10;
m2=m/100;
printf("The three digits are");
printf("%d,%d,%d \n",m0,m1,m2);
}
例4.3取一个16位的二进制数a的7、6、5、4四个位,如图4-2中加阴影的部分。
图4-2 整数a的二进制位
158********
#include
void main()
{
unsigned a,b,c,d;
scanf("%x",&a); /*以十六进制形式输入整数a*/
b=a>>4;
c=~(~0<<4);
d=b&c;
printf("%x\n%x\n",a,d); /*以十六进制形式输出a 和结果d*/
}
例4.4 求方程ax 2+bx+c=0的根。a 、b 、c 由键盘输入,a ≠0且b2-4ac ≥0。
#include
#include
void main()
{ float a,b,c,d,x1,x2; printf("Input a,b,c: ");
scanf("%f,%f,%f",&a,&b,&c); /*输入方程的三个系数的值*/
d=b*b-4*a*c; /*求判别式的值赋给d*/
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%.4f\nx2=%.4f\n",x1,x2);
}
例4.5 从键盘输入一个字母,以小写字母形式输出该字母。
#include
void main()
{
char c;
printf("Input a letter: ");
c=getchar();
if (c>='A' && c<='Z')
c=c+32; /*将大写字母转换成相应的小写字母*/
printf("%c\n",c);
}
例4.6 从键盘输入两个整数,按升序输出这两个数。
算法一程序代码如下:
#include
void main( )
{
int a,b,t;
scanf("%d,%d",&a,&b);
if( a>b)
{ t=a; a=b; b=t; } /*a 、b 交换值*/
printf("%d,%d\n",a,b); }
ac b b 42-±-
算法二程序代码如下:
#include
void main( )
{
int a,b,t;
scanf("%d,%d",&a,&b);
if (a<=b)
printf("%d,%d\n",a,b);
if (a>b)
printf("%d,%d\n",b,a);
}
算法三程序代码如下:
#include
void main( )
{
int a,b,t;
scanf("%d,%d",&a,&b);
if (a<=b)
printf("%d,%d\n",a,b);
else
printf("%d,%d\n",b,a);
}
例4.7输入百分制成绩,要求输出相应的五级制成绩。百分制成绩与五级制成绩之间的转换标准为:90分以上为“A ”,80-89分为“B ”,70-79分为“C ”,60-69分为“D ”,60分以下为“E ”。
#include
void main ( )
{
int score;
printf("\nPlease input the score(0-100):");
scanf("%d",&score);
if (score>=90)
printf("A\n");
else if (score>=80)
printf("B\n");
else if (score>=70)
printf("C\n");
else if (score>=60)
printf("D\n");
else
printf("E\n");
}
例4.8 分段函数定义如下:
?????>≤≤<==)
50()500()0(0)(2x x x x
x x f y
根据所输入的x的值,求函数值。
#include
void main ( )
{
float x,y;
scanf("%f",&x);
if(x<0)
y=0;
else if(x<=50)
y=x;
else
y=x*x;
printf("x=%f,y=%f\n",x,y);
}
例4.9 输入五级制成绩,要求输出相应的百分制成绩段。
#include
void main( )
{
char grade;
grade =getchar( ); /*输入五级制成绩存于grade */
grade =( grade >='a' && grade <='z')? grade -32: grade;
/*若grade为小写字母,转换为大写字母,其它不变*/ switch(grade)
{
case 'A':
printf("90~100\n"); break;
case 'B':
printf("80~89\n"); break;
case 'C':
printf("70~79\n"); break;
case 'D':
printf("60~69\n"); break;
case 'E':
printf("<60\n"); break;
default :
printf("error\n");
}
}
例4.10 输入百分制成绩,要求输出相应的五级制成绩。(用switch语句实现)#include
void main ( )
{
int score;
printf("\nPlease input the score(0-100):");
scanf("%d",&score);
switch (score/10)
{
case 10: case 9:
printf("A\n");break;
case 8:
printf("B\n");break;
case 7:
printf("C\n");break;
case 6:
printf("D\n");break;
default:
printf("E\n");
}
}
例4.11 switch语句嵌套举例。
#include
void main()
{
int x,y,a=0,b=0;
scanf("x=%d,y=%d", &x, &y) ;
switch (x )
{
case 1:
switch (y )
{
case 0:
a++;
case 1:
b++;
default:
a++; b++;
}
break;
case 2 :
a+=2; b+=2; break;
default :
a+=3; b+=3;
}
printf("a=%d,b=%d\n",a ,b) ;
}
例4.12 计算器程序。用户输入运算数和四则运算符,输出运算结果。当输入运算符不是“+”、“-”、“*”或“/”时提示出错,当输入除数为0时也提示出错。
#include
#include
void main()
{
float a,b;
char c;
printf("input expression: \n");
scanf("%f%c%f",&a,&c,&b);
switch(c)
{
case '+':
printf("=%f\n",a+b);break;
case '-':
printf("=%f\n",a-b);break;
case '*':
printf("=%f\n",a*b);break;
case '/':
if( b==0 )
printf("Division by zero!\n");
else
printf("=%f\n",a/b);
break;
default:
printf("Operator error!\n");
}
}
例4.13 输入一个字符,判别该字符是数字、英文大写字母、小写字母还是其它字符。#include
void main()
{
char c;
printf("input a character: ");
c=getchar();
if (c>='0'&&c<='9')
printf("This is a digit.\n");
else if (c>='A'&&c<='Z')
printf("This is a capital letter.\n");
else if (c>='a'&&c<='z')
printf("This is a small letter.\n");
else
printf("This is an other character.\n");
}
例4.14 输入三角形三边长,求三角形面积。
#include
#include
void main()
{
float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
if ( a+b>c && a+c>b && b+c>a )
{
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("area=%7.2f\n",area);
}
else
printf("Not a triangle.\n");
}
例4.15 输入a、b、c三个整数,输出最大数和最小数。
#include
void main()
{
int a,b,c,max,min;
printf("input three numbers: ");
scanf("%d,%d,%d",&a,&b,&c);
max = a>b?a:b;
min = a<=b?a:b;
if (c>max)
max=c;
else if (c min=c; printf("max=%d\nmin=%d",max,min); } 例4.16 输入某年某月某日,判断这一天是这一年的第几天,需考虑闰年的情形。注:符合以下条件之一是闰年:①能被4整除,但不能被100整除;②能被400整除。 #include void main ( ) { int day,month,year,sum=0; printf("\nplease input year,month,day\n"); scanf("%d,%d,%d",&year,&month,&day); /*计算某月以前月份的总天数*/ if (month>1) sum+=31; /*加上1月份31天*/ if (month>2) if ((year%4==0&&year%100!=0)|| year%400==0) /*判断是否闰年*/ sum+=29; /*加上闰年2月份29天*/ else sum+=28; /*加上非闰年2月份28天*/ if (month>3) sum+=31; /*加上3月份31天*/ if (month>4) sum+=30; /*加上4月份30天*/ if (month>5) sum+=31; /*加上5月份31天*/ if (month>6) sum+=30; /*加上6月份30天*/ if (month>7) sum+=31; /*加上7月份31天*/ if (month>8) sum+=31; /*加上8月份31天*/ if (month>9) sum+=30; /*加上9月份30天*/ if (month>10) sum+=31; /*加上10月份31天*/ if (month>11) sum+=30; /*加上11月份30天*/ /*再加上某天的天数*/ sum+=day; printf("It is the %dth day.",sum); } 也可以用1个switch语句计算某月以前月份的总天数,程序代码如下:#include void main ( ) { int day,month,year,sum=0; printf("Please input year,month,day\n"); scanf("%d,%d,%d",&year,&month,&day); /*计算某月以前月份的总天数*/ switch(month) { case 12: sum+=30; /*加上11月份30天*/ case 11: sum+=31; /*加上10月份31天*/ case 10: sum+=30; /*加上9月份30天*/ case 9: sum+=31; /*加上8月份31天*/ case 8: sum+=31; /*加上7月份31天*/ case 7: sum+=30; /*加上6月份30天*/ sum+=31; /*加上5月份31天*/ case 5: sum+=30; /*加上4月份30天*/ case 4: sum+=31; /*加上3月份31天*/ case 3: if((year%4==0&&year%100!=0)|| year%400==0) /*判断是否闰年*/ sum+=29; /*加上闰年2月份29天*/ else sum+=28; /*加上非闰年2月份28天*/ case 2: sum+=31; /*加上1月份31天*/ } /*再加上某天的天数*/ sum+=day; printf("It is the %dth day.",sum); } 例4.17 求方程ax2+bx+c=0的完全解。 #include #include void main() { float a,b,c,d,x1,x2,p,q; printf("Input a,b,c: "); scanf("%f,%f,%f",&a,&b,&c); if (a==0) if (b==0) if (c==0) prin tf(”Impossible.\n”); else printf(”Trivial.\n”); else printf("A root: x=%.4f\n",-c/b); else { d =b*b-4*a*c; if (d>=0) { x1 =(-b+sqrt(d))/(2*a); x2 =(-b-sqrt(d))/(2*a); printf("Two real roots: "); printf("x1=%.4f, x2=%.4f\n",x1,x2); } { p =-b/(2*a); q =sqrt(-d)/(2*a); printf("Two complex roots:\n"); printf("x1=%.4f+%.4fi\n",p,q); printf("x2=%.4f-%.4fi\n",p,q); } } } 例4.18 用while 语句求1+2+3+ (100) #include void main() { int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("1+2+3+…+100=%d \n",sum); } 例4.19 根据公式2 222 n 1312116+??+++=π计算圆周率π的值。 #include #include void main() { int i=1,n; double pi; printf("Input an integer:\n"); scanf("%d",&n); while(i<=n) { pi+=1.0/(i*i); i++; } pi=sqrt(pi*6); printf("pi=%lf\n",pi); } 例4.20 输入一个数,计算这个数的阶乘,即n!=1*2*3*…*n 。 #include { int i,n; long p; printf("Input an integer:\n"); scanf("%d",&n); i=1;p=1; while (i<=n) { p*=i; i++; } printf ("n!=%ld\n",p); } 例4.21 猴子吃桃问题:猴子摘下了一堆桃子,第一天吃总数的一半多一个,第二天吃剩下的一半多一个,以后每天都吃前一天剩下的一半多一个,到第十天想再吃时剩一个,求第一天共有多少个桃子? #include void main( ) { int k,x1,x2; k=1; x2=1; while(k<=9) { x1=(x2+1)*2; x2=x1; k++; } printf("Total number=%d\n",x1); } 例4.22 利用格里高公式: 7 1513114-+-=π求π,直到最后一项的值小于10-6。 #include #include void main() { int s; float n,t,pi; pi=0; t=1; /*序列的第一项*/ n=1.0; /*分母从1开始*/ s=1; do { pi=pi+t; n=n+2; /*分母每循环一次增加2*/ s=-s; /*单项的正负号交替变化*/ t=s/n; /*下一项的值*/ } while(fabs(t)>1e-6); pi=pi*4; printf("pi=%10.6f\n",pi); } 例4.23 将例4.18用for循环实现。 #include void main() { int i,sum=0; for(i=1;i<=100;i++)sum=sum+i; printf("1+2+3+…+100=%d\n",sum); } 例4.24 将例4.20用for循环实现。 #include void main() { int i,n; long p=1; printf("input an integer:\n"); scanf("%d",&n); for(i=1;i<=n;i++)p*=i; printf ("n!=%ld\n",p); } 例4.25 求1!+2!+…+10!的值。 #include void main() { int i,n=10; long s,t; for(i=1,t=1,s=0;i<=n;i++) { t*=i; /*t为上一个数i-1的阶乘值,再乘以i,即i!=(i-1)!*i*/ s+=t; /*累加i!*/ } printf ("s=%ld\n",s); } 例4.26 统计从键盘输入一行字符的个数,以回车结束。 #include void main() { int n; char c; printf("Input a string: \n"); for(n=0;(c=getchar())!='\n';n++); printf("%d",n); } 例4.27编程输出“斐波那契数列”的前20项。 “斐波那契数列”是意大利中世纪数学家列昂纳多·斐波那契以兔子繁殖为例子而引入的,故又称为“兔子数列”。 #include void main() { int i,x1=1,x2=1; for(i=1;i<=10;i++) /*每次生成并输出两项,所以循环10次*/ { printf("%10d %10d ",x1,x2); if(i%2==0)printf("\n"); /*当i为偶数时换行,即每四个数换行*/ x1=x1+x2; x2=x2+x1; } } 程序运行结果为: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 如果输出项数更大,则要注意数据溢出问题,x1、x2要使用长整型。 例4.28将数字512表示成两个数的和,这两个数分别为15和13的倍数。 #include void main() { int i; for(i=1;;i++) if(!((512-i*15)%13))break; printf("%d+%d=512\n",i*15,512-i*15); } 例4.29输出100~200之间所有能够被7或9整除的数。 #include void main() { int i,n=0; for(i=100;i<=200;i++) { if((i%7!=0)&&(i%9!=0))continue; printf("%5d ",i); n++; if(n%5==0) printf("\n"); /*当n被5整除时换行,即一行输出5个数*/ } } 例4.30 在屏幕上输出如下图形: *************** ************* *********** ********* ******* ***** *** * #include void main() { int i,j,k; for(i=8;i>=1;i--) /*总共要输出8行星号*/ { for(j=1;j<=8-i;j++) printf(" "); /*控制每行星号前面显示的空格*/ for(k=1;k<=2*i-1;k++) printf("*"); /*控制每行星号的个数*/ printf("\n"); /*控制输出每行星号后换行*/ } } 例4.31 改写例4.25求1!+2!+…+10!的程序,用嵌套的循环结构来实现。#include void main() { int i,n=10,j; long s=0,t; for(i=1;i<=n;i++) { for(t=1,j=1;j<=i;j++) t*=j; /*每次循环都重新计算i!*/ s+=t; /*累加i!*/ } printf ("s=%ld\n",s); } 例4.32 三位自方幂数又称水仙花数,用穷举法求出所有水仙花数。 #include void main() { int i,j,k,m1,m2; printf("narcissus numbers are: "); for(i=1;i<=9;i++) for(j=0;j<=9;j++) for(k=0;k<=9;k++) { m1=i*100+j*10+k; /*m1为三个数字分别为i,j,k的三位数*/ m2=i*i*i+j*j*j+k*k*k; /*m2为三个数字的立方和*/ if(m1==m2)printf("%4d",m1); /*输出满足水仙花条件的数*/ } printf("\n"); } 例4.33 编写一个程序,输入1~32767之间的整数,把这个整数显示为一系列数字,每组数字都是用两个空格分开。例如,整数1234应该显示为:1 2 3 4。 #include void main() { int i,num,counter,temp; counter=1; printf("Enter an integer: \n"); scanf("%d",&num); temp=num; while(temp/10) /*计算位数*/ { temp/=10; counter++; } while(counter) { temp=1; for(i=1;i<=counter-1;i++) temp*=10; printf("%3d",num/temp); num%=temp; counter--; } printf("\n"); } 例4.34 用二分法求非线性方程f(x)=x 3+1.1x 2+0.9x-1.4=0的根。 #include void main() { float x,x1,x2,y1,y2,y; do{ printf("Input x1,x2: \n"); scanf("%f,%f",&x1,&x2); y1=((x1+1.1)*x1+0.9)*x1-1.4; y2=((x2+1.1)*x2+0.9)*x2-1.4; }while(y1*y2>=0); do{ x=(x1+x2)/2; y=((x+1.1)*x+0.9)*x-1.4; y1=((x1+1.1)*x1+0.9)*x1-1.4; if(y*y1>0)x1=x; else x2=x; }while(fabs(y)>=1e-6); printf("A root of equation is : %8.2f\n",x); } 例4.35 编程计算多项式)! 12n (x )1(!7x 5!x !3x 1x 1 2n 1n 753--++-+--- !的值。 #include void main() { float sum,term,x; int n,k,sign; printf("Input n,x: \n"); scanf("%d,%f",&n,&x); sum=x; term=x; sign=1; for(k=2;k<=n;k++) { term*=x*x/(2*k-2)/(2*k-1); sign=-sign; sum+=sign*term; } printf("sum=%f\n",sum); } 例4.36 输入一个数,判断这个数是否为素数。 #include #include void main() { int m,i,k; printf("Enter an integer:\n"); scanf("%d",&m); k=m/2; for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k) printf("%d is a prime number\n",m); else printf("%d is not a prime number\n",m); } 例4.37 用辗转相除法求两个数的最大公约数和最小公倍数。#include void main() { int a,b,m,n,temp,c,d; printf("Please enter 2 integers n,m:\n"); scanf("%d,%d",&m,&n); d=m*n; while(temp) { a=m>n?m:n; b=m<=n?m:n; temp=a%b; m=temp; n=b; } printf("greatest common divisor is: %d\n",b); c=d/b; printf("lowest common multiple is: %d\n",c); } 例4.38 输入十个数,求出最大数、最小数和奇数、偶数个数。#include void main() { int i,max,min,oldn=0,even=0,x; for(i=1;i<=10;i++) { printf("Please input integer %d:",i); scanf("%d",&x); if(i==1){max=x;min=x;} if(x%2==0)evenn+=1; if(x%2!=0)oldn+=1; if(x>max)max=x; if(x } printf("max=%d,mix=%d\n",max,min); printf("There are %d even numbers.\n",evenn); printf("There are %d old numbers.\n",oldn); } 例4.39 用梯形法求定积分: 5.10dx)x(f,其中:f(x)=x2+4.8。#include void main() { int i,n; float a=0,b=1.5,h,x,area=0,s=0; printf("Please input n="); scanf("%d",&n); h=(b-a)/n; area=h*((a*a+4.8)+(b*b+4.8))/2; for(i=1;i { x=a+i*h; s+=x*x+4.8; } area+=s*h; printf("area=%f\n",area); } 1 2 #ifnfdgdfdef __CHEDGDFGCLID_A_ 3 #dedfgdffine __CHEGDFGCLID_A_ 4 5 /************************************************************************/ 6 /* 定义 */ 7 /************************************************************************/ 8 #defgdfgdfine FLADGDFGSH_SEDGDFGION 9 10 #defidgdne EDFGDFNS_ ADDGDFDESS_TEST #defidgdfne EDGDFGNS_ ADDEDGDGSS_TEST_3 11 12 13 #defdgdfine NDGDFGEED _CHECK 6 14 15 typdfgdfedef enum { 16 17 CA_ONEISDGDFGEMPTY, 18 CA_TWOISEDGDFGMPTY, 19 CA_TWOISFFDGDFGULL 20 }chedgdfckusdfdfm; 21 22 typedsfsdfef ssfsdftruct 23 { 24 TX_U8 desfdfsKey[9]; 25 TX_U8 desfsdfdsresult[9]; 26 TX_U64 crc64; 27 }DedgdfgsDatsfsdfdsa_f; 28 /************************************************************************/ 29 30 /* 函数声明 */ 31 /************************************************************************/ 32 TX_ ChesfsfckValid(checkenum checkcase); 33 TX_ ResfsdfadFlash(void); 34 TX_ ReadRanFromPanel(void); 35 TX_ ResfsdfadSerial(void); 36 TX_ ResfsdfadIPanel(void); 一.填空题 1.类型码为()的中断所对应的中断向量存放在0000H:0058H开始的4个连续单元中,若这4个单元的内容分别为(),则相应的中断服务程序入口地址为5060H:7080H。 2.CPU在指令的最后一个时钟周期检测INTR引脚,若测得INTR为()且IF为(),则CPU在结束当前指令后响应中断请求。 3.从CPU的NMI引脚产生的中断叫做(),它的响应不受()的影响。 4.中断类型码为15H的中断,其服务程序的入口地址一定存放在()四个连续的单元中,若这四个单元的的内容为:66H、50H、88H、30H,则其服务程序的入口地址为()。5.中断控制器8259A中的中断屏蔽寄存器IMR的作用是()。 6.CPU响应可屏蔽中断的条件是()、()和()。 7.在8086/8088微机系统中,INT20H指令中断向量存放在()中。 8.CPU在响应中断时,首先是保护(),然后将中断服务程序入口地址送入()。9.在8086/8088微机中,实现CPU关中断的指令是(),实现开中断的指令是()。10.如果CPU同时接收到中断请求和总线请求,则CPU应先响应()。 11.当用8259A管理INTR中断时,要发出EOI命令结束中断是操作()命令字。12.执行INTn指令时,其中断类型号由()提供,响应INTR时,中断类型号由()提供,响应NMI时,中断类型号由()提供,执行BOUND指令时,中断类型号由( )提供。 13.INTR、NMI均属于外中断,其中INTR被称为()中断,NMI被称为()中断。 14.80486在实模式下,当某中断源的中断类型码为70H时,中断服务程序的偏移地址和段基址将分别填入()单元和()单元。 15.CUP复位时,由于()被清零,使从INTR输入的可屏蔽中断不被响应。 16.2片8259A级联可管理()个可屏蔽中断。 17.INTR输入是()有效。 18.级连系统中,从8259A中的INT引脚应与主8259A的()连接。 19.()时,使用8259A的CS2~CS0引脚。 20.用二片8259A级连后,CPU的可屏蔽方式硬中断可扩充到()级。 课前体验 Private Sub Form_Click() For i=1To10 For j=1To i Print"*"; Next j Print Next i End Sub 【例3-1】 Private Sub Form_Click() c1$=Chr$(13)+Chr$(10) msg1$="请输入您的名字:" msg2$="输入后按回车键" msg3$="或单击“确定”按钮" msg$=msg1$+c1$+msg2$+c1$+msg3$ name$=InputBox(msg$,"InputBox函数示例","张三") Print name$ End Sub 【例3-2】 Private Sub Form_Click() Msg1$=”Are you Continue to?” msg2$=”Operation Dialog Box” r=MsgBox(msg1$,34,msg2$) Print r End Sub 【例3-3】编写程序,用MsgBox函数判断是否继续执行。 Private Sub Form_Click() msg$="请确认此数据是否正确" Title$="数据检查对话框" x=MsgBox(msg$,19,Title$) If x=6Then Print x*x ElseIf x=7Then Print"请重新输入" End If End Sub 【例3-5】 Private Sub Form_Click() Print:Print FontName="隶书" FontSize=16 Print"姓名";Tab(8);"年龄";Tab(16);"职务"; Print Tab(24);"单位";Tab(32);"籍贯" Print Print"吴大明";Tab(8);25;Tab(16);"职员";Tab(24);"人事科"; Tab(32);"北京" End Sub 【例3-6】 Private Sub Form_Click() X=InputBox("请输入成绩","学生成绩录入","00") Print x End Sub 【例3-7】 Private Sub Form_Click() Dim x As Single,y As Single x=InputBox(“请输入x的值”) If x>0Then y=1ElseIf x=0Then y=0Else y=-1 Print“x=”;x,”y=”;y End Sub 【例3-8】 Private Sub Form_Click() Dim msg,UserInput msg="请输入一个字母或0~9之间的数字." UserInput=InputBox(msg)‘输入一个字母或数字If Not IsNumeric(UserInput)Then‘判断是否是数字 If Len(UserInput)=1Then‘不是数字时,判断输入的字符串长度是否为1 Select Case Asc(UserInput)‘判断输入字母的ASCII 码值 Case60To90'在60-90之间为大写字母 msg="你输入的是一个大写字母'" msg=msg&Chr(Asc(UserInput))&"'。" Case97To122'小写字母 1.硬币模拟试验 源代码: clear; clc; head_count=0; p1_hist= [0]; p2_hist= [0]; n = 1000; p1 = 0.3; p2=0.03; head = figure(1); rand('seed',sum(100*clock)); fori = 1:n tmp = rand(1); if(tmp<= p1) head_count = head_count + 1; end p1_hist (i) = head_count /i; end figure(head); subplot(2,1,1); plot(p1_hist); grid on; hold on; xlabel('重复试验次数'); ylabel('正面向上的比率'); title('p=0.3试验次数N与正面向上比率的函数图'); head_count=0; fori = 1:n tmp = rand(1); if(tmp<= p2) head_count = head_count + 1; end p2_hist (i) = head_count /i; end figure(head); subplot(2,1,2); plot(p2_hist); grid on; hold on; xlabel('重复试验次数'); ylabel('正面向上的比率'); title('p=0.03试验次数N与正面向上比率的函数图'); 实验结果: 2.不同次数的随机试验均值方差比较 源代码: clear ; clc; close; rand('seed',sum(100*clock)); Titles = ['n=5时' 'n=20时' 'n=25时' 'n=50时' 'n=100时']; Titlestr = cellstr(Titles); X_n_bar=[0]; %the samples of the X_n_bar X_n=[0]; %the samples of X_n N=[5,10,25,50,100]; j=1; num_X_n = 100; num_X_n_bar = 100; h_X_n_bar = figure(1); 软件著作权成功维权十 大案例之一 公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI- 2015软件着作权成功维权十大案例之一 临危受命,严密证据链让被告无处可逃 导读:一场历时一年多的“图像预处理”软件着作权之争终于在2015年09月17日下午谢幕。在本案一审审理中,在极为不利的情况下,长昊律师事务所临危受命、不负重望,最终喜得佳绩。我所律师以当事人的合法利益最大化为目标,在案件亲办过程中,克服重重困难,终于让被告受到了法律的制裁。本所回顾此案办理历程并就案件核心予以展述,一起共勉。 软件被盗,果断维权 2012年7月20日,张XX、陈XX将其共同享有的《XXX软件》(以下简称涉案侵权软件)转让给XH公司,并签订了《计算机软件着作权转让协议》。2012年12月1日,国家版权局出具证书号为软着登字第XX 号的《计算机软件着作权登记证书》,证书记载:着作权人为XH公司,开发完成日期为2009年9月9日,权利取得方式为受让,权利范围为全部权利。 被告人李XX注册成立深圳市HCRZ科技有限公司(以下简称HCRZ公司),在宝安区西乡黄田草围第一工业区租赁厂地生产摄像头,并未经原告XH公司授权在其生产的摄像头上安装XH公司所有的涉案侵权软件。 2014年05月30日10时,XH公司代表张XX向公安机关举报被告人李XX所有的HCRZ公司生产的摄像头软件侵犯其公司研发的软件着作权,2014年8月13日,公安机关在位于深圳市宝安区西乡黄田草围第一工业区HCRZ公司查获各类型摄像头5000多个,其中安装了涉案侵权软件的的HD-500T摄像头477个,查获电脑、烧录器等工具,并将被告人 第五章函数 1.定义一个求两个整数和的函数 int sum(x,y) int x,y; { int z; z=x+y; return(z); } 2.编写函数求两个数的最大值 #include float r1,r2,s; printstar(); scanf("%f,%f",&r1,&r2); s=area(r1,r2); printf("s=%.2f\n",s); printstar(); } 4.实参求值顺序的例子 #include 【实例1-1】 using System; using System、Collections、Generic; using System、Text; namespace _ { class Program { static void Main(string[] args) { System、Console、Wriine("恭喜您,学会了C#编程!"); System、Console、ReadLine(); } } } 【实例1-2】 private void Form1_Load(object sender, EventArgs e) { this、Text="这就是一窗口!"; Label lbShow = new Label(); lbShow、Location = new Point(40,50); lbShow、AutoSize = true; lbShow、Text = "恭喜您学会编程了!"; this、Controls、Add(lbShow); int[] x, y; x = new int[5] { 1,2,3,4,5}; y = new int[5]; y = x; foreach (int a in y) { lbShow、Text += a、ToString(); } this、Controls、Add(lbShow); } 【实例2-1】 using System; using System、Windows、Forms; namespace TestEnum { public partial class TestEnum : Form { //Visual Studio 、Net自动生成得构造函数,后文示例将全部省略 public TestEnum() { Initializeponent(); } enum MyEnum { a = 101, b, c, d = 201, e, f }; //声明枚举型 private void TestEnum_Load(object sender, EventArgs e) { MyEnum x = MyEnum、f; //使用枚举型 MyEnum y = (MyEnum)202; string result ="枚举数x得值为"; result += (int)x; //将x转换为整数 result += "\n枚举数y代表枚举元素" + y; lblShow、Text = result; } } 软件著作权-源代码范本 注意事项:常见的源代码包含:C语言,VB,C++,JAVA,.NET等。 提交的代码必须是源代码的开头载入程序,第30页必须断开,第60页是软 件的程序结尾,代码中不得出现与申请表内容不符合的日期,著作权人,软件名 字等,不能出现开源代码,不能出现任何版权纠纷。 格式要求:一、源代码应提交前、后各连续30页,不足60页的,应当全部提交。 、源代码页眉应标注软件的名称和版本号,应当与申请表中名称完全一致,页 眉右上应标注页码,源代码每页不少于50行。 范例如下: #i nclude #in elude 第6章 MATLAB 数值计算 例6.1 求矩阵A 的每行及每列的最大和最小元素,并求整个矩阵的最大和最小元素。 1356 78256323578255631 01-???? -? ?=???? -??A A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]; max(A,[],2) %求每行最大元素 min(A,[],2) %求每行最小元素 max(A) %求每列最大元素 min(A) %求每列最小元素 max(max(A)) %求整个矩阵的最大元素。也可使用命令:max(A(:)) min(min(A)) %求整个矩阵的最小元素。也可使用命令:min(A(:)) 例6.2 求矩阵A 的每行元素的乘积和全部元素的乘积。 A=[1,2,3,4;5,6,7,8;9,10,11,12]; S=prod(A,2) prod(S) %求A 的全部元素的乘积。也可以使用命令prod(A(:)) 例6.3 求向量X =(1!,2!,3!,…,10!)。 X=cumprod(1:10) 例6.4 对二维矩阵x ,从不同维方向求出其标准方差。 x=[4,5,6;1,4,8] %产生一个二维矩阵x y1=std(x,0,1) y2=std(x,1,1) y3=std(x,0,2) y4=std(x,1,2) 例6.5 生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。 X=randn(10000,5); M=mean(X) D=std(X) R=corrcoef(X) 例6.6 对下列矩阵做各种排序。 185412613713-?? ??=?? ??-?? A A=[1,-8,5;4,12,6;13,7,-13]; sort(A) %对A 的每列按升序排序 -sort(-A,2) %对A 的每行按降序排序 [X,I]=sort(A) %对A 按列排序,并将每个元素所在行号送矩阵I 例6.7 给出概率积分 2 (d x x f x x -? e 的数据表如表6.1所示,用不同的插值方法计算f (0.472)。 x=0.46:0.01:0.49; %给出x ,f(x) f=[0.4846555,0.4937542,0.5027498,0.5116683]; format long interp1(x,f,0.472) %用默认方法,即线性插值方法计算f(x) interp1(x,f,0.472,'nearest') %用最近点插值方法计算f(x) interp1(x,f,0.472,'spline') %用3次样条插值方法计算f(x) interp1(x,f,0.472,'cubic') %用3次多项式插值方法计算f(x) format short 例6.8 某检测参数f 随时间t 的采样结果如表6.2,用数据插值法计算t =2,7,12,17,22,17,32,37,42,47,52,57时的f 值。 T=0:5:65; X=2:5:57; HTML语言源代码实例1.第一个HTML示例 3.强制不换行标签软件著作权源代码例子
第8章 微机原理习题库
VISUAL BASIC实例源代码
matlab源代码实例
软件著作权成功维权十大案例之一
c语言程序设计-向艳-书上例题源代码教学提纲
c实例源代码
软件著作权-源代码范本
第06章_MATLAB数值计算_例题源程序汇总
HTML语言源代码实例.
电教中心
授课教师李平
案例一:“脸谱”引发著作权纠纷 中国艺术研究院赔偿4万 案情介绍: 《中国戏曲脸谱》一书使用了京剧脸谱绘画大师汪鑫福所绘的177幅京剧脸谱,汪鑫福的外孙季成将中国艺术研究院、九州出版社、北京世纪高教书店诉至法院。 汪鑫福自上世纪20年代起至90年代去世时陆 续创作了大量京剧脸谱,相当部分都收藏在艺术研究院陈列室中。上世纪50年代时,汪鑫福曾在艺术研究院前身戏曲改进局工作。2000年1月,经北京森淼圆文化传播有限公司组织联系,由艺术研究院提供图片及文字,九州出版社提供书号出版了中国戏曲脸谱》一书,该书中使用了汪鑫福绘制并收藏在陈列室中的177幅京剧脸谱,但没有为汪鑫福署名。 季成作为汪鑫福的外孙,自其母亲去世后即为“脸谱”的继承人。季成于2010年初发现《中国戏曲脸谱》一书,并于2010年8月从北京世纪高教书店购买到该书,故起诉要求 三被告停止侵权、向其赔礼道歉、赔偿经济损失53.1万元、精神损害抚慰金1万元及合理费用3万余元等。 法院审理 诉讼中,双方争议焦点主要集中在涉案脸谱的性质上,季成表示涉案脸谱为汪鑫福个人作品,而艺术研究院坚持认为涉案脸谱完成于上世纪50年代,为著作权归属于该研究院的职务作品。法院经审理认为,双方均认可汪鑫福一生绘制了大量京剧脸谱,而涉案脸谱没有专门标识或特征体现出绘制时间,故无证据证明涉案脸谱的时间完成时间。不排除部分涉案脸谱完成时我国尚未颁布实施著作权法,但汪鑫福去世以及《中国戏曲脸谱》一书出版时,我国已于1991年6月1日起施行著作权法,那么在使用他人作品时,就应当尊重法律规定的赋予著作权人的权利,除非有合法理由排除或限制著作权人权利。 我国著作权法规定了两类职务作品,一类是著作权由作者享有,但单位有权在其业务范围内优先使用,另一类是作者享有署名权,著作权的其他权利由单位享有。艺术研究院既表示涉案脸谱属于第二类职务作品,又表示著作权应当全部归属于艺术研究院。法院根据本案证据体现出的情况,认为汪鑫福所绘制的京剧脸谱不属于艺术研究院主张的主要利用了单位的物质技术条件创作,并由单位承担责任的第二类职务作品。况且,艺术研究院曾书面承认其享有涉案脸谱的所有权,汪鑫福的家属享有著作权。涉案脸谱属于美术作品,原件所有权的转移不视为作品著作权的转移。艺术研究院的矛盾解释混淆了作品原件所有权人与著 作权人所享有权利的区别,美术作品原件所有权人在享有作品原件所有权的同时,享有该作品著作权中的展览权,但不享有该作品的其他著作权,也不得损害著作权人所享有的其他著作权。 法院判决 艺术研究院未经季成许可亦未支付报酬,将涉案脸谱收录入《中国戏曲脸谱》中,九州出版社未尽到著作权审查义务出版《中国戏曲脸谱》一书的行为侵犯了季成因继承而取得的涉案脸谱的复制权等著作财产权。北京世纪书店销售的《中国戏曲脸谱》一书有合法来源,应当承担停止销售的责任。最后,北京海淀法院判决三被告停止侵权、中国艺术研究院和九州出版社赔偿季成经济损失35400元及合理费用1万元。宣判后,双方当事人均未明确表示是
例2.1 计算表达式 i 27147cos 5-++? 的值,并将结果赋给变量x ,然 后显示出结果。 x=(5+cos(47*pi/180))/(1+sqrt(7)-2*i) %计算表达式的值 例2.2 利用M 文件建立MYMAT 矩阵。 (1)启动有关编辑程序或MATLAB 文本编辑器(见第4章),并输 入待建矩阵: MYMAT=[101,102,103,104,105,106,107,108,109 ; 201,202,203,204,205,206,207,208,209; 301,302,303,304,305,306,307,308,309]; (2)把输入的内容存盘(设文件名为mymatrix.m)。 (3)在MATLAB 命令窗口中输入mymatrix ,即运行该M 文件,就会自动建立一个名为MYMAT 的矩阵,可供以后使用。 例2.3 建立5阶方阵A ,判断A 的元素是否能被3整除。 A =[24,35,13,22,63;23,39,47,80,80; ... 90,41,80,29,10;45,57,85,62,21;37,19,3 1,88,76] P=rem(A,3)==0 %判断A 的元素是否可以被3整 除 例2.4 在[0,3π]区间,求y=sin(x)的值。要求: (1)消去负半波,即(π,2π)区间内的函数值置0。
2 (2) (3π,32π)和(37π,38π)区间内取值均为sin 3 π。 方法1: x=0:pi/100:3*pi; y=sin(x); y1=(x =10 & A<=20) ans = 3 6 7 例2.6 建立一个字符串向量,然后对该向量做如下处理: **汽车商城管理系统源程序 using System; using System.Collections.Generic; using System.Text; namespace Qing.Model { /// #region Model private int _article_id; private string _goods_no = string.Empty; private string _title = string.Empty; private string _spec_text = string.Empty; private string _img_url = string.Empty; private decimal _sell_price = 0M; private decimal _user_price = 0M; private int _quantity = 1; private int _stock_quantity = 0; /// Java 2实用教程(第三版) 清华大学出版社 (编著耿祥义张跃平) 例子源代码 建议使用文档结构图 (选择Word菜单→视图→文档结构图) 第一章Java 语言入门例子1 public class Hello { public static void main (String args[ ]) { System.out.println("你好,很高兴学习Java"); } } 例子2 public class People { int height; String ear; void speak(String s) { System.out.println(s); } } class A { public static void main(String args[]) { People zhubajie; zhubajie=new People(); zhubajie.height=170; zhubajie.ear="两只大耳朵"; System.out.println("身高:"+zhubajie.height); System.out.println(zhubajie.ear); zhubajie.speak("师傅,咱们别去西天了,改去月宫吧"); } } 例子3 import java.applet.*; import java.awt.*; public class Boy extends Applet { public void paint(Graphics g) { g.setColor(Color.red); g.drawString("我一边喝着咖啡,一边学Java呢",5,30); g.setColor(Color.blue); 第十章输入输出系统习题 一、单项选择题: 1、“总线忙”信号是由__ __建立的。 A.获得总线控制权的设备B.发出“总线请求”的设备 C.总线控制器D.CPU 2、在不同速度的设备之间传送数据__ __。 A.必须采用同步控制方式B.必须采用异步控制方式 C.可以选用同步方式,也可选用异步方式D.必须采用应答方式 3、挂接在总线上的多个部件___ _。 A.只能分时向总线发送数据,并只能分时从总线接收数据 B.只能分时向总线发送数据,但可同时从总线接收数据 C.可同时向总线发送数据,并同时从总线接收数据 D.可同时向总线发送数据,但只能分时从总线接收数据 4、总线从设备是____。 A.掌握总线控制权的设备 B.申请作为从设备的设备 C.被主设备访问的设备D.总线裁决部件 5、假设某系统总线在一个总线周期中传输4个字节信息,一个总线周期占用2个时钟周期,总线时钟频率为10MHz,则总线带宽是__ __。 A.10 MB/s B.20 MB/s C.40 MB/s D.80 MB/s 6、波特率表示传输线路上____。 A.信号的传输速率B.有效数据的传输速率 C.校验信号的传输速率D.干扰信号的传输速率 7、中断系统中的断点是指____。 A.子程序入口地址B.中断服务子程序入口地址 C.中断服务程序入口地址表D.中断返回地址 8、显示器的主要参数之一是分辨率,其含义是____。 A.显示屏幕的水平和垂直扫描频率 B.显示屏幕上光栅的列数和行数 C.可显示不同颜色的总线 D.同一个画面允许显示不同颜色的最大数目 9、下列选项中,能引起外部中断的事件是____。 A.键盘输入B.除数为0 C.浮点运算下溢D.访存缺页 10.CPU响应中断时,最先完成的两个步骤是_ __和保护现场信息。 A.开中断 B.恢复现场 C.关中断 D.不可屏蔽中断 11、在独立编址方式下,存储单元和I/O设备是靠来区分的。 A.不同的地址代码B.不同的地址总线 C.不同的指令和不同的控制信号D.上述都不同 12、计算机系统的输入/输出接口通常是__ __。 A.CPU与存储器之间的交界面B.存储器与打印机之间的交界面 C.主机与外围设备之间的交界面D.CPU与系统总线之间的交界面 13.根据连线的数量,总线可分为串行总线和_____ ___总线 例3.1分别建立3×3、3×2和与矩阵A同样大小的零矩阵。 (1) 建立一个3×3零矩阵。 zeros(3) ans = 0 0 0 0 0 0 0 0 0 (2) 建立一个3×2零矩阵。 zeros(3,2) ans = 0 0 0 0 0 0 (3) 设A为2×3矩阵,则可以用zeros(size(A))建立一个与矩阵A同样大小零矩阵。 A=[1 2 3;4 5 6]; %产生一个2×3阶矩阵A zeros(size(A)) %产生一个与矩阵A同样大小的零矩阵 ans = 0 0 0 0 0 0 例3.2建立随机矩阵: (1) 在区间[20,50]内均匀分布的5阶随机矩阵。 (2) 均值为0.6、方差为0.1的5阶正态分布随机矩阵。 x=20+(50-20)*rand(5) y=0.6+sqrt(0.1)*randn(5) 例3.3将101~125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。 M=100+magic(5) 例3.4求4阶希尔伯特矩阵及其逆矩阵。 命令如下: format rat %以有理形式输出 H=hilb(4) H=invhilb(4) format short %恢复默认输出格式 例3.5求(x+y)5的展开式。 pascal(6) 例3.6先建立5×5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。 A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;... 11,18,25,2,19]; D=diag(1:5); D*A %用D左乘A,对A的每行乘以一个指定常数 例3.7 求方阵A的逆矩阵,且验证A与A-1是互逆的。 Main.c(代码处:在不少于每页50行的情况下,提供整个软件代码的开头30页和结尾30页) #include 软件著作权申请源程序
java2实用教程(第3版例子代码)
第十章 输入输出系统习题
第3章例题源程序
软著源代码范例XJ