2008--2010浙江省二级C语言考试真题__史杨杨
2008年春浙江省高校
计算机等级考试试卷(二级C)
试题1(每小题3分,共12分)
【程序说明】
输入一个整数n(n>=2),输入菲波那契序列的前n项,每行输出6个数,菲波那序列:1,1,2,3,5,8,13,……,数列的前两个数都是1,从第三项开始,每个数是前两个数之和。
运行示例:
Enter n:10
1 1
2
3 5 8
13 21 34 55
#include
main()
{int count,i,n,x1,x2,x;
printf("Enter n:");
scanf("%d",&n);
x1=x2=1;
printf("%6d%6d",x1,x2);
(1);
for(i=1;i<=n-2;i++)
{ (2);
printf("%6d",x);
count++;
if( (3))printf("\n");
x1=x2;
(4);
}
}
【供选择的答案】
(1)A、count=2 B、count=0
C、count=1
D、count=-1 答案:A
(2) A、x=x1-x2 B、x=x1+x2
C、x=x1
D、x=2 答案:B
(3) A、count/6==0 B、count%6!=0
C、count%6==0
D、count/6!=0 答案:C
(4) A、x=x1+x2 B、x2=x1
C、x=x2
D、x2=x 答案:D
试题2(每小题3分,共12分)
【程序说明】
输入2个正数m和n(1<=m 运行示例: Enter m,n:1 10 count=4,sum=17 【程序】 #include #include int prime(int m) {int i,n; if(m==1)return (5); n=sqrt(m); for(i=2;i<=n;i++) if(m%i==0)return (6); return (7); } main() {int count=0,i,m,n,sum=0; printf("Enter m,n:"); scanf("%d%d",&m,&n); for(i=m;i<=n;i++) if( (8)){ sum+=i; count++; } printf("count=%d,sum=%d\n",count,sum); } 【供选择的答案】 (5)A、1 B、m C、m==1 D、0 答案:D (6) A、m B、1 C、0 D、n 答案:C (7) A、m B、1 C、0 D、i==n 答案:B (8) A、prime(i)!=0 B、prime(i)==0 C、1=prime(i) D、!prime(i) 答案:A 试题3(每小题3分,共12分) 【程序说明】 输入一个2*3的二维数组,找出最大值以及它的行下标和列下标,并输出该结果。运行示例: Enter array(2*3):3 2 10 -9 6 -1 max=a[0][2]=10 3 2 10 -9 6 -1 #include main() {int col,row,i,j; int a[2][3]; printf("Enter array(2*3):"); for(i=0;i<2;i++) for(j=0;j<3;j++) scanf("%d", (9)); (10); for(i=0;i<2;i++) for(j=0;j<3;j++) if(a[i][j]>a[row][col]) { (11) } printf("max=a[%d][%d]=%d\n",row,col,a[row][col]); for(i=0;i<2;i++) { for(j=0;j<3;j++) printf("%4d",a[i][j]); (12) } 【供选择的答案】 (9)A、&a[i][j] B、&a[j][i] C、a[i][j] D、a[j][i] 答案:A (10) A、row=col=2; B、row=col=0; C、a[row][col]=0; D、a[row][col]=-1; 答案:B (11) A、row=j;col=i; B、a[row][col]=a[i][j]; C、row=i;col=j; D、a[row][col]=a[j][i]; 答案:C (12) A、printf(“\n”)};B、}printf(“\n”); C、; D、printf(“\n”);}答案:D 试题4(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。【程序】 #include main() {int op1,op2,res; char opertor; scanf ("%d",&op1); opertor=getchar(); while(opertor!='=') { scanf ("%d",&op2); switch(opertor) { case '+':res=op1+op2;break; case '-':res=op1-op2;break; case '*':res=op1*op2;break; case '/':res=op1/op2;break; default:res=0; } op1=res; opertor=getchar(); } printf("%d\n",res); } (13)程序运行时,输入2*3-2=,输出(13)。 A、6 B、2 C、0 D、4 答案:D (14)、程序运行时,输入15+2/3=,输出(14)。 A、16 B、15 C、6 D、5 答案:D (15)、程序运行时,输入1+2*10-10/2=,输出(15)。 A、10 B、16 C、15 D、25 答案:A 4、程序运行时,输入1+3*5/2-7=,输出(16)。 A、3 B、1 C、-2 D、-3 答案:A 试题5(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。【程序】 #include #define MAXLEN 80 main() {int k=0,number=0; char str[MAXLEN]; while((str[k]=getchar())!='#') k++; str[k]='\0'; for(k=0;str[k]!='\0';k++) if(str[k]>='0'&& str[k]<='9'||str[k]=='A'||str[k]=='B') if(str[k]>='0'&& str[k]<='9') number=number*12+str[k]-'0'; else if(str[k]=='A'||str[k]=='B') number=number*12+str[k]-'A'+10; else ;//第15行 else break; //第16行 printf("%d\n",number); } (17)、程序运行时,输入10#,输出(17)。 A、16 B、10 C、12 D、1 答案:A (18)、程序运行时,输入1a0#,输出(18)。 A、264 B、10 C、1 D、12 答案:C (19)、第16行改为“;”后,程序运行时,输入A*0#,输出(19)。 A、0 B、120 C、10 D、12 答案:B (20)、第16行改为“else break;”删除第15行后,程序运行时,输入1b0#,输出(20)。 A、10 B、12 C、276 D、1 答案:B 试题6(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。 【程序】 #include #include main() { char *s[2]={"****","****"}; while(*s[1]!='\0') {printf("%s\n",s[0]+strlen(s[1])-1); s[1]++; } } (21)、程序运行时,第1行输出(19)。 A、**** B、*** C、** D、* 答案:D (22)、程序运行时,第2行输出(19)。 A、**** B、*** C、** D、* 答案:C (23)、程序运行时,第3行输出(19)。 A、**** B、*** C、** D、* 答案:B (24)、程序运行时,第4行输出(19)。 A、**** B、*** C、** D、* 答案:A 试题7(28分) 1、定义函数fact(n)计算n的阶乘:n!=1*2*3*……*n,函数的返回值类型是double。 2、定义函数cal(m,n)计算累加和:s=m+(m+1)+(m+2) ……+n,函数的返回值类型是double。 3、定义函数main(),输入整数n,计算并输出下列算式的值。该算式中,每一项的分子是累加和,要求调用函数cal(m,n)计算累加和;每一项的分母是阶乘,要求调用函数fact(n)计算n!。y=1+(1+2)/2!+(1+2+3)/3!+……+(1+2+3+……n)/n! #include double fact(int n)//第一题 {int i; double t=1; for(i=1;i<=n;i++) t*=i; return t; } double cal(int m,int n) //第二题 {double s=0; int i; for(i=m;i<=n;i++) s+=i; return s; } main()//第三题 {int n,i; double s=0; printf("请输入一个正整数:"); while(scanf("%d",&n),n<=0); for(i=1;i<=n;i++) s+=cal(1,i)/fact(i); printf("%f",s); } 2008年秋浙江省高等学校 计算机等级考试试卷(二级C) 试题1(第小题3分,共12分) 【程序说明】 输入一批学生的成绩,遇到负数表示输入结束,要求统计并各等级成绩的学生个数。成绩等级分为三级,分别为A(90~100)、P(60~80)和F(0~59)。 运行示例: Enter scores:88 71 68 70 59 81 91 0 60 77 83 -10 A:1;P:8;F:2; [程序] #include main() { int mark,a,p,f; a=p=f=0; printf("Enter scores:"); scanf("%d",&mark); while( (1)) { if(mark>=90) a++; (2)p++; (3)f++; (4) } printf("A:%d;P:%d;F:%d;\n",a,p,f); } 【供选择的答案】 (1)A、mark>=0 B、mark>0 C、mark<=0 D、mark<0 答案:A (2)A、else if(mark>=60) B、if(mark>=60) C、else (mark>=60) D、if(mark<90)答案:A (3)A、else (mark<60) B、else C、else if(mark>0) D、else if(mark<=60)答案:B或填else if(mark>=0) (4)A、scanf("%d",mark); B、scanf("%d",&mark); C、; D、mark=getchar(); 答案:B 试题2(第小题3分,共12分) 【程序说明】 求1~999之间所有满足各位数字的立方之和等于它本身的数。例如153的秋位数字的立方和是13+53+33=153 运行示例: 1 153 370 371 407 [程序`] #include main() { int digit,j,sum,x; for(j=1;j<1000;j++){ (5) (6) do{ (7) sum=sum+digit*digit*digit; x=x/10; }while( (8)); if(j==sum)printf("%d ",sum); } } 【供选择的答案】 (5)A、sum=0; B、sum=1; C、sum=j; D、; 答案:A (6)A、x=1; B、x=j; C、; D、x=sum; 答案:B (7)A、digit=x/10; B、digit=x; C、digit=x%10; D、; 答案:C (8)A、x==0 B、j!0 C、j==0 D、x!=0 答案:D 试题3(第小题3分,共12分) 【程序说明】 输入10个整数,将它们从大到小排序后输出。 运行示例: Enter 10 integers:10 98 -9 3 6 9 100 -1 0 2 After sorted:100 98 10 9 6 3 2 0 -1 –9 [程序] #include (9) void sort( (10)) {int i,index,k,t; for(k=0;k index=k; for(i=k+1;i if(a[i]>a[index])index=i; (11) } } void swap(int *x,int *y) {int t; t=*x;*x=*y;*y=t; } main() { int i,a[10]; printf("Enter 10 integers:"); for(i=0;i<10;i++) scanf("%d",&a[i]); (12); printf("After sorted:"); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); } 【供选择的答案】 (9)A、void swap(int *x,int *y) B、; C、void swap(int *x,int *y); D、void swap(int *x, *y); 答案:C (10)A、int &a,int n B、int *a,int *n C、int *a,iny n D、int a,int *n 答案:C (11)A、swap(*a[index],*a[k]) B、swap(a[index],a[k]) C、swap(index,k) D、swap(&a[index],&a[k]) 答案:D (12)A、sort(a) B、sort{a[10]} C、sort(a[],10) D、sort(a,10) 答案:D 试题4(第小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。[程序] #include { int j,k,s1,s2; s1=s2=0; for(j=0;j<=5;j++){ s1++; for(k=1;k<=j;k++) s2++; } printf("%d %d",s1,s2); } 程序2 #include { int j,k,s1,s2; s1=0; for(j=1;j<=5;j++){ s1++; for(k=1,s2=0;k<=j;k++) s2++; } printf("%d %d",s1,s2); } 程序3 #include { int j,k,s1,s2; s1=0; for(j=1;j<=5;j++){ s1++; for(k=1;k<=j;k++,s2=0) s2++; } printf("%d %d",s1,s2); } 程序4 #include { int j,k,s1,s2; s1=s2=0; for(j=1;j<=5;j++,s1=0){ s1++; for(k=1;k<=j;k++) } printf("%d %d",s1,s2); } (13)程序1运行时。输出(13)。答案:D A、0 15 B、5 0 C、5 5 D、5 15 (14)程序2运行时。输出(14)。答案:C A、0 15 B、5 0 C、5 5 D、5 15 (15)程序3运行时。输出(15)。答案:B A、0 15 B、5 0 C、5 5 D、5 15 (16)程序4运行时。输出(16)。答案:A A、0 15 B、5 0 C、5 5 D、5 15 试题5(第小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。【程序】 程序1 #include main() { int i,m=15,y=-1; for(i=2;i<=m/2;i++) if(m%i==0)y=0; else y=1; printf("%d",y); } 程序2 #include main() { int i,m=15,y=-1; for(i=2;i<=m/2;i++) if(m%i==0){y=0;break;} printf("%d",y); } 程序3 #include main() { int i,m=15,y=-1; for(i=2;i<=m/2;i++) if(m%i==0)break; if(i>m/2)y=1; else y=0; printf("%d",y); } 程序4 #include main() { int i,m=15,y=-1; for(i=2;i<=m/2;i++) if(m%i==0){break;y=0;} printf("%d",y); } (17)程序1运行时。输出(17)。答案:A A、1 B、0 C、15 D、-1 (18)程序1运行时。输出(18)。答案:B A、1 B、0 C、15 D、-1 (19)程序1运行时。输出(19)。答案:B A、1 B、0 C、15 D、-1 (20)程序1运行时。输出(20)。答案:D A、1 B、0 C、15 D、-1 试题6(第小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。【程序】 #include main() { int k; char ch,a[10],*s[10]={"one","two","three","four"}; k=0; while((ch=getchar())!='\n'&&k<9) if(ch>'5'&&ch<'8')a[k++]=ch; a[k]='\0'; for(k=0;a[k]!='\0';k++) printf("%s ",s['9'-a[k]-1]); } (22)程序运行时,输入5678,输出(22)。答案:D A、two three B、two C、one four three D、four three two one (23)程序运行时,输入8561#,输出(23)。答案:C A、two three B、two C、one four three D、four three two one (24)程序运行时,输入7902#,输出 (24) 。答案:B A 、two three B 、two C 、one four three D 、four three two one (25)程序运行时,输入7633#,输出 (25) 。答案:B A 、two three B 、two C 、one four three D 、four three two one 试题7(28分) (1)定义函数fact(n)计算n 的阶乘:n!=1*2*……*n,函数的返回值类型是double 。 (2)定义函数cal (e )计算下列算式的值,直到最后一项的绝对值小于e ,函数的返回值类型是double 。 ??+++ =!41!21!111s (3)定义函数main()。输入正整数n ,当精度e 分别取值10-1、10-2、10-3……、10-n 时,分别计算并输出下列式的值,直到最后一项的绝对值小于精度e ,以比较不同精度下算出的结果。要求调用函数cal (e )计算下列算式的。 ??+++ =!41!21!111s 参考程序: #include double t=1; for(i=1;i<=n;i++) t=t*i; return t; } (2)double cal(double e) { double sum=0,t=1; int i=1; while(1/t>=e) { t=fact(i); sum=sum+1.0/t; i++; } return sum; } (3)main() {int n,i; while(scanf("%d",&n),n<=0); for(i=1;i<=n;i++) {printf("i=%d 1+1/2!+1/3!+……=%f \n",i,cal(pow(10,-i))); } } 2009年春浙江省高等学校 计算机等级考试试卷(二级C) 说明:(1) 请将所有试题的答案填写在答卷上。其中试题一到试题六请在答卷上各小题正确选项的对应位置处填“√”; (2) 请在答卷上填写学校名称、准考证号和姓名,并将你的准考证号的后五位填写在 答卷右下角的指定位置内; (3) 考试时间为90分钟。 试题1(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 输入1个正整数n,计算下列算式的前n项之和。 S=1-1/3+1/5-1/7+… 运行示例: Enter n:2 Sum=0.67 【程序】 #include main( ) { int denominator , flag,i, n; double item,sum; printf(”Enter n:”); scanf(”%d”,&n); denominator = 1; (1) ; sum = 0 for(i = 1; (2) ; i++){ (3) ; sum=sum +item; (4) ; Denominator= denominator+2; } printf(”Sum=%.2f\n”,sum); } 【供选择的答案】 (1) A、flag=0 B、flag=-1 C、flag=n D、flag=1 (2) A、i>=n B、i C、i>n D、i<=n (3) A、item=flag/denominator B、item=1 /denominator C、item=flag*1.0/denominator D、item=1.0/denominator (4) A、flag=-1 B、flag=0 C、flag=-flag D、flag=flag 试题2(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如6=3+3,8=3+5,…,18=7+11。将6~20之间的偶数表示成两个素数之和,打印时一行打印5组。要求定义和调用函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。 运行示例: 6=3+3,8=3+5,10=3+7,12=5+7,14=3+11 16=3+13 18=5+13 20=3+17 18=7+11 【程序】 #include #include int prime(int m) { int i, n; if(m == 1) return 0; n = sqrt(m); for(i = 2; i <= n; i++) if(m % i == 0) return 0 (5) } main() { int count, i,number; count=0; for(number=6;number<=20;number=number+2){ for(i=3;i<=number/2;i=i+2) if(__(6)_____){ printf(“%d=%d+%d”,number,i,number – i); count++; if(__(7)_____) printf(“\n”); ( (8) ) } } } 【供选择的答案】 (5) A、; B、return 1; C、return 0; D、else return 1; (6) A、prime(i)!=0 || prime(number – i)!=0 B、prime(i)!=0 && prime(number – i)!=0 C、prime(i)==0 || prime(number – i)==0 D、prime(i)==0 && prime(number – i)==0 (7) A、count % 5 ==0 B、count % 5!=0 C、(count+1)%5==0 D、(count+1)%5!=0 (8) A、break; B、else break; C、continue; D、; 试题3(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 输入一行字符,统计并输出其中数字字符、英文字母和其他字符的个数。要求定义并调用函数count(s, digit,letter,other)分类统计字符串s中数字字符、英文字母和其它字符的个数,函数形参s的类型是字符指针,形参digit,letter,other的类型是整形指针,函数类型是void。 运行示例: Enter characters:f(x,y)=5x+2y-6 Digit=3 letter=5 other=6 【程序】 #include void count (char *s, int * digit, int * letter, int * other) { _____(9)___ while(_____(10)___){ if (*s>=?0? && *s<=?9?) (*digit)++; else if ((*s>=?a? && *s<=?z?)||(*s>=?A? && *s<=?z?)) (*letter)++; else (*other)++; s++; } } main() { int i=0,digit,letter,other; char ch,str[80]; printf(“Enter characters:”); ch=getchar(); while (____(11)___){ str[i]=ch; i++; ch=getchar(); } str(i)=?\0?; ___(12)__; Printf(“digit=&d letter=%d other=%d\n”, digit,letter,other); } 【供选择的答案】 (9) A、int dight=0,letter=0,other=0; B、int *dight=0,*letter=0,*other=0; C、dight=letter=other=0; D、*dight=*letter=*other=0; (10) A、*s++ !=?\0 …B、*s++ !=?\n? C、*s!=?\0? D、 *s !=?\n? (11) A、ch !=?\0?B、ch !=?\n? C、ch ==?\0? D、ch ==?\n? (12) A、count(str,&digit,&letter,&other) B、count(&str,&digit,&letter,&other) C、count(*str, digit, letter,other) D、count(*str,*digit,*letter,*other) 试题4(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 #include main() { int flag=0,i; int a[7]={8,9,7,9,8,9,7}; for(i=0;i<7;i++) if(a[i]==7){ flag=i break; } printf(“%d\n”,flag); flag=-1 for(i=6;i>=0;i--) if(a[i]==8){ break; flag=i; } printf(“%d\n”,flag); flag=0; for(i=0;i<7;i++) if(a[i]==9){ printf(“%d”,i); } printf(“\n”); flag=0; for(i=0;i<7;i++) if(a[i]==7) flag=i; printf(“%d\n, flag”); } (13) 程序运行时,第1行输出(13) 。 A、2 B、0 C、3 D、6 (14) 程序运行时,第2行输出(14) 。 A、4 B、-1 C、0 D、5 (15) 程序运行时,第3行输出(15) 。 A、2 4 6 B、4 C、1 3 5 D、6 (16) 程序运行时,第4行输出(16) 。 A、2 4 6 B、2 C、1 3 5 D、6 试题5(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 int f1(int n) { if(n==1) return 1 ; else return f1(n-1) + n; } int f2(int n) { switch(n){ case 1: case 2:return 1; default: return f2(n-1) + f2(n-2); } } void f3(int n) { printf(“%d”,n%10); if(n/10 !=0) f3(n/10); } void f4(int n) { if (n/10 !=0) f4(n/10); printf(“%d”, n%10); } #include main() { printf(“%d\n”,f1(4)); printf(“%d\n”,f2(4)); f3(123); printf(“\n”); f4(123); printf(“\n”); } (17) 程序运行时,第1行输出(17) 。 A、10 B、24 C、6 D、1 (18) 程序运行时,第2行输出(18) 。 A、1 B、3 C、2 D、4 (19) 程序运行时,第3行输出(19) 。 A、123 B、3 C、321 D、1 (20) 程序运行时,第4行输出(20) 。 A、1 B、123 C、3 D、321 试题6(每小题3分,共12分) #include struct num{ int a,b;}; void f(struct num s[], int n) { int index, j, k; struct num temp; for(k=0;k< n-1;k++){ index=k; for(j=k+1;j if(s[j].b temp=s[index]; s[index]=s[k]; s[k]=temp; } } main() { int count, i, k, m, n, no; struct num s[100],*p; scanf(“%d%d%d”, &n, &m, &k); for(i=0;i s[i].a=i+1; s[i].b=0; } p=s; count = no =0; while(no if(p->b==0) count++; if(count==m){ no++; p->b=no; count=0; } p++; if(p==s + n) p=s; } f(s,n); printf(“%d: %d\n”, s[k-1].b, s[k-1].a); } (21) 程序运行时,输入5 4 3,输出(21) 。 A、3: 5 B、2: 3 C、1: 2 D、4: 1 (22) 程序运行时,输入5 3 4,输出(22) 。 A、3: 5 B、1: 2 C、4: 3 D、4: 2 (23) 程序运行时,输入7 5 2,输出(23) 。 A、1: 5 B、6: 1 C、2: 3 D、2: 4 (24) 程序运行时,输入4 2 4#,输出(24) 。 A、3: 3 B、4: 2 C、2: 4 D、4: 1 试题7 (28分) (1)定义函数fact(n)计算n的阶乘:n!=1*2*……*n,函数形参n的类型是int,函数类型是double。 (2)定义函数cal(x, e)计算下列算式的值,直到最后一项的值小于e,函数形参x和e的类型都是double,函数类型是double。要求调用自定义函数 fact(n)计算n的阶乘,调用库函数pow(x, n)计算x的n次幂。 S=x+x^2/2!+x^3/3!+x^4/4!+…… (3)定义函数main(),输入两个浮点数x和e,计算并输出下列算式的值,直到最到最后一项的值小于精度e。要求调用自定义函数cal(x,e)计算下列 算式的值。 S=x+x^2/2!+x^3/3!+x^4/4!+…… 计算机等级考试参考答案(二级C) 试题1~6(每小题3分) ⑴ D ⑵ D ⑶ C ⑷ C ⑸ B ⑹ B ⑺ A ⑻ A ⑼ D ⑽ C ⑾ B ⑿ A ⒀ A ⒁ B ⒂ C ⒃ D ⒄ A ⒅ B ⒆ C ⒇ B (21)A (22)D (23)C (24)D 试题7 (28分) #include #include double fact(int n) { double p=1; int i; for(i=1;i<=n;i++) p=p*i; return p; } double cal(double x,double e) { double s=0,t; int i=1; do{ t=pow(x,i)/fact(i); s=s+t; i++; }while(t>=e); return s; } void main() { double x,e,s; scanf("%lf%lf",&x,&e); s=cal(x,e); printf("s=%f\n",s); } 2009年秋浙江省高等学校 计算机等级考试试卷(二级C) 一、程序阅读与填空(24小题,每小题3分,共72分) 计 算 机 图 形 学 实验指导书 学号:1441901105 姓名:谢卉 实验一:图形的几何变换 实验学时:4学时 实验类型:验证 实验要求:必修 一、实验目的 二维图形的平移、缩放、旋转和投影变换(投影变换可在实验三中实现)等是最基本的图形变换,被广泛用于计算机图形学的各种应用程序中,本实验通过算法分析以及程序设计实验二维的图形变换,以了解变换实现的方法。如可能也可进行裁剪设计。 二、实验内容 掌握平移、缩放、旋转变换的基本原理,理解线段裁剪的算法原理,并通过程序设计实现上述变换。建议采用VC++实现OpenGL程序设计。 三、实验原理、方法和手段 1.图形的平移 在屏幕上显示一个人或其它物体(如图1所示),用交互操作方式使其在屏幕上沿水平和垂直方向移动Tx和Ty,则有 x’=x+Tx y’=y+Ty 其中:x与y为变换前图形中某一点的坐标,x’和y’为变换后图形中该点的坐标。其交互方式可先定义键值,然后操作功能键使其移动。 2.图形的缩放 在屏幕上显示一个帆船(使它生成在右下方),使其相对于屏幕坐标原点缩小s倍(即x方向和y方向均缩小s倍)。则有: x’=x*s y’=y*s 注意:有时图形缩放并不一定相对于原点,而是事先确定一个参考位置。一般情况下,参考点在图形的左下角或中心。设参考点坐标为xf、yf则有变换公式x’=x*Sx+xf*(1-Sx)=xf+(x-xf)*Sx y’=y*Sy+yf*(1-Sy)=yf+(y-yf)*Sy 式中的x与y为变换前图形中某一点的坐标,x’和y’为变换后图形中该点的坐标。当Sx>1和Sy>1时为放大倍数,Sx<1和Sy<1时为缩小倍数(但Sx和Sy 实验1 直线的绘制 实验目的 1、通过实验,进一步理解和掌握DDA和Bresenham算法; 2、掌握以上算法生成直线段的基本过程; 3、通过编程,会在TC环境下完成用DDA或中点算法实现直线段的绘制。实验环境 计算机、Turbo C或其他C语言程序设计环境 实验学时 2学时,必做实验。 实验内容 用DDA算法或Besenham算法实现斜率k在0和1之间的直线段的绘制。 实验步骤 1、算法、原理清晰,有详细的设计步骤; 2、依据算法、步骤或程序流程图,用C语言编写源程序; 3、编辑源程序并进行调试; 4、进行运行测试,并结合情况进行调整; 5、对运行结果进行保存与分析; 6、把源程序以文件的形式提交; 7、按格式书写实验报告。 实验代码:DDA: # include void DDALine(int x0,int y0,int x1,int y1,int color) { int dx,dy,epsl,k; float x,y,xIncre,yIncre; dx=x1-x0; dy=y1-y0; x=x0; y=y0; if(abs(dx)>abs(dy)) epsl=abs(dx); else epsl=abs(dy); xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl; for(k=0;k<=epsl;k++) { putpixel((int)(x+0.5),(int)(y+0.5),4); x+=xIncre; y+=yIncre; } } main(){ int gdriver ,gmode ; 绝密★考试结束前 2018年6月浙江省普通高校招生学考科目考试 历史试题 姓名:准考证号: 本试题卷分选择题和非选择题两部分,共6页,满分70分,考试时间60分钟。 考生注意: 1.答题前,请务必将自己的姓名、准考证号用黑色字迹的签字笔或钢笔分别填写在试退卷和答题纸规定的位置上。 2.答题时,请按照答题纸上“注意事项”的要求,在答题纸相应的位置上规范作答.在试题卷上的作答一律无效。 3.非选择题的答案必须使用黑色字迹的签字笔或钢笔写在答题纸上相应区域内作图时。先使用2B铅笔,确定后必须使用黑色字迹的签字笔或钢笔描黑,答案写在本试题卷上无效 选择题部分 一、选择题(本大题共25小题。每小题2分,共50分。每小题列出的四个各选项中只有一个是符合题目要求的,不选、多选、错选均不得分) 1.根据甲骨卜辞,商朝的最高统治者称玉.天上的至上神则称为帝。王每每出师征讨,必先卜帝是否授佑。这反映中国早期政治制度的特点是 A.神权与王权相结合 B.以血缘关系为纽带形成国家政治结构 C.皇权受到很大限制 D.最高执政集团未实现权力的高度集中 2.有学者说.春秋战国时期出现了一种“希望人类回归朴索和安 宁,与宇宙及他人都保持和谐,维持人类生存永恒”的新思想。 这种新思想的代表人物有 A.孔子、孟子 B.老子、庄子 C.墨子、庄子 D.荀子、韩非子 3.右图为中国古代一幅著名书法作品,其字体的特征是 A.平衡对称,整齐安定 B.工整清晰,飞酒活泼 C.笔画圆匀,富于图案美 D.奔放跃动,极富写意性 4.某学校拟组织一次以“浙江古代文明成果”为主题的图片展。 下列素材可以入选的有 ①越窑的青瓷②大邑的白瓷 ③钱山漾的绢片④马王堆的素纱禅衣 A.①③ B.②③ C.①④D,②④ 5.一个类似桌面的大轮盘,分为若干格.活字字模按韵排列在格内。排版时,两人合作,一人读稿,一人转动字盘,取出所需的字模,排入版内。印刷完毕后,将字模还原放入格内,既省时又方便。此项技术的发明者是 2003年秋浙江省高校非计算机专业学生 计算机等级考试试卷(二级C) 说明:⑴考生应将试题一至试题三的答案涂在答题卡上,将第四、五题的答案填写在答卷上,否则作无效处理; ⑵请将你的准考证号的后四位填写在答卷右下角的指定位置内; ⑶考试时间为120分钟。 试题一、计算机基础题(本题共15分) (一)单选题(每小题1分,共10分) (1)计算机网络最突出的优点是(1)。 A、运算速度快 B、精度高 C、共享硬件、软件和数据资源 D、内存容量大 (2)在微型计算机的设备中,访问速度最快的是(2)。 A、软盘 B、硬盘 C、内存储器 D、CD-ROM (3)操作系统的主要功能是(3)。 A、对计算机系统的所有资源进行控制与管理 B、实现多用户及分布式处理 C、扩充计算机的功能 D、对硬件资源进行分配、控制、调度和回收 (4)Internet与WWW的关系是(4)。 A、都是因特网,只是名称不同 B、Internet就是WWW C、Internet与WWW完全没有关系 D、WWW是Internet上的一个应用(5)在Windows 98环境下,下面关于附件中应用程序的说法,(5)是不正确的。 A、写字板可以编辑文本文件 B、写字板的缺省扩展名为.DOC C、计算器中的计算结果,可以粘贴到文档文件中 D、记事本中设置的显示字体,将保存在文本文件中,当使用Word读入该文件时, 仍具有所设置的字体 (6)在Word编辑文本时,将文档中所有的“memory”都改成“存储器”,最快捷的方法是采用(6)操作。 A、中英文转换 B、替换 C、改写 D、翻译 (7)以下几种关于消除计算机病毒的说法中,正确的是(7)。 A、专门的杀毒软件并非总是有效的 B、删除所有带毒文件能消除所有病毒 C、对感染上病毒的软盘,格式化既能消除病毒,又能使数据不受破坏 D、要一劳永逸地使计算机不感染病毒,最好的方法是装上防病毒卡 (8)实现汉字字形表示的方法,一般可分为(8)两大类。 山东建筑大学测绘地理信息学院 实验报告 (2016—2017学年第一学期) 课程:计算机图形学 专业:地理信息科学 班级:地信141 学生姓名:王俊凝 学号:20140113010 指 实验一直线生成算法设计 一、实验目的 掌握基本图形元素直线的生成算法,利用编程语言C分别实现直线和圆的绘制算法。 二、实验任务 在TurboC环境下开发出绘制直线和圆的程序。 三、实验仪器设备 计算机。 四、实验方法与步骤 1 运行TurboC编程环境。 2 编写Bresenham直线绘制算法的函数并进行测试。 3 编写中点圆绘制算法的函数并进行测试。 4 增加函数参数,实现直线颜色的设置。 提示: 1. 编程时可分别针对直线和圆的绘制算法,设计相应的函数,例如void drawline(…)和void drawcircle(…),直线的两个端点可作为drawline的参数,圆的圆心和半径可作为drawcircle的参数。 2. 使用C语言编写一个结构体类型用来表示一个点,结构体由两个成员构成,x和y。这样,在向函数传入参数时,可使用两个点类型来传参。定义方法为: typedef struct{ int x; int y; }pt2; 此处,pt2就是定义的一个新的结构体数据类型,之后就可用pt2来定义其他变量,具体用法见程序模板。 3. 在main函数中,分别调用以上函数,并传入不同的参数,实现对直线的绘制。 4. 线的颜色也可作为参数传入,参数可采用TurboC语言中的预设颜色值,具体参见TurboC图形函数。 五、注意事项 1 代码要求正确运行,直线和圆的位置应当为参数,实现可配置。 2 程序提交.c源文件,函数前和关键代码中增加注释。 程序模板 #include 浙江省二级c语言上机考试真题 介绍:浙江省二级c语言考试分为笔试和上机考试两块.取笔试和上机中分数较低的那个作为计算机二级的最终成绩,最后证书上按档次划分等级,其中60-79及格,80-89良好,90-100优秀。 笔试部分分两块,一块是24道选择题(六道程序题,每题中间有四个空,每空有四个选项供选择),浙江省的计算机笔试选择题不考概念性内容,所以大家不用费心,另一块是程序编写,手写两个完整程序,一道循环数组(结合),一道是函数或指针。 上机部分分两块,一块是计算机基本操作,即从access,ppt,excel,outlook,word,网页制作,文件夹操作中随机选择四道,另一块是编程,编程题可以打开编程软件c-free来做,编程中共五道题,一道改错,两道填空,最后两道是编写程序。 (一)程序改错: 1,10个数求最大最小值 该程序中“/***** N ***** /”的下一行中有错误, 请改正(注意:不得加行、减行、加句、减句,否则后果自负)。 该程序功能:运行时输入10个数,然后分别输出其中的最大值、最小值。#include void main() { float x,max,min; int i; /******** 1 *******/ for(i=0;i<=10;i++) { scanf("%f",&x); /******* 2 ********/ if(i=1) { max=x;min=x;} if(x>max) max=x; if(x } printf("%f,%f\n",max,min); } ?#include 计算机图形学实验报告记录 ————————————————————————————————作者:————————————————————————————————日期: 计算机图形学实验报告 姓名:___ __________ 学号:_____ ________ 班级:______ _______ 时间:_____2016年12月_________ 实验一OpenGL编程与图形绘制 1.实验目的 了解OpenGL编程,并熟悉OpenGL的主要功能、绘制流程和基本语法。学会配置OpenGL环境,并在该环境中编程绘图。 2.实验内容 OpenGL的主要功能:模型绘制、模型观察、颜色模式、光照应用、图像效果增强、位图和图像处理、纹理映射、实时动画和交互技术。 OpenGL的绘制流程分为两个方面:一个完整的窗口系统的OpenGL图形处理系统的结构为:最底层为图形硬件,第二层为操作系统,第三层为窗口系统,第四层为OpenGL,最上面的层为应用软件;OpenGL命令将被放在一个命令缓冲区中,这样命令缓冲区中包含了大量的命令、顶点数据和纹理数据。当缓冲区被清空时,缓冲区中的命令和数据都将传递给流水线的下一个阶段。 OpenGL的基本语法中相关库有:OpenGL核心库:gl、OpenGL实用程序库:glu、OpenG 编程辅助库:aux、OpenGL实用程序工具包(OpenGL utility toolkit,GLUT):glut、Windows 专用库:wgl。 OpenGL的基本语法中命名规则为:OpenGL函数都遵循一个命名约定,即采用以下格式:<库前缀><根命令><可选的参数个数><可选的参数类型>。 了解了上述基础知识后,配置好OpenGL环境,然后在该环境中编程练习图形的绘制,本次实验主要是对点的绘制、直线的绘制和多边形面的绘制。 3.实验代码及结果 3.1点的绘制: #include 2018年11月浙江省学考选考试卷 历史 一、选择题(本大题共30小题,每小题2分,共60分。每小题列出的4个选项中只有一个是符合题目要求的,不选、多选、错选均不得分) 1.马克思指出:“理论在一个国家实现的程度,总是取决于理论满足这个国家的需要的程度。”在春秋战国国家走向统一的时代,讲求“耕战”,富国强兵,“满足”秦实现统一的理论是 A.儒家思想 B.道家思想 C.法家思想 D.墨家思想 2.论及“汉承秦制”,有学者指出:“尽管表面上与秦及其制度划清了界限,但汉朝实质上重建了秦的中央集权官僚政治。”下列项中能够体现上述认识的是 A.分封诸侯王,郡国并存 B.划分监察区,建立十三部刺史 C.限制相权,建立“中朝”决策机制 D.设司隶校尉,加强对官吏的监督 3.盛唐时代,可算得中国历史上“令人振奋”的一段时期,文学艺术达到鼎盛。后人歌咏唐代灿烂文化星空中“双子星座”的典型诗文是 A.“颜柳二公书尤多” B.“唐之文章称韩柳” C.“奔放雄杰有若苏辛” D.“李杜诗篇万口传” 4.谈到宋代对外贸易情况,有论著谓:“海洋中的航线取代了沿着海岸的线路。船只配备了密闭舱,航行不再完全依赖顺风,船舵的改进、指南针的运用以及对季风更深入的了解使这样 的航行成为可能……中国港口城市建有阿拉伯人和波斯人的聚居区。”下列项中与上述材料相对应的史实是 ①指南针对航海事业的发展意义重大②聚居区严格按坊市制度进行管理 ③宋代彻底放弃了唐代的海外贸易航线④瓷器成为“海上丝绸之路”重要的外销商品 A.①④ B.②③ C.①②③ D.②③④ 5.独具时代特色的历史信息在风云流转的时空中,是社会发展的一个个指示性坐标。下表所列信息,按朝代(周、秦、唐、元)先后排列正确的是 A.①②④③ B.①④②③ C.③②①④ D.④②①③ 6.古代理学家所提倡的“慎思明辨,格物致知”,旨在强调 A.知行合一 B.本心即天理 C.穿衣吃饭即是人伦物理 D.日积月累与循序渐进 7.说到某项举措实施的原委,史载:“盖以国家事务殷繁,人情弊端种种,诸臣有陈奏之心,或有不便显言之处,故令……密陈朕前……欲以众人之耳目,为朕之耳目,使民隐得闻,万事就理”。据此判断,下列项中与之相符的是 A.建立通政司 B.建立密折制 C.设立枢密院 D.设立军机处 8.文化是一个民族的灵魂。中国古代不同时期,文学形式异彩纷呈。明清涌现出著名的四大小说,其中更有一部大历史境界的“为后人说不尽的奇书”。它是 A.《三国演义》 B.《红楼梦》 C.《水浒传》 D.《西游记》 9.有学者指出:“今日没有人会替一手持枪、一手兜售毒品的恶霸行为辩护;但这一众所认同 浙江省计算机二级C语言历年试卷 一、程序填空 (1)找Armstrong(水仙花)数:371=3*3*3+7*7*7+1*1*1 b=i_x0010_0/10; a*a*a+b*b*b+c*c*c = = i (2)输入1个整数后,输出该数的位数。(例:输入3214则输出4,输入-23156则输出5)。 n!=0 n=n/10 (3)求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。if (n<0) n=-n; s+=n_x0010_; (4)调用函数f,将一个整数首尾倒置。例如:若程序输入12345,则输出54321;若程序输入-34567,则输出-76543。 return -y ; m=m/10 ; (5)调用函数f,从字符串中删除所有的数字字符。 strcpy else (6)调用find函数在输入的字符串中查找是否出现the这个单词。如果查到返回出现的次数,如果未找到返回0。 j=0; j<3; j++ j>=3 (7)输入的一个小写字母,将字母循环后移5个位置后输出。例如:a变成f,w 变成b。 c>='a'&&c<='u' c=(c-'a'+5)&+'a'; (8)将字符串s中所有的字符'c'删除。s[i] != '\0' j++; (9)对x=1,2,……,10,求 f(x)=x*x-5*x+sin(x)的最大值。max=f(1); if (f(x)>max) max=f(x); (10)输入三个整数,按由小到大的顺序输出这三个数。 int *pa, int *pb if ( a>b ) (11)调用函数f,去除数组中的负数,输入数组x[7],输出结果为:1 3 4 6 一、实验目的 1、掌握中点Bresenham直线扫描转换算法的思想。 2掌握边标志算法或有效边表算法进行多边形填充的基本设计思想。 3掌握透视投影变换的数学原理和三维坐标系中几何图形到二维图形的观察流程。 4掌握三维形体在计算机中的构造及表示方法 二、实验环境 Windows系统, VC6.0。 三、实验步骤 1、给定两个点的坐标P0(x0,y0),P1(x1,y1),使用中点Bresenham直线扫描转换算法画出连接两点的直线。 实验基本步骤 首先、使用MFC AppWizard(exe)向导生成一个单文档视图程序框架。 其次、使用中点Bresenham直线扫描转换算法实现自己的画线函数,函数原型可表示如下: void DrawLine(CDC *pDC, int p0x, int p0y, int p1x, int p1y); 在函数中,可通过调用CDC成员函数SetPixel来画出扫描转换过程中的每个点。 COLORREF SetPixel(int x, int y, COLORREF crColor ); 再次、找到文档视图程序框架视图类的OnDraw成员函数,调用DrawLine 函数画出不同斜率情况的直线,如下图: 最后、调试程序直至正确画出直线。 2、给定多边形的顶点的坐标P0(x0,y0),P1(x1,y1),P2(x2,y2),P3(x3,y3),P4(x4,y4)…使用边标志算法或有效边表算法进行多边形填充。 实验基本步骤 首先、使用MFC AppWizard(exe)向导生成一个单文档视图程序框架。 其次、实现边标志算法或有效边表算法函数,如下: void FillPolygon(CDC *pDC, int px[], int py[], int ptnumb); px:该数组用来表示每个顶点的x坐标 py :该数组用来表示每个顶点的y坐标 ptnumb:表示顶点个数 注意实现函数FillPolygon可以直接通过窗口的DC(设备描述符)来进行多边形填充,不需要使用帧缓冲存储。(边标志算法)首先用画线函数勾画出多边形,再针对每条扫描线,从左至右依次判断当前像素的颜色是否勾画的边界色,是就开始填充后面的像素直至再碰到边界像素。注意对顶点要做特殊处理。 通过调用GDI画点函数SetPixel来画出填充过程中的每个点。需要画线可以使用CDC的画线函数MoveTo和LineTo进行绘制,也可以使用实验一实现的画直线函数。 CPoint MoveTo(int x, int y ); BOOL LineTo(int x, int y ); 实现边标志算法算法需要获取某个点的当前颜色值,可以使用CDC的成员函数 COLORREF GetPixel(int x, int y ); 再次、找到文档视图程序框架视图类的OnDraw成员函数,调用FillPolygon 函数画出填充的多边形,如下: void CTestView::OnDraw(CDC* pDC) { CTestcoodtransDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); 二级C程序设计考试大纲 基本要求 1.掌握C语言的基本知识,包括C语言的功能和语法;2.基本具备C语言程序设计能力,能熟练地阅读、理解和编写简短的C程序; 3.掌握一种C语言的编译和编程环境,能熟练地调试程序;4.熟练掌握结构化程序设计的方法; 5.掌握程序设计中常用的基本算法。 考试范围 一、数据的定义 1.基本类型(整型,实型,字符型) (1)常量 各种表示形式的整数、实数和字符(串)常量,符号常量 的定义和使用,包括整数的十进制、八进制和十六进制 的表示形式、长整型常量的表示形式,实数的浮点表示 法和科学记数法,字符的转义序列,常用符号常量的含 义(如NULL、EOF等); (2)变量 变量的定义和初始化。 2.构造类型 (1)数组 一维和二维数组的定义和初始化,数组元素的引用,包括一维字符数组和字符串,二维字符数组和字符串数组。 (2)结构 结构类型的定义,结构变量的定义和初始化,结构变量成员的引用。 3.指针 (1)指针和地址的概念; (2)指针变量的定义和初始化; (3)通过指针引用指向实体。 4.构造类型和指针类型的混合定义及应用 (1)指针、数组和地址间的关系; (2)指针数组; (3)结构数组; (4)结构指针; (5)结构中含指针或数组; (6)指向指针的指针(即二级指针)。 5.空类型的定义和使用 6.变量的存储类别、作用域和生存期 (1)变量的存储类别,包括auto自动型、static静 态型、extern外部参照型; (2)全局变量和局部变量,包括自动局部变量和静态局 部变量、全局变量和静态全局变量、外部变量。 二、运算及流程控制 1.基本运算 运算符的功能,运算符的优先级、结合性和目数,隐式类型转换和强制类型转换。 2.表达式 各类表达式的组成规则和计算过程。 3.语句 (1)表达式语句、空语句、复合语句; (2)简单控制语句(break、continue、return); (3)选择控制语句(if、switch); (4)重复控制语句(for、while、do—while)。 三、程序结构和函数 1.程序结构 main函数与其他函数之间的关系,包括标准库函数和自定义函数。 2.函数的定义 (1)函数定义的ANSI C格式; 计算机图形学 实验报告 姓名:谢云飞 学号:20112497 班级:计算机科学与技术11-2班实验地点:逸夫楼507 实验时间:2014.03 实验1直线的生成 1实验目的和要求 理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析 实验数据的能力; 编程实现DDA算法、Bresenham中点算法;对于给定起点和终点的 直线,分别调用DDA算法和Bresenham中点算法进行批量绘制,并记 录两种算法的绘制时间;利用excel等数据分析软件,将试验结果编 制成表格,并绘制折线图比较两种算法的性能。 2实验环境和工具 开发环境:Visual C++ 6.0 实验平台:Experiment_Frame_One(自制平台)。 本实验提供名为 Experiment_Frame_One的平台,该平台提供基本 绘制、设置、输入功能,学生在此基础上实现DDA算法和Mid_Bresenham 算法,并进行分析。 ?平台界面:如错误!未找到引用源。所示 ?设置:通过view->setting菜单进入,如错误!未找到引 用源。所示 ?输入:通过view->input…菜单进入.如错误!未找到引用 源。所示 ?实现算法: ◆DDA算法:void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1) Mid_Bresenham法:void CExperiment_Frame_OneView::Mid_Bresenham(int X0, int Y0, int X1, int Y1) 3实验结果 3.1程序流程图 1)DDA算法流程图:开始 定义两点坐标差dx,dy,以及epsl,计数k=0,描绘点坐标x,y,x增 量xIncre,y增量yIncre ↓ 输入两点坐标x1,y1,x0,y0 ↓ dx=x1-x0,dy=y1-y0; _________↓_________ ↓↓ 若|dx|>|dy| 反之 epsl=|dx| epsl=|dy| ↓________...________↓ ↓ xIncre=dx/epsl; yIncre=dy/epsl ↓ 填充(强制整形)(x+0.5,y+0.5); ↓←←←← 横坐标x+xIncre; 纵坐标y+yIncre; ↓↑ 若k<=epsl →→→k++ ↓ 结束 2)Mid_Bresenham算法流程图开始 ↓ 定义整形dx,dy,判断值d,以及UpIncre,DownIncre,填充点x,y ↓ 输入x0,y0,x1,y1 ______↓______ ↓↓ 若x0>x1 反之 x=x1;x1=x0;x0=x; x=x0; 浙江省计算机二级C语言历年试卷. 一、程序填空 (1)找Armstrong(水仙花)数:371=3*3*3+7*7*7+1*1*1 b=i_x0010_0/10; a*a*a+b*b*b+c*c*c = = i (2)输入1个整数后,输出该数的位数。(例:输入3214则输出4,输入-23156则输出5)。 n!=0 n=n/10 (3)求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。 if (n<0) n=-n; s+=n_x0010_; (4)调用函数f,将一个整数首尾倒置。例如:若程序输入12345,则输出54321;若程序输入-34567,则输出-76543。return -y ; m=m/10 ; (5)调用函数f,从字符串中删除所有的数字字符。 strcpy else (6)调用find函数在输入的字符串中查找是否出现瑜敨这个单词。如果查到返回出现的次数,如果未找到返回0。 j=0; j<3; j++ j>=3 (7)输入的一个小写字母,将字母循环后移5个位置后输出。例如:慜变成晜,睜变成扜。 c>='a'&&c<='u' c=(c-'a'+5)&+'a'; (8)将字符串s中所有的字符'c'删除。 s[i] != '\0' j++; (9)对x=1,2,……,10,求 f(x)=x*x-5*x+sin(x)的最大值。 max=f(1); if (f(x)>max) max=f(x); (10)输入三个整数,按由小到大的顺序输出这三个数。 int *pa, int *pb if ( a>b ) (11)调用函数f,去除数组中的负数,输入数6 4 3 1 ,输出结果为:x[7]组. *m = *m-1; f (x, &n) ; (12)调用函数f计算代数多项式 天津理工大学实验报告 学院(系)名称:计算机与通信工程学院 姓名学号专业计算机科学与技术班级实验项目 课程名称计算机图形学课程代码 实验时间实验地点计算机软件实验室批改意见成绩 教师签字: 实验目的: 1. 采用glut创建图形窗口和实现人机交互功能。 2. 情节合理,交互操作简便灵活,动作过程平滑、真实。 实验内容: 1、设计一主题场景 2、场景中包括地形、天空和人物造型。 3、至少实现人物沿着地形行走的动作。 4、实现行走运动过程中的碰撞检测(可选做)。 5、实现交互式场景的浏览。 实验过程记录 虚拟校园漫游设计流程: 模块设计 公共基础模块: 提供场景视角变换,基本数学算法。 提供读入INI 文件接口。 场景设计模块 设计场景模型、地形布局。 设计地形,计算地形高度。 文件、资源管理模块: 向上提供模型、图片、纹理载入接口。 输入系统模块: 管理输入设备,提供交互系统接口。 对象管理模块: 管理静态动态实体,渲染图形。 控制动态实体动作。设计相关操作。 设计碰撞检测,漫游算法。 主要类的属性和方法的功能说明 class Ccamera 摄像机类 Milkshape 3d 实景照片 .3d .ms3d 场景数据 纹理材质 OpenGL 开发工具 漫游功能 在VS2008中制作虚拟校园漫游系统 static CCamera *m_pCamera; float dist_to_role;到英雄的矩离 vector3d position; 摄像机的位置 vector3d role_pos; 英雄的位置 float direction; 旋转角度 float pitch; 倾斜 int va;视角模式 int vm; 旋转模式 void FrameMove(void); 根据当前摄像机的位置角度变换矩阵 void Update(void); 更新摄像的参数,把它放到主循环中 class CTerrain地形类 unsigned int m_nWidth; 地形大小为m_iWidth*m_iWidth short* heightMap; 动态高程映射定义地形高度、为m_iWidth*m_iWidth矩阵 unsigned int m_nCellWidth; 每个格子的宽度 CTexture terrainTex; 地形上的多重纹理 void Render(void);插值计算地形高度并渲染 BOOL Init(int _width,char* TexFile);初始化高程映射和多重纹理 class CKeyboard键盘类 BOOL KeyDown(int key); key键是否按下 BOOL Update();更新键盘数据,放在主循环中 class CMouse鼠标类 BOOL ButtonDown(int button) 鼠标某键是否按下,0-左键,1-右键;/ void GetMovement(int &dx, int &dy); 获得光标坐标变化 SPoint2 GetMousePos();获得光标位置 void setmousepos(int dx, int dy) 设置光标位置 int GetWheelState();获得鼠标滚轮状态 BOOL Update();更新鼠标参数 struct SActiveObjPro动态实体的信息结构 void ChangeCurrFrame();改变当前帧 Update() 更新实体的信息结构 class Object游戏实体类的基类 float r1,r2;包围盒的半径,分别是x,y上的分量 class CActiveObj:public Object游戏中的活动实体 BOOL IsArrive(void);是否到达目的地 void SetActive(BOOL _active) 设定人物动作 一、程序填空 (1)找Armstrong(水仙花)数:371=3*3*3+7*7*7+1*1*1 b=i%100/10; a*a*a+b*b*b+c*c*c = = i (2)输入1个整数后,输出该数的位数。(例:输入3214则输出4,输入-23156则输出5)。 n!=0 n=n/10 (3)求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。 if (n<0) n=-n; s+=n%10; (4)调用函数f,将一个整数首尾倒置。例如:若程序输入12345,则输出54321;若程序输入-34567,则输出-76543。 return -y ; m=m/10 ; (5)调用函数f,从字符串中删除所有的数字字符。 strcpy else (6)调用find函数在输入的字符串中查找是否出现"the"这个单词。如果查到返回出现的次数,如果未找到返回0。 j=0; j<3; j++ j>=3 (7)输入的一个小写字母,将字母循环后移5个位置后输出。例如:"a"变成"f","w"变成"b"。 c>='a'&&c<='u' c=(c-'a'+5)%26+'a'; (8)将字符串s中所有的字符'c'删除。 s[i] != '\0' j++; (9)对x=1,2,……,10,求f(x)=x*x-5*x+sin(x)的最大值。 max=f(1); if (f(x)>max) max=f(x); (10)输入三个整数,按由小到大的顺序输出这三个数。 int *pa, int *pb if ( a>b ) (11)调用函数f,去除数组中的负数,输入数组x[7],输出结果为:1 3 4 6 *m = *m-1; f (x, &n) ; (12)调用函数f计算代数多项式1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*x*x当x=1.7时的值。 float x, float *a, int n return y; (13)分别统计字符串中英文字母、数字、和其他字符出现的次数。 《计算机图形学》实验报告 //glEnable(GL_SCISSOR_TEST); //glScissor(0.0f,0.0f,500,300); glutWireTeapot(0.4); glFlush(); } //窗口调整子程序 void myReshape(int w, int h) { glViewport(500, -300, (GLsizei)w, (GLsizei)h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w <= h) glOrtho(-1, 1, -(float)h / w, (float)h / w, -1, 1); else glOrtho(-(float)w / h, (float)w / h, -1, 1, -1, 0.5); } 2,使用opengl函数写一个图形程序,要求分别使用三个光源从一个茶壶的前右上方(偏红色),正左侧(偏绿色)和前左下方(偏蓝色)对于其进行照射,完成程序并观察效果。 } //绘图子程序 void display(void) { glColor3f(1.0, 1.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); //glMatrixMode(GL_MODELVIEW); //glLoadIdentity(); //设置光源的属性1 GLfloat LightAmbient1[] = { 1.0f, 0.0f, 0.0f, 1.0f }; //环境光参数 ( 新增 ) GLfloat LightDiffuse1[] = { 1.0f, 0.0f, 0.0f, 1.0f }; // 漫射光参数 ( 新增 ) GLfloat Lightspecular1[] = { 1.0f, 0.0f, 0.0f, 1.0f }; // 镜面反射 GLfloat LightPosition1[] = { 500.0f, 500.0f, 500.0f, 1.0f }; // 光源位置 ( 新增 ) glLightfv(GL_LIGHT0, GL_POSITION, LightPosition1); glLightfv(GL_LIGHT0, GL_AMBIENT, LightAmbient1); // 设置环境光 glLightfv(GL_LIGHT0, GL_DIFFUSE, LightDiffuse1); // 设置漫射光 glLightfv(GL_LIGHT0, GL_SPECULAR, Lightspecular1);//设置镜面反射光 //设置光源的属性2 GLfloat LightAmbient2[] = { 0.0f, 1.0f, 0.0f, 1.0f }; //环境光参数 ( 新增 ) 历年选考学考非选择题 2016年4月历史选考非选择题部分 31.阅读材料,回答问题。 材料一:1956年9月,中国共产党第八次全国代表大会在北京举行。毛泽东指出大会的任务是“为了建设一个伟大的社会主义的中国而奋斗”。刘少奇作政治报告,对国内主要矛盾变化作出判断,并提出党和国家在新形势下的主要任务。周恩来提出在综合平衡中稳步前进的经济建设方针。陈云针对急切期望实现“纯而又纯”的社会主义的想法,指出:“计划生产是工农业生产的主体,按照市场变化而在国家计划许可范围内的自由生产是计划生产的补充。”这些报告和讲话体现了中国共产党在探索建设社会主义道路方面取得的初步成果。 ——摘编自《中华人民共和国史(1956—1965)》等 材料二:下图所示为我国经济体制改革进程中国有企业的一种治理模式 ——引自《中国国有企业改革30年研究》(1)根据材料一和所学知识,指出中国共产党召开这次全国代表大会的历史背景,并概括大会所取得的“初步成果”。 背景:社会主义制度基本建立;探索社会主义建设道路。 成果:正确判断国内主要矛盾的变化;明确了把我国尽快地从落后的农业国变为先进的工业国的任务;提出在综合平衡中稳步前进的经济建设方针;思考计划与市场的作用。 (2)根据材料二和所学知识,指出上述模式所体现的企业制度,这一制度的建立适应了什么经济体制的要求?概括指出该经济体制的初步建立对我国现阶段所有制结构产生的重要影响。 制度:现代企业制度。 体制:社会主义市场经济体制。 影响:确立公有制为主体,多种所有制共同发展格局。 32.阅读材料,回答问题。 材料一:1950年5月9日,法国外长舒曼向西欧国家提出了一份旨在建立一个欧洲煤钢共同体的大胆计划。即建议德国和其他西欧国家把煤和钢的生产整个过程交由一个高级公共机构负责掌管,目的是使大家在经济领域团结一致,并进而在政治领域相互靠拢。舒曼计划的中心观点是“欧洲建设非一时之力、一日之功”。这种渐进的一体化方式,有别于以往的各种方法。……到了1986年,欧共体成员从原先的6国增加到12国。 ——摘自[法]法布里斯·拉哈《欧洲一体化史(1945—2004)》材料二:下图所示为1993年欧盟、美国、日本三大区域的国内生产总值 2008年春浙江省高校 计算机等级考试试卷(二级C) 试题1(每小题3分,共12分) 【程序说明】 输入一个整数n(n>=2),输入菲波那契序列的前n项,每行输出6个数,菲波那序列:1,1,2,3,5,8,13,……,数列的前两个数都是1,从第三项开始,每个数是前两个数之和。 运行示例: Enter n:10 1 1 2 3 5 8 13 21 34 55 #include 贵州大学实验报告 学院:计算机科学与技术专业:计算机科学与技术班级:计科131 实验内容#include"stdafx.h" #include图形学实验报告
计算机图形学实验
2018年6月浙江省普通高校招生学考科目考试历史
03年浙江省计算机等级考二级(C语言)
图形学实验报告
浙江省计算机二级c语言上机考试真题版
计算机图形学实验报告记录
2018年11月浙江省学考选考历史试卷
浙江省计算机二级C语言历年试卷
《计算机图形学实验报告》
浙江省高校计算机等级考试大纲(二级 C语言程序设计大纲
计算机图形学实验报告
浙江省计算机二级C语言历年试卷
图形学实验
浙江省计算机二级C语言历年试卷
计算机图形学实验报告三
浙江省历年历史学考、选考非选择题汇总(含答案)
2008--2010浙江省二级C语言考试真题__史杨杨
计算机图形学实验五:图形变换