C语言典型算法和C实验程序
按下Ctrl键时,单击目录可显示指定页
C语言典型算法和C实验程序 (1)
1穷举法教材P84 (1)
2 迭代法教材P86 (2)
3判断素数教材P87 (3)
4 冒泡法教材P95 (3)
5 显示杨辉三角形的前10行 (4)
第4章选择结构 (5)
第5章循环结构 (6)
第6章数组 (9)
第7章函数 (11)
第8章指针 (14)
1穷举法教材P84
例1 我国古代数学家在<<算经>>中出了一道题,译成现代汉语意思:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡、母鸡、小鸡各多少只?
# include
main( )
{int x, y, z;
printf("%8s%8s%8s\n","公鸡","母鸡","小鸡");
for (x=1; x<=19; x++)
for (y=1; y<=33 ; y++)
{z=100-x-y;
if (5*x+3*y+z/3.0==100)
printf("%8d%8d%8d\n", x, y, z);
}
}
例2 有36块砖36人搬,男搬4,女搬3,小孩2人搬1砖。要求一次搬完,问男、女、小孩各若干(人)?
#include
main( )
{int x,y,z;
printf("%6s%6s%6s\n", "男","女","小孩");
for(x=1; x<9;x++)
for(y=0;y<12; y++)
{ z=36-x-y;
if (4*x+3*y+z/2.0==36)
printf("%6d%6d%6d\n", x,y,z); }
}
2 迭代法教材P86
求Fibonacci 数列: 1, 1, 2, 3, 5, 8, 13,……的前40项
#include
main( )
{long f1, f2;
int i;
f1=1;f2=1;
for(i=1;i<=20;i++)
{printf("%12ld %12ld ",f1,f2);
if(i%2==0)printf("\n");
f1=f1+f2;
f2=f2+f1;
}
}
3判断素数教材P87
#include
#include
main( )
{int m, i, k;
printf("请输入一个正整数");
scanf("%d",&m);
k=sqrt(m);
for (i=2; i<=k; i++)
if (m%i==0) break;
if (i>k) printf("%d 是素数\n",m);
else printf("%d 不是素数\n",m); }
4 冒泡法教材P95
对10个数组元素a[0], a[2], a[3], ……, a[9]进行排序(由小到大)。#include
main( )
{int a[10], i, j, t;
printf("input 10 numbers :\n");
for (i=0; i<10; i++) scanf("%d", &a[i]);
for(j=0; j<9; j++)
for(i=0 ;i<9-j ;i++)
if (a[i]>a[i+1]) {t=a[i]; a[i]=a[i+1] ;a[i+1]=t;}
printf("the sorted numbers :\n");
for(i=0; i<10; i++)
printf("%d ",a[i]);
printf("\n");
}
5 显示杨辉三角形的前10行
(1)各行第1个和最后一个数都是1
(2)从第3行起中间的那些元素的值,是上一行同一列和前一列2个数之和。a[i][j]=a[i-1][j]+a[i-1][j-1];
#include
#define N 10
main( )
{int i, j , a[N][N];
for (i=0 ; i { a[i][0]=1; a[i][i]=1;} for (i=2; i for (j=1; j a[i][j]=a[i-1][j]+a[i-1][j-1]; for (i=0; i {for(j=0; j<=i; j++) printf("%-5d", a[i][j]); printf("\n"); } } 第4章选择结构 1 有3个整数a,b,c,由键盘输入,输出其中最大的数。#include main( ) {int a, b, c, max; printf(“input a b c”); scanf(“%d%d%d”, &a,&b,&c); if (a>b) max=a; else max=b; if (c>max) max=c; printf(“max=%d\n”, max); } 2 有一函数 y = x (x<1) = 2x-1 (1<=x<10) = 3x-11 (x>=10) 用scanf函输入x的值,求y值。 #include main( ) {float x, y; printf("please enter x"); scanf("%f", &x); if (x<1) y=x ; else if (x>=1 && x<10) y=2*x-1; else y=3*x-11; printf("x=%.2f y=%.2f\n",x,y); } 3 给出一个百分制成绩,要求输出成绩等级“A”、“B”、“C”、“D”、“E”。90分以上(含90分)为“A”,80分以上、90分以下(含80分、不含90分)为“B”,70分以上、80分以下(含70分、不含80分)为“C”,60分以上、70分以下(含60分、不含70分)为“D”,60分以下(不含60分)为“E”。(不用switch语句) #include main( ) { float score; printf("input score"); scanf("%f", &score); if (score>=90) printf("A\n"); else if (score>=80) printf("B\n"); else if(score>=70) printf("C\n"); else if(score>=60) printf("D\n"); else printf("E \n"); } 第5章循环结构 1求数列前20项之和:2/1,3/2,5/3,8/5,13/8...... #include main( ) {int i=1; float a=2, b=1, c, sum=0, term; while (i<=20) {term=a/b; sum=sum+term; c=a+b; b=a; a=c; i++; } printf("sum=%.2f\n", sum); } 2 计算多项式前n项的值:s=a+aa+aaa+aaaa+......,a,n由键盘输入。 算法提示:该多项式迭代公式为:term=term*10+a,sum=sum+term #include main( ) {int a,n,i; double sum, term; printf("input a n ?"); scanf("%d%d",&a,&n); sum=0; term=a; for (i=1; i<=n; i++) {sum=sum+term; term=term*10+a; } printf("sum=%.0f\n",sum); } 3 36人搬36块砖, 男 4 女3 小孩2人搬1块, 求男、女、小孩各多少人。 #include main( ) {int x,y,z; printf("%6s%6s%6s\n", "男","女","小孩"); for(x=1; x<9; x++) for(y=1 ;y<12; y++) { z=36-x-y; if (4*x+3*y+z/2.0==36) printf("%6d%6d%6d\n", x,y,z); } } 4 给出一个百分制成绩,要求输出成绩等级"A"、"B"、"C"、"D"、"E"。90分以上(含90分)为"A",80分以上、90分以下(含80分、不含90分)为"B",70分以上、80分以下(含70分、不含80分)为"C",60分以上、70分以下(含60分、不含70分)为"D",60分以下(不含60分)为"E"。 (用switch语句) #include main( ) {int score,temp; char grade ; while (1) {printf("请输入学生成绩-1 结束:" ); scanf("%d",&score); if (score==-1) break; temp=score/10; switch (temp) {case 10: case 9: grade='A'; break; case 8: grade='B'; break; case 7: grade='C'; break; case 6: grade='D'; break; case 5: case 4: case 3: case 2: case 1: case 0: grade='E';} printf("成绩为%d,相应等级是%c\n", score, grade); } } 5请用switch 语句求一笔定期存款的到期利息:输入存款数、存款年数,输出到期利息。设存款利率为1年期2%,2年期2.5%,3年期2.8%,5年期3%。利息计算公式:a=p×r×n,设:a—到期利息,p—存款数,n—年数,r—利率(用switch语句) #include main( ) {float a, p, r; int n; while (1) {printf("请输入存款数年数(存款数输入0结束程序)"); scanf("%f%d", &p, &n); if (p==0) break; switch(n) {case 1: r=0.02; break; case 2: r=0.025; break; case 3: r=0.028; break; case 5: r=0.03; break; } a=p*r*n; printf("存款数:%.2f 年数:%d 利息: %.2f\n",p,n,a); } } 第6章数组 1对8个数组元素a[1], a[2], a[3], ……, a[8]进行排序(由小到大)。 #include main( ) {int a[8], i, j, t; printf("input 8 numbers :\n"); for (i=0; i<8; i++) scanf("%d", &a[i]); for(j=0; j<7; j++) for(i=0 ;i<7-j ;i++) if (a[i]>a[i+1]) {t=a[i]; a[i]=a[i+1] ;a[i+1]=t;} printf("the sorted numbers :\n"); for(i=0; i<8; i++) printf("%d ",a[i]); printf("\n"); } 2 将一个数列头尾颠倒。设该数列为1,3,5,7,9,11,15。要求按15,11,9,7,5,3,1的顺序存放并输出。 算法提示:先找到数组的中点位置,然后依次将头尾元素交换。#include #define N 7 main( ) {int i, t, a[N]; for (i=0; i scanf("%d", &a[i]); for (i=0; i {t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;} for (i=0; i printf("%4d",a[i]); } 3求一个3×4矩阵的所有靠外侧的的元素之和。 #include main( ) {int a[3][4], i, j, sum=0; printf("请输入数组元素值\n"); for (i=0; i<3; i++) for (j=0; j<4; j++) scanf("%d",&a[i][j]); printf("\n"); for (i=0; i<3; i++) for (j=0; j<4; j++) if (i==0 || i==2|| j==0 || j==3) sum=sum+a[i][j]; printf("sum=%d\n", sum); } 4 分别求4×4矩阵的主对角线上的元素之和,与另一条对角线上的元素之和的乘积。 #include main( ) { int a[4][4] , i, j, sum1=0, sum2=0; long m; printf("请输入数组元素值\n"); for (i=0; i<4; i++) for (j=0; j<4; j++) scanf("%d",&a[i][j]); for (i=0; i<4; i++) for (j=0; j<4; j++) { if (i==j) sum1=sum1+a[i][j]; if ((i+j)==3) sum2=sum2+a[i][j]; } m=sum1*sum2; printf("m=%ld \n" , m ); } 5 将字符数组a中下标为单号(1,3,5,…)的元素值赋给另一个字符数组b,然后输出a和b的内容。 #include main( ) {char a[10], b[10]; int i,j=0; printf("请输入字符串"); gets(a); for (i=0; a[i]!='\0'; i++) if (i%2==1) { b[j]=a[i]; j++;} b[j]= '\0'; puts(a); puts(b); } 第7章函数 1 x2-x+1 (x<0) y= x3+x-5 (x>=0) 编一个函数, 并用主函数调用它 #include main( ) {float x1,y1; float func(float x); printf("请输入X1的值"); scanf("%f",&x1); y1=func(x1); printf("x1=%f y1=%f \n",x1,y1);} float func(float x) {float y; if (x<0) y=x*x-x+1; else y=x*x*x+x-5; return (y); } 2 编写一个函数prt(c,n),打印给定的字符c,打印n次。在主函数中调用prt(c,n)函数,打印一个直角三角形。 注意:函数prt(c,n)完成输出功能,是一个void函数,有两个参数。 * ** *** **** ***** ****** #include void prt(char ch , int n) {int i; for (i=1; i<=n; i++) printf("%c", ch); printf("\n"); } main( ) {int i; for (i=1; i<=6; i++) prt('*', i); } 3 用函数的嵌套编写程序计算1!+2!+3!+…+n!的值,n为大于等于0的整数。#include double fac(int m) { int i; double t=1; for(i=1; i<=m; i++) t=t*i; return(t); } double sub(int n) {int i; double sum=0; for (i=1; i<=n; i++) sum=sum+fac(i); return(sum); } main( ) {int n; double s; printf("input n?"); scanf("%d", &n); s=sub(n); printf("s=%.0f\n", s); } 4 在自定义函数中 求(1) main( )中的数组3个元素的立方和,(2)并每个元素在函数中扩大10倍。 然后在main函数中显示出来。 #include double func(int b[ ]) {int i; double s=0; for(i=0; i<3; i++) {s=s+b[i]*b[i]*b[i]; b[i]=10*b[i]; } return(s); } main( ) {int i, a[3]; double sum; for(i=0; i<3; i++) {printf("input a[%d]" , i); scanf("%d", &a[i]); } sum=func(a); printf("%d %d %d\n", a[0],a[1],a[2]); printf("%.0f\n " , sum); } 第8章指针 1 使两个指针变量交换指向。 #include main( ) {int a=3, b=5, *p1, *p2, *p; p1=&a; p2=&b; printf("%p %p\n", p1, p2); p=p1; p1=p2; p2=p; printf("%p %p\n", p1, p2); } 2.交换两个指针变量所指向的变量的值。 #include main( ) {int a=3, b=5, t, *p1, *p2; p1=&a; p2=&b; t=*p1; *p1=*p2; *p2=t; printf("a=%d b=%d\n", a, b);} 3有三个整型变量i,j,k。请编写一个程序,设置三个指针变量p1,p2,p3,分别指向i,j,k。然后通过指针变量使i,j,k三个变量的值顺序交换,即原来i的值赋给j,原来j的值赋给k,原来k的值赋给i。i,j,k的原值由键盘输入,要求输出i,j,k的原值和新值。 #include main( ) {int i, j, k, t, *p1, *p2, *p3; printf("输入i j k"); scanf("%d%d%d",&i, &j ,&k); printf(“交换前 i=%d j=%d k=%d\n", i,j,k); p1=&i; p2=&j; p3=&k; t=*p2; *p2=*p1; *p1=*p3; *p3=t; printf("交换后 i=%d j=%d k=%d\n", i,j,k);} 4从键盘输入三个整数,要求设计三个指针变量p1,p2,p3,通过比较使p1指向三个数的最大者,p2指向次大者,p3指向最小者,然后由从大到小的顺序输出三个数。 #include main( ) {int i, j, k, t, *p1, *p2, *p3, *p; printf("输入i j k"); scanf("%d%d%d", &i,&j,&k); p1=&i; p2=&j; p3=&k; if(*p2>*p1) {p=p1; p1=p2; p2=p;} if(*p3>*p1) {p=p1; p1=p3; p3=p;} if(*p3>*p2) {p=p2; p2=p3; p3=p;} printf("i j k 分别为:%d %d %d\n", i, j, k); printf("*p1 *p2 *p3分别为:%d %d %d\n",*p1, *p2, *p3); } 5练习指针作为函数参数。一个数组有10个元素{1,8,10,2,-5,0,7,15,4,-5},利用指针作为函数参数编程,输出数组中最大的和最小的元素值。 #include void max_min(int *p, int n, int *pmax , int *pmin) {int *pend; pend=p+n; for ( p++; p if (*p>*pmax) *pmax=*p; else if (*p<*pmin) *pmin=*p; } main( ) {int i, max, min , a[10]; printf("输入10个整数\n"); for (i=0; i<10; i++) scanf("%d",&a[i]); max=min=a[0]; max_min(a, 10, &max, &min); printf("max=%d, min=%d\n",max,min); } 成都工业学院·计算机工程学院 《程序设计基础》实验报告 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 C语言实验报告《函数》 C语言实验报告《函数》 学号: __________ 姓名: __________ 班级: __________ 日期: __________ 指导教师: __________ 成绩: __________ 实验四函数 一、实验目的 1、掌握函数定义、调用和声明的方法 2、掌握实参和形参之间的传递方式 3、函数的嵌套调用 二、实验内容 1、写一个函数,将两个字符串连接。(习题 8. 6) 2、编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。(习题 8.9) 3、请将实验三中的实验内容三改正后,再改写成函数形式(排序部分)。物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板 三、实验步骤与过程 四、程序调试记录 一、实验目的 1.观察植物细胞有丝分裂的过程,识别有丝分裂的不同时期。 初步掌握制作洋葱根尖有丝分裂装片的技能。 3.初步掌握绘制生物图的方法。 二、实验原理在植物体中,有丝分裂常见于根尖、茎尖等分生区细胞,高等植物细胞有丝分裂的过程,分为分裂间期和分裂期的前期、中期、后期、末期。可以用高倍显微镜观察植物细胞的有丝分裂的过程,根据各个时期细胞内染色体(或染色质)的变化情况,识别该细胞处于有丝分裂的哪个时期,细胞核内的染色体容易被碱性染料着色。 三、材料用具洋葱根尖、显微镜、载玻片、盖玻片、滴管、镊子、培养皿、铅笔、质量分数为15%的盐酸、体积分数为95%的酒精、质量分数为0.01gml的龙胆紫(或紫药水) 四、实验过程(见书P39) 1.洋葱根尖的培养(提前3—4天) 2.解离: 5min 3.漂洗: 10min 4.染色: 5min 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 C语言实验报告 说明 1,所有程序均用VC6.0编译运行,文件名命名为姓名+日期,因为实验存在补做,所以并不是按照日期先后排列的。 2,为了使截图清晰,手动将运行窗口由“黑底白字”改为了“白底黑字”。 实验2 数据类型、运算符和表达式 一、实验目的: (1)掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量、以及对它们赋值的方法。 (2)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。 (3)掌握C语言的输入和输出函数的使用 (4)进一步熟悉C程序的编辑、编译、连接和运行的过程。 三、程序调试与问题解决: (1)输人并运行下面的程序 #include printf("%d %d\n",c1,c2); 再运行,并分析结果。 输出结果如图,编译成功,无错误。 ○3将第3行改为 int c1,c2; 再运行,并分析结果。 ○4再将第4、5行改为 c1=a; c2=b; 再运行,并分析结果。 a,b没有定义,编译报错。 ○5再将第4、5行改为 c1=‘’a‘’; c2=‘’b‘’; 再运行,并分析结果。 ○6再将第4、5行改为 c1=300; c2=400; 再运行,并分析结果。 以字符型输出时,输出的将是300,400对应的字符。 (2)输人并运行教材第3章习题3. 6给出的程序 #include 长沙理工大学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);这条语句 嘉应学院计算机学院 实验报告 课程名称: C程序设计 开课学期: 2015—2016学年第1学期 班级:计算机1505 指导老师:陈广明 设计题目:游戏2048 学生姓名(学号):第3组:钟瞻宇 目录 一、实验目的和要求 .................................................................................................................................................... 二、实验环境、内容和方法 ........................................................................................................................................ 三、程序设计 ................................................................................................................................................................ 四、源代码 .................................................................................................................................................................... 五、调试与运行结果.................................................................................................................................................... 六、总结........................................................................................................................................................................ 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 实验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、熟悉C 环境的安装、使用。 2、承上启下,复习《C 程序设计》等基础课程的知识。 3、掌握C 语言编程的方法。 三、预备知识 1、VC6.0的安装与使用。 2、C 程序设计基础知识。 四、实验内容 采用模块化程序设计完成进制转换。 五、程序框图 六、程序清单 1. 编写主函数:输入需转换的数与转换的进制 2. 编写子函数 (1)函数转换为除16进制以外的进制转换算数编程,使用while 循环实现计算进制的转换,并输出转换后的数字; (2)函数转换为16进制,用while 函数实现16进制转换的计算并输出16进制转换后的数据; 3. 编写数组,关于16进制的一系列字符 4. 编写主函数加入do while 使函数可以循环。 七、实验步骤 #include 实验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 C语言实验报告(四) 一、实验目的 1.掌握C语言中函数和模块 2.掌握怎样定义函数,如何调用或使用函数,如何声明函数 3.掌握函数的参数,了解在函数调用时,参数是如何传递的 4.在使用函数的过程中怎样确定函数的参数 5.如何使用局部变量和全局变量 二、实验内容 1. 偶数判断 描述: 编写一个用户自定义函数,该函数有一个整型参数,函数的功能是:当这个整型数的值是偶数时,函数的返回值为0,当这个整型数的值是奇数时,返回值为1 。编写一个程序,从键盘输入m个整数,分别调用用户自定义函数来判断这m个整数的奇偶性。 输入: 第一行为一个整数m,表示要判断m个整数的奇偶性;紧接着是m行,每行一个整数。 输出:有m行,分别对应输入的第2到第m+1行的整数的奇偶性样例输入: 2 1 6 样例输出: 奇数 偶数 ·程序代码: #include"stdio.h" int isEven(int a) { if(a%2==0) return 1; else return 0; } int main() { int m,i,b; scanf("%d",&m); for(i=1;i<=m;i++) { scanf("%d",&b); if(isEven(b)==1) printf("偶数\n"); else printf("奇数\n"); } return 0; } 2.温度转换 描述: 编写一个用户自定义函数,函数的功能是:将华氏温度转F换为摄氏温度C。转换公式为:C=5*(F-32)/9。编写一个程序,输出指定范围的华氏温度与摄氏温度的对照表,其中华氏温度步长为4。 输入: 两个空格隔开的整数n,m(且0 实验名称:指针及其应用日期:得分:指导老师: 专业:班次:姓名:学号: 实验目的 (1)掌握变量的指针及其基本用法。 (2)掌握一维数组的指针及其基本用法。 (3)掌握指针变量作为函数的参数时,参数的传递过程及其用法。一.实验内容( 1)运行以下程序,并从中了解变量的指针和指针变量的概念。 (2)运行以下程序,观察 &a[0] 、&a[i] 和 p 的变化,然后回答以下问题: 1.程序的功能是什么? 2.在开始进入循环体之前, p 指向谁? 3.循环每增加一次, p 的值(地址)增加多少?它指向谁? 4.退出循环后, p 指向谁? 5.你是否初步掌握了通过指针变量引用数组元素的方法?( 3)先分析以下程序的运行结果,然后上机验证,并通过此例掌握通过指针变量引用数组元素的各种方法。 ( 4)编写函数,将 n 个数按原来的顺序的逆序排列(要求用指针实现),然后编写主函数完成: ①输入 10 个数; ②调用此函数进行重排; ③输出重排后的结果。 二.分析与讨论 ( 1)指针的定义方法,指针和变量的关系。 定义方法: 数据类型 * 指针变量名 ; 如定义一个指向 int 型变量的指针—— int *p; 则我们可以继续写如下代码—— int a = 4; p = &a; printf("%d", *p); 在这里,我们定义了一个变量a,我们把它理解为内存空间连续的 4个字节(int 型占用 4字节),则这 4个字节的空间保存着一个数 4。&是取地址符号,即把变量a的地址(即这4个字节的首地址)赋给指针p (记住指针p的类型和变量a的类型要保持一致,否则的话,要进行类型转换)。这样子,指针p就保 存着变量a的地址。我们如果把指针p当做内存空间里面另外一个连续的 4个字节,那么这4个字节保存的数就是变量a的地址。printf("%d",*p)和 printf("%d",a)的结果是一样的。这里的*是取变量符号(与&刚好作用相反,通过变量的地址找到变量),与定义时 int *p 的*号作用不同(定义时的 *表示该变量是个指针变量,而非是取它指向的变量)。 ( 2)数组和指针的关系。 指针与数组是 C 语言中很重要的两个概念,它们之间有着密切的关系,利用这种 《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 一、实验项目名称 函数 二、实验目的 1.掌握C函数的定义方法、函数的调用方法、参数说明以及返回值。掌握实参与形参的对应关系以及参数之间的“值传递”的方式;掌握函数的嵌套调用及递归调用的设计方法; 2.掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法; 3.在编程过程中加深理解函数调用的程序设计思想。 三、实验内容 1.多模块的程序设计与调试的方法; 2.函数的定义和调用的方法; 3.用递归方法进行程序设计。 具体内容: 1.编写一个函数primeNum(int num),它的功能是判别一个数是否为素数。如果num 是素数,返回该数;否则返回0值。 要求: (1)在主函数输入一个整数num,调用该函数后,输出num是否是素数的信息。输出格式为:num is prime或num is not prime。 (2)分别输入以下数据:0,1,2,5,9,13,59,121,运行程序并检查结果是否正确。 2.编写函数computNum( int num),它的功能是计算任意输入的一个正整数的各位数字之和,结果由函数返回(例如:输入数据是123,返回值为6)。 要求:num由主函数输入,调用该函数后,在主函数内输出结果。 3.编写函数,mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。 要求: (1)在主函数中输入一对数据a和b,调用该函数后,输出结果并加以相应的说明。例如:在主函数中输入:10,5 ,则输出:10 is multiple of 5. (2)分别输入下面几组数据进行函数的正确性测试:1与5、5与5、6与2、6与4、20与4、37与9等,并对测试信息加以说明。 4.编写一个计算组合数的函数combinNum(int m,int n)。计算结果由函数返回。 计算组合数的公式是: c(m,n)=m!/(n!*(m-n)!) 要求: (1)从主函数输入m和n的值。对m>n、m 二、编程题(参考答案) 1、 #include “stdio.h” void main() { int Math=82,eng=78,comp=91,average; average=(Math+eng+comp)/3; printf(“Math=%d,eng=%d,comp=%d,average=%d\n”,Math,eng,comp,average); } 2、 #include “stdio.h” void main() { int n=152,d1,d2,d3; d1=n%10; d2=(n/10)%10; d3=n/100; printf(“整数%d的个位数字是%d,十位数字是%d,百位数字是%d\n”,n,d1,d2,d3); } 3、 #include “stdio.h” void main() { int n1,n2; printf(“Enter n1,n2:”); scanf(“%d,%d”,&n1,&n2); printf(“%d+%d=%d\n”,n1,n2,n1+n2); printf(“%d/%d=%d\n”,n1,n2,n1/n2); printf(“%d%%%d=%d\n”,n1,n2,n1%n2); } 三、改错题 原错误行(共三行): /********************************** found ********************************/ #include “stdoi,h” /********************************** found ********************************/ printf(“%d=%d*%d\n”,x); /********************************** found ********************************/ printf(“%d*%d=%d\n”,y); 改正后: #include “stdio.h” printf(“%d=%d*%d\n”,y,x,x); printf(“%d*%d=%d\n”,x,x,y); 学生实验报告 学号 : 日期 : 2014-06-22 系别计算机科 学与技术 专业 计算机科学 与技术(师) 班级姓名 课程名称程序设计基础 课程 类型 专业课学时数 2 实验 名称 函数 实验目的: 掌握C语言函数的定义与调用方法; 理解C语言函数的调用过程; 学会编写函数构造程序.。 实验要求: 实验后写实验报告。 1.实验内容: 1.阅读下列程序并执行,理解程序的功能并记录程序运行结果#include "stdio.h" int x,y; void num() { int a = 15,b = 10; x = a - b; y = a + b; } void main() { int a = 7,b = 5; x = a + b; y = a - b; num(); printf("%d,%d\n",x,y); } 运行结果: 2、阅读下面程序并执行,理解程序并记录程序运行结果#include "stdio.h" void main() { int a=2,i; for (i=0;i<3;i++)printf("%4d",f(a)); } f(int a) { int b=0; int c=3; b++; c++; return(a+b+c); } 运行结果: 3、调试运行教材146页-156页例7.1-例7.3页程序,理解并掌握程序改进所采用的程序设计技术。 7.1题 #include "stdio.h" /*函数功能:用迭代法计算n!*/ long Fact (int n) { int i; long result=1; for(i=2;i<=n;i++) { result*=i; } return result; } int main() { int m; long ret; printf("Input m:"); scanf("%d",&m); ret=Fact(m); printf("%d!=%ld\n",m,ret); return 0; C语言程序设计实验报告(实验名称:函数) 1实验目的 (1)掌握函数的定义方法、调用方法、参数说明以及返回值; (2)掌握实参与形参的对应关系,以及参数之间的“值传递”的方式; (3)掌握函数的嵌套调用及递归调用的用的设计方法; (4)在编程过程中加深理解函数调用的程序设计思想。 2实验内容 (1)编写一个函数primeNum(int x),功能是判别一个数是否为素数。 要求: ①在主函数中输入一个整数x(直接赋值或从键盘输入); ②函数类型为空值(void),调用primeNum( )函数后,在函数中输出x是 否为素数的信息,输出格式为“x is a prime number”或”x is not a prime number”; ③分别输入一下数据:0,1,2,5,9,13,59,121,并运行程序,检查 结果是否正确。 (2)编写函数 mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。 要求: ①在主函数中从键盘输入一对整型数据a和b; ②调用函数后,根据返回值对a和b的关系进行说明。例如,在主函数中输 入:10,5,则输出“10 is a multiple of 5”; ③分别输入下面几组数据进行函数的正确性测试:1与5,5与5,6与2,6 与4,20与4,37与9。 3算法描述流程图 (1)primeNum(int x)(判别一个数是否是素数)函数流程图 ①主函数流程图: ②判断素数函数流程图: (2)mulNum(int a,int b)(确定a和b是否是整数倍的关系)函数流程图 ①主函数流程图: 学生实验报告册 (理工类) 课程名称:C语言程序设计实验专业班级: 15自动化 2班 学生学号: 1517011063 学生姓名:王启涛所属院部:智能科学与控制工程学院指导教师:王预2015——20 16学年第 2 学期 金陵科技学院教务处制 实验报告书写要求 实验报告上交电子稿,标题采用四号黑体,正文采用小四号宋体,单倍行距。 实验报告书写说明 实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。 实验项目名称:初级程序设计实验学时: 6 实验地点:工科楼 实验日期: 2016.3.29 实验成绩: 批改教师:王预批改时间: 实验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 C语言实验报告参考答 案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】 长沙理工大学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 。 C 语言实验报告 实验名称专业 姓名学号 班级指导老师 实验七数组 1. 实验目的 (1))熟练掌握一维数组、二维数组的定义、初始化和输入/输出方法;(2))熟练掌握字符数组和字符串函数的使用; (3))掌握与数组有关的常用算法(如查找、排序等)。 2. 实验指导 (1))对任意一个一维型数组,从中找出数组元素的最大值和最小值并输出。要求: ①数组有十个元素; ②使用scanf 函数实现数组元素的输入前给出必要的提示; ③输出时,首先输出数组的十个元素,然后输出其最大值和最小值。 分析指导: ①算法分析:首先定义一个数组,通过循环从键盘输入十个数组元素的值,再 通过另一个循环判断数组元素的最大只和最小值; ②根据分析情况编写程序: #include (2) ) 编写函数 cmpStr(char s1[],char s2[]) 比较两个字符串 s1 和 s2 的大小。如果s1>s2, 返回一个正数 ;s1=s2, 返回 0; s1大一上期C语言实验报告1熟悉实验环境
C语言实验报告《函数》
C语言实验报告参考答案 原
c语言实验报告
C语言实验报告参考答案
游戏C语言实验报告
2010C语言实验报告参考答案
哈工大(威海)c语言实验报告册答案
C语言实验报告
C语言实验报告参考源代码
C语言实验报告(四)
C语言实验报告范文
C语言实验报告参考答案
C语言实验四实验报告——函数
C语言实验报告答案
C语言实验报告6——函数
C语言程序设计实验报告(函数)
C语言实验报告册_2016.3a
C语言实验报告参考答案完整版
C语言实验报告数组