《C程序设计》实验报告答案
答案基本订正过错处,程序设计题部分附上源代码,基本无误,但由于时间紧迫,可能也会有小问题,仅供参考。以/* */表示程序注释。
第一章C语言概述参考答案
一、选择题:1-7 ADCBBDD
一、选择题:1-5 DBCBD
二、算法设计(略)
第三章
一、选择题
1-5 DCCDB 6-10 BACAA
21-25 ADABA
选择题24题题目应为:(a==b++
二、填空题
C程序设计-顺序程序设计参考答案
D答案改为65534
第五章选择结构程序设计参考答案
一、选择题
1-5 BCDCA 6-10 BCDCB 11-15 DABDD
二、填空题
1. switch或多分支开关控制
2.fabs(x-2)<1e-6
3. 1
4. 4599
5. 10 20 0
三、写出程序运行的结果Array 1.97,b
2.a=1,b=3
3.该程序书上有误,正确的是:
main()
{ char c;
while((c=getchar())!=?\n?)
{ switch(c-…1?)
{case 0:
case 1:putchar(c+2);
case 3:putchar(c+4);
default
}}
printf(“\n”);
}
结果:645341
由于程序不同,该题可以有两个答案
四、程序设计
1、下列程序实现从键盘接收3个数,输出最大数和最小数
#include
main()
{ int a,b,c,max,min;
scanf(“%d,%d,%d”,&a,&b,&c); /*键盘输入3个数a,b,c*/
max=min=a; /*假设第一个数a是最大数,也是最小数/
if(b>a) max=b; /*分别用a和b,c进行两次比较*/
else min=b;
if(c>max) max=c;
if(c printf(“\nmax=%d,min=%d”,max, min); } 1.输入一百分制的成绩,输出他的等级,90以上“A”等,80-89为“B”等,70-79为“C” 等,60-69为“D”等,60以下为“E”等。 #include main() { float a; int b; scanf(“%f”,&f); if(f>100||f<0) printf(“Error\n”); else{ b=f/10; switch(b) { 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”); } } } 第六章循环控制参考答案 1 2 1 2 333* 3.765 4.* *** ***** ******* ********* 四、程序设计 1.编写程序打印以下图案(必须使用循环结构,直接输出不给分) 1 23 456 7890 #include main( ) { int i,j=1,s=1; for(i=1;i<=4;i++) /*控制打印4行*/ { for(j=1;j<=i;j++) /*控制每行打印的数字*/ { printf("%d",s%10); /*不直接打印s,而是打印s%10,是因为最后一个数是0,而不是10*/ s++;} printf("\n"); } } 2.求出 10 到100内能同时被2、3、7整除的数,并输出。 #include main( ) {int i; for(i=10;i<=100;i++) if((i%2==0)&&(i%3==0)&&(i%7==0)) printf(“%4d”,i); 或者if(i%42==0) printf(“%4d”,i); 也可 } 3.从键盘输入若干学生成绩,找出并输出最高和最低成绩,当输入成绩为负值是结束。 main() { int max,min,score; max=0;min=100; /*假设最高分和最低分分别是0,100*/ scanf("%d",&score); /*输入第一个学生的成绩*/ while(score>=0) { if(score>max)max=score; if(score scanf("%d",&score); /*输入下一个学生的成绩*/ } printf("\nmax=%d,min=%d",max,min); } 4.计算1~500之间(即从1到500)的全部"完数"之和。所谓"完数"是指一个数,它是所有因子之和等该数 #include main( ) { int i,j,s,sun=0; for(i=1;i<=500;i++) { for(j=1,s=0;j<=i/2;j++) /*寻找数i的因子,只要找到i的一半即可*/ if(i%j==0) s+=j; /*若j 是i的因子,把j加到s上*/ if(s==i) sum+=i; /*若s等于i,则说明i是完数*/ } printf(“%d”,sum); } 5."百马百担"问题。有100匹马驮100担货,每匹大马每次驮3担,每匹中马每次驮2担,2匹小马每次分驮1担。编写程序求大、中、小马的匹数(大、中、小马的匹数均不得为0)。 #include main( ) { int a,b,c; for(a=1;a<33;a++) for(b=1;b<50;b++) for(c=1;c<100;c++) if ((a+b+c=100)&&(6*a+4*b+c=200)) printf(“%4d%4d%4d\n”,a,b,c); } 6.求s=2/1-3/2+5/3-8/5+...前20项的值(略) main( ) { float s=0.0,f=1.0; int i=1,j=2,k,t; for(k=1;i<=20;k++) /*控制计算20项*/ { s=s+(float)j/i*f; t=j; j=i+j; i=t; /*后项的分母i等于前项分子j,后项分子j等于前项分子i+分母j*/ f=-f;} /*利用f取反,实现一正一负计算*/ printf("%f",s); } 7.输入一行字符(以回车结束输入),统计其中数字、字母和其它字符的个数。 #include main( ) { char c; int letter=0,space=0,digit=0,other=0; while((c=getchar())!=?\n?) /*输入的不是回车就继续统计*/ { if((c>=?a?&&c<=?z?)||(c>=?A?&&c<=?Z?)) letter++; else if(c==?…) space++; else if(c>=?0?&&c<=?9?) digit++; else oher++; } printf( } 1-5 __0___ 【程序1】 【程序2】 1 main( ) {long int s=0; int i=0; char a[10]; gets(a); for(i=0;a[i]!=?\0?;i++) if(a[i]>=?0?&&a[i]<=?9?) s=s*10+a[i]-…0?; printf(“%ld”,s); } 2.将输入的十进制数转换为二进制数输出 #define m 2 /*可修改m的值,把十进制数转成2,8,16进制*/ #include main( ) { char a[100]; int i=0,temp; long int d; scanf(“%ld”,&d); while (d!=0) { temp=d%m; if(temp>=10) a[i]=temp-10+?A?; else a[i]=temp+?0?; d=d/m; i++; } for(i--;i>=0;i--) printf(“%c”,a[i]); } 3.计算200以内的其平方具有回文性质的正整数输出。例如11^2=121,111^2=12321都是满足条件的正整数。 #include int flag(int x) { int y; long s; s=x*x; y=0; while(s!=0) {y=y*10+s%10; s=s/10; } if(y==x*x) return 1; else return 0; } main() { int n; for(n=1;n<200;n++) if(flag(n)) printf("n=%3d,n*n==%ld\n",n,n*n); } 4.有一个3×4的矩阵,要求编程以求出其中值最大的那个元素,以及它所在的行号和列号。(略) 首先定义二位数组的首元素a[0][0]为最大值,记录行号=0,列号=0,然后用两层循环依次搜遍所有的元素,并修改行列号即可 #include main() { int a[3][4],I,j,max; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf(“%d”,&a[i][j]); /*键盘输入数组的值*/ max=a[0][0]; /*假设头元素最大*/ row=0; col=0; for(i=0;i<4;i++) for(j=0;j<4;j++) if(a[i][j]>max) {max=a[i][j];row=i;col=j;} printf(“%d,%d,%d”,row,col,max); } 5.求一个3×4的矩阵的转置矩阵。(略)见书138页例题7.4 类似#include main() { int i,j,a[3][4],b[4][3]; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf(“%d”,&a[i][j]); /*键盘输入3×4的数组值*/ for(i=0;i<3;i++) for(j=0;j<4;j++) b[j][i]=a[i][j]; /*数组行号和列号交换,完成数组转置*/ for(i=0;i<4;i++) /*按行输出转置后的数组b*/ { for(j=0;j<3;j++) printf(“%4d”,b[i][j]); printf(“\n”); } } 第八章函数参考答案 一、选择题:1-5 ADAAA 6-10 CCCAA 二、程序填空 【程序1】 s,c s[i] s[j]=?\0? 三、写出程序运行的结果: 【程序1】51 【程序2】16 【程序3】8 10 12 【程序4】10 【程序5】14 12 【程序6】0 10 1 11 2 12 【程序7】 4 3 3 4 四、程序设计 1.根据以下框架编写程序,用递归函数按下列公式计算并输出 s(n)=12+22+32+…n2 递归计算公式:s(n)=s(n-1)+n*n #include float s(int ); void main() { int n; float sum; scanf(“%d”,&n); sum=s(n); printf(“%f”,sum); } float s(int n) { float s; if (n==1) s=1; else s=n*n+s(n-1); return(s); } 2.编写字符串拷贝函数,功能是将str2字符串复制到str1字符串中(即功能与C中的strcpy 标准库函数相同) #include #include "string.h" void strcomp( char s1[], char s2[]) { int i=0; for(i=0;s2[i]!=?\0?;i++) s1[i]=s2[i]; s1[i]=?\0?; } main() { char str1[100], str2[100]; gets(str1); gets(str2); strcomp(str1,str2); puts(str1); 3.输出100~200之间的全部素数的和(用一函数来判断一个数是否为素数) #include #include int flag(int x) { int i,f; for(i=2;i if(x%i==0) {f=0;break;} if(i>sqrt(x)) f=1; return(f); } main() { int n,s=0; for(n=101;n<200;n=n+2) if(flag(n)) s+=n; printf(“%d”,s); } 第九章预处理命令参考答案 一、选择题: 1-5 BADAD 6-10 DDBBA 第十章指针参考答案 一、选择题: 1-5 CDCAC 6-10 ACDBB 11-15 DDBBC 16-20 ADDAA 21-25 DBBAA 二、写出程序运行的结果: 【程序1】2,0 【程序2】computer 【程序3】c_proargm level test 【程序4】good 【程序5】10 9 8 7 6 5 4 3 2 1 【程序6】abcfg 【程序7】abcbcc 三、程序填空 【程序1】①str+strlen(str)-1 ②t==0或!t ③huiwen(str) 四、程序设计 1.不使用strcpy()函数,将字符串a复制到字符串b中去。 #include #include "string.h" main() { char a[100], b[100], *pa,*pb; gets(b); for(pa=a,pb=b;*pa!=?\0?;pa++,pb++) *pb=*pa; *pb=?\0?; puts(b); } 2.删除字符串中的所有的逗号。(类似于实验报告上的实验6的第4题) 注意:实验包括上用的是字符串数组的下标来控制,这里用的是字符数组的指针。 #include main() { char s[100]; char *p,*q; gets(s); /*键盘输入一个字符串*/ for(p=s;*p='\0';) { if(*p==?,?) for(q=p;*q!=?\0?;q++) *q=*(q+1); /*是逗号,则将后续字符向前挪*/ else p++; /*不是,则比较下一个字符*/ } *p='\0'; /*给字符串尾部加‘\0‘,控制输出结束*/ puts(s); } 3.将数组中的各元素逆序存放 #include #include "string.h" main() { char s[100]; char *p1,*p2,c; gets(s); p1=s; p2=s+strlen(s)-1; while(p1 {c=*p1;*p1=*p2;*p2=c; 交换首尾 p1++;p2--;} puts(s); } 第十一章结构体参考答案 一、选择题: 1-5 BCBCC 6-10 CCDCB 二、写出下列程序运行的结果 WangHua:21 ZhaoPing:20 三、程序设计(略) 第十二章位运算参考答案一、选择题: 1-6 DCDAB B 第十三章文件参考答案一、选择题 1-5 CCCDC 6-10 ABBCC 二、程序设计(略) 实验报告的参考答案 由于时间紧迫,可能会有小问题。仅供参考。 实验2 数据类型、运算符和表达式 1、要将“China”译成码,译码规律是:用原来字母后面的第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。请编一程序,用赋初值的方法使c1、c 2、c 3、c 4、c5五个变量的值分别为'C'、'h'、'i'、'n'、'a',经过运算,使c1、c2、c3、c4、c5分别变为'G'、'1'、'm'、'r'、'e',并输出。 #include "string.h" main( ) { char str[20]; /*定义存放字符的数组,这样程序比较简单*/ int i; gets(str); for(i=0;str[i]!='\0';i++) { if( (str[i]>='a'&&str[i]<='v')||(str[i]>='A'&&str[i]<='V')) str[i]+=4; else if( (str[i]>='a'&&str[i]<='z')||(str[i]>='W'&&str[i]<='Z') ) str[i]-=22; } puts(str); } 实验3 最简单的C程序设计 2、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据(r,h),输出计算结果。输出时要有文字说明,取小数点后两位数字。 #define pi 3.1415926 #include main() { float r,h,l,s1,s2,v1,v2; scanf(“%f,%f”,&r,&h); l=2*pi*r; s1=pi*r*r; s2=4*pi*r*r; v1=3.0/4*pi*r*r*r; v2=pi*r*r*h; printf(“%.2f,%.2f,%.2f,%.2f,%.2f”,l,s1,s2,v1,v2); } 3.编程序,输入一个华氏温度,要求输出摄氏温度。公式为()329 5 -=F c 输出时要有文字说明,取2位小数。(注意:在什么情况下为实型除法,这里不是指整型除法哦!) main() { float c,F; scanf(“%f ”,&F); c=5.0/9*(F-32); printf(“%.2f ”,c); } 实验4 逻辑结构程序设计 1.有一函数: ?? ? ??≥-<≤-<=) 10(113)101(1 2)1(x x x x x x y 要求用scanf 函数输入x 的值,求y 值并用printf 函数输出y 。 #include scanf(“%d ”,&x); if(x<1) y=x; else if(x<10) y=2*x-1; else y=3*x-11; printf(“%d ”,y); } 2.给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数为321,应输出123。 #include scanf(“%ld ”,&x); a=x/10000; b=x%10000/1000; c=x%1000/100; d=x%100/10; e=x%10; if(a!=0) else if(b!=0) printf(“x is 4 number:%d%d%d%d,%d%d%d%d”,b,c,d,e,e,d,c,b); else if(c!=0) printf(“x is 3 number:%d%d%d,%d%d%d”,c,d,e,e,d,c); else if(d!=0) printf(“x is 2 number:%d%d,%d%d”,d,e,e,d); else printf(“x is 1 number:%d,%d”,e,e); } 循环逆序打印的程序如下: #include main( ) { long x; int number=0; scanf(“%ld”,&x); while(x!=0) { printf(“%d”,x%10); x=x/10; number++); } printf(“x is %d number”,number); } 3.输入一个日期(含年、月、日),编程序输出该日期是该年度中的第几天。 要求:①输入格式为年/月/日;②程序应当对不合法的输入作必要的处理。如: ·月份超过12,日期超过31 ·年月日为负数。 #include "stdio.h" main() { int year,month,day,nday,n; printf("Input Year/Month/Day:"); scanf("%d/%d/%d",&year,&month,&day); if(year<=0||month<=0||day<=0||month>12||day>31) printf("Error\n"); else if((month==4||month==6||month==9||month==11)&&day>30) printf("Error\n"); else { if(year%4==0&&year%100!=0||year%400==0) n=1; else n=0; if((n==1&&month==2&&day>29)||(n==0&&month==2&&day>28)) printf("Error\n"); else{ switch(month) { case 1: nday=day;break; case 2: nday=day+31;break; case 4: nday=day+90;break; case 5: nday=day+120;break; case 6: nday=day+151;break; case 7: nday=day+181;break; case 8: nday=day+212;break; case 9: nday=day+242;break; case 10: nday=day+273;break; case 11: nday=day+303;break; case 12: nday=day+334;break; } if(n==1&&month>2) nday++; printf("The day is the %d of the year\n",nday); } } } 上面程序如果用数组,程序会简单一些,如下: #include "stdio.h" main() { int year,month,day,nday=0,n,i; int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; /*定义一个数组存放1-12月份每个月份的天数*/ printf("Input Year/Month/Day:"); scanf("%d/%d/%d",&year,&month,&day); if(year<=0||month<=0||day<=0||month>12||day>31) printf("Error\n"); else if((month==4||month==6||month==9||month==11)&&day>30) printf("Error\n"); else { if(year%4==0&&year%100!=0||year%400==0) n=1; else n=0; if((n==1&&month==2&&day>29)||(n==0&&month==2&&day>28)) printf("Error\n"); else{ for(i=0;i nday+=a[i]; nday+=day; /*可以数组累加统计天数,不必写switch语句*/ if(n==1&&month>2) nday++; printf("The day is the %d of the year\n",nday); }} } 4.下列程序实现从键盘接收3个数,输出最大数和最小数 #include main() { int a,b,c,max,min; scanf(“%d,%d,%d”,&a,&b,&c); /*键盘输入3个数a,b,c*/ max=min=a; /*假设第一个数a是最大数,也是最小数/ else min=b; if(c>max) max=c; if(c printf(“\nmax=%d,min=%d”,max, min); } 实验5 循环控制 1.输入两个正整数m和n,求它们的最大公约数和最小公倍数。 main() { int n,m,i,t; scanf("%d,%d",&n,&m); if(n else t=m; /*使得t等于m,n中的小数*/ for(i=t; i>=1;i--) /*从小数开始,一个个试探,如果一个数能同时被m,n整除,则一定是最大公约数*/ if(n%i==0&&m%i==0) break; printf("%d,%d",i,n*m/i); } 转折求余法,如下: #include main() { int n,m,a,b,r; scanf("%d,%d",&n,&m); if(n a=n;b=m; /*使得大数n给a,小数m给b*/ while(b!=0) { r=a%b; a=b; b=r; } printf("%d,%d",a,n*m/a);} 2.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩一个桃子了。求第一天共摘了多少桃子。 #include main() { int i,s=1; for(i=9;i>=1;i--) s=2*(s+1); printf(“%d”,s); 3.编程计算1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+n)的值。 (本题中的n从键盘输入,且假设在20以内) #include main() { int i,s=0,t=0,n; scanf(“%d”,&n) for(i=1;i<=n;i++) { t=t+i; s=s+t; } printf(“%d”,s); } 4.试编程:找出1至99之间的全部同构数。同构数是这样一组数:它出现在平方数的右边。例52=25,5在25的右边,5是同构数;252=625,25在625的右边,25是同构数。 #include main() { int i; for(i=1;i<=99;i++) if(i*i%10==i||i*i%100==i) printf(“%4d”,i); } 5.编程求100~300之间的全部素数的和 #include #include main() { int n,i,k,s=0; for(n=101;n<300;n=n+2) { k=sqrt(n); for(i=0;i<=k;i++) if(n%i==0) break; if(i>k) s=s+n; } printf(“%d”,s); } 课后思考题 1.利用下面公式求s的值(求20项之和) s=1/(1*2*3)-1/(2*3*4)+1/(3*4*5)-1/(4*5*6)+...+1/(19*20*21)-1/(20*21*22) #include main() { int i,k; float s=0.0,f=1.0; for(i=1;i<=20;i++) { k=i*(i+1)*(i+2); s=s+f/k; f=-f; } printf(“%f”,s); } 2.一个素数加上1000以后是43的倍数,求满足这个条件的最小素数。 #include #include main() { int n,i,k; for(n=2; ;n++) { k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0) break; if(i>k&&(n+1000)%43==0) {printf(“%d”,n);break;} } } 3.有2个小于40的正整数a和b,a的平方与b的和是1053,b的平方与a的和是873,请编程求满足条件的a和b的值。(提示:满足条件的a,b的值唯一) #include main() { int a,b; for(a=1; a<=40;a++) for(b=1; b<=40;b++) if(a*a+b==1053&&a+b*b==873) printf(“%d,%d”,a,b); } 4.一个自然数除以2余1,除以3余2,除以4余3,除以5余4,除以7余5,求满足这个条件的最小的自然数? #include main() { int i; for(i=1; ;i++) if(i%2==1&&i%3==2&&i%4==3&&i%5==4&&i%7==5) {printf(“%d”,i);break;} } 5.求所有的"水仙花数"之和。所谓"水仙花数"是指一个三位数,其各位数字的立方和等于该数本身。例如153是一个"水仙花数",因为:153=1*1*1+5*5*5+3*3*3。 #include main() { int i,a,b,c,s=0; for(i=100; i<=999;i++) { a=i/100; b=i%100/10; c=i%10; if(a*a*a+b*b*b+c*c*c==i) s=s+i; } prinf(“%d”,s); } 6.分别计算500到1300之间所有既能被7整除又能被13整除的奇数和偶数之和。 #include main() { int i ,s1=0,s2=0; for(i=500; i<=1300;i++) { if(i%7==0&&i%13==0) if(i%2==0) s1=s1+i; /*分奇数和偶数分别讨论*/ else s2=s2+i; } prinf(“%d,%d”,s1,s2); } 7.统计用0-9之间不同的3个数构成一个三位数有多少种方法 #include main() { int a,b,c,s=0; for(a=1; a<=9;a++) 成都工业学院·计算机工程学院 《程序设计基础》实验报告 1.实验目的 (1)熟悉C语言运行环境,了解和使用Visual6.0++集成开发环境(2)熟悉Visual6.0++环境的功能键和常用的功能菜单命令 (3)掌握C语言程序的书写格式和C语言程序的结构 (4)掌握C语言上机步骤,以及编辑、编译和运行一个C语言程序的方法 (5)熟悉Visual6.0++环境下的程序调试方法 2.实验内容 (1)按照实验步骤编辑、编译、运行第一个”Hello World”程序(2)利用实验指导中的第二个程序熟悉调试工具,在已知x,y值的情况下,计算出x和y的和、差、积、商,并显示出来(3)编写一个程序,输入a、b、c三个值,输出它们的和与平均值c 3.源程序 (1)#include (3)#include 电压源与电流源的等效变换 一、实验目的 1、加深理解电压源、电流源的概念。 2、掌握电源外特性的测试方法。 二、原理及说明 1、电压源是有源元件,可分为理想电压源与实际电压源。理想电压源在一定的电流 范围内,具有很小的电阻,它的输出电压不因负载而改变。而实际电压源的端电压随着电流变化而变化,即它具有一定的内阻值。理想电压源与实际电压源以及它们的伏安特性如图4-1所示(参阅实验一内容)。 2、电流源也分为理想电流源和实际电流源。 理想电流源的电流是恒定的,不因外电路不同而改变。实际电流源的电流与所联接的电路有关。当其端电压增高时,通过外电路的电流要降低,端压越低通过外电路的电 并联来表示。图4-2为两种电流越大。实际电流源可以用一个理想电流源和一个内阻R S 流源的伏安特性。 3、电源的等效变换 一个实际电源,尤其外部特性来讲,可以看成为一个电压源,也可看成为一个电流源。两者是等效的,其中I S=U S/R S或 U S=I S R S 图4-3为等效变换电路,由式中可以看出它可以很方便地把一个参数为U s 和R s 的 电压源变换为一个参数为I s 和R S 的等效电流源。同时可知理想电压源与理想电流源两者 之间不存在等效变换的条件。 三、仪器设备 电工实验装置: DG011、 DG053 、 DY04 、 DYO31 四、实验内容 1、理想电流源的伏安特性 1)按图4-4(a)接线,毫安表接线使用电流插孔,R L 使用1KΩ电位器。 2)调节恒流源输出,使I S 为10mA。, 3)按表4-1调整R L 值,观察并记录电流表、电压表读数变化。将测试结果填入表4-1中。 2、实际电流源的伏安特性 按照图4-4(b)接线,按表4-1调整R L 值,将测试的结果填入表4-1中。 C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } (2) #include d=170; x=(a+b)/(b-c)*(c-d); printf("(a+b)/(b-c)*(c-d)=%f\n",x); } 3. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b 时,将0赋给c。(提示:用条件运算符) 答案: #include 电路实验报告1-叠加原理的验证 所属栏目:电路实验- 实验报告示例发布时间:2010-3-11 实验三叠加原理的验证 一、实验目的 验证线性电路叠加原理的正确性,加深对线性电路的叠加性和齐次性的认识和理解。 二、原理说明 叠加原理指出:在有多个独立源共同作用下的线性电路中,通过每一个元件的电流或其两端的电压,可以看成是由每一个独立源单独作用时在该元件上所产生的电流或电压的代数和。 线性电路的齐次性是指当激励信号(某独立源的值)增加或减小K 倍时,电路的响应(即在电路中各电阻元件上所建立的电流和电压值)也将增加或减小K倍。 三、实验设备 高性能电工技术实验装置DGJ-01:直流稳压电压、直流数字电压表、直流数字电流表、叠加原理实验电路板DGJ-03。 四、实验步骤 1.用实验装置上的DGJ-03线路, 按照实验指导书上的图3-1,将两路稳压电源的输出分别调节为12V和6V,接入图中的U1和U2处。 2.通过调节开关K1和K2,分别将电源同时作用和单独作用在电路中,完成如下表格。 表3-1 3.将U2的数值调到12V,重复以上测量,并记录在表3-1的最后一行中。 4.将R3(330 )换成二极管IN4007,继续测量并填入表3-2中。 表3-2 五、实验数据处理和分析 对图3-1的线性电路进行理论分析,利用回路电流法或节点电压法列出电路方程,借助计算机进行方程求解,或直接用EWB软件对电路分析计算,得出的电压、电流的数据与测量值基本相符。验证了测量数据的准确性。电压表和电流表的测量有一定的误差,都在可允许的误差范围内。 验证叠加定理:以I1为例,U1单独作用时,I1a=8.693mA,,U2单独作用时,I1b=-1.198mA,I1a+I1b=7.495mA,U1和U2共同作用时,测量值为7.556mA,因此叠加性得以验证。2U2单独作用时,测量值为-2.395mA,而2*I1b=-2.396mA,因此齐次性得以验证。其他的支路电流和电压也可类似验证叠加定理的准确性。 对于含有二极管的非线性电路,表2中的数据不符合叠加性和齐次性。 六、思考题 1.电源单独作用时,将另外一出开关投向短路侧,不能直接将电压源短接置零。 2.电阻改为二极管后,叠加原理不成立。 电路分析实验报告 实验报告(二、三) 一、实验名称实验二KCL与KVL的验证 二、实验目的 1.熟悉Multisim软件的使用; 2.学习实验Multisim软件测量电路中电流电压; 3.验证基尔霍夫定理的正确性。 三、实验原理 KCL为任一时刻,流出某个节点的电流的代数和恒等于零,流入任一封闭面的电流代数和总等于零。且规定规定:流出节点的电流为正,流入节点的电流为负。 KVL为任一时刻,沿任意回路巡行,所有支路电压降之和为零。且各元件取号按照遇电压降取“+”,遇电压升取“-”的方式。沿顺时针方向绕行电压总和为0。电路中任意两点间的电压等于两点间任一条路径经过的各元件电压降的代数和。 四、实验内容 电路图截图: 1.验证KCL: 以节点2为研究节点,电流表1、3、5的运行结果截图如下: 由截图可知,流入节点2的电流为2.25A,流出节点2 的电流分别为750mA和1.5A。2.25=0.75+1.5。所以,可验证KCL成立。 2.验证KVL: 以左侧的回路为研究对象,运行结果的截图如下: 由截图可知,R3两端电压为22.5V,R1两端电压为7.5V,电压源电压为30V。22.5+7.5-30=0。所以,回路电压为0,所以,可验证KVL成立。 一、实验名称实验三回路法或网孔法求支路电流(电压) 二、实验目的 1.熟悉Multisim软件的使用; 2.学习实验Multisim软件测量电路中电流电压; 3.验证网孔分析法的正确性。 三、实验原理 为减少未知量(方程)的个数,可以假想每个回路中有一个回路电流。若回路电流已求得,则各支路电流可用回路电流线性组合表示。这样即可求得电路的解。回路电流法就是以回路电流为未知量列写电路方程分析电路的方法。网孔电流法就是对平面电路,若以网孔为独立回 长沙理工大学2010C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include<> main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include <> main() { printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥\n"); } 2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include<> main() { int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include<> main() { int a,b,c; a=0; b=-10; c= (a>b) ? b:a; printf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 3、编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7 a/c的商=3 a/b的余数=10 a/c的余数=15 4. 编译、连接无错,运行后屏幕上显示以下结果: c =-10 实验二顺序结构程序设计 四、程序清单 1.键盘输入与屏幕输出练习 问题1 D 。 问题2 改printf("%c,%c,%d\n",a,b,c);这条语句 创作编号: GB8878185555334563BT9125XW 创作者:凤呜大王* 叠加原理实验报告范文 一、实验目的 验证线性电路叠加原理的正确性,加深对线性电路的叠加性和齐次性的认识和理解。 二、原理说明 叠加原理指出:在有多个独立源共同作用下的线性电路中,通过每一个元件的电流或其两端的电压,可以看成是由每一个独立源单独作用时在该元件上所产生的电流或电压的代数和。 线性电路的齐次性是指当激励信号(某独立源的值)增加或减小K倍时,电路的响应(即在电路中各电阻元件上所建立的电流和电压值)也将增加或减小K倍。 三、实验设备 高性能电工技术实验装置DGJ-01:直流稳压电压、直流数字电压表、直流数字电流表、叠加原理实验电路板DGJ-03。 四、实验步骤 1.用实验装置上的DGJ-03线路,按照实验指导书上的图3-1,将两路稳压电源的输出分别调节为12V和6V,接入图中的U1和U2处。 2.通过调节开关K1和K2,分别将电源同时作用和单独作用在电路中,完成如下表格。 表3-1 3.将U2的数值调到12V,重复以上测量,并记录在表3-1的最后一行中。 4.将R3(330 )换成二极管IN4007,继续测量并填入表3-2中。 表3-2 五、实验数据处理和分析 对图3-1的线性电路进行理论分析,利用回路电流法或节点电压法列出电路方程,借助计算机进行方程求解,或直接用EWB软件对电路分析计算,得出的电压、电流的数据与测量值基本相符。验证了测量数据的准确性。电压表和电流表的测量有一定的误差,都在可允许的误差范围内。 验证叠加定理:以I1为例,U1单独作用时,I1a=8.693mA,,U2单独作用时, I1b=-1.198mA,I1a+I1b=7.495mA,U1和U2共同作用时,测量值为7.556mA,因此叠加性得以验证。2U2单独作用时,测量值为-2.395mA,而2*I1b=-2.396mA,因此齐次性得以验证。其他的支路电流和电压也可类似验证叠加定理的准确性。 对于含有二极管的非线性电路,表2中的数据不符合叠加性和齐次性。 学生实验报告册 (理工类) 课程名称:C语言程序设计实验专业班级: 16数字媒体技术学生学号: 1613031008 学生姓名:李翔 所属院部:计算机工程学院指导教师:吕艳林 20 16 ——20 17 学年第一学期 金陵科技学院教务处制 实验报告书写要求 实验报告上交电子稿,标题采用四号黑体,正文采用小四号宋体,单倍行距。 实验报告书写说明 实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。 实验项目名称:初级程序设计实验学时: 6 实验地点: A107 实验日期: 2016年10月13,20,27 实验成绩: 批改教师:批改时间: 实验1 初级程序设计 一、实验目的和要求 (1)熟悉Visual C++集成环境,进行编辑、保存、编译、连接及运行,并能进行简单程序调试; (2)掌握C语言中各种运算符的使用; (3)掌握C语言中各种数据类型的区别与应用; (4)熟练掌握C语言中变量的定义、赋值和使用,表达式语句、输入/输出语句的使用; (5)掌握C语言中输入/输出函数的使用; (6)掌握C语言中控制语句的使用,含if-else、for、while、do-while语句的使用。 二、实验仪器和设备 奔腾以上计算机,装有windows XP以上版本操作系统和Visual C++ 6.0软件。 三、实验内容与过程 1、程序调试 (1)#include 电路分析等效电源定理实验报告 一、实验名称 等效电源定理 二、实验目的 1. 验证戴维宁定理和诺顿定理的正确性,加深对该定理的理解。 2. 掌握测量有源二端网络等效参数的一般方法。 三、原理说明 1. 任何一个线性含源网络,如果仅研究其中一条支路的电压和电流,则可将电路的其余部分看作是一个有源二端网络(或称为含源一端口网络)。 戴维宁定理指出:任何一个线性有源网络,总可以用一个电压源与一个电阻的串联来等效代替,此电压源的电动势Us等于这个有源二端网络的开路电压Uoc,其等效内阻R0等于该网络中所有独立源均置零(理想电压源视为短接,理想电流源视为开路)时的等效电阻。 诺顿定理指出:任何一个线性有源网络,总可以用一个电流源与一个电阻的并联组合来等效代替,此电流源的电流Is等于这个有源二端网络的短路电流I SC,其等效内阻R0定义同戴维宁定理。 Uoc(Us)和R0或者I SC(I S)和R0称为有源二端网络的等效参数。 2. 有源二端网络等效参数的测量方法 (1) 开路电压的测量 在有源二端网络输出端开路时,用电压表直接测其输出端的开路电压Uoc。 (2)短路电流的测量 在有源二端网络输出端短路,用电流表测其短路电流Isc。 (3)等效内阻R0的测量 Uoc R0=── Isc 如果二端网络的内阻很小,若将其输出端口短路,则易损坏其内部元件,因此不宜用此法。 五、实验内容 被测有源二端网络如图5-1(a)所示,即HE-12挂箱中“戴维宁定理/诺顿定理”线路。 (a) (b) 图5-1 1. 用开路电压、短路电流法测定戴维宁等效电路的Uoc、R0。 按图5-1(a)接入稳压电源Us=12V和恒流源Is=10mA,不接入R L。测出U O c和Isc,并计算出R0(测U OC时,不接入mA表。),并记录于表1。 表1 实验数据表一 2. 负载实验 按图5-1(a)接入可调电阻箱R L。按表2所示阻值改变R L阻值,测量有源二端网络的外特性曲线,并记录于表2。 表2 实验数据表二 3. 验证戴维宁定理 把恒压源移去,代之用导线连接原接恒压源处;把恒流源移去,这时,A、B两点间的电阻即为R0,然后令其与直流稳压电源(调到步骤“1”时所测得的开路电压Uoc之值)相串联,如图5-1(b)所示,仿照步骤“2”测其外特性,对戴氏定理进行验证,数据记录于表3。 表3 实验数据表三 4. 验证诺顿定理 在图5-1(a)中把理想电流源及理想电压源移开,并在电路接理想电压源处用导线短接(即相当于使两电源置零了),这时,A、B两点的等效电阻值即为诺顿定理中R0,然后令 2010C语言实验报告参考答案 长沙理工大学2010C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include 基尔霍夫定律和叠加定理的验证 组长:曹波组员:袁怡潘依林王群梁泽宇郑勋 一、实验目的 通过本次实验验证基尔霍夫电流定律和电压定律加深对“节点电流代数和”及“回路电压代数和”的概念的理解;通过实验验证叠加定理,加深对线性电路中可加性的认识。 二、实验原理 ①基尔霍夫节点电流定律[KCL]:在集总电路中,任何时刻,对任一结点,所有流出结点的支路电流的代数和恒等于0。 ②基尔霍夫回路电压定律[KVL]:在集总电路中,任何时刻,沿任一回路,所有支路电压的代数和恒等于0。 ③叠加定理:在线性电阻电路中,某处电压或电流都是电路中各个独立电源单独作用时,在该处分别产生的电压或电流的叠加。 三、实验准备 ①仪器准备 1.0~30V可调直流稳压电源 2.±15V直流稳压电源 3.200mA可调恒流源 4.电阻 5.交直流电压电流表 6.实验电路板 7.导线 ②实验电路图设计简图 四、实验步骤及内容 1、启动仪器总电源,连通整个电路,分别用导线给电路中加上直流电压U1=15v,U2=10v。 2、先大致计算好电路中的电流和电压,同时调好各电表量程。 3、依次用直流电压表测出电阻电压U AB、U BE、U ED,并记录好电压表读数。 4、再换用电流表分别测出支路电流I1、I2、I3,并记录好电流读数。 5、然后断开电压U2,用直流电压表测出电阻电压U、BE,用电流表分别测出支路电流I、1并记录好电压表读数。 6、然后断开电压U1,接通电压U2,用直流电压表测出电阻电压U、、BE,用电流表分别测出支路电流I、、1并记录好电压表读数。 7、实验完毕,将各器材整理并收拾好,放回原处。 实验过程辑录 图1 测出U AB= 图2 测出电压U BE= f r 《C 语言程序设计》实验报告 专业: 班级: 学号: 学生姓名: 实验日期: 成绩: 指导老师: 实验单元一 程序基本结构设计 一、实验题目 实验一 熟悉VC++环境 二、实验目的 1. 熟悉C 程序编辑环境,掌握主要菜单项的作用。 2. 熟悉编写一个C 程序的上机过程(编辑、编译、链接和运行)。 3. 熟悉C 程序的基本输入输出语句 三、实验内容 1. 书本第一章的例一程序。 2. 由键盘输入两个整数,求得它们的和并输出至屏幕。 四、实验环境 1.硬件环境:当前所有电脑硬件环境均支持。 2.软件环境:Visual C++ 6.0 五、实验代码及结果(程序运行结果请以截屏图给出) 1.源程序代码: #include "stdio.h"int main(){int a,b,sum;a=2;b=3; sum=a+b; printf("007zhang\nsum=%d\n",sum);return 0;} 运行结果为: 2.源程序代码: 运行结果为: 六、实验心得(请对每个实验题目编程及调试运行中遇到的问题及解决方案进行简单总结) f r 《C 语言程序设计》实验报告 专业: 班级: 学号: 学生姓名: 实验日期: 成绩: 指导老师: 实验单元一 程序基本结构设计 一、实验题目 实验二 顺序结构程序设计 二、实验目的 (1)掌握C 语言数据类型以及变量的声明。 (2)掌握C 语言的赋值运算符、赋值表达式、赋值语句。(3)掌握C 语言的整型和字符型的混合运算。(4)掌握C 语言的输入、输出函数的使用格式。 三、实验内容 1.有人用温度计测量出华氏温度,现输入华氏温度f ,请编写程序把它转换为摄氏温度c 。已知华氏温度和摄氏温度有如下关系:c=5/9(f-32)。 2.输入长方形的长和宽,编程求该长方形的周长和面积。(要求周长和面积保留两位小数) 3. 将字符串“China ”译成密码,译码规则是:用字母表顺序中原来字母后面的第5个字母替代原来的字母。请编写程序实现译码并输出。 四、实验环境 1.硬件环境:当前所有电脑硬件环境均支持。 2. 软件环境:Visual C++ 6.0 五、实验代码及结果(程序运行结果请以截屏图给出) 1.源程序代码: 运行结果为: 2.源程序代码: 运行结果为: 3.源程序代码:运行结果为: 六、实验心得(请对每个实验题目编程及调试运行中遇到的问题及解决方案进 电路分析实验报告第一 次 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】 电路分析实验报告 实验报告(二、三) 一、实验名称实验二 KCL与KVL的验证 二、实验目的 1.熟悉Multisim软件的使用; 2.学习实验Multisim软件测量电路中电流电压; 3.验证基尔霍夫定理的正确性。 三、实验原理 KCL为任一时刻,流出某个节点的电流的代数和恒等于零,流入任一封闭面的电流代数和总等于零。且规定规定:流出节点的电流为正,流入节点的电流为负。 KVL为任一时刻,沿任意回路巡行,所有支路电压降之和为零。且各元件取号按照遇电压降取“+”,遇电压升取“-”的方式。沿顺时针方向绕行电压总和为0。电路中任意两点间的电压等于两点间任一条路径经过的各元件电压降的代数和。 四、实验内容 电路图截图: 1.验证KCL: 以节点2为研究节点,电流表1、3、5的运行结果截图如下: 由截图可知,流入节点2的电流为2.25A,流出节点2 的电流分别为750mA和1.5A。2.25=0.75+1.5。所以,可验证KCL成立。2.验证KVL: 以左侧的回路为研究对象,运行结果的截图如下: 由截图可知,R3两端电压为22.5V,R1两端电压为7.5V,电压源电压为30V。22.5+7.5-30=0。所以,回路电压为0,所以,可验证KVL成立。 一、实验名称实验三回路法或网孔法求支路电流(电压) 二、实验目的 1.熟悉Multisim软件的使用; 2.学习实验Multisim软件测量电路中电流电压; 3.验证网孔分析法的正确性。 三、实验原理 为减少未知量(方程)的个数,可以假想每个回路中有一个回路电流。若回路电流已求得,则各支路电流可用回路电流线性组合表示。这样即可求得电路的解。回路电流法就是以回路电流为未知量列写电路方程分析电路的方法。网孔电流法就是对平面电路,若以网孔为独立回路,此时回路电流也称为网孔电流,对应的分析方法称为网孔电流法。 四、实验内容 实验电路截图: 如图所示,i1,i2,i3分别为三个网孔的电流,方向如图所示,均为顺时针。 网孔一中含有一个电流源,而且电流源仅在网孔一中,所以,网孔一的电流就是电流源电流2A。设电流源两端电压为U7。 实验1简单判定性问题求解 一、实验学时 完成本实验需4学时。 二、实验目的 1、阅读程序题 (1)掌握C语言数据类型,熟悉如何定义一个整型、字符型的变量,以及对它们赋值的方法; (2)掌握不同的类型数据之间赋值的规律; (3)掌握数据在内存中的存储方式; (4)学会输入、输出函数的基本格式和使用方法; (5)学会使用有关算术运算符、逻辑运算符、关系运算符,以及包含这些运算符的表达式。 2、编程题 (1)如何运用if-else判定性结构进行程序设计; (2)如何运用switch判定性结构进行程序设计。 3、调试题 (1)熟悉C程序的编辑、编译、连接和运行的过程。 三、实验指导 为了达到最佳的实验效果,以下提供几条适于编程的指导意见,可供参考。 1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意观察数据在内存中的存储方式、含不同种运算符表达式的输出结果。 2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,完成程序的设计。要注意简单判定性问题的结构选择。 3、调试题应明确程序的调试、测试是一项非常烦琐的工作,也是非常重要的工作。对于初学者来说应该建立良好的习惯,在调试程序的时候,应该尽可能考虑到程序运行时各种可能情况。 四、实验内容 1、阅读程序题 (1)main( ) { /*定义字符型变量*/ char c1,c2; /*向字符变量赋以整数*/ c1=97; c2=98; printf("%c %c\n",c1,c2); /*以字符形式输出*/ printf("%d %d\n",c1,c2); /*以整数形式输出*/ } 思考:可否改成int c1,c2;输出结果是?相同 (2)main() { int a=7,b=5; printf("%d\n",b=b/a); } 思考:若将printf语句中%d变为%f,可否输出分式的值?可以(3)main() { int a=9; a+=a-=a+a; /*包含复合的赋值运算符的赋值表达式*/ printf("%d\n",a); } 思考:赋值表达式a+=a-=a+a的求解步骤? 第一步:a=a-(a+a)=-9 第二步a=a+a=18 (4)main() { int k=-1; printf("%d,%u\n",k,k); 实验二电路原理图的绘制实验报告 一、实验目的 (1)掌握设计项目的建立和管理; (2)掌握原理图图纸参数的设置、原理图环境参数的设置; (3)掌握元器件库的装载,学会元器件、电源、接地、网络标号、总线、输入/输出端口、节点等电路元素的选取、放置等操作; (4)掌握电路元素的参数修改方法。 二、实验原理 1、创建一个新的项目文件。 在Altium Designer 10中,根据不同的设计主要有三种形式的项目文件,分别是:PCB项目文件,文件后缀为PrjPCB;FPGA项目文件,文件后缀为PrjFPG;库文件,根据电路原理图和印制电路板图设计的不同,其后缀有SchLib和PcbLib 两种。在我们实验中均建立一个PCB项目文件。 (1)执行菜单命令“文件\工程\PCB Project”,建立一个空的项目文件后的项目工作面板; (2)执行菜单命令“File\Save Project”,保存文件。 2、新建原理图文件 (1)执行菜单命令“File\New\Schematic”,在刚才建立的项目中新建原理图,默认的文件名为Sheet1.SchDoc。 (2)执行菜单命令“File\Save Project”,保存文件。 3、设置原理图选项 (1)图纸参数设定:执行菜单命令“设计\文档选项”,系统弹出文档选项对话框,在此对话框的“方块电路选项”标签页设置图纸参数。 (2)填写图纸设计信息:执行菜单命令“设计\文档选项”,系统弹出文档选项对话框,在此对话框的“参数”标签页设置图纸参数。 (3)原理图环境参数设置:执行菜单命令“工具\设置原理图参数”,系统将弹出“喜好”对话框,在此对话框的左边树状图中选择原理图选项,此选项组中有12个选项卡,它们分别是原理图参数选项、图形编辑参数选项、编译器选项、导线分割选项、默认的初始值选项和软件参数选项等,分别用于设置原理图绘制过程中的各类功能选项。 《C语言程序设计》 实 验 手 册 《C语言程序设计》实验课程简介 课程名称:C语言程序设计实验 课程性质:专业必修课 课程属性:专业必修课 学时学分:学时32 学分1 开课实验室:软件实验室 面向专业:网络工程、软件工程、计算机科学与技术 一、课程的任务和基本要求 C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实验性教育环节。本课程的主要任务是让学生充分掌握C 语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。 二、实验项目 【实验一】最简单的C程序---顺序程序设计 【实验二】逻辑运算和判断选取控制 【实验三】循环结构程序设计(一) 【实验四】循环结构程序设计(二) 【实验五】函数 【实验六】数组(一) 【实验七】数组(二) 【实验八】指针 【实验九】结构体、共用体和文件 【实验十】C程序综合性实验 三、有关说明 1、与其它课程和教学环节的联系: 先修课程:计算机文化 后续课程:面向对象程序设计、Java程序设计、数据结构、软件工程 2、教材和主要参考书目: (1)教材: 《C程序设计习题解答与上机指导》,谭浩强吴伟民著,北京:清华大学出版社,2003年。(2)主要参考书目: 《C语言程序设计》谭浩强主编,清华大学出版社,2003年。 三、实验内容 实验一最简单的C程序---顺序程序设计 (验证性实验 2学时) (一)、实验目的 1.熟悉win-tc程序运行环境 2.掌握运行一个C程序的步骤,理解并学会C程序的编辑、编译、链接方法 3.掌握C语言中使用最多的一种语句——赋值语句 4.掌握数据的输入输出方法,能正确使用各种格式控制符 (二)、实验内容 1.写出下列程序的运行结果 (1)#include 本科生实验报告 实验课程电力系统分析 学院名称核技术与自动化工程学院 专业名称电气工程及其自动化 学生姓名 学生学号 指导教师顾民 实验地点6C901 实验成绩 二〇一五年十月——二〇一五年十二月 实验一MATPOWER软件在电力系统潮流计算中的应用实例 一、简介 Matlab在电力系统建模和仿真的应用主要由电力系统仿真模块(Power System Blockset 简称PSB)来完成。Power System Block是由TEQSIM公司和魁北克水电站开发的。PSB是在Simulink环境下使用的模块,采用变步长积分法,可以对非线性、刚性和非连续系统进行精确的仿真,并精确地检测出断点和开关发生时刻。PSB程序库涵盖了电路、电力电子、电气传动和电力系统等电工学科中常用的基本元件和系统仿真模型。通过PSB可以迅速建立模型,并立即仿真。PSB程序块程序库中的测量程序和控制源起到电信号与Simulink程序之间连接作用。PSB程序库含有代表电力网络中一般部件和设备的Simulink程序块,通过PSB 可以迅速建立模型,并立即仿真。 1)字段baseMVA是一个标量,用来设置基准容量,如100MVA。 2)字段bus是一个矩阵,用来设置电网中各母线参数。 ①bus_i用来设置母线编号(正整数)。 ②type用来设置母线类型, 1为PQ节点母线, 2为PV节点母线, 3为平衡(参考)节点母线,4为孤立节点母线。 ③Pd和Qd用来设置母线注入负荷的有功功率和无功功率。 ④Gs、Bs用来设置与母线并联电导和电纳。 ⑤baseKV用来设置该母线基准电压。 ⑥Vm和Va用来设置母线电压的幅值、相位初值。 ⑦Vmax和Vmin用来设置工作时母线最高、最低电压幅值。 ⑧area和zone用来设置电网断面号和分区号,一般都设置为1,前者可设置范围为1~100,后者可设置范围为1~999。 3)字段gen为一个矩阵,用来设置接入电网中的发电机(电源)参数。 ①bus用来设置接入发电机(电源)的母线编号。 ②Pg和Qg用来设置接入发电机(电源)的有功功率和无功功率。 ③Pmax和Pmin用来设置接入发电机(电源)的有功功率最大、最小允许值。 ④Qmax和Qmin用来设置接入发电机(电源)的无功功率最大、最小允许值。 ⑤Vg用来设置接入发电机(电源)的工作电压。 1.发电机模型 2.变压器模型 3.线路模型 4.负荷模型 5.母线模型 二、电力系统模型 电力系统中输送和分配电能的部分称为电力网,它包括升降压变压器和各种电压等级的输电线路、动力系统、电力系统和电力网简单示意如图 实验5三种基本结构的综合应用 4.一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:除1和它本身外,不能被其它整数整除的正整数称为素数,1不是素数,2是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。试求[100,999]之内的所有逆向超级素数的个数。 #include "stdio.h" main() {int i,j,k,m,p,q,n=0; for(i=100;i<=999;i++) {for(j=2;j=i) /*三位数是素数时*/ {k=i%100; /*去掉百位数字*/ if(k>=10) /*十位数字不是0时*/ {for(m=2;m =p)n++;}}}} printf("%d\n",n);} Key:57 5.求[2,400]中相差为10的相邻素数对的对数。 #include "stdio.h" main() {int i,j,k,m,p,q,n=0; for(i=2;i<=400;i++) {for(j=2;j=i) /*i是素数时*/ {for(k=i+1;k=k)break;} /*k是素数时终止if语句的外层循环*/ if(k>=i+10) /*[i+1,i+9]不是素数时*/ {for(q=2;q 电子科技大学成都学院 (微电子技术系) 实验报告书 课程名称:电路原理图设计及Hspice 学号: 姓名: 教师: 年06月15日 实验一基本电路图的Hspice仿真 实验时间:同组人员: 一、实验目的 1.学习用Cadence软件画电路图。 2.用Cadence软件导出所需的电路仿真网表。 3.对反相器电路进行仿真,研究该反相器电路的特点。 二、实验仪器设备 Hspice软件、Cadence软件、服务器、电脑 三、实验原理和内容 激励源:直流源、交流小信号源。 瞬态源:正弦、脉冲、指数、分线段性和单频调频源等几种形式。 分析类型:分析类型语句由定义电路分析类型的描述语句和一些控制语句组成,如直流分析(.OP)、交流小信号分析(.AC)、瞬态分析(.TRAN)等分析语句,以及初始状态设置(.IC)、选择项设置(.OPTIONS)等控制语句。这类语句以一个“.”开头,故也称为点语句。其位置可以在标题语句之间的任何地方,习惯上写在电路描述语句之后。 基本原理:(1)当UI=UIL=0V时,UGS1=0,因此V1管截止,而此时|UGS2|> |UTP|,所以V2导通,且导通内阻很低,所以UO=UOH≈UDD,即输出电平. (2)当UI=UIH=UDD时,UGS1=UDD>UTN,V1导通,而UGS2=0<|UTP|,因此V2截止。此时UO=UOL≈0,即输出为低电平。可见,CMOS反相器实现了逻辑非的功能. 四、实验步骤 1.打开Cadence软件,画出CMOS反相器电路图,导出反相器的HSPICE网表文件。 2.修改网表,仿真出图。 3.修改网表,做电路的瞬态仿真,观察输出变化,观察波形,并做说明。 4.对5个首尾连接的反相器组成的振荡器进行波形仿真。 5.分析仿真结果,得出结论。 五、实验数据 输入输出仿真: 网表: * lab2c - simple inverter .options list node post .model pch pmos .model nch nmos *.tran 200p 20n .dc vin 0 5 1m sweep data=w .print v(1) v(2) .param wp=10u wn=10u .data w wp wn 10u 10u 20u 10u 40u 10u 40u 5u .enddata vcc vcc 0 5 vin in 0 2.5 *pulse .2 4.8 2n 1n 1n 5n 20n cload out 0 .75p m1 vcc in out vcc pch l=1u w=wp m2 out in 0 0 nch l=1u w=wn .alter vcc vcc 0 3 .end 图像: 瞬态仿真: 网表: * lab2c - simple inverter .options list node post .model pch pmos .model nch nmos .tran 200p 20n .print tran v(1) v(2) vcc vcc 0 5 vin in 0 2.5 pulse .2 4.8 2n 1n 1n 5n 20n cload out 0 .75p m1 vcc in out vcc pch l=1u w=20u大一上期C语言实验报告1熟悉实验环境
电路分析实验报告
C语言实验报告参考答案 原
电路实验报告1--叠加原理
电路分析实验报告-第一次
C语言实验报告参考答案
叠加原理 实验报告范文(含数据处理)
:C语言实验报告册-2016.3资料
电路分析-等效电源定理-实验报告.docx
2010C语言实验报告参考答案
电路基础实验报告
C语言实验报告合集
电路分析实验报告第一次完整版
哈工大(威海)c语言实验报告册答案
实验二 电路原理图的绘制实验报告
C语言实验报告参考答案
电力系统分析实验报告
C语言实验报告参考源代码
电路原理图设计及Hspice实验报告