资源预览内容
第1页 / 共56页
第2页 / 共56页
第3页 / 共56页
第4页 / 共56页
第5页 / 共56页
第6页 / 共56页
第7页 / 共56页
第8页 / 共56页
第9页 / 共56页
第10页 / 共56页
亲,该文档总共56页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
- 1 -实验1简单判定性问题求解一、实验学时完成本实验需 4 学时。二、实验目的1、阅读程序题(1)掌握 C 语言数据类型,熟悉如何定义一个整型、字符型的变量,以及对它们赋值的方法;(2)掌握不同的类型数据之间赋值的规律;(3)掌握数据在内存中的存储方式;(4)学会输入、输出函数的基本格式和使用方法;(5)学会使用有关算术运算符、逻辑运算符、关系运算符,以及包含这些运算符的表达式。2、编程题(1)如何运用 if-else 判定性结构进行程序设计;(2)如何运用 switch 判定性结构进行程序设计。3、调试题(1)熟悉 C 程序的编辑、编译、连接和运行的过程。三、实验指导为了达到最佳的实验效果,以下提供几条适于编程的指导意见,可供参考。1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意观察数据在内存中的存储方式、含不同种运算符表达式的输出结果。2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,完成程序的设计。要注意简单判定性问题的结构选择。3、调试题应明确程序的调试、测试是一项非常烦琐的工作,也是非常重要的工作。对于初学者来说应该建立良好的习惯,在调试程序的时候,应该尽可能考虑到程序运行时各种可能情况。- 2 -四、实验内容1、阅读程序题 (1)main( ) /*定义字符型变量*/char c1,c2; /*向字符变量赋以整数*/c1=97;c2=98;printf(“%c %cn“,c1,c2); /*以字符形式输出*/printf(“%d %dn“,c1,c2); /*以整数形式输出*/ 该程序的输出结果是 a b(换行)97 98 。思考:可否改成思考:可否改成 int c1,c2;输出结果是?;输出结果是? 相同(2)main() int a=7,b=5;printf(“%dn“,b=b/a); 该程序的输出结果是 0 。思考:若将思考:若将 printf 语句中语句中%d 变为变为%f,可否输出分式的值?,可否输出分式的值? 可以(3)main() int a=9;a+=a-=a+a; /*包含复合的赋值运算符的赋值表达式*/printf(“%dn“,a); 该程序的输出结果是 -18 。思考:赋值表达式思考:赋值表达式 aaaa 的求解步骤?的求解步骤? 第一步:a=a-(a+a)=-9 第二步 a=a+a=18 (4)main() int k=-1;printf(“%d,%un“,k,k); - 3 -该程序的输出结果是 -1 4294967295 。 思考:思考:1 在内存中的存储形式?在内存中的存储形式? 取反加一取反加一 11111111111111111111111111111111(32 个)(5)main() unsigned x1;int b=-1;x1=b; /*有符号数据传送给无符号变量*/printf(“%u“,x1); 该程序的输出结果是 4294967295 。 思考:不同类型的整型数据相互赋值时,规则是什么?思考:不同类型的整型数据相互赋值时,规则是什么? http:/blog.csdn.net/happymawolf/article/details/6342937(有符号赋值给无符号)(6)main() int a=3,b=4,c=5;printf(“%dn“,(!(a #include void main() float score; int level; printf(“请输入成绩:n“); scanf(“%f“, if (score100|score #include void main() int nYear; float fInput; double fS,fOut; printf(“输入存储年份:n“); scanf(“%d“, printf(“输入本金数额:n“); scanf(“%f“, if (fInputb)int r; for(r=1;r90)break;printf(“area=%5.2fn“,area);开始r=1输出area结束是ir90.0?- 11 -四、实验内容1、阅读程序题。(1) #include main( )int x=-1;dox=x*x; while(!x);printf(“%x=n“,x);该程序的输出结果是 1= 。(2)#includemain( )int num=0;while(num main( ) int a,b;for (a=1,b=1 ; a=20) break;- 12 -if (b%3=1) b+=3 ; continue ; b-=5;printf(“%dn”,a);该程序的输出结果是 8 。(4)#include main( ) int y=2,a=1;while (y-!=-1)do a*=y ;a+ ; while (y-) ;printf(“%d,%dn”,a,y);该程序的输出结果是 1,-2 。2、编程序并上机调试运行(包括题目及要求、流程图、程序清单、测试数据及结果)(1) 输入整数 n,求 n!(1 #include void main() int i=1,n,nResult=1; printf(“请输入 n(0=20) printf(“输入错误n“); else while (i #include void main() int n=100,a,b,c; while (n #include #include void main() long int n=0,a,b; int a1,b1; while (n #include void main() int a=0,b=0,c=0,d; while (a int f(int m) int k=2; k+; return k+m; void main( ) int s; s=f(2); printf(“%d, %dn“, s, f(s); (2) 下面程序的输出结果是 777 。#include int f( int a ) int b=0; int c=3; b=b+1; c=c+1; return(a+b+c); void main() int a=2,i; for( i =0;i void swap(int *a, int *b) int *t; t=a;a=b;b=t; void main() int x=3,y=5,*p= swap(p,q); printf(“%d %dn“,*p,*q); (4) 下面程序的输出结果是 12 。#include - 18 -#define M(x,y,z) x*y+z void main() int a=1,b=2,c=3; printf(“%dn“, M(a+b,b+c,c+a); (5) 下面程序的输出结果是 19 。#include int M(int x, int y, int z) int p; p=x*y+z; return(p); void main() int a=1,b=2,c=3; printf(“%dn“, M(a+b,b+c,c+a); 2、编程序并上机调试运行。(1) 请设计一个函数 fun(),它的功能是:判断 pm 是否是素数。若pm 是素数,返回 1;若不是素数,返回 0。pm 的值由主函数从键盘读入。函数 fun():流程图程序代码int fun(int pm) int i=2; while (i #include void main() int pm; printf(“请输入要检测的 数字:n“); scanf(“%d“, printf(“%dn“,fun(pm); 开始结束输入pm输出结 果调用函数- 20 -(2) 请设计一个函数 fun(),它的功能是:将两个两位数的正整数 a、b 合并形成一个整数放在 c 中。合并的方式是:将 a 数的十位和个位 数依次放在 c 数的千位和十位上, b 数的十位和个位数依次放在 c 数的 百位和个位上。例如,当 a45,b=12。调用该函数后,c=4152。函数 fun():主函数 main():流程图程序代码流程图程序代码int fun(int x,int y) int c; c=x%10*10+x/10*1000+y %10+y/10*100; return (c); #include #include void main() int a,b; printf(“请输入要组合的 数字(都为二位数):n“); scanf(“%d %d“, if (a99)|(b99) printf(“输入数字错 误!n“); elseprintf(“%dn“,fun(a,b); 开始结束输入a,b两 个二位数输出结 果调用函数开始返回c做结果定义变量p,q分别接受a, b,定义cc=a%10*10+a/10*10 00+b%10+b/10*100- 21 -测试数据及输出结果:9 21 输入数字错误!21 23 2123(3) 请设计两个函数 MaxCommonFactor()和 MinCommonMultiple(),它们的功能是:前者用于求两个正整数的最大公约数,后者用于求两个正整数的最小公倍数。函数 MaxCommonFactor():函数 MinCommonMultiple():流程图程序代码流程图程序代码int MaxCommonFactor(int x,int y) int i=1,c; while (i #include void main() int a,b; printf(“请输入两个正整数n“); scanf(“%d %d“, if (a=0aj=aj+1;aj+1=temp; printf(“%3d:“,count); for(j=1;j=a si0=sij; sij=nHelp; for(i=0;inArri 0nArrij和nArri0的 值交换for i=0 to 2for j=0 to 3for i=0 to 2输出 nArrijfor j=0 to 3结束是否- 29 -(3)设某班共有 10 名学生,为了平定某门课程的奖学金,按照规定超过全班平均成绩 10%者发给一等奖,超过全班平均成绩 5%者发给二等奖。编写程序,输出学生学号、成绩和奖学金等级。见下页#include #include void main() char str180,str290; int i; printf(“输入字符串:n“); gets(str1); printf(“n“); for(i=0;str1i!=0;i+) str2i=str1i; str2i=0; puts(str2); 流程图程序代码流程图程序代码void Output(int nArr2) int
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号