第一篇:应数计算机程序设计(C语言)实验
问题 A: 问候世界
时间限制: 1 Sec 内存限制: 2 MB 题目描述
输出:Hello world
输入
无
输出
Hello world
样例输入 样例输出
Hello world
提示 Append Code #include
int main(){
printf(“Hello worldn”);
return 0;}
问题 B: Hello world!时间限制: 1 Sec 内存限制: 2 MB 题目描述
Xiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放学回家,父母分别跟他们打招呼。
输入
无
输出
请输出: Hello Da_min, Hello Er_min, Hello Xiao_ming!
样例输入 样例输出
Hello Da_min, Hello Er_min, Hello Xiao_ming!
提示
请注意换行符
Append Code #include
int main(){
printf(“Hello Da_min,nHello Er_min,nHello Xiao_ming!n”);
return 0;}
问题 C: I/O练习
时间限制: 1 Sec 内存限制: 2 MB 题目描述
I/O是Input/Output的缩写,是“输入与输出”的意思。从键盘输入一个整数,然后输出这个整数。
输入
一个整数,在int类型的表示范围内。
输出
输入的整数。
样例输入
样例输出 提示 Append Code #include
int main(){ int n;scanf(“%d”,&n);printf(“%dn”,n);}
问题 A: 货币兑换
时间限制: 1 Sec 内存限制: 2 MB 题目描述
给出人民币对美元、欧元、日元的当日汇率,求给定金额的人民币能兑换成外币的金额,求给定金额的外币能兑换成人民币的金额。要计算的外币有三种:美元、欧元、日元。
输入
输入有三行。
第一行依次为美元、欧元、日元外币汇率,用空格分开。汇率用100外币为单位,精确到小数点后4位,如668.5200表示“100美元=668.5200人民币”。汇率浮动范围为(0,10000)。第二行为外币金额x,第三行为人民币金额y。x,y均为整数,且0 输出 输出为两行。 第一行是金额为x的美元、欧元、日元兑换成人民币的金额,用空格分开。第二行是金额为y的人民币兑换成美元、欧元、日元的金额,用空格分开。所有金额精确到小数点后两位。样例输入 668.5200 908.0685 7.9852 1500 1500 样例输出 10027.80 13621.03 119.78 224.38 165.19 18784.75 提示 了解浮点数据类型的精确度和输出控制。 Append Code #include int main(){ double a,b,c; double x,y; scanf(“%lf%lf%lf/n”,&a,&b,&c); scanf(“%lf”,&x); scanf(“%lf”,&y); printf(“%.2lf %.2lf %.2lfn”,x*0.01*a, x*0.01*b, x*0.01*c); printf(“%.2lf %.2lf %.2lfn”,y/a*100, y/b*100, y/c*100); return 0;} 问题 B: 求字符的值 时间限制: 1 Sec 内存限制: 2 MB 题目描述 从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。 输入 输入为3个字符。 输出 输出为3行。 每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。每个输出的值占3个字符,不足3个字符前面补0。 样例输入 0 A 样例输出 048 060 030 032 040 020 065 101 041 提示 了解字符值的存储和整型的关系。 Append Code #include int main(){ char a,b,c; scanf(“%c%c%c”,&a,&b,&c); printf(“%.3d %.3o %.3xn”,a,a,a); printf(“%.3d %.3o %.3xn”,b,b,b); printf(“%.3d %.3o %.3xn”,c,c,c); return 0;} 问题 C: 奇数还是偶数? 时间限制: 1 Sec 内存限制: 2 MB 题目描述 输入一个整数,判读它是奇数还是偶数。 输入 输入只有一行,为一个100以内的正整数。 输出 输出为一行。 若输入为偶数则输出“even”,奇数输出“odd”。 样例输入 样例输出 even 提示 用整数运算可以解决,练习“?:”表达式。 Append Code #include int main(){ int a; scanf(“%d”,&a); if(a>=0&&a<=100); if(a%2==0)printf(“even”); else printf(“odd”); return 0;} 问题 A: 判断是否是元音字母 时间限制: 1 Sec 内存限制: 2 MB 题目描述 输入一个英文字母,判断是否是元音字母。元音字母是:a,e,i,o u,A,E,I,O,U 输入 输入一个英文字母 输出 是元音字母,输出“yes”,否则输出“no”,行尾没有回车。 样例输入 A 样例输出 yes 提示 Append Code #include void main(){ char c; scanf(“%c”,&c); if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){ if(c=='A'||c=='E'||c=='I'||c=='O'||c=='U'||c=='a'||c=='e'||c=='i'||c=='o'||c=='u') printf(“yes”); else printf(“no”); return 0; } } 问题 B: 你过线了吗? 时间限制: 1 Sec 内存限制: 128 MB 题目描述 经过四年的学习,你决定报考我国著名的“285”高校之一的北青大学,经过认真的复习,残酷的考试,终于知晓了自己的考试成绩,也知道了北青大学的录取分数线,请你编程判断,自己过线了吗? 输入 输入有2行,第一行有4个正整数,分别表示三门课程的分数线以及总分分数线。第二行有3个非负整数,分别表示你考的三门课程的成绩。 输出 如果你的三门课程成绩都不低于相应课程的分数线,且你的考试总分也不低于北青大学的总分分数线要求,则输出“congratulations”,否则输出“sorry”。 样例输入 70 240 80 80 82 样例输出 congratulations 提示 如果你不会使用分支语句,同样可以使用条件运算符实现该程序。 Append Code #include int main(){ int a,b,x,y,c,d,e; scanf(“%d %d %d %d”,&a,&b,&x,&y); scanf(“%d %d %d”,&c,&d,&e); if(c printf(“sorry”); else printf(“congratulations”); return 0;} 问题 C: k个数的平均值 时间限制: 1 Sec 内存限制: 128 MB 题目描述 求k个数的平均值。 输入 输入分为两部分:第一个数是k,然后输入k个较小的整数。 输出 输出为这k个整数的平均值,保留3位小数。 样例输入 1 2 3 样例输出 2.000 提示 Append Code #include 问题 D: 多个数的平均值 时间限制: 1 Sec 内存限制: 128 MB 题目描述 求k个数的平均值。 输入 输入k个较小的整数,以EOF结尾。 输出 输出为这k个整数的平均值,保留3位小数。 样例输入 2 3 样例输出 2.000 提示 Append Code #include int c,k,i=0; double a,sum=0; while(scanf(“%lf”,&a)!=EOF) { i++; sum+=a; } printf(“%.3lf”,sum/i);} 问题 A: 分数转小数 时间限制: 1 Sec 内存限制: 2 MB 提交: 4367 解决: 2562 [提交][状态][讨论版] 题目描述 求一个分数的小数值,要求保留小数点后2位,并且进行四舍五入。输入 输入为一个分数m,格式为:“分子/分母”,也可能会有负号:“-分子/分母”。 输出 输出m的小数值,输出保留到小数后2位,根据小数点后的第3位向前四舍五入。 样例输入 -5/3 样例输出 -1.67 提示 printf函数是可以进行四舍五入的。 Append Code [提交][状态][讨论版] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include int main(){ double a,b,m; scanf(“%lf/%lf”,&a,&b); m=a/b; printf(“%.2f”,m);} 问题 B: 产生等差序列 之一 时间限制: 1 Sec 内存限制: 2 MB 提交: 6534 解决: 2688 [提交][状态][讨论版] 题目描述 根据给出的初始数、公差和序列长度求等差序列。 输入 输入为一行,格式见sample。其中,start为初始数,step为公差,times为序列长度。满足,times>0,step不为0。 输出 把这个等差序列输出在一行里,序列两数之间用一个空格分隔。 样例输入 start = 1, step = 2, times = 100 样例输出 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 提示 Append Code [提交][状态][讨论版] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include int main(){ int x,y,z,n; int a[1000]; scanf(“start = %d, step = %d, times = %d”,&x,&y,&z); for(n=0;n { a[n]=x+y*n; } for(n=0;n { if(n==z-1) printf(“%d ”,a[n]); else printf(“%d ”,a[n]); } } 问题 C: 产生等差序列 之二 时间限制: 1 Sec 内存限制: 2 MB 提交: 5970 解决: 2119 [提交][状态][讨论版] 题目描述 根据给出的初始数、公差和终止条件求等差序列。 输入 输入为一行,格式见sample。其中,start为初始数,step为公差,end为终止条件。满足,step不为0,并且start和end的大小关系与step的方向一致。end不一定是序列的最后一个数。start、step和end均为int类型的范围内的整数。 输出 把这个等差序列输出在一行里,序列两数之间用一个空格分隔。 样例输入 start = 1, step = 2, end = 200 样例输出 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 提示 根据start和step的大小关系,判断序列终止的条件可能不同。 Append Code [提交][状态][讨论版] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include int main(){ int i,j,k,b,n; int a[1000]; scanf(“start = %d, step = %d, end = %d”,&i,&j,&k); a[0]=i; if(j>=0) for(n=0;a[n]<=k;n++) a[n+1]=i+(n+1)*j;else for(n=0;a[n]>=k;n++) a[n+1]=i+(n+1)*j; for(b=0;b if(b==n-1) printf(“%d”,a[b]);else printf(“%d ”,a[b]);} 问题 D: Print Graphics Problerm(II)时间限制: 1 Sec 内存限制: 16 MB 提交: 5259 解决: 2184 [提交][状态][讨论版] 题目描述 向标准输出上打印一些用ASCII字符组成的图形。 输入 输入为多个整数n,0 输出 若n为偶数,则输出一个正向的n层等腰三角形;n为奇数,则输出一个倒向的n层等腰三角形。三角形由“+”组成。任意两个图形之间有一个空行分隔,格式见sample。 样例输入 4 0 样例输出 +++++++++ +++++++ +++++ +++ + + +++ +++++ +++++++ 提示 Append Code [提交][状态][讨论版] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include int main(){ int i,j,k; int a[100]; scanf(“%d”,&a[0]); for(i=1;i<100;i++) { scanf(“%d”,&a[i]); if(a[i]==0) break; } for(i=0;i<=100;i++) { if(a[i]==0) break; if(a[i]%2==0) { for(j=1;j<=a[i];j++) { for(k=1;k<=(a[i]-j);k++) printf(“"); for(k=1;k<=(2*j-1);k++) printf(”+“); printf(”n“); } printf(”n“); } else { for(j=a[i];j>=1;j--) { for(k=a[i]-j;k>=1;k--) printf(”“); for(k=2*j-1;k>=1;k--) printf(”+“); printf(”n“); } printf(”n“); } } return 0;} 问题 E: 它满足条件吗? 时间限制: 1 Sec 内存限制: 128 MB 提交: 3696 解决: 2040 [提交][状态][讨论版] 题目描述 需要判断给定的一个整数是否同时满足如下三个条件: 1.它是一个完全平方数。2.它是一个偶数。3.它是一个正数。 注:若一个数能表示成某个自然数的平方的形式,则称这个数为完全平方数。例如: 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529 输入 一个int范围内的整数。 输出 如果输入的数字满足条件,则输出yes,否则输出no。 样例输入 样例输出 yes 提示 注意逻辑表达式判断三个条件的顺序。 如果你不会使用分支语句,同样可以使用条件运算符实现该程序。 库函数sqrt()可以用于求一个数的平方根。 Append Code [提交][状态][讨论版] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include int main(){ int x,y; scanf(”%d“,&x); y=sqrt(x); if(x==y*y&&x%2==0&&x>0) printf(”yes“); else printf(”no“); return 0;} 问题 A: 输出整数的最低两位 时间限制: 1 Sec 内存限制: 2 MB 提交: 5800 解决: 2383 [提交][状态][讨论版] 题目描述 把一个整数的最低两位打印出来,不输出整数的符号。 输入 输入为一个整数n,不会超出int类型的数据范围。输出 输出n的最低两位数字。但是,输入的数字本身不足两位时,不应当补0。如,输入为“1”,则输出为“1”。 样例输入 -102 样例输出 02 提示 printf函数可以完成补0的操作。 Append Code [提交][状态][讨论版] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include int main(){ int z; scanf(”%d“,&z); if(z<0) z*=-1; if(z<100) printf(”%dn“,z); else { int ans=z%100; if(ans<10) printf(”0“); printf(”%dn“,ans); } return 0;} 问题 B: 笛卡尔平面 时间限制: 1 Sec 内存限制: 16 MB 提交: 5805 解决: 1693 [提交][状态][讨论版] 题目描述 在数学里,笛卡儿坐标系(Cartesian坐标系),也称直角坐标系,是一种正交坐标系。二维的直角坐标系是由两条相互垂直、0 点重合的数轴构成的。在平面内,任何一点的坐标 是根据数轴上对应的点的坐标设定的。 二维的直角坐标系通常由两个互相垂直的坐标轴设定,通常分别称为 x-轴 和 y-轴;两个坐标轴的相交点,称为原点,通常标记为 O,既有“零”的意思,又是英语“Origin”的首字母。每一个轴都指向一个特定的方向。这两个不同线的坐标轴,决定了一个平面,称为 xy-平面,又称为笛卡儿平面。 以笛卡尔平面上一个点的坐标(x,y)坐标为输入,输出该点是否在坐标轴上或者位于哪一个象限。 输入 输入为一行。输入的坐标x、y值都会带有1位小数,括号和逗号都是英文半角符号,逗号后面有一个空格。 输出 四个象限输出为“quadrand I”、“quadrand II”、“quadrand III”、“quadrand IV”,x-轴和y-轴输出为“x axis”和“y axis”,原点输出为“origin” 输出为以下三种: (-1.0,-2.5)is in quadrand III(0.0, 4.8)is on the y axis(0.0, 0.0)is origin 样例输入 (-1.0,-2.5) 样例输出 (-1.0,-2.5)is in quadrand III 提示 Append Code [提交][状态][讨论版] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include int main(){ double x,y; scanf(”(%lf, %lf)“,&x,&y); if(x>0&&y>0) printf(”(%.1lf, %.1lf)is in quadrand I“,x,y); else if(x<0&&y>0) printf(”(%.1lf, %.1lf)is in quadrand II“,x,y); else if(x<0&&y<0) printf(”(%.1lf, %.1lf)is in quadrand III“,x,y); else if(x>0&&y<0) printf(”(%.1lf, %.1lf)is in quadrand IV“,x,y); else if(x!=0&&y==0) printf(”(%.1lf, %.1lf)is on the x axis“,x,y); else if(x==0&&y!=0) printf(”(%.1lf, %.1lf)is on the y axis“,x,y); else if(x==0&&y==0) printf(”(%.1lf, %.1lf)is origin“,x,y); return 0;} 问题 C: Print Graphics Problerm(I)时间限制: 1 Sec 内存限制: 16 MB 提交: 2220 解决: 1439 [提交][状态][讨论版] 题目描述 向标准输出上打印一些用ASCII字符组成的图形。 输入 输入为一个整数n,0 输出一个n层等腰三角形,格式见sample。 样例输入 样例输出 + +++ +++++ +++++++ +++++++++ 提示 推导出第i层要输出的空格和“+”与i的关系,用循环很容易完成。 Append Code [提交][状态][讨论版] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include int main(){ int a,i,t; scanf(”%d“,&a); for(i=1;i<=a;i++) { for(t=1;t<=a-i;t++) printf(”“); for(t=1;t<=2*i-1;t++) printf(”+“); printf(”n“); } } 问题 D: 输出连续的整数序列 之一 时间限制: 1 Sec 内存限制: 128 MB 提交: 2938 解决: 1579 [提交][状态][讨论版] 题目描述 输出指定区间内的所有整数。 输入 输入只有1行,即N,N是一个int类型的数据。 输出 如果N>0,则输出[1,N]区间内的所有整数;如果N =0,则输出0;如果N<0,则输出[N,-1]内的所有整数。 如果输出的整数多于1个,则两两之间用一个空格隔开。 样例输入 样例输出 2 3 4 5 6 7 8 9 提示 Append Code [提交][状态][讨论版] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include int main(){ int n,m,i; scanf(”%d“,&n); if(n==0) printf(”%d“,0); else if(n>0) { printf(”%d“,1); for(i=1;i printf(” %d“,i+1);} else { printf(”%d“,n); for(i=n;i<-1;i++) printf(” %d“,i+1); } return 0;} 问题 E: 输出连续的整数序列 之二 时间限制: 1 Sec 内存限制: 128 MB 提交: 3835 解决: 844 [提交][状态][讨论版] 题目描述 输出若干个连续的整数序列。 输入 输入有多行。第一行是N>0,表示后面有N行输入。 之后每行输入包含2个数据P和Q,两者之间用空格隔开,且均在int类型的表示范围内。 输出 输出N个连续的整数序列,序列两两之间用一个空行隔开。 其中第i个序列是在P和Q之间的整数,包括P和Q,且当输出的数据多于1个时,两两之间用一个空格隔开。 样例输入 100 10-10 10 10 样例输出 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100-10-9-8-7-6-5-4-3-2-1 0 1 2 3 4 5 6 7 8 9 10 10 提示 当P或Q是int类型的能够表示的最大值或者最小值时,应该如何处理? Append Code [提交][状态][讨论版] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include int main(){ int n,m,i,a,b,e,j=1; scanf(”%d“,&n); i=1; while(i<=n) { i++; scanf(”%d%d“,&a,&b); if(a>b) { e=a; a=b; b=e; } printf(”%d“,a); for(j=1;j<=b-a;j++) { printf(” %d“,a+j); } printf(”nn“); } return 0;} Problem A: 编写函数:求三个整数的最大值(Append Code)Time Limit: 1 Sec Memory Limit: 2 MB Submit: 5834 Solved: 2272 [Submit][Status][Web Board] Description 求三个整数的最大值。 ---------------编写一个函数maxValue()求三个整数的最大值。其原型为: int maxValue(int a,int b,int c); 功能:函数的三个参数传入a,b,c的值,返回其中最大值。函数的调用格式见“Append Code”。 Input 输入三个int类型的整数,两两之间用空格隔开。 Output 输出三个整数的最大值。 Sample Input 1 2 3 Sample Output 3 HINT 参看系统首页上的“Append Code”使用说明,讨论版(Web Board)上也有。 Append Code append.c, append.cc,[Submit][Status][Web Board] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include intmaxValue(inta,intb,intc){ if(c>=a&&c>=b){returnc;} if(a>=b&&a>=c)returna;if(b>=a&&b>=c)returnb;} intmain(){ intx, y, z;scanf(”%d %d %d“, &x, &y, &z);printf(”%d“, maxValue(x, y, z));return0;} Problem B: 编写函数:计算分段函数(Append Code)Time Limit: 1 Sec Memory Limit: 2 MB Submit: 6176 Solved: 2797 [Submit][Status][Web Board] Description 设有函数y=f(x)定义为: 给定x的值,编程求出y的值并输出。 ---------------编写函数func()和output(),其原型为: double func(double x);功能:计算f(x)并返回。int output(int n, double x) 功能:按照题意的格式输出。 函数的调用格式见“Append Code”。 Input 输入的第一个是测试样例数N,后跟N个输入为x的值。 Output 输出为N行,每行顺序与输入对应的y=f(x)的计算结果,即y的值。输出时y值保留6位小数,且不输出无意义的0。每行的格式为: case i:y=?.其中i表示测试用例编号(从1开始),?表示计算结果。 Sample Input 4-3 0.5 2.1 10.08 Sample Output case 1:y=3.case 2:y=0.841471.case 3:y=3.37061.case 4:y=30.16.HINT 参看系统首页上的“Append Code”使用说明,讨论版(Web Board)上也有。 Append Code append.c, append.cc,[Submit][Status][Web Board] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include double func(double x){ double y; if(x<0) y=-x; else if(x<1) y=sin(2*x); else if(x<5) y=sqrt(x*x*x+x); else y=2*x+10; return y; } int output(int n,double x){ printf(”case %d:y=%.6g.n“,n,x);} int main(){ int i, cases; double x; scanf(”%d“, &cases); for(i = 1;i <= cases;i++) { scanf(”%lf“, &x); output(i, func(x)); } return 0;} Problem C: 几点几分几秒 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 3606 Solved: 1547 [Submit][Status][Web Board] Description 一天24小时,每小时60分钟,每分钟60秒。一天共有86400秒。0点0分0秒是每天的第1秒; 0点0分1秒是每天的第2秒; 0点1分0秒是每天的第61秒; 1点0分0秒是每天的第3601秒; 23点59分59秒是每天的第86400秒。你的任务是编写一个程序,把每天的第n秒转换成具体的24小时制时间(从00:00:00到23:59:59)。 Input 输入为若干整数n,表示每天的第n秒,1<=n<=86400,当输入n为0时表示输入结束。 Output 每行输出一个第n秒对应的具体时间,格式为“hh:mm:ss”。时、分、秒各占2位,不足两位要补0,如0点0分0秒为“00:00:00”。 Sample Input 1 2 61 3600 9999 86400 0 Sample Output 00:00:00 00:00:01 00:01:00 00:59:59 02:46:38 23:59:59 HINT Append Code [Submit][Status][Web Board] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include int main(){ long int n,h,m,s;for(;;){ scanf(”%ld“,&n);if(n<=0||n>86400)break;n=n-1;h=n/3600%60;m=n/60%60;s=n%60;printf(”%02ld:%02ld:%02ldn“,h,m,s);} return 0;} Problem D: 编写函数:求整数的位数 之一Code) (Append Time Limit: 1 Sec Memory Limit: 2 MB Submit: 2282 Solved: 1557 [Submit][Status][Web Board] Description 输入一个十进制正整数,它共有几位数字组成? ---------------编写一个函数digits(),其原型为: int digits(int n); 功能:返回n的十进制位数。 函数的调用格式见“Append Code”。 Input 一个不超过10位的正整数num。 Output 输出num有多少位十进制数字。 Sample Input 1000 Sample Output 4 HINT 参看系统首页上的“Append Code”使用说明,讨论版(Web Board)上也有。 Append Code append.c, append.cc,[Submit][Status][Web Board] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include int digits(int n){ int i=0;while(n!=0){ n=n/10;i++;} return i;} int main(){ int num;scanf(”%d“, &num);printf(”%dn“, digits(num));} Problem A: 求矩阵的每行之和 Time Limit: 1 Sec Memory Limit: 16 MB Submit: 3723 Solved: 2107 [Submit][Status][Web Board] Description 编写一个程序,求矩阵各行元素值相加之和。其中,矩阵的元素都是很小的整数,且各行元素之和的数值不会超出int类型的表示范围。Input 输入为多行。第一行K>0,表示有K个测试用例。之后K个测试用例中,首先是两个整数0<=M,N<=100,表示该测试用例的矩阵是一个M行N列的矩阵。之后是一个M行N列的整数组成的矩阵。 Output 输出有K行,每个测试用例的结果占一行。每行的格式为: case i:d1 d2...dj 其中i表示测试用例的编号(从1开始),d1、d2、....、dj表示相应测试用例的各行的和,两两之间用空格隔开。 Sample Input 4 3 3 1 2 3 1 2 3 1 2 3 2 3 1 1 1 1 1 1 1 1 1 5 1 3 4 5 6 7 Sample Output case 1:6 6 6 case 2:3 3 case 3:1 case 4:3 4 5 6 7 HINT Append Code [Submit][Status][Web Board] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include int i,k,m,n,j,x,y; int s[120]; scanf(”%d“,&k); for(i=1;i<=k;i++) { scanf(”%d %d“,&m,&n); for(x=1;x<=m;x++) { s[x]=0; for(j=1;j<=n;j++) { scanf(”%d“,&y); s[x]=s[x]+y; } } printf(”case %d:“,i); for(x=1;x<=m;x++) { if(x==1) printf(”%d“,s[x]); else printf(” %d“,s[x]); } printf(”n“); } } Problem B: Print Graphics Problerm(IV)(Append Code)Time Limit: 1 Sec Memory Limit: 16 MB Submit: 2494 Solved: 1663 [Submit][Status][Web Board] Description 向标准输出上打印一些用ASCII字符组成的图形。 ---------------编写一个函数用于输出ASCII图形。用C语言实现:append.c中函数原型为 int print_graphic(int n); 用C++实现:append.cc中函数原型为 int printGraphic(int n);功能:输出n层的图形。 函数的调用格式见“Append Code”。 Input 输入为一个奇数n,1 Output 输出一个n层的空心菱形,格式见sample。 Sample Input 11 Sample Output *********** ***** ***** **** **** *** *** ** ** * * ** ** *** *** **** **** ***** ***** *********** HINT Append Code append.c, append.cc,[Submit][Status][Web Board] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include int a,b,c; for(a=0;a printf(”*“); printf(”n“); b=(n-1)/2; for(c=0;c { for(a=0;a printf(”*“); for(a=0;a<(c+1)*2-1;a++) printf(”“); for(a=0;a printf(”*“); printf(”n“); } for(c=0;c { for(a=0;a printf(”*“); for(a=0;a printf(”“); for(a=0;a printf(”*“); printf(”n“); } for(a=1;a<=n;a++) printf(”*“); printf(”n“);} int main(){ int num; scanf(”%d“, &num); print_graphic(num); return 0;} Problem C: 浮点数的拆分 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 5185 Solved: 1571 [Submit][Status][Web Board] Description 把一个浮点数拆分成符号、整数部分和小数部分。 所有测试数据的浮点数在double范围内,其整数部分和小数部分都在int范围内。你可能会用到以下函数: double floor(double x)返回值是小于或等于x的最大整数; double ceil(double x)返回值是大于或等于x的最小整数; 其实不用也行,如果你会用强制(显式)类型转换。Input 一个用小数点形式(即a.b)表示的浮点数x。 Output 输出x的符号、整数部分a和小数部分0.b,中间用一个空格分隔。x为负数,符号输出“-”,为正数,符号输出“+”。0的符号是“+”。x的小数部分不输出无意义的0。行尾没有回车。 Sample Input-1.00 Sample Output-1 0 HINT Append Code [Submit][Status][Web Board] 한국어< 中文 یسراف English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin #include Problem D: 寻求勾股数 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 2312 Solved: 692 [Submit][Status][Web Board] Description 满足x2+y2=z2的正整数x,y和z称为一组勾股数(pythagorean triple),又称为毕达哥拉斯三元数组。现在要求你编程求指定范围内的勾股数。 Input 输入若干对数a和b,每对数占一行。0 Output 输出为多行,与上述输入一一对应。 每行输出首先输出用例编号“case i”,其中i为行号,从1开始计数。 如果指定范围内有勾股数,则按照x从小到大的顺序输出每组勾股数,每组勾股数要求x 如果指定范围内没有勾股数,则输出”No pythagorean triple“。 Sample Input C语言程序设计实验 (四)[实验1] scanf()、printf()函数的使用。 1.实验题目 输入1个学生学号和4门课程成绩,输出这个学生的学号、4门课程成绩和平均成绩。 2.实验要求 (1)按表格的形式输出,以行内输出一个学生的信息。 (2)学号用长整型,各科成绩用单精度型。 3.实验目标 (1)掌握实现人机对话形式的方法,scanf()输入。 (2)体会根据需要控制输出格式的方法,printf()输出。 4.实验指导 利用格式的数据宽度控制数据的对位输出。输出如下格式: The number and score of a student is: |---| |number | score1 | score2 | score3 | sco re4 | average | |---| |10011| 67.5|88.0 |93.5 |78.0|81.75 | |---| [实验2] getchar()、putchar()函数的使用 1.实验题目 用getchar()函数读入a~v之间的一个字母,用putchar()函数输出一个5行5列的矩阵,该矩阵第一行为读入的字母,下一行为紧跟该字母后的字母,依此类推。如输入a,则输出的矩阵为: aaaaa bbbbb ccccc ddddd eeeee 2.实验要求 (1)运用getchar()进行字符输入。 (2)运用putchar()进行字符输出。 3.实验目标 (1)体会根据需要控制输出格式的方法。 [实验3] 3.6 下面程序运行时在键盘上如何输入?如果a=3,b=4,x=8.5,y=71.82,c1=’A’,c2=’a’,请写出对应每个scanf函数的输入情况。 main() { int a,b;float x,y;char c1,c2; scanf(“a=%d□b=%d”,&a,&b); scanf(“□%f %e”,&x,&y); scanf(“□%c %c”,&c1,&c2); } 3.7编一程序,从键盘输入一个圆半径值,求圆周长、圆面积、圆球表面积、圆球体积。输出结果时,要求有文字说明,保留2位小数。 提示:设圆半径为r,则圆周长=2πr,圆面积=πr2,圆球表面积=4πr2,圆球体积= 4πr3/3。 C语言实验指导 实验一 顺序结构程序设计(2学时) 一、实验目的熟悉在VC运行环境下,编辑调试C语言程序的一般步骤。掌握顺序结构程序设计的基本思想和基本方法。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴ 程序功能描述。 ⑵ 程序版本号、创作日期。 ⑶ 作者信息描述:班级、学号、姓名。 ⑷ 问题分析描述。 ⑸ 算法设计描述。 ⑹ 关键语句注释说明。 ⑺ 调试运行过程中出现的错误及改正方法。 ⑻ 输入数据样例。 ⑼ 输出数据样例。 三、实验内容 以下两题,任选其一解答。 你知道淄博到北京的地面距离是多少千米吗,淄博到纽约的地面距离又是多少千米呢?说不上来了吧。还是让我们编一个程序来计算一下吧。 1.已知地球的平均半径为6371千米,假设在地球的同一纬度上,有两个处于不同经度的城市A、B,编程序求出这两个城市之间的地面距离。 输入数据样例:例如,欲求北纬30度上东经10度到东经50度的距离,输入格式应为:30 10 50 参考测试数据: 输入:0 0 180 输出:20015.08 输入:30 0 90 输出:8397.7 2输入:60 0 45 输出:2453.20 2.地球的平均半径为6371千米,已知地球上两个城市A、B的经度和纬度,编程序求出这两个城市之间的地面距离。 提示:球面上两点之间的最短距离,等于过这两点以球心为圆心的圆上,这两点之间劣弧的长度。(即这两点与球心之间的连线构成的夹角所对球面劣弧的长度)。 建议你自己一步步推导出公式,而不要照搬网上的现成公式。 四、常见问题 疑问1:这分明是两道数学题啊,能否将数学公式提供给我们呢,我们的主要任务不是编写程序吗? 答:建立数学模型也是编程序的一部分。学会分析解决现实中遇到的问题,是我们学习的重要目标。 疑问2:这个问题好像属于球面几何的范畴,用平面几何可以求解吗? 答:这个问题的确涉及到球面几何,但是也的确可以利用投影以及平面几何方法来求解。 实验二 选择结构程序设计(2学时) 一、实验目的 掌握选择结构程序设计的一般方法及选择结构程序的调试方法。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。 ⑵程序版本号、创作日期。 ⑶作者信息描述:班级、学号、姓名。 ⑷问题分析描述。 ⑸算法设计描述。 ⑹关键语句注释说明。 ⑺调试运行过程中出现的错误及改正方法。 ⑻输入数据样例。 ⑼输出数据样例。 三、实验内容 你知道你生日那天是星期几吗,还有你知道你爸爸生日那天是星期几吗?你可能会说:可以查万年历啊。那么,不查万年历你能计算出来吗? 以下两题,任选其一解答。 1.编程序实现:输入一个年份y,求出从公元1年1月1日到y年1月1日,总共有多少天,并求出y年的1月1日是星期几。 2.编程序实现:输入任意一个日期的年、月、日的值,求出从公元1年1月1日到这一天总共有多少天,并求出这一天是星期几。 四、常见问题 疑问1:闰年的规律是不是四年一闰? 答:四年一闰是儒略历(儒略也就是凯撒大帝)的置闰规则。我们现在使用的是格里高利历,置闰规则是每400年97闰。 疑问2:公元1年1月1日是星期几呢? 答:星期一。 疑问3:据说从儒略历改为格里高利历时,将1582年10月4日的下一天定为格里高利历的10月15日,中间销去了10天,这会不会影响星期几的计算? 答:这个调整是对儒略历误差的纠正,并不会影响总天数和星期几的计算。 疑问4:这里计算总天数,好像要用到循环程序吧? 答:其实根据闰年的置闰规则,不使用循环也可以计算出来总天数。当然,你想使用循环编写该程序也是可以的。 实验三 循环结构程序设计(2学时) 一、实验目的掌握循环结构程序设计的一般方法及循环结构程序的调试方法。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。 ⑵程序版本号、创作日期。 ⑶作者信息描述:班级、学号、姓名。 ⑷问题分析描述。 ⑸算法设计描述。 ⑹关键语句注释说明。 ⑺调试运行过程中出现的错误及改正方法。 ⑻输入数据样例。 ⑼输出数据样例。 三、实验内容 以下两题,任选其一解答。 1. 海萍夫妇为了彻底告别“蜗居”生活,痛下决心贷款60万元购买了一套三居室。若贷款月利率为0.5%,还款期限为120个月,还款方式为等额本金还款法(即贷款期限内每期以相等的额度偿还贷款本金,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。 2. 若还款方式采用等额本息还款法(即贷款期限内每期以相等的额度偿还贷款本息,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。 四、常见问题 疑问1:等额本息还款法每个月的还款额怎么计算,应该有个公式吧,要不然怎么计算出来每个月应还的利息与本金? 答:的确有一个计算公式。当然你可以自己推导出来(这样你会很有成就感!),要不然就从网上搜索出来。 实验四 循环程序综合应用(4学时) 一、实验目的: 掌握循环结构程序设计的一般方法及循环结构程序的调试方法,能够综合运用顺序、选择和循环结构解决一般难度的实际应用问题。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。 ⑵程序版本号、创作日期。 ⑶作者信息描述:班级、学号、姓名。 ⑷问题分析描述。 ⑸算法设计描述。 ⑹关键语句注释说明。 ⑺调试运行过程中出现的错误及改正方法。 ⑻输入数据样例。 ⑼输出数据样例。 三、实验内容 以下两题,任选其一解答。 1.编程序实现如下功能:输入任意一个年份和月份,按以下格式输出该月份的公历日历。 要求由程序计算出来该月份的1日是星期几,并用循环控制打印。打印样例如下: 2012年日历 ========== 9月 ---------日 一 二 三 四 五 六2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30------------------------- 2.编程序实现如下功能:输入任意一个年份,按以下格式输出该年份全年的公历日历。要求由程序计算出来每个月份的1日是星期几,并用循环控制打印。 四、常见问题 疑问1:如何控制某个月1日的打印位置? 答:先由程序计算出来该月份的1日是星期几,然后控制在打印“1”之前打印相应个数的空格。 疑问2:如何控制每周和每月的打印换行? 答:可以根据当前这一天的打印位置控制每周的打印换行,并根据该月份的天数控制每月的打印换行。 实验五 字符串处理综合应用(4学时) 一、实验目的 掌握字符串处理的一般方法及字符串处理应用程序的调试方法,能够综合运用选择、循环结构和数组、指针解决一般难度的实际应用问题。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。 ⑵程序版本号、创作日期。 ⑶作者信息描述:班级、学号、姓名。 ⑷问题分析描述。 ⑸算法设计描述。 ⑹关键语句注释说明。 ⑺调试运行过程中出现的错误及改正方法。 ⑻输入数据样例。 ⑼输出数据样例。 三、实验内容 以下两题,任选其一解答。 1.编程实现,输入一个整数的小写金额值(即不考虑角和分),转化为大写金额值并输出。先实现基本功能,如输入1002300,可以输出“壹佰零拾零万贰仟叁佰零拾零元整”。 2.编程实现,输入一个小写金额值,转化为大写金额值输出。要求实现相对完善的功能,如输入1002300.90,应该输出“壹佰万贰仟叁佰元零玖角整”。 四、常见问题 疑问1:如何才能分离出整数中的每一位数字? 答:可以利用整数的求余数和除法运算实现数字的分离,同时将分离出的数字存入到一个事先定义好的数组中,每个数组元素只存储一位数字。 疑问2:若不能确定整数的实际位数,如何控制分离过程? 答:可以通过循环控制数字的分离过程,每循环一次分离出来当前的最末一位,然后去掉最末一位,直至分离出所有的位。 疑问3:如何控制给某位数字添加合适的数量单位,如万、仟、佰、拾、元? 答:可以根据该数字在原小写数值中的位置进行控制,如第0位单位为“元”,第1位单位为“拾”,依此类推。 实验六 文件应用程序设计(2学时) 一、实验目的掌握文件应用程序设计的一般方法及其调试方法。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。 ⑵程序版本号、创作日期。 ⑶作者信息描述:班级、学号、姓名。 ⑷问题分析描述。 ⑸算法设计描述。 ⑹关键语句注释说明。 ⑺调试运行过程中出现的错误及改正方法。 ⑻输入数据样例。 ⑼输出数据样例。 三、实验内容 以下两题,任选其一解答。 1. 海萍夫妇为了彻底告别“蜗居”生活,痛下决心贷款60万元购买了一套三居室。若贷款月利率为0.5%,还款期限为120个月,还款方式为等额本金还款法(即贷款期限内每期以相等的额度偿还贷款本金,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。要求将输出结果写入到数据文件中。 2. 若还款方式采用等额本息还款法(即贷款期限内每期以相等的额度偿还贷款本息,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。要求将输出结果写入到数据文件中。 电子科技大学 计算机 学院 标 准 实 验 报 告 (实验)课程名称 C语言程序设计 电子科技大学教务处制表 电 子 科 技 大 学 实 验 报 告 四 学生姓名: 学 号: 指导教师:刘 勇 实验地点: 计算机学院软件306室 实验日期: ****年**月**日 一、实验室名称: 软件实验室 二、实验项目名称:函数的应用及预处理 三、实验学时:2 四、实验原理: 使用Turbo C软件(简称TC),在微型计算机上,对其程序进行编辑、编译、连接与运行。Turbo C是一个集成环境,它具有方便、直观、易用的界面和丰富的库函数。通过上机练习掌握在TC环境下编辑、编译、连接、和运行C程序的方法和过程。 五、实验目的 1. 掌握C语言中定义函数的方法; 2. 掌握函数传值调用的方法; 3. 掌握函数传址调用的方法; 4. 掌握递归函数的设计方法; 5. 掌握命令行参数的使用方法; 6. 掌握函数在不同文件中的编译、链接方法。 六、实验内容 编程实验,完成以下上机内容,调试运行程序并完成报告 1)、教材第七章习题7.4; 2)、编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出; 3)、教材第七章习题7.11; 4)、教材第七章习题7.15; 5)、教材第七章习题7.24; 6)、求解汉渃塔(tower of Hanoi)问题。在一块平板上立有3根立柱,从左到右分别标记为A,B,C。最初在A柱上放有6个大小不等的圆盘,并且大盘在下面,小盘在上面。要求将这些盘从A移到C(可以借助B柱)。条件是:每次只能移动一个盘,并且不允许把大盘放在小盘的上面。(提示:利用函数的递归调用); 七、实验器材(设备、元器件): pc硬件要求:CPU PII 以上,64M 内存,1OOM 硬盘空间即可。 软件要求:DOS3.0以上/Windows98/Me/XP/NT/2000。 八、实验步骤: 实验编程与运行结果 ⑴ 编写一个求两个整数的最小公倍数的函数,两个整数由键盘输入,用主函数调用这个函数,并输出结果。 程序文件名为7_4.c,源程序清单如下: #include 运行结果: ⑵ 编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出。 程序文件名为testf3.c,源程序清单如下: main(){ int i,j,a[7];int temp;clrscr();for(i=1;i<7;i++){ printf(“nInput a[%d]=”,i);scanf(“%d”,&a[i]);} for(i=1;i<6;i++)for(j=1;j<7;j++){ if(a[j] temp=a[j];a[j]=a[j+1];a[j+1]=temp;} } for(i=1;i<7;i++){ printf(“n%5d”,a[i]);} }_ 运行结果: ⑶ 编写一个通过函数调用把输入的小写字符串变为大写字符串的程序。 程序文件名为7_11.c,源程序清单如下: #include 运行结果: ⑷ 编写一个求三个整数中最小值整数的函数,主程序要求三个整数由命令行参数输入,调用该函数并输出结果。 程序文件名为7_15.c,源程序清单如下: #include #include 运行结果: ⑸ 编写一个程序,先定义一个将字符大写、小写和数字进行分类的带参数宏,然后对从键盘输入的一系列字符进行分类计数,并输出计数的结果,程序遇到字符‘*’结束。 程序文件名为7_24.c,源程序清单如下: #include 运行结果: ⑹ 求解汉渃塔(tower of Hanoi)问题。在一块平板上立有3根立柱,从左到右分别标记为A,B,C。最初在A柱上放有6个大小不等的圆盘,并且大盘在下面,小盘在上面。要求将这些盘从A移到C(可以借助B柱)。条件是:每次只能移动一个盘,并且不允许把大盘放在小盘的上面。(提示:利用函数的递归调用) 程序文件名为testf4.c,源程序清单如下: void move(char x,char y){ printf(“%c------%c> ”,x,y);} void hanoi(int n,char one,char two,char three){ if(n==1)move(one,three);else { hanoi(n-1,one,three,two);move(one,three);hanoi(n-1,two,one,three);} } main(){ int m;printf(“Input the number of diskes: ”);scanf(“%d”,&m);printf(“The step to moving %3d diskes: n”,m);hanoi(m,'A','B','C');}_ 运行结果: 九、总结及心得体会: 十、对本实验过程及方法、手段的改进建议: 报告评分: 指导教师签字: 电子科技大学 计算机 学院 标 准 实 验 报 告 (实验)课程名称 C语言程序设计 电子科技大学教务处制表 电 子 科 技 大 学 实 验 报 告 四 学生姓名: 学 号: 指导教师:王瑞锦 实验地点: 实验日期: ****年**月**日 一、实验室名称: 软件实验室 二、实验项目名称:函数的应用及预处理 三、实验学时:2 四、实验原理: 使用Turbo C软件(简称TC),在微型计算机上,对其程序进行编辑、编译、连接与运行。Turbo C是一个集成环境,它具有方便、直观、易用的界面和丰富的库函数。通过上机练习掌握在TC环境下编辑、编译、连接、和运行C程序的方法和过程。 五、实验目的 1. 掌握C语言中定义函数的方法; 2. 掌握函数传值调用的方法; 3. 掌握函数传址调用的方法; 4. 掌握递归函数的设计方法; 5. 掌握命令行参数的使用方法; 6. 掌握函数在不同文件中的编译、链接方法。 六、实验内容 编程实验,完成以下上机内容,调试运行程序并完成报告 1)、教材第七章习题7.4; 2)、编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出; 3)、教材第七章习题7.11; 4)、教材第七章习题7.15; 5)、教材第七章习题7.24; 6)、求解汉渃塔(tower of Hanoi)问题。在一块平板上立有3根立柱,从左到右分别标记为A,B,C。最初在A柱上放有6个大小不等的圆盘,并且大盘在下面,小盘在上面。要求将这些盘从A移到C(可以借助B柱)。条件是:每次只能移动一个盘,并且不允许把大盘放在小盘的上面。(提示:利用函数的递归调用); 七、实验器材(设备、元器件): pc硬件要求:CPU PII 以上,64M 内存,1OOM 硬盘空间即可。 软件要求:DOS3.0以上/Windows98/Me/XP/NT/2000。 八、实验步骤: 实验编程与运行结果 ⑴ 编写一个求两个整数的最小公倍数的函数,两个整数由键盘输入,用主函数调用这个函数,并输出结果。 程序文件名为7_4.c,源程序清单如下: #include 运行结果: ⑵ 编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出。 程序文件名为testf3.c,源程序清单如下:第二篇:C语言程序设计实验四(本站推荐)
第三篇:C语言程序设计实验安排
第四篇:《C语言程序设计》实验四
第五篇:《C语言程序设计》实验四