高级语言程序设计课程实践.docx
- 文档编号:7382961
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:39
- 大小:266.46KB
高级语言程序设计课程实践.docx
《高级语言程序设计课程实践.docx》由会员分享,可在线阅读,更多相关《高级语言程序设计课程实践.docx(39页珍藏版)》请在冰豆网上搜索。
高级语言程序设计课程实践
陕西省高等教育自学考试
高级语言程序设计课程
实践环节考核报告
准考证号:
010*********考生姓名:
郭晶
所学专业:
计算机及应用专业层次:
大专
考核地点:
西安电子科技大学考核时间:
2012、5、18
考核桌(机)号:
同组考核者姓名:
实践考核评语及成绩评定(由指导教师填写)
教师签名:
年月日
主考院校:
西安电子科技大学
《高级语言程序设计》课程实践
实验环境
1.硬件:
CPU2.4G;内存256M;硬盘40G;显示器17;
2.软件:
操作系统windowsxp
3.实验环境:
TurboC,word2003
实验一数据类型、运算符、表达式和数据的输入输出
一、实验目的
1.掌握C语言的基本数据类型,熟悉不同类型数据之间运算和赋值的转换规律,以及字符型、整型数据之间的混合引用。
2.掌握运算符的优先级和结合方向,特别是増一(++)和减一(——)运算符的使用。
3.掌握C程序的编辑、编译、连接和运行的过程。
二、实验内容
手工分析程序中各变量的输出值,运行程序验证手工分析的结果。
1.符号位的扩展。
main()
{charc1,c2;
Inti1,i2;
unsignedu1,u2;
c1=’a’;c2=c1-32;
printf(“%c,%c,%d,%d\n”,c1,c2,c1,c2);
c1=’\176’;c2=’\376’;
i1=c1;12=c2;
u1=’\176’;u2=’\376’;
printf(“%d,%d,%u,%u\n”,i1,i2,u1,u2);
}
运行结果:
‘a’,’A’,97,65
126,-2,126,65534
2、算术表达式的计算。
上机运行并输出结果如下:
main()
{inti1,i2;
charc1,c2;
floatf;
i1=5;c1='A';
i2=i1+++i1;c2=--c1%2;
printf("%d,%d\n",i2,c2);
i1=10;i1*=i1-5;i2=i1%3;
printf("%d,%d\n",i1,i2);
i1=3;f=15/(i1--);
printf("%5.2f\n",f);
}
输出结果:
10,0
50,2
5.00
main()
{inta=5,b=4,c=3,i;
i=a>b>c;
printf("%d,%d\n",i,a||b+c&&c-b);
a=b=c=2;
i=a>b&&(c=0);
printf("%d,%d,%d,%d\n",i,a,b,c);
i=(a==b?
(c=0):
a>b?
(c=1):
(c=-1));
printf("%d,%d,%d,%d\n",i,a,b,c);
}
运行结果:
0,1
0,2,2,2
0,0,2,0
运行程序:
运行结果:
main()
{inta=5,b=4,c=3,i;
i=a>b>c;
printf("%d,%d\n",i,a||b+c&&c-b);
a=b=c=2;
i=a>b&&(c=0);
printf("%d,%d,%d,%d\n",i,a,b,c);
i=(a==b?
(c=0):
a>b?
(c=1):
(c=-1));
printf("%d,%d,%d,%d\n",i,a,b,c);
}
运行结果:
0,1
0,2,2,2
0,0,2,0
运行程序:
运行结果:
源代码:
main()
{inta=5,b=4,c=3,i;
i=a>b>c;
printf("%d,%d\n",i,a||b+c&&c-b);
a=b=c=2;
i=a>b&&(c=0);
printf("%d,%d,%d,%d\n",i,a,b,c);
i=(a==b?
(c=0):
a>b?
(c=1):
(c=-1));
printf("%d,%d,%d,%d\n",i,a,b,c);
}
运行结果:
0,1
0,2,2,2
0,0,2,0
运行程序:
运行结果:
main()
{inta=5,b=4,c=3,i;
i=a>b>c;
printf("%d,%d\n",i,a||b+c&&c-b);
a=b=c=2;
i=a>b&&(c=0);
printf("%d,%d,%d,%d\n",i,a,b,c);
i=(a==b?
(c=0):
a>b?
(c=1):
(c=-1));
printf("%d,%d,%d,%d\n",i,a,b,c);
}
运行程序:
运行结果:
运行结果:
0,1
0,2,2,2
0,0,2,0
5、逗号表达式的计算。
main()
{inta=2,b=3,c,i;
i=(b=a+1,c=b+2);
printf("%d,%d,%d,%d\n",a,b,c,i);
b=a++,c=++b,i=c+++a;
printf("%d,%d,%d,%d\n",a,b,c,i);
}
实验二基本语句的使用
一、实验目的
1.掌握if、switch语句的使用,掌握分支程序设计的一般方法。
2.掌握witch、do-while、for语句实现循环的方法,注意三种循环语句判断循环条件和执行循环体的先后顺序。
3.掌握用分支、循环的方法实现一些常用方法。
4.学习调试程序的方法。
二、实验内容
1.从键盘输入一个字符,判断是字母、数字还是其它字符。
将程序输出部分补充完整。
main()
{charch;
scanf("%c",&ch);
if('a'<=ch&&ch>='z'||'A'<=ch&&ch>='Z')
printf("%cisletter.\n",ch);
elseif('0'<=ch&&ch>='9')
printf("%cisdigit.\n",ch);
elseprintf("%cisother.\n",ch);
}
程序运行:
输出结果:
输出结果:
从键盘上输入:
4
输出结果:
4isother
输入:
B
输出结果:
Bisdigit
输入:
b
输出结果:
bisletter
2.输入X的值,计算Y的值。
X(x<1)
Y=2X-1(1= 3X-11(x.>=10) #include main() {intx,y; scanf("%d",&x); if(x<1)y=x; elseif(x<10)y=2*x-1; elsey=3*x-11; printf("%d",y); } 输入: x=0.4输出: 0.4 输入: x=3输出: 5 输入: x=11输出: 22 3. X+1(0≤x≤1.5) 2x²+x+1(1.5≤x≤3.0) X+sinx(3.0≤x≤6.0) x²+cosx(6.0≤x≤9.0) 0(x≥9.0) 用if语句或switch语句计算. Y= #include main() {floatx,y; scanf("%f",&x); if(x>0&&x<=1.5) y=x+1; elseif(x>=1.5&&x<3.0) y=2*x*x+x+1; elseif(x>=3.0&&x<6.0) y=x+sin(x); elseif(x>=6.0&&x<9.0) y=x*x+cos(x); elseif(x≥9.0); y=0; } 输入数据: 1 结果: 2 4.输入一个不超过5位的正整数,要求1.求出它是几位数;2.分别打印出每一位数字;3.按逆序打印出各位数字,例如原数为123,应输出321. main(){ intdata; inta,b,c,d,e; printf("enter: "); scanf("%d",&data); if(data<10){ printf("1\n"); } if(data>=10&&data<100){ a=data%10; b=data/10; printf("2\n"); printf("%d%d\n",a,b); } if(data>=100&&data<1000){ a=data/100; b=data/10%10; c=data%10; printf("3\n"); printf("%d%d%d\n",c,b,a); } if(data>=1000&&data<10000){ a=data/1000; b=data/100%10; c=data/10%10; d=data%10; printf("4\n"); printf("%d%d%d%d\n",d,c,b,a); } if(data>=10000&&data<100000){ a=data/10000; b=data/1000%10; c=data/100%10; d=data/10%10; e=data%10; printf("5\n"); printf("%d%d%d%d%d\n",e,d,c,b,a); } getch(); } 输入: 123 输出结果为: 321 5.计算数列: 1、3、5、……2n-1、……的前n项之和,其中的n的键盘输入,将程序补充完整。 (分别用三种循环语句来完成) 方法一: (用for语句实现) main() {longs,n,k,i; scanf("%ld",&n); k=2*n-1; s=0; for(i=1;i<=k;i++)s+=i; printf("1+3+……+%ld=%ld\n",k,s); } 方法二(用while语句实现) main() {longs=0,n,i=1; scanf("%ld",&n); while(i<=(2*n-1)); {s+=i; i=i+2; } printf("1+3+……+%ld=%ld\n",2*n-1,s); } 方法三(用do-while语句实现) main() {longs=0,n,i=1; scanf("%ld",&n); do {s+=i; i=i+2; }while(i<=(2*n-1)); printf("1+3+……+%ld=%ld\n",2*n-1,s); } 7、利用公式e=1+1/1! +1/2! +……+1/n! 计算e的值,要求最后一项小于10-6; /1+1/1! +1/2! +....+1/n! =e main() {inti=1,n=1; floatp=1.0,e=1.0; while(p>10E-6) {n=n*i; p=1.0/n; i++; e=e+p; } printf("%f=1+1/1! +1/2! +....+1/n! \n",e); } 结果: e=1+1/1! +1/2! +…+1/n! =2.718282 实验三数组及指针的应用 一、实验目的 1.掌握指针的概念,能够正确使用指针变量。 2.掌握一维数组和二维数组的定义及初始化的方法。 3.掌握使用下标法和指针法引用数组元素。 4.掌握用一维数组的方法处理二维数组。 5.掌握用字符数组存放字符串的操作方法,能正确使用指向字符串的指针量。 6.掌握系统提供的字符串处理函数。 7.掌握与数组有关的算法。 二、实验内容 1.用下标和指针对一维数组进行输出。 分析程序运行结果,然后运行程序进行验证。 main() {inti,a[5]={1,2,3,4,5},b[3]={2,4,6},*pb=b; for(i=0;i<5;i++) printf("%5d",a[i]); printf("\n"); for(i=4;i>=0;i--) printf("%5d",*(a+i)); printf("\n"); for(i=0;i<3;i++) printf("%5d",pb[i]); printf("\n"); for(i=2;i>=0;i--) printf("%5d",*(pb+i)); printf("\n"); } 运行程序: 运行结果: 输出结果: 1,2,3,4,55,4,3,2,12,4,66,4,2 2、输入字符串a,b,将字符串b连接在、字符串a之后。 将程序补充完整。 (不使用字符串连接函数) #include main() { chara[80],b[40],*pa=a,*pb=b; gets(pa);gets(pb); while(*pa! ='\0')pa++; while(*pb! ='\0') {*pa=*pb; pa++; pb++; } puts(a); puts(b); } 运行结果: 如数组a为: abc,数组b为def 结果是: abcdef 3、从键盘上输入一个十进制正整数,将其转化成八进制,然后输出(要求用字符型存放八进制数) main() {inti=0,a[100],x,k; scanf("%d",&x); while(x! =0){ a[i]=x%8; x/=8; i++; } for(k=i-1;k>=0;k--) printf("%d",a[k]); }_ 程序运行结果: 4、输入10个正整数,存入数组a中然后按从大到小的顺序进行排序并输出。 main() {inti,j,m,n,a[10] for(i=0;i<10;i++) scanf("%d",&a[i]); for(m=1;m<10;m++) for(j=9,i=0;i<10-m;i++,j--) if(a[j]>a[j-1]) {n=a[j],a[j]=a[j-1],a[j-1]=n;} for(i=10;i>0;i--) printf("%d",a[i]); printf("\n"); } 实验结果: 12,36,-35,56,-15,35,40,58,-100, 58,56,40,36,35,12,-15,-35,-100 6、输入一行数字字符,用整型数组统计其中每个数字字符的个数,下标为零的元素存放‘0’的个数,下标为一的元素存放‘1’的个数,……。 #include #include intmain() { inta[10]={0}; charch='\0'; printf("请输入数字: "); do { ch=getche(); if(ch>='0'&&ch<='9') { a[ch-'0']++; } }while((ch>='0'&&ch<='9'));//非数字退出循环 for(inti=0;i<10;++i) { printf("\n%d,%d个",i,a[i]); } return0; } 7、用二维字符型数组存放若干个字符串,利用系统提供的字符串处理函数找出其中最大的字符串。 #include #include #define N 3 void main() { char a[10][10]; int i;char *max; for(i=0;i { printf("input %d strings: ",i+1); gets(a[i]); } max=a[0]; for(i=1;i if(strcmp(max,a[i])<0)max=a[i]; puts(max); } 实验四函数及指针的应用 一、实验目的 1.掌握函数定义和调用的方法。 2.掌握函数之间数据传递的方法,理解“值传递”和“地址传递”的区别。 3.掌握函数的嵌套调用和递归调用的方法。 4.掌握数据存贮类型的概念和使用方法。 二、实验内容 1、利用函数求一维数组中的最大值和最小值,将程序补充完成。 #definen5 main() {voidmax_min(); inta[n],i,max,min; for(i=0;i scanf("%d",&a[i]); max_min(a,&max,&min,n); for(i=0;i printf("%5d",a[i]); printf("\nmax=%d,min=%d\n",max,min); } voidmax_min(a,p_max,p_min,n) inta[],*p_max,*p_min,n; {inti; *p_max=*p_min=a[0]; for(i=1;i {if(a[i]>*p_max)*p_max=a[i]; if(a[i]<*p_min)*p_min=a[i]; } return; } 实验结果: 8,32,46,15,20 max=46,min=8 2.分析程序运行结果,然后运行程序进行验证。 比较静态变量与自动变量的区别。 源程序: main() {voidfun(); fun(); fun(); } voidfun() {inta=0; staticintb=0; a++;b++; printf("%d,%d\n",a,b); } 运行程序: 运行结果: 输出结果: 1,11,21,11,2 4、分别用函数递归和非递归的方法求两个整数的最大公约数。 要求在主函数中输入两个整数并输出最大公约数。 1)非递归 #include intmain() { intm,n; intm_cup,n_cup,res;/*被除数,除数,余数*/ printf("Entertwointeger: \n"); scanf("%d%d",&m,&n); if(m>0&&n>0) { m_cup=m; n_cup=n; res=m_cup%n_cup; while(res! =0) { m_cup=n_cup; n_cup=res; res=m_cup%n_cup; } printf("Greatestcommondivisor: %d\n",n_cup); } elseprintf("Error! \n"); return0; } 2)递归 #include intgetGreatestCommonDivisor(intnum1,intnum2) { inttemp; temp=num1%num2; if(temp==0) { returnnum2; } else { returngetGreatestCommonDivisor(num2,temp); } } intmain() { intm,n; intm_cup,n_cup,res;/*被除数,除数,余数*/ printf("Entertwointeger: \n"); scanf("%d%d",&m,&n); if(m>0&&n>0) { m_cup=m; n_cup=n; printf("Greatestcommondivisor: %d\n",getGreatestCommonDivisor(m_cup,n_cup)); } elseprintf("Error! \n"); return0; } 5.用函数递归的方法求Fibonacci数列的前n项。 int(m); intm; {if(n<0) {printf("inputerror! \n"); return(-1); else if(m==0||m==1) return (1); else return(f(m-2)+f(m-1)); } main() {inti,f[100]; scanf(%d%,&n); for(i=0;i {F[i]=f[i];printf(“%d”,F(i);)} 实验结果: 1235 13213455 144233377610 1597258441816765 只部分结果。 。 。 。 。 。 9 7、编写一函数,统计由实参传来的一个字符串中的字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 #include voidcount(char*s,int*a,int*b,int*c,int*d) { *a=*b=*c=*d=0; while(*s) { if('A'<=*s&&*s<='Z'||'a'<=*s&&*s<='z') (*a)++; elseif('0'<=*s&&*s<='9') (*b)++; elseif(*s=='') (*c)++; else (*d)++; s++; } } intmain() { chars[100]; intlc,dc,sc,oc; printf("输入字符串: \n"); gets(s); count(s,&lc,&dc,&sc,&oc); printf("字母: %d\n",lc); printf("数字: %d\n",dc); printf("空格: %d\n",sc); printf("其它: %d\n",oc); return0; } 8、利用函数计算一个5*5矩阵的主对角线元素之和,在主函数中输出矩阵以及主对角线元素之和。 #include intmain(intargc,char*argv[]) { inti,j; intsum=0; intmatrix[5][5]={0}; printf("请输入一个5×5矩阵: \n"); for(i=0;i<5;i++) for(j=0;j<5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 语言程序设计 课程 实践