c语言实验报告

2022-03-29 来源:其他范文收藏下载本文

推荐第1篇:C语言实验报告

郑州轻工业学院 实 践 报 告

实现内容:

OJ1123最佳校友(数组)、OJ1158又是升序(指针)、OJ1180成绩统计(结构)、OJ1203做幻方(文件)

号:541507020140 学生姓名:王红旭

专业班级:电子信息科学与技术15-01 所在院系:计算机与通信工程学院 指导教师:王秉政

绩:

实践名称:上机实验课

来源课程:[0404230]C程序设计进阶 实践时间:2016.03-05 实践地点:科学校区实验楼301

报告撰写时间:2016.05.10

1123最佳校友(数组) 1 实践目的

为了方便数组的管理和使用,提高程序设计的效率。

2 实践要求

熟练使用数组解决问题。

3 使用的技术、知识点、工具等

C语言程序设计书本教材,数组等。

4 需求分析和功能描述

要求;北京校友会每年举办两次,所有校友都有校友编号,每次到会的校友都在签到簿上写下自己的编号和姓名,在校友会成立5周年的聚会上将颁发“最佳校友奖”,该奖项颁发给到会次数最多的校友。现在请你编写程序,找出这个奖项的得主。若有多个校友并列第一,则均可获奖。

5 系统总体设计

#include int main() { int a[100]={0}; int i,n,max,k; while(scanf(\"%d\",&n),n>=0)

a[n]++; max=a[0]; for(i=1;i

if(a[i]>max)

max=a[i]; } k=0; for(i=0;i

if(a[i]==max)

{

if(k==0)

printf(\"%d\",i);

else

printf(\" %d\",i);

k++;

} }

} printf(\"\\n\"); return 0;

1158又是升序(指针)

1 实践目的

指针可以表示复杂的数据结构,能动态分布内存,及方便地址使用字符串,可作为函数间传递的参数,也可以作为函数返回值,为函数之间各类型数据的传递提供简捷便利的方法。

2 实践要求

熟练使用指针

3 使用的技术、知识点、工具等

C语言程序设计书本教材,指针等

4 需求分析和功能描述

将输入的四个整数按由大到小的顺序输出。

已定义如下swap函数,可实现形参pa和pb所指内存单元的内容交换。请务必使用本函数实现两个变量内容的互换。 void swap( int *pa, int *pb) { int t; t=*pa; *pa=*pb; *pb=t; } 5 系统总体设计

#include #include

void swap( int *pa, int *pb); int main() {

int a[10];

int i, j, n=4;

for(i=0; i

scanf(\"%d\", &a[i]);

for(i=0; i

for(j=i; j

if(a[i]

swap(&a[i], &a[j]);

for(i=0; i

printf(\"%d%c\", a[i], i!=n-1 ? \' \' : \'\\n\');

return 0; }

void swap( int *pa, int *pb) {

int t;

t=*pa;

*pa=*pb;

*pb=t; }

1180成绩统计(结构)

1 实践目的

数组在一定情况下不能更好的完成要求,使用结构可以更好的将数据关联起来,更好的解决问题。

2 实践要求

熟练使用结构

3 使用的技术、知识点、工具等

C语言程序设计书本教材,结构等

4 需求分析和功能描述

从键盘输入若干个学生的信息,每个学生信息包括学号、姓名、3门课的成绩,计算每个学生的总分,输出总分最高的学生的信息。

5 系统总体设计

#include typedef struct {

char ID[20];

char name[20];

int a;

int b;

int c; }STUDENT; //int inputArr int main() {

STUDENT stu, first;

int T=0, n=0, i=0;

scanf(\"%d\", &n);

first.a = first.b = first.c = -1;

for(i = 0 ; i

{

scanf(\"%s %s %d %d %d\", stu.ID, stu.name, &stu.a, &stu.b, &stu.c);

if(stu.a + stu.b + stu.c >first.a + first.b + first.c)

first = stu;

}

printf(\"%s %s %d %d %d\\n\", first.ID, first.name, first.a, first.b, first.c);

return 0; }

1203做幻方(文件)

1 实践目的

文件是处理大数据,并可以储存数据,防止数据消失。

2 实践要求

熟练使用文件

3 使用的技术、知识点、工具等

C语言程序设计书本教材,文件等

4 需求分析和功能描述

Apple最近迷上了做幻方,Apple还是个中高手,只要你说个奇数N就能把N*N的幻方做出来。其实你可以比他做得更好的。Apple总是画得很乱,而你可以利用程序排得很整齐^_^ 幻方的要求:每一行,每一列,还有两条斜线上数字的和都相等.5 系统总体设计

#include #include #define N 30 int sqr(int m);

int main() {

int m;

while(scanf(\"%d\", &m), m != 0)

{

sqr(m);

}

return 0; }

int sqr(int m) {

int a[N][N] = {0};

int x=0, y=0;

int times, p, q, fmt;

int i, j;

x = m / 2;

y = m1;

}

}

fmt = log10(times);

if(fmt == 0)

{

for(i = 0 ; i

{

for(j = 0 ; j

printf(\"\\n\");

j++)

}

} } else if(fmt == 1) {

for(i = 0 ; i

{

for(j = 0 ; j

printf(\"\\n\");

} } else if(fmt == 2) {

for(i = 0 ; i

{

for(j = 0 ; j

printf(\"\\n\");

} } printf(\"\\n\"); return 0;

推荐第2篇:C语言实验报告

实验一 C程序的运行环境和方法

一、实验目的

1.了解所用的计算机系统。

2.了解在该系统上如何进行编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序了解C程序的特点。

二、实验内容和步骤

1.熟悉所用的系统。了解Windows资源管理器的使用方法:文件的查看、复制、运行等方法,Visual C++所在目录,文本文件的建立方法。 2.进入Visual C++,并新建一个C++源程序文件。

3.熟悉Visual C++的集成环境,了解各菜单项有哪些子菜单。 4.输入下面的程序(教材中的例1.1),注意区分大小写。

#include void main() { printf(\"This is a C program.\\n\"); } 编译并运行程序。 结果为:

5.关闭工作区,新建一个程序,然后对教材中的例1.2重复4中的操作(即只将程序改为例1.2中的程序,其它操作步骤相同)。 其程序为:

#include int main() { int a,b,sum; a=123; b=456; sum=a+b; printf(\"sum is %d\\n\",sum); return 0; } 运行结果为:

6.关闭工作区,新建一个程序,然后输入并运行一个需要在运行时输入数据的程序

#include void main() {int a,b,c; int max(int x,int y);

printf(\"input a and b:\\n\"); scanf(\"%d,%d\",&a,&b); c=max(a,b); printf(\"\\nmax=%d\\n\",c); } int max(int x,int y) {int z; if(x>y) z=x; else z=y; return(z); } (1)运行程序,若程序有错,则修改错误后继续运行程序,当没有错误信息时输入:2,5并按Enter键,查看运行结果。

其运行结果为:

(2)将程序的第三行改为:int a;b;c;然后按F9看结果如何,将其修改为int a,b,c;将子程序max的第3,4行合并为一行,运行程序,看结果是否相同。 将程序的第三行改为:int a;b;c;运行结果为:

将子程序max的第3,4行合并为一行,运行程序,其结果相同,结果为:

7.运行一个自己编写的程序,程序的功能是输出两行文字。 其程序为:

#include void main() { printf(\"我是中国人!\\n\"); printf(\"我深深的爱着我的祖国!\\n\"); } 运行结果为:

实验二 数据类型、运算符和表达式

一、实验目的

1.掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。

2.掌握不同数据类型之间赋值的规律。

3.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。

4.进一步熟悉C程序的编辑、编译、连接和运行的过程。

二、实验内容和步骤

1.输入并运行下面的程序 #include void main() {char c1,c2; c1=\'a\'; c2=\'b\'; printf(\"%c %c\",c1,c2); } (1)运行此程序 其结果为:

(2)加入下面的一个语句作为“}”前的最后一个语句:

printf(\"%d,%d\\n\",c1,c2); 其结果为:

(3)将第3行改为:

int c1,c2; 然后再运行程序,并观察结果是否相同。 相同,其结果为:

(4)将第3行改为int c1,c2;将第4,5行依次改为:

c1=a;c2=b; c1=\"a\";c2=\"b\" c1=300;c2=400; 每改为一次后运行程序,观察结果。 其程序为:

#include void main() {int c1,c2; c1=\'a\',c2=\'b\'; c1=300;c2=400; printf(\"%c %c\\n\",c1,c2); printf(\"%d %d\\n\",c1,c2); } 其结果为:

2.分析教材第3章习题3.5中的程序的运行结果,然后输入该程序并运行,将运行结果与前面分析的结果对比。 其程序为:

#include int 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); printf(\"a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\\n\",a,b,x,y,c1,c2); return 0; } 其运行结果为:

3.输入并运行下面的程序

#include void main() {int a,b; unsigned c,d; long e,f; a=100; b=-100; e=50000; f=32767; c=a; d=b; printf(\"%d,%d\\n\",a,b); 3

printf(\"%u,%u\\n\",a,b); printf(\"%u,%u\\n\",c,d); c=a=e; d=b=f; printf(\"%d,%d\\n\",a,b); printf(\"%u,%u\\n\",c,d); } 请对照程序和运行结果分析: 运行结果为:

(1)将一个负整数赋给一个无符号的变量,会得到什么结果。画出它们在内存中的表示形式。

(2)将一个大于32767的长整数赋给一个整型变量,会得到什么结果。画出它们在内存中的表示形式。

(3)将一个长整数赋给无符号的变量,会得到什么结果。画出它们在内存中的表示形式。 4.输入习题3.10 (1)运行程序,注意i,j,m,n的值。 (2)将第4,5行改为:

m=i++; n=++j; 再运行。 (3)将程序改为:

#include void main() {int i,j; i=8;j=10; printf(\"%d,%d\\n\",++i,++j); i=8;j=10; printf(\"%d,%d\\n\",i++,j++); i=8;j=10; printf(\"%d,%d\\n\",++i,i); i=8;j=10; printf(\"%d,%d\\n\",i++,i); } 运行程序并分析运行结果。 其结果为:

5.按习题3.6的要求编程并上机运行:

要将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”,因此,“China”应译为“Glmre”。请编一程序,用赋初值的方法使c1、c

2、c

3、c

4、c5这5个变量的值分别为’C’,\'h\', \'i\',\'n\', \'a\',经过计算,使c1、c

2、c

3、c

4、c5分别变为:\'G\',\'l\',\'m\',r\',\'e\',并输出.程序提示:

main函数算法如下:

定义char型变量 c1,c2,c3,c4,c5; 给字符型变量赋值 c1=c1+4; c2=c2+4; c3=c3+4; c4=c4+4; c5=c5+4; 输出c1,c2,c3,c4,c5 其程序为: #include int main() {char c1=\'C\',c2=\'h\',c3=\'i\',c4=\'n\',c5=\'a\'; c1=c1+4; c2=c2+4; c3=c3+4; c4=c4+4; c5=c5+4; printf(\"paword is %c%c%c%c%c\\n\",c1,c2,c3,c4,c5); return 0; } 其运行结果为:

实验三 最简单的C程序设计

一、实验目的

1.掌握C语言中使用最多的一种语句――赋值语句的使用方法。 2.掌握各种类型数据的输入输出方法,能正确使用各种格式输出符。

二、实验内容和步骤

1.掌握各种格式输出符的使用方法。 #include void main() {int a,b; float d,e; char c1,c2; 5

double f,g; long n,m; unsigned p,q; a=61;b=62; c1=\'a\';c2=\'b\'; d=3.56;e=-6.87; f=3156.890121;g=0.123456789; m=50000;n=-60000; p=32768;q=40000; printf(\"a=%d,b=%d\\nc1=%c,c2=%c\\nd=%6.2f,e=%6.2f\\n\",a,b,c1,c2,d,e); printf(\"f=%15.6f,g=%15.12f\\nm=%ld,n=%ld\\np=%u,q=%u\\n\",f,g,m,n,p,q); } (1)运行此程序并分析运行结果。 其结果为:

(2)在此基础上,修改程序的第9-14行:

a=61;b=62; c1=a;c2=b; f=3156.890121;g=0.123456789; d=f;e=g; p=a=m=50000;q=b=n=-60000; 运行程序,分析运行结果。 其结果为:

(3)将9-14行改为以下的scanf语句,即用scanf函数接收从键盘输入的数据:

scanf(\"%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u\",&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q); 运行程序(无错误的情况下)输入数据如下:

61,62,a,b,3.56,-6.87,3156,890121,0.123456789,50000,-60000,32768,40000 其结果为:

2.按习题3.8的要求编写程序并运行:

设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积,圆球表面积、圆球体积、圆柱体体积。用scanf输入数据,输出计算结果,输出时要有文字说明,取小数后2位数字。 其程序为:

#include int main() {float h,r,l,s,sq,vq,vz; float pi=3.141526; printf(\"请输入圆半径r,圆柱高h:\"); scanf(\"%f,%f\",&r,&h); l=2*pi*r; s=r*r*pi; sq=4*pi*r*r; vq=3.0/4.0*pi*r*r*r; vz=pi*r*r*h; printf(\"圆周长为:l=%6.2f\\n\",l); printf(\"圆面积为:s=%6.2f\\n\",s); printf(\"圆球面积为:sq=%6.2f\\n\",sq); printf(\"圆球体积为:vq=%6.2f\\n\",vq); printf(\"圆柱体积为:%6.2f\\n\",vz); return 0; } 其运行结果为:

3.编写程序,用getchar函数输入两个字符给c1,c2,然后分别用putchar函数和printf函数输出这两个字符。 其程序为:

#include void main() { char c1,c2; printf(\"请输入两个字符: c1,c2 :\");

c1=getchar(); c2=getchar(); printf(\"用putchar语句输出结果为:\"); putchar(c1); putchar(c2); printf(\"\\n\"); printf(\"用printf语句输出结果为:\"); printf(\"%c%c\\n\",c1,c2); } 其运行结果为:

实验四 选择结构程序设计

一、实验目的

1.了解C语言表示逻辑值的方法。

2.学会正确使用逻辑运算符和逻辑表达式的方法。 3.熟悉if语句和switch语句。 4.结合程序掌握一些简单的算法。 5.学习调试程序的方法。

二、实验内容

本实验要求编程解决以下问题,然后上机调试运行程序。

x1x1x101.y2x13x11x10

用scanf函数输入x的值,求y的值。

其程序为:

#include void main() { int x,y; printf(\"请输入x:\\n\"); scanf(\"%d\",&x); if(x

else y=3*x-11; printf(\"x=%d,y=%d\\n\",x,y); } 运行结果为:

2.给出一个百分制的成绩,要求输出成绩等级A,B,C,D,E,90分及以上为A,80-89为B,70-79为C,60-69为D,60分以下为E。要求从键盘输入成绩,然后输出相应等级,分别用if语句和switch语句实现。 (1)使用if语句的程序如下: #include void main() { float score; char grade; printf(\"请输入学生成绩:\\n\"); scanf(\"%f\",&score); if(score>=90) grade=\'A\'; else if (score>=80) grade=\'B\'; else if (score>=70) grade=\'C\'; else if (score>=60) grade=\'D\'; else grade=\'E\'; printf(\"成绩是%-5.1f,相应的等级是%c\\n\",score,grade); } 运行结果为:

(2)使用switch语句程序如下: #include void main() { float score; char grade; printf(\"请输入学生成绩:\\n\"); scanf(\"%f\",&score); switch(int(score/10)) { case 10: case 9: grade=\'A\';break; case 8: grade=\'B\';break; case 7: grade=\'C\';break; case 6: grade=\'D\';break; default: grade=\'E\';break; }

printf(\"成绩是%-5.1f,相应的等级是%c\\n\",score,grade); } 其运行结果与使用if语句运行结果一样。

3.编程实现:输入一个不多于5位的正整数,要求:(1)输出它是几位数,(2)分别输出每一位数字,(3)按逆序输出各位数字,如原数为321,则应输出123。 应准备以下测试数据

要处理的数为1位正整数; 要处理的数为2位正整数; 要处理的数为3位正整数; 要处理的数为4位正整数; 要处理的数为5位正整数;

除此之外,程序还应当对不合法的输出作必要的处理。例如: 输入负数;

输入的数超过5位; 其程序为:

#include #include int main() 10

{ int num,indiv,ten,hundred,thousand,ten_thousand,place; printf(\"请输入一个整数(0-99999):\\n\"); scanf(\"%d\",&num); if(num>99999) printf(\"输入的数超过5位!\\n\"); else if(num9999) place=5; else if(num>999) place=4; else if(num>99) place=3; else if(num>9) place=2; else place=1; if(num>99999||num

printf(\"%d%d\",indiv,ten); break; case 1:printf(\"%d\",indiv); printf(\"\\n反序数字为:\"); printf(\"%d\",indiv); break; } printf(\"\\n\"); return 0; } }

4.编程实现:输入4个整数,要求按由小到大的顺序输出。得到正确结果后,修改程序使之按由大到小的顺序输出。 由小到大顺序输出其程序为: #include void main() {int t,a,b,c,d; printf(\"请输入四个数:\"); scanf(\"%d,%d,%d,%d,%d\",&a,&b,&c,&d); if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} 12

if(a>d) {t=a;a=d;d=t;} if(b>c) {t=b;b=c;c=t;} if(b>d) {t=b;b=d;d=t;} if(c>d) {t=c;c=d;d=t;} printf(\"排序结果为:\\n\"); printf(\"%d %d %d %d\\n\",a,b,c,d); } 其运行结果为:

由大到小顺序输出其程序为: 将上面程序第十九行改为:

printf(\"%d %d %d %d\\n\",d,c,b,a); 其运行结果为:

5.已知a=12,b=6,要求输入一个算术运算符(+、-、*、/),对a,b进行算术运算,并输出结果。 其程序为:

#include int main() {int a=12,b=6,c; char ch; printf(\"请输入一个四则运算的符号:\\n\"); scanf(\"%c\",&ch); printf(\"The result is:\"); switch(ch) { case\'+\':printf(\"a+b=%d\\n\",a+b);break; case\'-\':printf(\"a-b=%d\\n\",a-b);break; case\'*\':printf(\"a*b=%d\\n\",a*b);break; case\'/\':printf(\"a/b=%d\\n\",a/b);break; } return 0; } 其运行结果为:

实验五 循环控制

一、实验目的

熟悉使用while语句,do-while语句和for语句实现循环的方法。掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。

二、实验内容

1.上机完成习题6.1:输入两个正整数m和n,求出它们的最大公约数和最小公倍数。

输入时,使m

修改程序使对任何的整数都能得到正确的结果。 其程序为:

#include void main() { int p,r,n,m,temp; printf(\"请输入两个正整数 n,m:\\n\"); scanf(\"%d,%d\",&n,&m); if(n

2.编写程序利用公式:e1其程序为:

#include

111求e的近似值,精确到小数后6位 1!2!n!

void main() { int n,i; double e,p,t; printf(\"输入n的值:\\n\"); scanf(\"&d\",&n); e=1;t=1;p=1;i=1; while(t>=1e-7) {e=e+t; i++; p=p*i; t=1.0/p; } printf(\"The e is %f\\n\",e); } 其运行结果为:

3.编程求1到n中能被3或7整除的数之和。分别用for循环语句和while循环语句完成本题。

用for循环,其程序为: #include void main() { int i,n,sum=0; printf(\"请输入一个整数:\\n\"); scanf(\"%d\",&n); for(i=1;i

用while循环语句,其程序为:

#include void main() { 15

int i=1,n,sum=0; printf(\"请输入一个整数:\\n\"); scanf(\"%d\",&n); while(i

4.上机完成习题6.10:猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少桃子。

在得到正确结果后,修改题目,改为每天早上都吃了前一天剩下的一半加二个,请修改程序,并运行,检查运行结果是否正确。 其程序为:

#include void main() { int day,x=1,x1; for(day=9;day>=1;day--) { x=2*(x+1); x1=x; } printf(\"total=%d\\n\",x1); } 其运行结果为:

实验六 数组

一、实验目的

1.掌握一维数组与二维数组的定义、赋值及输入输出方法。 2.掌握字符数组和字符串函数的使用。

3.掌握与数组有关的算法(特别是排序算法)

二、实验内容

1.用选择法对10个整数排序。10个整数用scanf函数输入。 其程序为:

#include void main() {int i,j,min,temp,a[11]; printf(\"enter data:\\n\"); for(i=1;ia[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf(\"\\nThe sorted numbers:\\n\"); for(i=1;i

2.有15个数存放在一个数组中,输入一个数要求用折半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,则输出无此数,要找的数用scanf函数输入。 其程序为:

#include # define N 15 int main() {int i,number,top,bott,mid,loca,a[N],flag=1,sign; char c; printf(\"enter data:\\n\"); scanf(\"%d\",&a[0]); i=1; while(ia[i-1]) i++; else printf(\"enter this data again;\\n\"); } printf(\"\\n\"); while(flag) { printf(\"input number to look for:\"); scanf(\"%d\",&number);

sign=0;

top=0;

bott=N-1;

if(numbera[N-1])

loca=-1;

while((!sign)&&(top

{

mid=(bott+top)/2;

if(number==a[mid])

{loca=mid;

printf(\"Has found %d,its position is %d\\n\",number,loca+1);

sign=1;

}

else if(number

bott=mid-1;

else

top=mid+1;

}

if(!sign||loca==-1)

printf(\"cannot find %d.\\n\",number);

printf(\"continue or not(Y/N)?\");

scanf(\"%c\",&c);

if(c==\'N\'||c==\'n\')

flag=0; } return 0; } 其运行结果为:

3.将两个串连接起来,不要用strcat函数。 其程序为:

#include int main() { char s1[80],s2[40]; int i=0,j=0; printf(\"input string1:\"); scanf(\"%s\",s1); printf(\"input string2:\"); scanf(\"%s\",s2); while(s1[i]!=\'\\0\') i++; while(s2[j]!=\'\\0\') s1[i++]=s2[j++]; s1[i]=\'\\0\'; 19

printf(\"\\nThe new string is:\\n\",s1); return 0; } 其运行结果为:

4.找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。至少准备两组测试数据: (1)二维数组有鞍点 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 (2)二维数组没有鞍点 1 2 3 4 11 2 4 6 8 12 3 6 9 10 15 4 8 12 16 7 用scanf函数从键盘输入数组的各元素的值,检查结果是否正确,题目未指定二维数组的行数和列数,程序应能处理任意行数和列数的数组。 其程序为:

#include # define N 4 # define M 5 int main() { int i,j,k,a[N][M],max,maxj,flag; printf(\"please input matrix:\\n\"); for(i=0;imax) {max=a[i][j]; maxj=j; } flag=1; for(k=0;k

if(max>a[k][maxj]) {flag=0; continue;} if(flag) {printf(\"a[%d][%d]=%d\\n\",i,maxj,max); break; } } if(!flag) printf(\"It is not exist!\\n\"); return 0; } 其运行结果为:

实验七 函数

一、实验目的

1.掌握定义函数的方法。

2.掌握函数实参及形参的对应关系以及“值传递”方式。 3.掌握函数的嵌套调用和递归调用的方法。

4.掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法。 5.学会对多文件程序的编译和运行。

二、实验内容

1.写出一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。本程序应准备以下测试数据:17,34,2,1,0,分别输入数据,运行程序并检查结果是否正确。 其程序为:

#include int main() {int prime(int); int n; printf(\"input an integer:\\n\"); scanf(\"%d\",&n); if(prime(n)) printf(\"%d is a prime.\\n\",n); else printf(\"%d is not a prime.\\n\",n); return 0; 21

}

int prime(int(n)) {int flag=1,i; for(i=2;i

2.用一个函数来实现将一行字符串中最长的单词输出。此行字符从主函数传递给该函数。(1)把两个函数放在同一个程序文件中。

(2)将两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。 其程序为:

#include #include int main() { int alphabetic(char); int longest(char[]); int i; char line[100]; printf(\"input one line:\\n\"); gets(line); printf(\"The longest word is:\"); for(i=longest(line);alphabetic(line[i]);i++) printf(\"%c\",line[i]); printf(\"\\n\"); return 0; }

int alphabetic(char c) 22

{if((c>=\'a\'&&c=\'A\'&&c

int longest(char string[]) {int len=0,i,length=0,flag=1,place=0,point; for(i=0;i

len++; else {flag=1; if(len>=length) {len=len; place=point; len=0; } } return(place); } 其运行结果为:

3.用递归法将一个整数n转换成字符串。例如输入483.应输出字符串“483”。n的位数不确定,可以是任意的整数。 其程序为:

#include int main() {void convert(int n); int number; printf(\"input an integer:\"); scanf(\"%d\",&number); printf(\"output:\"); if (number

} convert(number); printf(\"\\n\"); return 0; }

void convert(int n) {int i; if((i=n/10)!=0) convert(i); putchar(n%10+\'0\'); putchar(32); } 其运行结果为:

4.求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数用另一个函数根据求出的最大公约数求最小公倍数。分别用下面的两种方法编程。 (1)不用全局变量,在主函数中输入两个数和输出结果。 (2)用全部变量的方法,数据的传递通过全部变量的方法。 不用全局变量其程序为: #include int main() {int hcf(int,int); int lcd(int,int,int); int u,v,h,l; scanf(\"%d,%d\",&u,&v); h=hcf(u,v); printf(\"H.C.F=%d\\n\",h); l=lcd(u,v,h); printf(\"L.C.D=%d\\n\",l); return 0; }

int hcf(int u,int v) {int t,r; if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v; v=r;} return(v); 24 }

int lcd(int u,int v,int h) { return(u*v/h); } 其运行结果为:

使用全局变量,其程序为: #include int Hcf,Lcd; int main() {void hcf(int,int); void lcd(int,int); int u,v; scanf(\"%d,%d\",&u,&v); hcf(u,v); lcd(u,v); printf(\"H.C.F=%d\\n\",Hcf); printf(\"L.C.D=%d\\n\",Lcd); return 0; }

void hcf(int u,int v) {int t,r; if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v; v=r; } Hcf=v; }

void lcd(int u,int v) { Lcd=u*v/Hcf; } 其运行结果为:

25

5.写一个函数,输入一个十六进制数,输出相应的十进制数。 其程序为:

#include # define MAX 1000 int main() {int htoi(char s[]); int c,i,flag,flag1; char t[MAX]; i=0; flag=0; flag1=1; printf(\"input a HEX number:\"); while((c=getchar())!=\'\\0\'&&i=\'0\'&&c=\'a\'&&c=\'A\'&&c

int htoi(char s[]) {int i,n; n=0; for(i=0;s[i]!=\'\\0\';i++) {if(s[i]>=\'0\'&&s[i]

n=n*16+s[i]-\'0\'; if(s[i]>=\'a\'&&s[i]=\'A\'&&s[i]

6、编程实现模拟计算机完成加、减、乘、除运算;加减乘除分别通过调用函数实现 其程序为:

#include float add(float x,float y); float minus(float x,float y); float chen(float x,float y); float chu(float x,float y); void main() { float a,b,c; char ch; printf(\"please enter a and ch and b:\\n\"); scanf(\"%f %c %f\",&a,&ch,&b); switch (ch)

{

case\'+\':c=add(a,b);break; printf(\"a+b=%4f\\n\",c);

case\'-\':c=minus(a,b);break; printf(\"a-b=%4f\\n\",c);

case\'*\':c=chen(a,b);break; printf(\"a*b=%4f\\n\",c);

case\'/\':c=chu(a,b);break; printf(\"a/b=%4f\\n\",c);

default :printf(\"enter data error!\\n\");

} printf(\"所求得的结果为:%4f\\n\",c);

27

printf(\"\\n\"); }

float add(float x,float y) {float c; c=x+y; return (c); }

float minus(float x,float y) {float d ; d=x-y; return (d); }

float chen(float x,float y) {float e ; e=x*y; return (e); }

float chu(float x,float y) {float f ; f=x/y; return (f); } 其运行结果为:

实验八

28

指针

一、实验目的

1.通过实验进一步掌握指针的概念,会定义和使用指针变量。 2.能正确使用数组的指针和指向数组的指针变量。 3.能正确使用字符串的指针和指向字符串的指针变量。 4.能正确使用指向函数的指针变量。

5.了解指向指针的指针的概念及其使用方法。

二、实验内容

以下程序要求使用指针处理。

1. 输入三个整数,按由小到大的顺序输出。运行无错后改为:输入三个字符串,按由小到大的顺序输出。

三个整数按由小到大的顺序输出其程序为: #include int main() {void swap(int *p1,int *p2); int n1,n2,n3; int *p1,*p2,*p3; printf(\"input three integer n1,n2,n3:\\n\"); scanf(\"%d,%d,%d\",&n1,&n2,&n3); p1=&n1; p2=&n2; p3=&n3; if(n1>n2) swap(p1,p2); if(n1>n3) swap(p1,p3); if(n2>n3) swap(p2,p3); printf(\"Now ,the order is:%d,%d,%d\\n\",n1,n2,n3); return 0; } void swap(int *p1,int *p2) {int p; p=*p1;*p1=*p2;*p2=p; } 其运行结果为:

三个字符按由小到大的顺序输出其程序为: #include #include int main() {void swap(char *,char *); char str1[20],str2[31],str3[20]; 29

printf(\"input three line:\\n\"); gets(str1); gets(str2); gets(str3); if(strcmp(str1,str2)>0) swap(str1,str2); if(strcmp(str1,str3)>0) swap(str1,str3); if(strcmp(str2,str3)>0) swap(str2,str3); printf(\"Now, the order is:\\n\"); printf(\"%s\\n%s\\n%s\\n\",str1,str2,str3); return 0; }

void swap(char *p1,char *p2) {char p[20]; strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p); } 其运行结果为:

2.将一个3×3的矩阵转置,用一函数实现。

在一主函数中用scanf函数输入以下矩阵元素: 1

5 7

11 13 15 17

将数组名作为函数参数,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出转置后的矩阵。 其程序为:

#include int main() {void move(int *pointer); int a[3][3],*p,i; printf(\"input matrix:\\n\"); for(i=0;i

printf(\"%d %d %d\\n\",a[i][0],a[i][1],a[i][2]); return 0; }

void move(int * pointer) {int i,j,t; for(i=0;i

3.有n人围成一个圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 其程序为:

#include int main() {int i,k,m,n,num[50],*p; printf(\"input number of person: n=\"); scanf(\"%d\",&n); p=num; for(i=0;i

i++; if(i==n) i=0; } while(*p==0) p++; printf(\"The last one is NO.%d\\n\",*p); return 0; } 其运行结果为:

4.用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数的原型为:

int strcmp(char *p1,char *p2); 设p1指向字符串s1,p2指向字符串s2.要求当两个字符相同时返回0,若两个字符串不相等,则返回返回它们二者第一个不同字符的ASCII码的差值。两个字符串s1,s2由主函数输入,strcmp函数的返回值也由主函数输出。 其程序为:

#include int strcmp(char *p1,char *p2); int main() {int m; char str1[20],str2[20],*p1,*p2; printf(\"input two strings:\\n\"); scanf(\"%s\",str1); scanf(\"%s\",str2); p1=&str1[0]; p2=&str2[0]; m=strcmp(p1,p2); printf(\"result:%d,\\n\",m); return 0; }

strcmp(char *p1,char *p2) {int i; i=0; while(*(p1+i)==*(p2+i)) if(*(p1+i++)==\'\\0\') return (0); return (*(p1+i)-*(p2+i)); } 其运行结果为:

32

5.用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数,n和各整数在主函数中输入,最后在主函数中输出。 其程序为:

#include void main() { void sort(int **p,int n); int i,n,data[10],**p,*pstr[10]; printf(\"Input n:\\n\"); scanf(\"%d\",&n); for(i=0;i**(p+j))

{temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; } } 其运行结果为:

33

6.用指针实现二维数组的地址和值的输出。其程序为:

#include int main() {int a[3][4],i,j; int *p; printf(\"请输入十二个数:\\n\"); for(i=0;i

34

推荐第3篇:C语言实验报告

C语言程序设计实验

--------指针应用实验

========================

山东农业大学实验报告

课程名称: c语言程序设计实验 学院: 水利土木工程学院 专业: 道路桥梁与渡河工程 班级: 2013级2班 姓名:

学号: 20133498

C语言与软件技术基础

实 验 报 告

课程名称 指导老师 班

实验名称 实验时间 姓

实验地点 提交时间 座

一、实验目的和要求

1、掌握指针和间接访问的概念,会定义和使用指针变量。

2、能正确使用数组的指针和指向数组的指针变量。

3、能正确使用字符串的执针和指向字符串的指针变量。

二、实验环境和方法

实验方法:

(一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。

(二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。

(三)根据实验内容,编译程序。

实验环境:Windows xp Visual C++6.0

三、实验内容及过程描述

实验内容:编译以下题目的程序并调试运行。

1、输入3个整数,按由大到小的顺序输出,然后将程序改为:输入3个字符串,按由小到大顺序输出。

①先编写一个程序,以处理输入3个整数,按由小到大顺序输出。运行程序,分析结果。 ②把程序改为能处理输入3个字符串,按由小到大的顺序输出。运行此程序,分析结果。 ③比较以上两个程序,分析处理整数与处理字符串有什么不同?例如: (a)怎样得到指向整数(或字符串)的指针。 (b)怎样比较两个整数(或字符串)的指针。 (c)怎样交换两个整数(或字符串)。

2、将一个3×3的整数型二维数组转置,用一个函数实现之。在主函数中用scanf函数输入以下数组元素:

19

将数组0行0列元素的地址作为函数实参,在执行函数的过程中实现行列互换,函数调用结束后在主函数中输出已转置的二维数组。

请思考: ① 二维数组的指针,某一行的指针、某一元素的指针个代表什么含义?应该怎么表示? ② 怎样表示i行j列元素及其地址。

3、将n个数按输入时顺序的逆序排列,用函数实现。①在调用函数时用数组名作函数实参。

②函数实参改为用指向数组首元素的指针,形参不变。 ③分析以上二者的不同。

4、写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。 分别在程序中按以下两种情况处理: ①函数形参用指针变量。 ②函数形参用数组名。 实验步骤: ① 进入Visual C++ 6.0集成环境。 ② 输入自己编好的程序。 ③ 检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时改正。 ④ 进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤ 运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果是否正确,应运行多次,分别检查在不同情况下结果是否正确。 以下是各题源代码:

1、输入3个整数,按由大到小的顺序输出,然后将程序改为:输入3个字符串,按由小到大顺序输出。程序①

#include int main() { void swap(int *p1,int *p2); int n1,n2,n3; int *p1,*p2,*p3; printf(\"请输入3个数n1,n2,n3:\"); scanf(\"%d,%d,%d\",&n1,&n2,&n3); p1=&n1; p2=&n2; p3=&n3; if(n1>n2) swap(p1,p2); if(n1>n3) swap(p1,p3); if(n2>n3) swap(p2,p3); printf(\"排序结果为:%d,%d,%d\\n\",n1,n2,n3); return 0; }

void swap(int *p1,int *p2) {int p; p=*p1;*p1=*p2;*p2=p; } 程序②

#include #include int main() { void swap(char *,char *); char str1[20],str2[31],str3[20]; printf(\"请输入3行字符:\\n\");

printf(\"请输入3行字符:\\n\"); gets(str1); gets(str2); gets(str3); if(strcmp(str1,str2)>0) swap(str1,str2); if(strcmp(str1,str3)>0) swap(str1,str3); if(strcmp(str2,str3)>0) swap(str2,str3); printf(\"排序结果为:\\n\"); printf(\"%s\\n%s\\n%s\\n\",str1,str2,str3); return 0; }

void swap(char *p1,char *p2) {char p[20]; strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p); }

2、将一个3×3的整数型二维数组转置,用一个函数实现之。#include int main() {void move(int * pointer); int a[3][3],*p,i,j; printf(\"请输入一个3×3数组:\\n\"); for(i=0;i

3、将n个数按输入时顺序的逆序排列,用函数实现。

#include int main() {void sort(char * p,int m); int i,n; char * p,num[20]; printf(\"请输入n为:\"); scanf(\"%d\",&n); printf(\"请输入%d个数:\\n\",n); for(i=0;i

printf(\"逆序排列为:\\n\"); for(i=0;i

4、写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。 分别在程序中按以下两种情况处理: ① 函数形参用指针变量。

#include int main() {int length(char * p); int len; char str[20]; printf(\"请输入一个字符串:\\n\"); scanf(\"%s\",str); len=length(str); printf(\"该字符串长度为%d.\\n\",len); return 0; } int length(char * p) {int n; n=0; while (* p!=\'\\0\') {n++; p++; } return(n); }

②函数形参用数组名。

#include int main() {int length(char str[]); int len; char str[20]; printf(\"请输入一个字符串:\\n\"); scanf(\"%s\",str); len=length(str); printf(\"该字符串长度为%d.\\n\",len); return 0; } int length(char str[20]) int length(char str[20]) {int n; char * p; p=str; n=0; while (* p!=\'\\0\') {n++; p++; } return(n); }

四、实验结果:

1、输入3个整数,按由大到小的顺序输出,然后将程序改为:输入3个字符串,按由小到大顺序输出。程序①结果:

结果分析:

本程序应用指针,在swap函数中交换指针p所指向的单元数值,使较小的数放前面从而达到排序的效果。 程序②结果:

结果分析:

利用指针指向字符串数组,在strcmp函数中,将两个字符串自左向右逐个字符比较(按ASCCII码值大小比较),直到出现不同字符或遇到’\\0’为止。

③处理整数只需将指针指向整数的存储地址然后进行比较;处理字符串时,字符串是用数组存储的,在进行

大小比较时用指针指向数组首地址或数组名从而得到字符串指针。比较整数用swap函数,比较字符串用strcmp函数。

2、将一个3×3的整数型二维数组转置,用一个函数实现之。

① 二维数组中,某一行的指针是指指向该数组一行中的所有元素可表示为:*(a+i),i表示第i行;某一元素指针代表任意元素的指针*a[i][j],i表示第i行,j表示第j列。 ② 第i行j列表示为a[i][j],地址表示为&a[i][j]。

3、将n个数按输入时顺序的逆序排列,用函数实现。

结果分析:

用数组名作函数实参与用指向数组首元素的指针作函数实参都是用“值传递”的方法将数值变量的地址传递到函数接收。数组名表示数组首元素的地址,在值传递中把首元素的地址传递到函数接收处,所以函数形参采用指针变量。

4、写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。 ①运行结果:

推荐第4篇:C语言实验报告

C语言程序设计(B)

(2010-2011-2)

实验报告2

教学班级:

学号:

姓名:

课程教师:

实验辅导教师:

一、做一个“杨辉三角” 实验前的源程序:

/*杨辉三角*/ #include void fun(int Y[][]) { int i,j,k; for(i=0;i

Y[i][0]=1;

Y[i][i]=1; } for(i=2;i

for(j=1;j

{

Y[i][j]=Y[i-1][j-1]+Y[i-1][j];

}

} } main() { int i,j,k; int Y[12][12]; fun (Y); for(i=0;i

for(k=1;k

printf(\"

\");

for(j=0;j

{

printf(\"%6d\",Y[i][j]);

}

printf(\"\\n\"); } } 实验错误报告:

--------------------配置: mingw2.95 - CUI Debug, 编译器类型: MinGW (Old)--------------------

检查文件依赖性...正在编译 D:\\Program Files\\C-Free Standard\\samples\\杨辉三角.cpp...[Error] D:\\Program Files\\C-Free Standard\\samples\\杨辉三角.cpp:4: declaration of `Y\' as

multidimensional array [Error] D:\\Program Files\\C-Free Standard\\samples\\杨辉三角.cpp:4: must have bounds for all

dimensions except the first [Error] D:\\Program Files\\C-Free Standard\\samples\\杨辉三角.cpp:8: `Y\' undeclared (first use this

function) [Error] D:\\Program Files\\C-Free Standard\\samples\\杨辉三角.cpp:8: (Each undeclared identifier is

reported only once [Error] D:\\Program Files\\C-Free Standard\\samples\\杨辉三角.cpp:8: for each function it appears

in.) [Error] D:\\Program Files\\C-Free Standard\\samples\\杨辉三角.cpp:4: too many arguments to

function `void fun()\' [Error] D:\\Program Files\\C-Free Standard\\samples\\杨辉三角.cpp:23: at this point in file

构建中止 杨辉三角: 7 个错误, 0 个警告

实验后的源程序:

/*杨辉三角*/ #include void fun(int Y[12][12]) { int i,j,k; for(i=0;i

Y[i][0]=1;

Y[i][i]=1; } for(i=2;i

for(j=1;j

{

Y[i][j]=Y[i-1][j-1]+Y[i-1][j];

}

} } main() { int i,j,k; int Y[12][12]; fun (Y); for(i=0;i

for(k=1;k

printf(\"

\");

for(j=0;j

{

} } printf(\"%6d\",Y[i][j]); } printf(\"\\n\");

二、用函数的方法 3*3矩阵置换

实验前的源程序:

/*用函数的方法 3*3矩阵置换*/ #include \"stdio.h\" main() { void zhihuan(); zhihuan(); } void zhihuan() {

int a[3][3],b[3][3]; int i,j; printf(\"请输入一个3*3的矩阵:\"); printf(\"\\n\"); for(i=0 ;i

for(j=0;j

{

printf(\" %d \",a[i][j]);

b[j][i]=a[i][j];

}

printf(\"\\n\"); } printf(\"\\n转置后的矩阵排列为:\\n\"); for(i=0 i

for(j=0;j

{

printf(\" %d \",b[i][j]);

}

} } printf(\"\\n\"); 实验错误报告:

[Error] D:\\Program Files\\C-Free Standard\\temp\\未命名3.cpp:30: parse error before `

实验后的源程序:

/*用函数的方法 3*3矩阵置换*/ #include \"stdio.h\" main() { void zhihuan(); zhihuan(); } void zhihuan() {

int a[3][3],b[3][3]; int i,j; printf(\"请输入一个3*3的矩阵:\"); printf(\"\\n\"); for(i=0 ;i

for(j=0;j

{

printf(\" %d \",a[i][j]);

b[j][i]=a[i][j];

}

printf(\"\\n\"); } printf(\"\\n转置后的矩阵排列为:\\n\"); for(i=0 ;i

for(j=0;j

}

} { printf(\" %d \",b[i][j]); } printf(\"\\n\");

三、用函数

输入一个字符串按反序存放

实验前的源程序:

/*输入一个字符串按反序存放*/ #include #include \"string.h\" void fun(char str) {

int length,i;

char temp; length=strlen(str);

length=strlen(str); for(i=0;i

temp=str[i];

str[i]=str[length-i-1];

str[length-i-1]=temp; } } main() { int i,length; char str[89],temp; printf(\" 请输入一串字符:\\n\"); gets(str); fun(str); printf(\"

字符的逆序排列为:\\n

\"); puts(str); } 实验错误报告:

[Error] D:\\Program Files\\C-Free Standard\\samples\\输入一个字符串按反序存放.cpp:8: paing `char\' to argument 1 of `strlen(const char *)\' lacks a cast [Error] D:\\Program Files\\C-Free Standard\\samples\\输入一个字符串按反序存放.cpp:10: paing `char\' to argument 1 of `strlen(const char *)\' lacks a cast [Error] D:\\Program Files\\C-Free Standard\\samples\\输入一个字符串按反序存

放.cpp:13: invalid types `char[int]\' for array subscript [Error] D:\\Program Files\\C-Free Standard\\samples\\输入一个字符串按反序存放.cpp:14: invalid types `char[int]\' for array subscript [Error] D:\\Program Files\\C-Free Standard\\samples\\输入一个字符串按反序存放.cpp:14: invalid types `char[int]\' for array subscript [Error] D:\\Program Files\\C-Free Standard\\samples\\输入一个字符串按反序存放.cpp:15: invalid types `char[int]\' for array subscript [Error] D:\\Program Files\\C-Free Standard\\samples\\输入一个字符串按反序存放.cpp:24: paing `char *\' to argument 1 of `fun(char)\' lacks a cast 构建中止 输入一个字符串按反序存放: 7 个错误, 0 个警告

实验后的源程序:

/*输入一个字符串按反序存放*/

#include #include \"string.h\" void fun(char str[]) {

int length,i;

char temp; length=strlen(str);

length=strlen(str); for(i=0;i

temp=str[i];

str[i]=str[length-i-1];

str[length-i-1]=temp; } } main() { int i,length; char str[89],temp; printf(\" 请输入一串字符:\\n\"); gets(str); fun(str); printf(\"

字符的逆序排列为:\\n

\"); puts(str); }

四、用指针的方法 将3*3矩阵转置

实验前的源程序:

/*用指针的方法,将一个3*3整形矩阵转置*/ #include \"stdio.h\" void Transfer(int (*pointer)[3]) {

int t;

int i, j;

for(i=1;i

{

for(j=0;j

{

t=*(*(pointer+j)+i);

*(*(pointer+j)+i)=(*(pointer+i)+j);

*(*(pointer+i)+j)=t;

}

} }

main() { int i,j;

int a[3][3];

printf(\"请输入一个3*3的整形矩阵:\\n\");

for(i=0;i

{

for(j=0;j

{

scanf(\"%d\",&a[i][j]);

}

}

printf(\"您所输入的3*3矩阵是:\\n\");

for(i = 0;i

for(j=0;j

{

printf(\" %d \",a[i][j]);

}

printf(\"\\n\");

}

Transfer(a);

printf(\"转置后的3*3矩阵为:\\n\");

for(i=0;i

for(j=0;j

} } { printf(\" %d \",a[i][j]); } printf(\"\\n\"); 实验错误报告:

正在编译 D:\\Program Files\\C-Free Standard\\samples\\用指针的方法,将一个33整形

矩阵转置.cpp...[Error] D:\\Program Files\\C-Free Standard\\samples\\用指针的方法,将一个33整形矩阵转置.cpp:13: aignment to `int\' from `int *\' lacks a cast 构建中止 用指针的方法,将一个33整形矩阵转置: 1 个错误, 0 个警告

实验后的源程序:

/*用指针的方法,将一个3*3整形矩阵转置*/ #include \"stdio.h\" void Transfer(int (*pointer)[3]) {

int t;

int i, j;

for(i=1;i

{

for(j=0;j

{

t=*(*(pointer+j)+i);

*(*(pointer+j)+i)=*(*(pointer+i)+j);

*(*(pointer+i)+j)=t;

}

} }

main() { int i,j;

int a[3][3];

printf(\"请输入一个3*3的整形矩阵:\\n\");

for(i=0;i

{

for(j=0;j

{

scanf(\"%d\",&a[i][j]);

}

}

printf(\"您所输入的3*3矩阵是:\\n\");

for(i = 0;i

for(j=0;j

{

printf(\" %d \",a[i][j]);

}

printf(\"\\n\");

}

Transfer(a);

printf(\"转置后的3*3矩阵为:\\n\");

for(i = 0;i

for(j=0;j

{

printf(\" %d \",a[i][j]);

}

printf(\"\\n\"); } }

五、用指针 请输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换实验前的源程序:

实验前的源程序:

#include void main () { int a[10],i,*m,*n; printf(\"Input 10 numbers:\\n\"); for(i=0;im) m=&a[i]; i=a[10]; a[10]=*m; *m=i;

} for(i=0;i

正在编译 D:\\Program Files\\C-Free Standard\\temp\\未命名7.cpp...[Error] D:\\Program Files\\C-Free Standard\\temp\\未命名7.cpp:13: ANSI C++ forbids comparison between pointer and integer 构建中止 未命名7: 1 个错误, 0 个警告

实验后的源程序:

#include void main () {

int a[10],i,*m,*n;

printf(\"Input 10 numbers:\\n\");

for(i=0;i

{

scanf(\"%d\",&a[i]);

m=n=&a[0];

}

for(i=0;i

{

if(a[i]>*m)

m=&a[i];

i=a[10];

a[10]=*m;

*m=i;

}

for(i=0;i

{

if(a[i]

i=a[9];

a[9]=*n;

*n=i;

}

for(i=0;i

printf(\" %d \",a[i]); }

六、用指针 求一字符的长度再main中输入在字符串,并输出长度

实验前的源程序:

/*用指针 求一字符的长度 再main中输入在字符串,并输出长度*/ #include int length(char *s) {

int i,n=0;

for(i=0;*(s+i)!=\\0;i++)

n++;

return(n); } void main() {

char *s;

char c[20];

s=c;

printf(\"请输入字符串:\\n\");

gets(c);

printf(\" 字符串长度为%d\\n\",length(s)); } 实验错误报告:

正在编译 D:\\Program Files\\C-Free Standard\\samples\\用指针 求一字符的长度 再main中输入在字符串,并输出长度.cpp...[Error] D:\\Program Files\\C-Free Standard\\samples\\用指针 求一字符的长度 再main中输入在字符串,并输出长度.cpp:6: stray \'\\\' in program [Error] D:\\Program Files\\C-Free Standard\\samples\\用指针 求一字符的长度 再main中输入在字符串,并输出长度.cpp:6: parse error before `;\' 构建中止 用指针 求一字符的长度 再main中输入在字符串,并输出长度: 2 个错

误, 0 个警告

实验后的源程序:

#include int length(char *s) {

int i,n=0;

for(i=0;*(s+i)!=\'\\0\';i++)

n++;

return(n);

} void main() {

char *s;

char c[20];

s=c;

printf(\"请输入字符串:\\n\");

gets(c);

printf(\" 字符串长度为%d\\n\",length(s)); }

七、用函数的方法 由实参传来一个字符串,统计此字符中字母、数字、空格、和其他字符的个数,在主函数中输入字符串以及输出上述结果。 实验前的源程序:

/*用函数的方法 由实参传来一个字符串,

统计此字符中字母、数字、空格、和其他字符的个数, 在主函数中输入字符串以及输出上述结果*/ #include int alphabet,number,space,others; void count(char str[]) {

int i;

for(i=0;str[i]!=\'\\0\';i++)

if((str[i]>=\'a\'&&str[i]=\'A\'&&str[i]

alphabet++;

else if(str[i]>=\'0\'&&str[i]

number++;

else if(str[i]==32)

space++;

else

others++; } void main() {

void count(char[]);

char str[80];

printf(\"输入字符串:\\n\");

gets(str);

alphbet=0;

number=0;

space=0;

others=0;

count(str);

printf(\"字母的个数= %d\\n数字的个数= %d\\n空格的个数= %d\\n其他字符个数= %d\\n\",alphabet,number,space,others); } 实验错误报告:

检查文件依赖性...正在编译 D:\\Program Files\\C-Free Standard\\samples\\用函数的方法 由实参传来一

个字符串,.cpp...[Error] D:\\Program Files\\C-Free Standard\\samples\\用函数的方法 由实参传来一个字符串,.cpp:25: `alphbet\' undeclared (first use this function) [Error] D:\\Program Files\\C-Free Standard\\samples\\用函数的方法 由实参传来一个字符串,.cpp:25: (Each undeclared identifier is reported only once [Error] D:\\Program Files\\C-Free Standard\\samples\\用函数的方法 由实参传来一个字符串,.cpp:25: for each function it appears in.) 构建中止 用函数的方法 由实参传来一个字符串,: 3 个错误, 0 个警告

实验后的源程序:

/*用函数的方法 由实参传来一个字符串,

统计此字符中字母、数字、空格、和其他字符的个数, 在主函数中输入字符串以及输出上述结果*/ #include int alphabet,number,space,others; void count(char str[]) {

int i;

for(i=0;str[i]!=\'\\0\';i++)

if((str[i]>=\'a\'&&str[i]=\'A\'&&str[i]

alphabet++;

else if(str[i]>=\'0\'&&str[i]

number++;

else if(str[i]==32)

space++;

else

others++; } void main() {

void count(char[]);

char str[80];

printf(\"输入字符串:\\n\");

gets(str);

alphabet=0;

number=0;

space=0;

others=0;

count(str);

printf(\" 字母的个数=%d\\n 数字的个数=%d\\n 空格的个数=%d\\n 其他字符个数=%d\\n\",alphabet,number,space,others); }

八、用函数方法 输入一个3*3矩阵求其中元素的最大值 实验前的源程序:

/*用函数方法 输入一个3*3矩阵求其中元素的最大值*/ #include void main() { int A[3][3];

int i,j ; printf(\"请输入一个3*3矩阵\\n\"); for(i=0;i

for(j=0;j

{

scanf(\"%d\",&A[i][j]);

} } int max(int array[][3]); printf(\"max= %d\\n\",max(A)); } int max(int array[][3]) { int i,j,max; max=array[0][0]; for(i=0;i

for(j=0;j

if(array[i][j]>max)

max=array[i][j];

return(max); } 实验错误报告:

正在编译 D:\\Program Files\\C-Free Standard\\temp\\未命名4.cpp...[Error] D:\\Program Files\\C-Free Standard\\temp\\未命名4.cpp:23: parse error before `)\' 构建中止 未命名4: 1 个错误, 0 个警告

实验后的源程序:

/*用函数方法 输入一个3*3矩阵求其中元素的最大值*/ #include void main() { int A[3][3];

int i,j ; printf(\"请输入一个3*3矩阵\\n\"); for(i=0;i

for(j=0;j

{

scanf(\"%d\",&A[i][j]);

} } int max(int array[][3]); printf(\"max= %d\\n\",max(A)); } int max(int array[][3]) { int i,j,max; max=array[0][0]; for(i=0;i

for(j=0;j

if(array[i][j]>max)

max=array[i][j];

return(max); }

推荐第5篇:c语言实验报告

c语言实验报告

学号:__________ 姓名:__________ 班级:__________ 日期:__________

指导教师:__________ 成绩:__________

实验一 上机操作初步和简单的C程序设计

一、实验目的

1、熟悉C语言运行环境Turbo C++3.0

2、会简单的程序调试

3、熟悉C语言各种类型数据的输入输出函数的使用方法

4、掌握顺序结构程序设计

二、实验内容

1、上机运行本章3个例题,熟悉所用系统的上机方法与步骤。(习题1.7)

2、编写一个C程序,输入a、b、c 3个值,输出其中最大者。(习题1.6)

3、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。注意:在Trubo C++ 3.0中不能输入汉字,只能输入英文或拼音。(习题4.8)

4、运行如下程序,写出运行结果。

#include

void main() {

int a=1,b=2;

a=a+b; b=a-b; a=a-b;

printf(\"%d,%dn\",a,b); }

三、实验步骤与过程

四、程序调试记录

推荐第6篇:C语言实验报告

实验一 C程序的运行环境和运行C程序的办法

1.实验目的

(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。 (2)了解在该系统上如何编辑、编译、连接和运行一个C程序。 (3)通过运行简单的C程序,初步了解C源程序的特点。 (2)进入所用的集成环境。

(3)熟悉集成环境的界面和有关菜单的使用方法。 (4)输入并运行一个简单的、正确的程序。

①根据本书介绍的方法对源程序进行编译,观察屏幕上显示的编译信息。若出错则返回修改,无错则连接。 ② 编译连接无错,运行程序,观察分析运行结果。 (5)输入并编译一个有错误的C程序。

(6) 输入并运行一个需要在运行时输入数据的程序。 (7) 运行一个自己编写的程序

心得体会:了解了C程序的运行环境和运行C程序的办法。在学校机房选用的是Turbo C。

实验二 数据类型、运算符和表达式

1.实验目的

(1) 掌握C语言数据类型、熟悉如何定义一个整型、字符型和实型的变量,以及对他们的赋值方法。 (2) 掌握不同数据类型之间的赋值规律。

(3) 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 (4) 进一步熟悉C程序的编辑、编译、连接和运行的过程。 2.实验内容和步骤 (1) 输入并运行下面程序: #include void main() {char c1,c2; c1='a'; c2='b'; printf("%c %c\n",c1,c2); } ①运行此程序,结果为:a b

②在上面printf语句下面再增加一个printf语句: printf("%d %d\n",c1,c2); 再运行,并分析结果,结果为97 98 ③将第三行改为 int c1,c2; 再使之运行,并观察结果,结果为97 98 ④再将第

4、5行改为;c1=a; c2=b; 再使之运行,并观察结果,结果为运行出错。 ⑤再将第

4、5行改为:

1

(1)检查所用计算机系统是否已安装了C编译系统并确定它所在的子目录。

c1=”a”; c2=”b”; 再使之运行,并观察结果,结果为404 406 ⑥再将第

4、5行改为: c1=300; c2=400; 再使之运行,并观察结果,结果为300 400;

心得体会:在编写C程序时,有些细小的错误会影响结果的正确性。所以编写的时候要仔细小心。初步编写完成要回过头来再检查一遍

实验三 最简单的C程序设计

1.实验目的

(1)掌握C语言中使用最多的一种语句——赋值语句的使用方法。 (2)掌握各种类型数据的输入输出方法,能正确使用各种格式转换符。 2.实验内容和步骤

(1)通过下面的程序掌握各种格式转换符的正确使用方法。 ①输入以下程序 #include void main() {int ‘a’,’b’; float d,e; char c1,c2; double f,g; long m,n; unsigned int p,q; a=61,b=62 c1=a,c2=b d= 3.56,e= -6.87 f= 3157.890121,g= 0.123456789000 m=50000,n=-60000 p=32768,q=40000 printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q); getch(); } ②运行此程序并分析结果 a=61,b=62 c1=a,c2=b d= 3.56,e= -6.87 f= 3157.890121,g= 0.123456789000 m=50000,n=-60000 p=32768,q=40000 ③在此结果上,将程序9~14行改为: a=61,b=62

2

c1=a,c2=b d= 3.56,e= -6.87 f= 3157.890121,g= 0.123456789000 m=50000,n=-60000 p=32768,q=40000 运行程序,分析结果a=-15536,b=5536 c1==,c2=>d=3157.89,e= 0.12 f= 3157.890121,g= 0.123456789000 m=50000,n=-60000 p=50000,q=5536 ④改用scanf函数输入程序而不用赋值语句,scanf函数如下

scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u",&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q) 输入的数据如下:

61,62,a,b,3.56,-6.87,3157,89.121,0.123456789,50000,-60000,37678,40000 运行结果如下:

61,62,a,b,3.56,-6.87,3157.890121,0.123456789,50000,-60000,37678,40000 a=61,b=62 c1=a,c2=b d= 3.56,e= -6.87 f= 3157.890121,g= 0.123456789000 m=50000,n=-60000 p=37678,q=40000 ⑤在④的基础上将printf改为:printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%15.6f,e=%15.12f\n",a,b,c1,c2,d,e); printf("f=%f,g=%f\nm=%d,n=%d\np=%d,q=%\n",f,g,m,n,p,q); a=61,b=62 c1=a,c2=b d= 3.560000,e=-6.869999885559 f=3157.890121,g=0.123457 m=-15536,n=0 p=5536,q=-1

⑥将p,q改用%o格式符输出a=61,b=62 c1=a,c2=b d= 3.560000,e=-6.869999885559 f=3157.890121,g=0.123457 m=-15536,n=0 p=12640,q=177777

⑦将scanf函数中的%lf和%ld改为%f和%d,运行程序分析结果: c1=a,c2=b d= 3.560000,e=-6.869999885559 f=0.000000,g=0.000000

3

m=-15536,n=1824 p=5536,q=1983 (2)按习题4.8要求编写程序,并上机运行。题目为:设半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出结果。输出时要有文字说明,取小数点后两位数字。 #include main() { float r,h,L,S,S1,V,V1,pi=3.1415926; printf("r= "); scanf("%f",&r); printf("h= "); scanf("%f",&h); L=2*pi*r; S=pi*r*r; S1=4*pi*r*r; V=4/3*(pi*r*r*r); V1=S*h; printf("L=%6.2f\nS=%6.2f\nS1=%6.2f\nV=%6.2f\nV1=%6.2f\n",L,S,S1,V,V1); printf("*********\n"); printf("copyright\n"); printf("*********\n"); getch(); 结果:L=9.42 S=7.07 S1=28.26 V=14.13 V1=21.20 (3)编程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数和printf函数输出这两个字符。

上机运行程序,比较用printf和putchar函数输出字符的特点。 代码:#include void main() {char c1,c2; c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); printf("%c,%c",c1,c2); getch(); } 结果:ab aba,b 比较,一个putchar函数只可以输出一个字符,而一个print函数可以输出多个字符,并可以用符号连接。

心得体会:如何在代码中使用不同的函数从而简化代码,优化代码需要我们多加练习,多加体会。

实验四 逻辑结构程序设计

1.实验目的

(1) 了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。

4

(2) 学会正确使用逻辑运算符和逻辑表达式。 (3) 熟练掌握if语句和switch语句。 (4) 结合程序掌握一些简单的算法。 (5) 学习调试程序。 2.实验内容

(1)习题5.5。有一函数: y=x

(x

(1≦x

运行程序,输入的x(分别为x void main() { int x,y; printf("x:"); scanf("%d",&x); if(x

} } 运行结果:x: ⑵ 给出一个百分制绩,要求输入成绩ABCDE。90分以上的为A,81~89分为B,70~79分为C,60~69分为D,60分以下的为E。 ① 实现编号程序,要求分别用IF和switch语句来实现。运行结果,并检查结果。

② 在运行一次,输入值为负值,这显然时输入错误,修改程序,是只能正确处理结果,当输入数据>100或<0是,通知用户输入错误,程序结束。 # include void main() {float score; char grade; printf("input student's score:"); scanf("%f",&score); switch((int)(score)) {case 100: case 90:grade='A';break; case 80:grade='B';break;

5

case 70:grade='C';break; case 60:grade='D';break; case 50: case 40: case 30: case 20: case 10: case 00:grade='E';break; } printf("score is %5.1fthe grade is %c\n",score,grade); getch(); } (3)给一个不多于5为的正整数,要求1:起哦出他是几位数,2:粉笔输出每一位数字3;按逆顺序输出各个数字,例如原数321,应输出123,

·要处理的数为1位正整数; ·要处理的数为2位正整数; ·要处理的数为3位正整数; ·要处理的数为4位正整数; ·要处理的数为5位正整数。

除此之外,程序还应当对不合法的输入作必要的处理,例如: ·输入负数;

·输入的数超过5位(如123456) 代码:#include void main() {long x;int a,b,c,d,e; scanf("%ld",&x); if (x>=100000||x=0&&x=10&&x=100&&x=1000&&x=10000&&x

6

结果:与预期相符。

(4)输入4个整数,要求按由小到大顺序输出。

在得到正确结果后,修改程序使之按由大到小顺序输出。 代码1:#include void main() {int a,b,c,d,t; scanf("%d,%d,%d,%d",&a,&b,&c,&d); if (a>b) {t=a;a=b;b=t;} if (a>c) {t=a;a=c;c=t;} if (a>d) {t=a;a=d;d=t;} if (b>c) {t=b;b=c;c=t;} if (b>d) {t=b;b=d;d=t;} if (c>d) {t=c;c=d;d=t;} printf("%d,%d,%d,%d",a,b,c,d); getch(); } 代码2: #include void main() {int a,b,c,d,t; scanf("%d,%d,%d,%d",&a,&b,&c,&d); if (a

实验五 循环控制

7

1.实验目的

(1)熟悉掌握用while语句、do-while语句和for语句实现循环的方法。

(2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)进一步学习调试程序。 2.实验内容

编程序并上机调试运行。

(1)输入两个正整数m和n,求他们的最大公约数和最小公倍数

在运行时,输入的值m>n,观察结果是否正确。

再输入时,使m

修改程序,不论m和n为何值,都能得到正确结果。 代码:#include #include void main() {int m,n,i; scanf("%d,%d",&m,&n); for(i=fabs(n);i>=1;i--) {if (n%i==0&&m%i==0) break;} printf("%d\n",i); for(i=1;i

(2)输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。

在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。 代码:#include void main() {char s; int a,b,c,d,e; a=0;b=0;c=0;d=0;e=0; while((s=getchar())!='\n') {if(s>='A'&&s='0'&&s='a'&&s

8 e++; else d++; } printf("%d,%d,%d,%d,%d",a,b,c,d,e); getch(); } 结果:与预期结果相符

(3)用牛顿迭代法求方程2x3-4x2+3x=6在1.5附近的根。

在得到正确结果后。请修改程序使所设的x初始值由1.5改变为100、1000、10000,在运行,观察结果,分析不同的x处置对结果有没有影响,为什么?

修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。 代码:#include #include void main() {float x1,x0,f,f1; scanf("%f",&x1); do {x0=x1; f=((2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x1=x0-f/f1; } while(fabs(x1-x0)>=1e-5); printf("%5.2f\n",x1); getch(); } 结果:与预期结果相符,x的初始值对于迭代没有影响。

(4)猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后每天早上都吃了前天剩下的一半零一个。到第10天早上再想吃时,见只剩一个桃子了。求第一天共摘了多少桃子。 在得到正确结果后,修改题目,改为猴子每天吃了前一天的一半后,再吃两个。请修改程序并运行,检查结果是否正确。 代码:#include void main() {int s,i; s=1; for (i=1;i

9

代码:#include void main() {int s,i; s=1; for (i=1;i

实验六 数组

1.实验目的

(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法; (2)掌握字符数组和字符串函数的使用; (3)掌握与数组有关的算法(特别是排序算法)。 2.实验内容

编程序并上机调试运行

(1)用选择法对10个整数排序。10个整数用scanf函数输入 代码:#include void main() {int a[11],i,j,min,t; for (i=0;i

(1) 有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数组是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。以15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。 代码:#include

10

void main() {int a[15],i,x,min,max,sign,loca,mid; for (i=0;ia[14]) loca=-1; while((!sign)&&(min

(2)将两个字符串连接起来,不要用strcat函数。代码:#include void main() {char str1[40],str2[40]; int i,j; i=0; j=0; scanf("%s",str1); scanf("%s",str2); while (str1[i]!='\0') i++; while(str2[j]!='\0') str1[i++]=str2[j++]; str1[i]='\0'; printf("%s",str1); getch();

} 结果:与预期结果相符。

(2)找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。

应至少准备两组测试数据: ① 二维数组有鞍点,例如: ② 二维数组没有鞍点,例如:

用scanf函数从键盘输入数组各元素的值,检查结果是否正确。题目并未指定二维数组的行数和列数,程序应能处理任意行数和列数的数组。因此,从理论上来说,应当准备许多不同行数和列数的数组数据,但这样的工作量太大,一般来说不需要这样做,只需准备典型的数据即可。

如果已指定了数组的行数和列数,可以在程序中对数组元素赋初值,而不必用scanf函数。 代码:#include void main() {int a[4][5],i,j,k,max,maxj,flag; for (i=0;imax) {max=a[i][j]; maxj=j;} flag=1; for(k=0;ka[k][maxj]) {flag=0;continue;} if(flag) {printf("%d",max); break;}} if(!flag) printf("no exist"); getch(); } 结果:与预期结果相符。

心得体会:数组很重要,要掌握一维、二维数组的定义,并掌握有关算法

实验七 函数

1.实验目的

(1)掌握定义函数的方法;

(2)掌握函数实参与形参的对应关系,以及“值传递”的方式; (3)掌握函数的嵌套调用和递归调用的方法;

12

(4)掌握全局变量和局部变量、动态变量、静态变量的概念和使用方式; (5)学习对多文件的程序的译和运行。 2.实验内容

(1)写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息; 本程序应当准备以下测试数据:

17、

34、

2、

1、0。分别运行并检查结果是否正确。 代码:#include main() {int prime(int n); int n; printf("\nintput an integer:"); scanf("%d",&n); if (prime(n)) printf("\n%d is a prime.\n",n); else printf("\n%d is not a prime.\n",n); getch(); }

int prime(int n) {int flag=1,i; for(i=2;i

(2)用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数。 把两个函数放在同一个程序文件中,作为一个文件进行编译和运行。 把两个函数分别放在两个程序文件中,作为两个件进行编译、连接和运行。 代码:#include void main() {int words(char); int longest(char[]); int i; char line[100]; printf("input one line:\n"); gets(line); printf("the longest word is:"); for(i=longest(line);words(line[i]);i++) printf("%c",line[i]);

13

printf("\n"); getch(); } int words(char c) {if ((c>='a'&&c='A'&&c=length) { length=len; place=point; len=0; }} return(place); }

运行结果:input one line: jkjk jiuiw hodyqyd jak the longest word is: hodyqyd

(3)用递归法将一个整数n转换成字符串。 代码:#include main() {void convert(int n); int number; printf("input an integer:"); scanf("%d",&number); printf("output:"); if (number

14

{putchar('-'); number=-number; } convert(number); putchar('\n'); getch();}

void convert(int n) {int i; if((i=n/10)!=0) convert(i); putchar(n%10+'0'); }

运行结果:input an integer:123345667899 output:123345667899 心得体会:复杂的代码更需要耐心。

实验八 编译预处理

1.实验目的

(1)掌握宏定义的方法; (2)掌握文件包含处理方法; (3)掌握条件编译的方法。 2.实验内容

编程序并上机调试运行。

(1)定义一个带参数的宏,使两个参数的值互换。在主函数中输入两个数作为使用宏的实参,输出以交换后的两个值 代码:#include #define swap(a,b)t=b;b=a;a=t main() {int a,b,t; printf("input two integer a,b"); scanf("%d,%d",&a,&b); swap(a,b); printf("Now,a=%d,b=%d\n",a,b); } 运行结果:与预期结果相符。

(2)用条件编译方法实现以下功能:输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下一字母。用#define命令来控制是否要译成密码。 代码:#include #define MAX 80 #define CHANGE 1 main() {char str[MAX]; int i;

15 gets(); #if(CHANGE) {if(i=0;i='a'&&str[i]='A'&&str[i]

心得体会:对宏定义、文件包含处理方法、条件变编译的方法还需要多加练习

实验九

指针

1.实验目的

(1)通过实验进一步掌握指针的概念,会定义和使用指针变量; (2)能正确使用数组的指针的指针数组的指针变量; (3)能正确使用字符串的指针和指向字符串的指针变量; (4)了解指向指针的指针的概念及使用方法。 2.实验内容

(1)输入3个整数,按由小到大的顺序输出,然后将程序改为;输入3个字符串,按由小到大的顺序输出。 代码:#include main() {void swap(int *p1,int *p2); int n1,n2,n3; int *p1,*p2,*p2; scanf("%d,%d,%d",&n1,&n2,&n3); p1=&n1; p2=&n2; p3=&n3; if(n1>n2)swap(p1,p2); if(n1>n3)swap(p1,p3); if(n2>n3)swap(p2,p3); printf("%d,%d,%d\n",n1,n2,n3); } void swap(int *p,int *p) {int p; p=*p;*p1=*p2;*p2=p; } 运行结果:与预期结果相符。

(2)原来第几号的人有n个人围成一圈,顺序排号。从第一个人开始报数,凡报道三的人退出圈子,问最后留下的是原来第几号的人。 代码:#include

16 main() {int i,k,m,num[50],*p; scanf("%d",&n); p=num; for(i=0;i

(3)用指针指向的指针的方法对n个整数进行排序并输出。要求将排序单独写成一个函数。n和个各整数在主函数中输入。最后在主函数中输出。

代码:#include main() {void sort(int **p,int n); int i,n,digit[20],**p,*pstr[20]; scanf("%d",&n); for(i=0;i**(p+j)) {temp=*(p+i);

17

*(p+i)=*(p+j); *(p+j)=*temp;}}}} 运行结果:与预期结果相符。

心得体会:指针是非常重要一部分,要多多练习,多多体会。

实验十

结构体和公用体

1.实验目的:

(1)掌握结构体类型变量的定义和使用; (2)掌握结构体类型数组的概念和应用; (3)掌握链表的概念,初步学会对链表进行操作; (4)掌握共用体的概念与使用。 2.实验内容

编程序,然后上机调试运行。

(1)有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据,要求输出3门课总平均成绩、以及最高分的学生的数据,(包括学好、姓名、3门课的成绩、平均分数)。(本题是教材第11章习题11.5) 要求用一个input函数输入5个学生数据;用一个average函数求总平均分;用max函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。

(2)13个人围成一圈,从第一个人开始顺序报号

1、

2、3.凡报道“3”者退出圈子,找出最后留在圈子中的人原来的序号(本题是教材第11章习题11.9)。本题要求用链表实现。

(3)建立一个链表,每个节点包括:学好、姓名、性别、年龄。输入一个年龄,如果链表中的节点所包含的年龄等与此年龄,则将此节点删去(本题是教材第11章习题11.11)。 (4)输入和运行以下程序: #include union data {int i[2]; float a; long b; char c[4]; } void main() {scanf(“%d,%d”,&u,i[0],&u.i[1]; printf(i[0]=%d,i[1]=%da=%fb=%ldc[0]=%c,c[1]=%c,c[2]=%c,c[3]=%c”,u.i[0], u.i[1],u.a,u.b,u.c[0],u.c[1],u.c[2],u.c[3]); } 输入两个整数10000、20000赋给u.i[0]和u.i[1].分析运行结果。然后将scanf语句改为: scanf(“%1d”,&u.b); 输入60000赋给b。分析运行结果。

运行结果:与预期结果相符。

心得体会:掌握链表的使用,耐心分析程序中出现的错误与问题。

18

推荐第7篇:C语言实验报告

实验二

数据类型,运算符和简单的输入输出

姓名 王颖晶

班级 材料2班

学号 22140059 日期2015年3月

24日

指导老师 赵芳

1.实验目的

(1)掌握C语言数据类型,了解字符型数据和整形数据的内在关系。 (2)掌握对各种数值型数据的正确输入方法。

(3)学会使用C的有关算数运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。

(4)学会编写和运行简单的应用程序。

(5)进一步熟悉C程序的编辑,编译,连接和运行的过程。 2.实验内容和步骤

(1)输入并运行教材第3章第4题给出的程序

(2)输入第3章第5题的程序 用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。问在键盘上如何输入?

(3)输入以下程序

② 将6,7行改为 m=i++; n=++j; ③ 程序改为 #include Int main() {int i,j; i=8; j=10; Printf(“%d,%d\\n”,i++,j++); } ④ 在上面的基础上,将printf语句改为 Printf(“%d

,%d\\n”,++i.++j);⑤ 程序改为 #include Int main() {int i,j,m=0,n=0; i=8; j=10; m+=i++;n-=——j;

Printf(“i =%d,j=%d,m=%d,n=%d\\n”,i,j,m,n); } (4)假如我国国民生产总值的年增长率为9%,计算十年后我国国民生产总值与现在相比增长多少百分比,编写程序。 计算公式为:p=(1+r)^n r为年增长率,n为年数,p为与现在相比的倍数。

① 输入编好的程序,编译并运行。

② 年增长率不在项目中指定,改用scanf函数语句输入,分别输入%7,%8,%10,观察结果。

③ 在程序中增加printf函数语句,用来提示输入什么数据,说明输入的是什么数据。

心得体会

学习c语言是枯燥的,因此我们应培养学习兴趣,仔细发现学习的亮点和乐趣,激发自己学习的积极性。

推荐第8篇:c语言实验报告

1、定义一个求两数中最大值的函数,调用函数实现求a,b,c的最大值。(a,b,c从键盘输入) max(int x,int y) { int z; z=(x>y)?x:y; return(z); } void main() { int a,b,c,m; scanf(\"%d,%d,%d\",&a,&b,&c); m=max(max(a,b),c); printf(\"max=%d\\n\",m); }

2、求圆环的面积。(函数的嵌套调用;定义求圆的面积和圆环面积实现) #include #define PI 3.1415926 float area_ring(float x,float y); float area(float r); void main() { float r,r1; printf(\"input two figures:\\n\"); scanf(\"%f,%f\",&r,&r1); printf(\"area_ring is %f\\n\",area_ring(r,r1));

} float area_ring(float x,float y) { float c; c=fabs(area(x)-area(y)); return(c); } float area(float r) { return(PI*r*r); }

3、设计求n!的函数(分别使用连乘和递归法)再调用函数求x!-y!+z!。递归

#include int fac(int n) { int i,t=1; for(i=1;i

t*=i; return t; } void main() { { unsigned int n; printf(\"input a unsignded interger number:\\n\"); scanf(\"%d\",&n); printf(\"%d!=%10ld\\n\",n,fac(n)); } {

} }int x,y,z,f; printf(\"please input:\"); scanf(\"%d,%d,%d\",&x,&y,&z); f=fac(x)-fac(y)+fac(z); printf(\"the result is:%d\\n\",f);

推荐第9篇:c语言 实验报告

程序设计基础实验报告――选择结构程序设计

实验报告

实验题目:选择结构程序设计 实验目的:

(1) 了解C语言表示逻辑量的方法(以0代表“假”以非0代表“真”)。

(2) (3) (4) (5) (6) 学会正确使用逻辑运算算符和逻辑表达式。 熟练掌握if语句的使用(包括if语句的嵌套)。 熟练掌握多分支选择语句——switch语句。 结合程序掌握一些简单的算法。 进一步学习调试程序的方法。

实验内容:

本实验要求事先编好解决下面问题的程序,然后上级输入程序并调试运行程序。

(1) 有一函数:

程序设计基础实验报告――选择结构程序设计

(x1)xy2x1(1x10)3x11x10 输入x的值,输出y相应的值。用scanf函数输入x的值,求yx的值(分别为x

1、1x

10、x10这三值(第四章第六题) 运行程序,输入种情况),检查输出y值是否正确。

答:

1)调试通过的程序清单如下:

#include void main() {

int x,y;

printf(\"请输入X:\");

scanf(\"%d\",&x);

if(x

y=x;

else if(x

y=2*x-1;

程序设计基础实验报告――选择结构程序设计

else y=3*x-11;

printf(\"y=%d\\n\",y); }

3)调试过程出现的问题说明及处理方法:

编译提示信息如下: Compiling...c4_4.c F:\\20113009711_选择结构程序设计\\第四次实验\\c4_4.c(10) : error C2059: syntax error : \'bad suffix on number\' F:\\20113009711_选择结构程序设计\\第四次实验\\c4_4.c(10) : error C2146: syntax error : miing \';\' before identifier \'x\' F:\\20113009711_选择结构程序设计\\第四次实验\\c4_4.c(10) : warning C4552: \'-\' : operator has no effect; expected operator with side-effect F:\\20113009711_选择结构程序设计\\第四次实验\\c4_4.c(11) : error C2181: illegal else without matching if F:\\20113009711_选择结构程序设计\\第四次实验\\c4_4.c(11) : error C2059: syntax error : \'bad suffix on number\' F:\\20113009711_选择结构程序设计\\第四次实验\\c4_4.c(11) : error C2146: syntax error : miing \';\' before identifier \'x\' F:\\20113009711_选择结构程序设计\\第四次实验\\c4_4.c(11) :

程序设计基础实验报告――选择结构程序设计

warning C4552: \'-\' : operator has no effect; expected operator with side-effect 执行 cl.exe 时出错.

c4_4.obj1 error(s), 0 warning(s)

答:

因为把第十行的“;”在中文模式输入,变成了“;”导致编译错误。

(3) 给出一个百分制成绩,要求输出成绩等级A,B,C,D,E.90分以上为A,81~89分为B,70~79分为C,60分~69分为D,60分以下为E。

① 事先编好程序,要求分别用if语句和

程序设计基础实验报告――选择结构程序设计

switch语句来实现。运行程序,并检查结果是否正确。

1)调试通过的程序清单如下:

#include void main() {

int g,s; char ch; printf(\"\\n输入学生的分数:\"); scanf(\"%d\",&g); s=g/10; if(s10) {

switch(s) { case 10: case 9:ch=\'A\';break; case 8:ch=\'B\';break; case 7:ch=\'C\';break; case 6:ch=\'D\';break;

printf(\"\\n输入数据错误!\\n\\n\"); else 程序设计基础实验报告――选择结构程序设计

}

} default:ch=\'E\'; } printf(\"\\n学生的成绩等级是:%c\\n\\n\",ch); 2)调试通过的运行结果:

3)调试过程出现的问题说明及处理方法:

(1)编译提示信息如下:

Compiling...c4_4.c

c4_4.obj0 error(s), 0 warning(s)

原因分析:

由于忽略了在程序中加入换行符,导致输出成绩等级和“Pre any ey to contine”连在一起。

② 再运行一次程序,输入分数为负值,这显然是输入时出错,不应给出等级,修改程序,使之能正确处理任何数据,当输入数据大于100和小于0时,通知用户“输入数据错误”。程序结束。

答:在编写程序的时候已经考虑到了该情况,第一次编写时已经进行了优化,能够自动处理该情况的出现。以下是运行结果:

程序设计基础实验报告――选择结构程序设计

(4) 输入4个整数,要求按由小到大顺序输出,在得到正确结果后,修改程序使之按由大到小的顺序输出。

1) 调试通过的程序清单如下:

#include int main() {

int a,b,c,d,t; printf(\"请依次输入四个整数以空格隔开。\\n\"); scanf(\"%d%d%d%d\",&a,&b,&c,&d); if(a>b) { t=a; a=b; b=t; } if(a>c) {

t=a; a=c; c=t;

程序设计基础实验报告――选择结构程序设计

} if(a>d) { } if(b>c) { } if(b>d) { } if(c>d) { t=c;

t=b; b=d; d=t; t=b; b=c; c=t; t=a; a=d; d=t; 程序设计基础实验报告――选择结构程序设计

} c=d; d=t; printf(\"四个整数经从小到大的顺序排列后的结果如下\\n\"); } printf(\"%d,%d,%d,%d\\n\",a,b,c,d); return 0;

2) 程序运行的结果:

从大到小排列的程序是:

1) 通过排列的程序清单如下:

#include int main() {

int a,b,c,d,t; printf(\"请依次输入四个整数以空格隔开。\\n\");

程序设计基础实验报告――选择结构程序设计

scanf(\"%d%d%d%d\",&a,&b,&c,&d); if(a

t=a; a=d; d=t; t=a; a=c; c=t; 程序设计基础实验报告――选择结构程序设计

} b=c; c=t; if(b

3) 运行的结果:

程序设计基础实验报告――选择结构程序设计

实验心得:

通过此次实验本人更加熟练的掌握了程序C语言逻辑运算符和逻辑表达式的应用,也深深了解到了,C语言的强大,同时是我对这门语言的兴趣更加深厚。做完本次实验,我纠正了以往的一个观点,学习一门语言不要以为看书看明白了就以为对这方面的知识掌握了,学习语言更为重要的是要会使用,不能仅仅是以为明白就可以了事,合上书本,能够应用这方面的知识写出一个程序来,才能算对它的初步掌握。

推荐第10篇:c语言实验报告

计算机软件技术基础实验报告

实验一:线性表的排序与查找

一.实验内容

a) 键盘输入一组无序数据,添加到线性表中; b) 排序线性表并输出排序结果; c) 键盘输入一个数,并插入到排好序的线性表中(要求插入后的表仍为有序表),输出结果;

d) 键盘输入一个数,并从线性表中删除相应的数据,输出结果。

二,源程序

// Experiment1.cpp : 定义控制台应用程序的入口点。 //

#include \"stdafx.h\" #include \"iostream\" #include

// 程序实现有各种方法,这里给出一个实例。

// 定义一个线性表

const int nMaxSize = 15; // 最大值 int nLen = 0;

// 表中元素个数 int nLinearList[nMaxSize];

// 定义操作 void LSort(); void LOut(); void LInsert(int n); void LDelete(int n);

int main(int argc,TCHAR*argv[]) { // 输入数据并放入线性表中

printf(\"Please input data\\n\"); // std::cout

scanf(\"%d\",&nIn); // std::cin >>nIn;

nLinearList[i] = nIn;

nLen++;

}

LSort(); // 排序线性表 LOut(); // 输出结果

printf(\"Please input a data to insert \\n\"); scanf(\"%d\",&nIn); LInsert(nIn); // 输入一个数字,并插入到线性表中 LOut();

printf(\"Please input a data to delete \\n\"); scanf(\"%d\",&nIn); LDelete(nIn); // 输入一个数字,并从线性表中删除

LOut();

char chTmp; printf(\"Please input a char to finish this program.\"); chTmp = getch(); return 0; }

void LSort()

// 冒泡排序,由大到小 { int j,F,k,M;

F=nLen; while(F>0)

{k=F-1;F=0; for(j=1;j

M=nLinearList[j]; nLinearList[j]=nLinearList[j+1]; nLinearList[j+1]=M; F=j;

}}}

}

void LOut() { printf( \"\\n\"); for (int i = 1; i

printf( \"%d, \", nLinearList[i] ); } printf( \"\\n\"); } void LInsert(int n) { int i,j;i=1; while (i=i;j--) nLinearList[j+1]=nLinearList[j]; nLinearList[i]=n; break;} i++;} } void LDelete(int n) { int i,j; for(i=1;i

运行结果

实验2:栈与队列的应用

一. 实验内容

a) 键盘输入算数表达式,并放入队列当中; b) 应用栈的概念设计表达式求值算法;

输出表达式求值结果 二.源程序

// Experiment2.cpp : 定义控制台应用程序的入口点。

#include \"stdio.h\" #include #include #include

// 程序实现有各种方法,这里给出一个实例。

const int MAX_LEN = 10; // 字符串的长度 const int MAX_SIZE = 30; // 栈或队的最大元素个数

// 定义一个队列的结构 struct QUEUE { int nMaxSize; // 最大值

int nCount; // 个数

int nFront; // 头

int nRear; // 尾

char szQueue[MAX_SIZE][MAX_LEN]; };

//定义一个栈的结构 struct STACK { int nMaxSize; // 最大值

int nTop; // 栈顶

char szStack[MAX_SIZE][MAX_LEN]; };

// 队列的操作

void InitQueue(QUEUE *q,int nMaxSize) { q->nMaxSize=nMaxSize; q->nCount=0; q->nFront=0; q->nRear=0; q->szQueue[MAX_SIZE][MAX_LEN]=0; } void InQueue(QUEUE *q, char *pItem) { if(q->nCount==q->nMaxSize) {

printf(\"The Queue is full!\\n\");

return; } strcpy(q->szQueue[q->nRear],pItem); if(q->nRear++==MAX_SIZE) q->nRear=0; q->nCount++; } void OutQueue(QUEUE *q, char *pItem) { if(q->nCount==0) {

printf(\"The Queue is empty!\\n\");

return; } strcpy(pItem,q->szQueue[q->nFront]); if(q->nFront++==MAX_SIZE) q->nFront=0; q->nCount--; }

//栈的操作

void InitStack(STACK *s,int nMaxSize) {

s->nMaxSize=nMaxSize;

s->nTop=0;

s->szStack[MAX_SIZE][MAX_LEN]=0; } void PushStack(STACK *s, char *pItem) { char *p; if (s->nTopnMaxSize) {

p=s->szStack[s->nTop];

strcpy(p,pItem);

s->nTop++; } else { printf(\"The stack overflow!\\n\"); return; } } void PopStack(STACK *s, char *pItem) { char *p; if (s->nTop==0) {

printf(\"stack is empty!\\n\");

return; } else {

p=s->szStack[--s->nTop];

strcpy(pItem,p); } } void GetTopStack(STACK *s, char *pItem) { char *p; char a[10]={0}; if (s->nTop==0) {

a[0]=\';\';

strcpy(pItem,a); } else {

p=s->szStack[s->nTop-1];

strcpy(pItem,p); } }

//字符判断 int isdigit(char x) { if (x>=\'0\'&&x

int Priority(char *op); // 获得操作符的优先级 void Compute(char *num1, char *num2, char *op, char *chResult); //主函数 void main() {

// 计算表达式的值

char x[MAX_LEN];

// 扫描的表达式

char op[MAX_LEN];

// 栈顶运算符

char num1[MAX_LEN], num2[MAX_LEN];

// 两个操作数

char chResult[MAX_LEN];

// 运算结果 // ***声明一个队列

struct QUEUE q1;

struct QUEUE *q; // ***声明OS栈和NS栈

struct STACK OS;

struct STACK NS;

struct STACK *o;

struct STACK *n;

int i=0;

int j=0;

int k=0; //****初始化

q=&q1;

o=&OS;

n=&NS;

InitStack(o,20);

InitStack(n,20);

InitQueue(q,20);

printf(\"please input the expreion end with //录入表达式 do

{

printf(\"next\\n\");

scanf(\"%s\",x);

InQueue(q,x); }

while(x[0]!=\';\'); printf(\"expreion \\n\"); while (true) {

if (q->nCount!=0)

{

OutQueue(q, x);

printf(\"%s\",x);

}

\"; \\n\");

if (isdigit(x[0]))

PushStack(n,x);

else

{

// 是数

// 认为是运算符,没有考虑空格等

GetTopStack(o,op); // 获得OS栈顶运算符 if (x[0] == \';\' && op[0] == \';\')

// 扫描结束 {

printf(\"\\n result is \"); break; } if (Priority(x) >Priority(op)) { PushStack(o,x); continue; }

// 运算符的优先级〉栈顶运算符

while ((Priority(x)

{

PopStack(n,num1);

PopStack(n,num2);

PopStack(o,op);

Compute(num2,num1,op,chResult);

PushStack(n,chResult);

GetTopStack(o,op);

}

PushStack(o,x);

}

} PopStack(n,chResult); printf(\"%s\\n\",chResult); }

int Priority(char *op ) { int nPriority = 0;

switch (op[0]) { case \'^\':

nPriority = 3;

break; case \'*\': case \'/\':

nPriority = 2;

break; case \'+\':

// 不大于栈顶运算符

case \'-\':

nPriority = 1;

break; case \';\':

nPriority = 0; } return nPriority; } void Compute(char *num1, char *num2, char *op, char *chResult) { double fNum1,fNum2; double fResult = 0; fNum1 = atof(num1); fNum2 = atof(num2); switch (op[0]) { case \'^\':

fResult = pow(fNum1,fNum2);

break; case \'*\':

fResult = fNum1*fNum2;

break; case \'/\':

fResult = fNum1/fNum2;

break; case \'+\':

fResult = fNum1+fNum2;

break; case \'-\':

fResult = fNum1-fNum2;

break; }

} sprintf(chResult,\"%.4f\",fResult); //把计算的结果转化为字符串 return; 三.运行结果

实验三:关系数据语言的应用

一、实验内容

查询学生出生日期(Sno, Sname, BirthDay);按学号顺序查询一个班级的所有学生(Cla, Sname);列出学生选择各门课程的成绩(Sname, Cname, Grade) ;列出有过不及格成绩的学生名单(Sno, Sname, Cla);求学生的平均成绩和总成绩(Sname, PJCJ, ZCJ);查找各科成绩都 >= 85 分的学生(Sname, Cla);将课程号为“01”的课程名称修改为“软件技术”;修改一名学生的姓名、性别、年龄;将成绩为55~59分的男生的成绩修改为60分;删除90年以后、80年以前出生的学生的所有信息(包括选课和成绩);删除一个班级的所有学生;删除所有数据表和数据库。

程序清单及结果: CREATE TABLE Stu( Sno CHAR(4)PRIMARY KEY, Sname CHAR(10), Sex CHAR(2), Age NUMERIC, BirthDay DATETIME, Cla CHAR(10), ); CREATE TABLE Course( Cno CHAR(2)PRIMARY KEY, Cname CHAR(10), Chour NUMERIC, ); CREATE TABLE Score( Sno CHAR(4), Cno CHAR(2), PRIMARY KEY(Sno,Cno), Grade NUMERIC, ) Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Cla) values (\'3626\',\'张小唯\',\'女\',\'18\',\'1995-09-24\',\'电科1202\'); Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Cla) values (\'3628\',\'王红\',\'女\',\'19\',\'1994-06-27\',\'电科1202\'); Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Cla) values (\'3634\',\'李雷\',\'男\',\'20\',\'1992-11-30\',\'电科1202\'); Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Cla) values (\'3635\',\'张明\',\'男\',\'18\',\'1994-06-03\',\'电科1202\'); Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Cla) values (\'3641\',\'赵小东\',\'男\',\'20\',\'1993-03-15\',\'电科1202\');

Insert into Course (Cno,Cname,Chour) values (\'01\',\'asdf\',\'12\'); Insert into Course (Cno,Cname,Chour) values (\'02\',\'qwer\',\'23\'); Insert into Course (Cno,Cname,Chour) values (\'03\',\'zxcv\',\'34\'

Insert into Score (Sno,Cno,Grade) values (\'3570\',\'01\',\'97\'); Insert into Score (Sno,Cno,Grade) values (\'3580\',\'01\',\'54\'); Insert into Score (Sno,Cno,Grade) values (\'3584\',\'01\',\'56\'); Insert into Score (Sno,Cno,Grade) values (\'3583\',\'01\',\'88\'); Insert into Score (Sno,Cno,Grade) values (\'3574\',\'02\',\'87\'); Insert into Score (Sno,Cno,Grade) values (\'3575\',\'03\',\'79\'); Insert into Score (Sno,Cno,Grade) values (\'3576\',\'02\',\'68\'); Insert into Score (Sno,Cno,Grade) values (\'3577\',\'03\',\'58\'); Insert into Score (Sno,Cno,Grade) Values (\'3578\',\'03\',\'98\'); Insert into Score (Sno,Cno,Grade) values (\'3626\',\'01\',\'97\'); Insert into Score (Sno,Cno,Grade) values (\'3628\',\'01\',\'54\'); Insert into Score (Sno,Cno,Grade) values (\'3637\',\'01\',\'56\'); Insert into Score (Sno,Cno,Grade) values (\'3640\',\'01\',\'88\'); Insert into Score (Sno,Cno,Grade) values (\'3657\',\'02\',\'87\'); Insert into Score (Sno,Cno,Grade) values (\'3675\',\'03\',\'79\'); Insert into Score (Sno,Cno,Grade) values (\'3676\',\'02\',\'68\'); Insert into Score (Sno,Cno,Grade) values (\'3677\',\'03\',\'58\'); Insert into Score (Sno,Cno,Grade) Values (\'3678\',\'03\',\'98\');

1.查询学生出生日期(Sno, Sname, BirthDay); Select Sno,Sname,BirthDay from Stu;

2.按学号顺序查询一个班级的所有学生(Cla, Sname);

Select Cla,Sname from Stu order by Sno;

3.列出学生选择各门课程的成绩(Sname, Cname, Grade) ; Select Sname,Cname,Grade from Stu,Course,Score

where Stu.Sno=Score.Sno and

Course.Cno=Score.Cno;

4.列出有过不及格成绩的学生名单(Sno, Sname, Cla); Select distinct Stu.Sno,Sname,Cla from Stu,Score where Stu.Sno=Score.Sno and

Grade

5.求学生的平均成绩和总成绩(Sname, PJCJ, ZCJ);

Select Sname,avg(Grade) PJCJ,sum(Grade) ZCJ from Stu,Score where Score.Sno=Stu.Sno group by Stu.Sname;

6.查找各科成绩都 >= 85 分的学生(Sname, Cla);

Select Sname,Cla from Stu where exists (Select * from Score where Stu.Sno=Score.Sno and Score.Cno=\'01\' and Score.Grade>=85) and exists(Select * from Score where Stu.Sno=Score.Sno and Score.Cno=\'02\' and Score.Grade>=85 ) and exists(Select * from Score where Stu.Sno=Score.Sno and Score.Cno=\'03\' and Score.Grade>=85 ) ;

7.将课程号为“01”的课程名称修改为“软件技术” Update Course set Cname=\'软件技术\' where Cno=\'01\';

8.修改一名学生的姓名、性别、年龄;

Update Stu set Sname=\'aha\',Sex=\'wm\',age=\'10\'where Sno=\'3626\';

9.将成绩为55~59分的男生的成绩修改为60分

Update Score set Grade=60 where Sno in(Select Sno from Stu where Sex=\'女\') and Grade between 55 and 59;

10.删除90年以后、80年以前出生的学生的所有信息(包括选课和成绩) Delete Stu where Sno in(select Sno from Stu where BirthDay \'1990-12-31\')

11.删除一个班级的所有学生

Delete from Stu where Cla=\'电科1202\';

12.删除所有数据表和数据库 Drop database MyDB;

第11篇:C语言 实验报告

C语言程序设计(B)

(2010-2011-2)

实验报告

教学班级: 学号: 姓名: 课程教师: 实验辅导教师:

江西理工大学

自由编辑的程序

一、实验前的源程序:

//任意整数的叠加 #include void main() { int i,j,sum=0; printf(\"please input a int number\\n\"); scanf(\"%d\",&j) for(i=0;i

实验错误报告:

[Error] D:\\Program Files\\C-Free 4\\temp\\未命名10.cpp:7: parse error before

`for\' [Error] D:\\Program Files\\C-Free 4\\temp\\未命名10.cpp:7: parse error before `)\' 构建中止 未命名10: 2 个错误, 0 个警告

实验后的源程序:

//任意整数的叠加 #include void main() {

int i,j,sum=0; printf(\"please input a int number\\n\"); scanf(\"%d\",&j); for(i=0;i

二、实验前的源程序:

/*小写字母转大写字母*/ #include void main() { char c1,c2; c1=\'w\';

江西理工大学

} c2=\'s\'; c1=c1-32; c2=c2-32; printf(\"%c,%c\\n\",c1,c);

实验错误报告:

[Error] D:\\Program Files\\C-Free 4\\temp\\未命名11.cpp:9: `c\' undeclared (first

use this function) [Error] D:\\Program Files\\C-Free 4\\temp\\未命名11.cpp:9: (Each undeclared

identifier is reported only once [Error] D:\\Program Files\\C-Free 4\\temp\\未命名11.cpp:9: for each function it

appears in.) 构建中止 未命名11: 3 个错误, 0 个警告

实验后的源程序:

/*小写字母转大写字母*/ #include void main() { char c1,c2; c1=\'w\'; c2=\'s\'; c1=c1-32; c2=c2-32; printf(\"%c,%c\\n\",c1,c2); }

三、实验前的源程序:

/*查看某一年是否为闰年*/ #include void main() { int year,i; scanf(\"%d\",&year); if(year%4==0)

{

if(year%100==0)

{

if(year%400==0)

i=1;

else

江西理工大学

i=0;

}

else

i=1;

} else

i=0; if(i)

printf(\"%d 是闰年\\n\",year); else

printf(\"%d 不是闰年\\n\",year); }

实验错误报告:

[Error] D:\\Program Files\\C-Free 4\\temp\\未命名14.cpp:15: parse error before

`else\' [Error] D:\\Program Files\\C-Free 4\\temp\\未命名14.cpp:25: parse error at end

of input 构建中止 未命名14: 2 个错误, 0 个警告

实验后的源程序:

/*查看某一年是否为闰年*/ #include void main() { int year,i; scanf(\"%d\",&year); if(year%4==0)

{

if(year%100==0)

{

if(year%400==0)

i=1;

else

i=0;

}

else

i=1;

} else

i=0; if(i)

江西理工大学

printf(\"%d 是闰年\\n\",year); else

printf(\"%d 不是闰年\\n\",year); }

数据的输入和输出

四、程序改错题

改错前的源程序; #include void main() { float x,y,z; scanf(\"%5.2f,%5.2f\",&x,&y); z=x+y; printf(\"z=%5.2f\",&z); } 修改后的源程序:

#include void main() { float x,y,z; scanf(\"%f%f\",&x,&y); z=x+y; printf(\"z=%5.2f\",z); }

改错前的源程序; #include void main() { int x=7654123; x*=10; printf(\"x=%7d\",x); } 修改后的源程序:

江西理工大学

#include void main() {

long x=7654123; x*=10; printf(\"x=%7d\",x); }

改错前的源程序:

#include void main() { float c1=67; char c2; c2=c1+5; printf(\"c1=%c,c2=%c\\n\",c1,c2); printf(\"c1=%d,c2=%d\",&c1,&c2); } 修改后的源程序:

#include void main() { int c1=67; char c2; c2=c1+5; printf(\"c1=%c,c2=%c\\n\",c1,c2); printf(\"c1=%d,c2=%d\",c1,c2); }

五、程序编写题:已知char ch’b’; int i=3 ,j=5; float x=22.354,y=435.6789; 根据下面的输出结果编写程序。 ch =’b’,ASCII=98 i=3□□□□□□j=5 x=22.35□□□y=435.68 实验前的源程序:

#include void main()

江西理工大学

6 { char ch=\'b\'; int i=3,j=5; float x=22.354,y=435.6789; printf(\"ch=\'%c\',ASCII=%d\\n\",ch,ch); printf(\"i=%d

j=%d\\n\",i,j); printf(\"x=%.2f

y=%.2f\\n\",x,y); } 实验错误报告:无 实验后的源程序:

#include void main() { char ch=\'b\'; int i=3,j=5; float x=22.354,y=435.6789; printf(\"ch=\\\'%c\\\',ASCII=%d\\n\",ch,ch); printf(\"i=%d

j=%d\\n\",i,j); printf(\"x=%.2f

y=%.2f\\n\",x,y); }

六、从键盘输入一行字符,统计其中小写字母、大写字母和其它字符的个数:

实验前的源程序:

#include \"stdio.h\" void main() { printf(\"请任意输入一串字符:\\n\") ;

char ch,sum1=0,sum2=0,other=0;

ch=getchar();

while(c!=\'\\n\')

{

if(c>=\'A\'&&c

else if(c>=\'a\'&&c

else other++;

c=getchar();

} printf(\"大写字母的个数:%d\\n\",sum1); printf(\"小写字母的个数:%d\\n\",sum2);

江西理工大学

7 printf(\"其他字符母个数:%d\\n\",other); }

实验错误报告:

[Error] D:\\Program Files\\C-Free 4\\temp\\未命名7.cpp:7: `c\' undeclared (first

use this function) [Error] D:\\Program Files\\C-Free 4\\temp\\未命名7.cpp:7: (Each undeclared

identifier is reported only once [Error] D:\\Program Files\\C-Free 4\\temp\\未命名7.cpp:7: for each function it

appears in.) 构建中止 未命名7: 3 个错误, 0 个警告

实验后的源程序:

#include \"stdio.h\" void main() { printf(\"请任意输入一串字符:\\n\");

char ch,sum1=0,sum2=0,other=0;

ch=getchar();

while(ch!=\'\\n\')

{

if(ch>=\'A\'&&ch

else if(ch>=\'a\'&&ch

else other++;

ch=getchar();

} printf(\"大写字母的个数:%d\\n\",sum1); printf(\"小写字母的个数:%d\\n\",sum2); printf(\"其他字符母个数:%d\\n\",other); }

七、使用以下公式求∏的近似值,要求精确到最后一项的绝对值小于10e-4

∏/4=1-1/3+1/5-1/7+……

实验前的源程序:

#include \"stdio.h\" #include \"math.h\" main() {

江西理工大学

} float sum=0; int i,j; for(i=1; ;i++) { j=2*i-1; if(1.0/j>0.0001) { sum+=pow(-1,i+1)*(1.o/j); continue; break; } printf(\"∏=%f\\n\",sum*4.0);

实验错误报告:

[Error] D:\\Program Files\\C-Free 4\\temp\\未命名9.cpp:13: nondigits in number

and not hexadecimal [Error] D:\\Program Files\\C-Free 4\\temp\\未命名9.cpp:19: parse error at end

of input 构建中止 未命名9: 2 个错误, 0 个警告

实验后的源程序:

#include \"stdio.h\" #include \"math.h\" main() { float sum=0; int i,j; for(i=1; ;i++) {

j=2*i-1; if(1.0/j>0.0001) { sum+=pow(-1,i+1)*(1.0/j); continue; } break; } printf(\"∏=%f\\n\",sum*4.0); }

八、用选择法对10个整数排序: 实验前的源程序:

江西理工大学

9 #include main() { printf (\"请输入一串乱序的10个整数:\\n\"); int a[10]; int i,j,k; for(i=0;i

scanf(\"%d\",a[i]); } printf(\"\\n\"); for(i=0;i

if(a[j]>a[j+1])

{

k=a[j];

a[j]=a[j+1];

k=a[j+1]; } printf(\"这10个整数从小到大排列为:\"); for(j=0;j

printf(\"%d \",a[j]); } printf(\"\\n\"); printf(\"这10个整数从大到小排列为:\"); for(j=9;j>=0;j--) {

printf(\"%d \",a[j]); }

实验错误报告:

[Error] D:\\Program Files\\C-Free 4\\temp\\未命名1.cpp:33: parse error at end of

input 构建中止 未命名1: 1 个错误, 0 个警告

实验后的源程序:

//用选择法对10个整数排序

#include void main() { printf (\"请输入一串乱序的10个整数:\\n\"); int a[10];

江西理工大学

10 int i,j,k; for(i=0;ia[j+1]) {

k=a[j];

a[j]=a[j+1];

k=a[j+1]; } } printf(\"这10个整数从小到大排列为:\"); for(j=0;j=0;j--) { printf(\"%d \",a[j]); } }

九、求一个3*3的整数矩阵对角线元素之积:

实验前的源程序:

#include void main() { int a[3][3]; int i,j,ji=1; printf(\"请输入一个3*3的矩阵:\\n\"); for(i=0;i

scanf(\"%d\",&a[i][j]) } for(i=0;i

江西理工大学

11 {

for(j=0;j

{

printf(\"%d \",a[i][j]);

}

printf(\"\\n\");

}

printf(\"\\n\");

for(i=0;i

{

for(j=0;j

if(i=j)

ji*=a[i][j];

printf(\"主对角线的积为:%d\\n\",ji);

} }

实验错误报告:

[Error] D:\\Program Files\\C-Free 4\\temp\\未命名4.cpp:11: parse error before

`}\' 构建中止 未命名4: 1 个错误, 0 个警告

实验后的源程序:

#include void main() { int a[3][3]; int i,j,ji=1; printf(\"请输入一个3*3的矩阵:\\n\"); for(i=0;i

scanf(\"%d\",&a[i][j]); } for(i=0;i

for(j=0;j

{

printf(\"%d \",a[i][j]);

}

printf(\"\\n\");

}

江西理工大学

printf(\"\\n\");

for(i=0;i

{

for(j=0;j

if(i=j)

ji*=a[i][j];

printf(\"主对角线的积为:%d\\n\",ji);

} }

十、将一个数组中的值按你需从新存放。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。

实验前的源程序:

#include void main() { int a[10],i,j,t; printf(\"请问你要输个几个数字: \"); scanf(\"%d\",&j); printf(\"请输入大小顺序的%d个数字: \",j); for(i=0;i

scanf(\"%d\",&a[i]); }

for(i=0;i

t=a[i];

a[i]=a[j-i-1];

t=a[j-i-1]; } printf(\"该数组逆序排列为:\");

for(i=0;i

printf(\"%d \",a[i]); printf(\"\\n\"); }

实验错误报告:

[Error] D:\\Program Files\\C-Free 4\\temp\\未命名3.cpp:25: parse error at end

of input 构建中止 未命名3: 1 个错误, 0 个警告

江西理工大学

13 实验后的源程序:

#include void main() { int a[10],i,j,t; printf(\"请问你要输个几个数字: \"); scanf(\"%d\",&j); printf(\"请输入大小顺序的%d个数字: \",j); for(i=0;i

scanf(\"%d\",&a[i]); }

for(i=0;i

t=a[i];

a[i]=a[j-i-1];

a[j-i-1]=t; } printf(\"该数组逆序排列为:\");

for(i=0;i

printf(\"%d \",a[i]); } printf(\"\\n\"); }

江西理工大学

14

第12篇:c语言实验报告

实验一 熟悉C语言程序的运行环境

一、实验目的

1、了解在该系统上如何编辑、编译、连接和运行一个C 程序;

2、通过运行简单的C程序,初步了解C程序的特点。

二、实验预习

1、认真阅读简单的C程序介绍,C程序上机步骤部分内容;

2、编写好所需要的程序,程序的书写应该清楚整洁,一般检查应该是没有明显的错误。

如果在程序中有疑问的地方,可以标记起来,以便于上机调试时予以注意。初学者特别忌讳

上机前自己不编写程序,到时随便地抄别人的程序。

三、实验指导

1、输入并运行一个简单的程序,从而熟悉所用系统的上机方法与步骤。(1)选择File->New,使编辑窗口变成空白 (2)输入下面的程序(例题1.1) #include void main( ) { printf("This is a C program.\n"); } (3)按功能键【F9】进行编译和连接,观察屏幕上显示的编译信息。如果出现“出错 信息”,则应找出原因并改正之,再进行编译。

(4)如果编译无错误,按【Ctrl+F9】键使程序运行,按【Alt+F5】键,切换到用户 屏,观察分析运行结果。

2、输入并运行一个需要在运行时输入数据的程序 (1)清空编辑窗口,输入下面的程序(例题1.2)。 #include void main( ) { int a,b,c ; printf("input a & b:"); scanf("%d,%d",&a,&b); c=max(a,b); printf("max=%d",c); } int max(int x,int y) { int z ; if(x>y)z=x ; else z=y ; return(z); } (2)编译并运行,在运行时从键盘输入整数2 和5,格式为:2, 5(注意:两数据间 用逗号分隔开),然后按回车键,按【ALT+F5】键,观察运行结果。 (3)自己试着改动一些数据或输入格式,再运行,观察结果作比较。

四、实验内容

1、在C 编辑环境下编辑实验指导中给出的程序、编译并运行。

2、试编写一程序完成如下信息的显示。********************************** "How are you!" **********************************

3、编写一个C 程序(习题1.6):输入a, b, c 三个值,输出其中最大者。 根据上述题目要求编程并上机调试运行。

五、实验报告要求

实验结束后,应整理实验报告,其内容应包括:

1、实验题目

2、设计思路

3、写出程序源代码

4、写出程序运行结果

5、对实验结果进行分析、总结

六、设计思路

1.5题:以main为主函数,对三条语句进行编码,分别输出,即可达到所要求的结果。1.6题:以main为主函数,先输入三个整形十进制数,任取其一,与其它两个中的任一进行对比,取其最大,再与剩余的一个进行对比,可得最大。

七、源程序清单 1.5题:

#include main() {

printf("\n**********************\n"); printf(" "how are you"\n"); printf("**********************\n"); } 1.6题:

#include main() { int a,b,c,max; scanf("%d,%d,%d",&a,&b,&c); max=a; if(max

八、分析、总结、及心得

通过本次实验让我学会c程序的编写应注意的一些细节,理解一些简单程序的编写方法。

实验二 数据类型,运算符与表达式

一、实验目的

1、掌握C 语言数据类型,,以及对它们赋值的方法;

2、掌握不同的数据类型之间赋值的规律;

3、学会使用C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加和自减运算符的使用;

4、进一步熟悉C 程序的编辑、编译、连接和运行的过程。

二、实验预习

1、认真阅读教材数据类型,算术运算符和表达式,赋值运算符和表达式部分内容。

三、实验指导

1、输入并运行下面的程序: #include void main( ) { int a,b ; unsigned c,d ; long e,f ; a=100 ; b=-100 ; e=50000 ; f=32767 ; c=a ; d=b ; printf(“%d,%d \n ”,a,b); printf(“%u,%u \n ”,a,b); printf(“%u,%u \n ”,c,b); c=a=e ; d=b=f ; printf(“%d,%d \n ”,a,b); printf(“%u,%u \n ”,c,d); } 请对照程序和运行结果分析:

(1)将一个负整数赋给一个无符号的变量,会得到什么结果。

(2)将一个大于32767 的长整数赋给整形变量,会得到什麽结果。

(3)将一个长整数赋给无符号的变量,会得到什麽结果(分别考虑该长整数的值大于或等于65535 以及小于65535 的情况)。

同学们可以改变程序中各变量的值,以便比较。例如: a = 65580, b = -40000, e = 65535,f = 65580。

2、输入下面程序: #include void main( ) { int i,j,m,n ; i=8 ; j=10 ; m=++i ; n=j++; printf("%d,%d,%d,%d",i,j,m,n); } (1)运行程序,注意i,j,m,n 各变量的值,分别作以下改动并运行。 (2)将第3 行中m, n 的值改为:m=i++; n=++j; 再运行。 (3)将程序改为: #include void main( ) { int i, j; i=8; j=10; printf(“%d,%d”, i++, j++); } 运行并分析结果。

(4)在(3)的基础上,将printf 语句改为:

printf(“%d,%d”, ++i, ++j); 运行并分析结果。 (5)再将printf 语句改为:

printf(“%d,%d,%d,%d”, i, j, i++, j++); 运行并分析结果。 (6)将程序改为: #include void main( ) { int i,j,m=0,n=0 ; j=10 ; i=8 ; m+=i++; n-=--j ; printf("i=%d, j=%d, m=%d, n=%d",i,j,m,n); } 运行并分析结果。

四、实验内容

1、在C 编辑环境下编辑实验指导中给出的程序、编译并运行。

2、试编一程序实现输入长宽高,计算长方体的表面积。

3、按习题3.7 的要求编程序并上机运行,该题的要求是:

要将“China”译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母。例如,字母“A”后面第4 个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。请编一程序,用赋初值的方法使c

1、c

2、c

3、c

4、c5 五个变量的值分别为’C’、’h’、’i’、’n’、’a’,经过运算,使c

1、c

2、c

3、c

4、c5 分别变为’G’、’l’、’m’、’r’、’e’、,并输出。

(1)输入编好的程序,并运行该程序。分析是否符合要求。

五、实验结果 1题:

(1):100,-100 100,65436 100,65436 (2):-15536,32767 (3):5000,32767 2题:

(1):9,119,10 (2):9,11,8,11 (3):8,10 (4):9,11 (5):9,11,8,10 (6):i=9,j=9,m=8,n=-9

六、源程序清单 四.2题

#include void main() { float a,b,c,s; scanf("%f,%f,%f",&a,&b,&c); s=2*a*b+2*a*c+2*b*c; printf("s=%.2f",s); } 3题

#include void mian() { char c1='C',c2='h',c3='i',c4='n',c5='a'; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5); }

七、分析、总结、及心得

通过本次的实验,熟悉如何定义一个整型、字符型和实型的变量,掌握算术运算符的使用,以及包含这些运算符的表达式,特别是自加和自减运算符的使用,学会一些简单程序编写所注意的问题。

实验三 简单C程序设计

一、实验目的

1、掌握C 语言中赋值语句的使用方法;

2、掌握不同类型数据的输入输出方法,能正确使用各种格式转换符;

二、实验预习

1、认真阅读数据的输入输出部分内容。

三、实验指导

1、从键盘输入两个0 到127 的整数,求两数的平方差并输出其值以及这两个整数的ASCII 码对应的字符。

(1)算法分析:标准ASCII 码值范围是0 到127,所以在这范围内的数可以以字符形式输出,实现方法是用格式输出函数并用格式符c 控制输出。 (2)根据结果书写源程序 #include void main( ) { int x,y,sub ; scanf("%d%d",&x,&y);/* 变量前一定要加取地址符& */ sub=x*x-y*y ; printf("%c,%c,%d",x,y,sub); } (3)在C 编辑环境下编辑源程序。 (4)编译【F9】,直到程序没有错误。 (5)运行【Ctrl+F9】,从键盘输入: 100 50↙

注意输入时两数间应以空格间隔,不能用逗号,只有源程序输入函数中两格式符以逗号间隔时输入才可以是:100,50↙ (6)查看结果【Alt+F5】

2、输入程序

#include void main( ) { int a,b ; float d,e ; char c1,c2 ; double f,g ; long m,n ; unsigned int p,q ; a=61; b=62 ; c1='a'; c2='b'; d=3.56;e=-6.87;f=3157.890121;g=0.123456789; m=50000 ;n=-60000 ; p=32768 ;q=40000 ; printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q); } (1)运行程序并分析结果。

(2)在此基础上,修改程序的第7~11 行: a=61; b=62; c1=a; c2=b; f=3157.890121; g=0.123456789 d=f; e=g; p=a=m=50000; q=b=n= - 60000; 运行程序,分析结果。 (3)将printf 语句改为:

printf(“a=%d,b=%d\nc1=%c,c2=%c\nd=%15.6f,e=%15.12f\n”,a,b,c1,c2,d,e); printf(“f=%f,g=%f\nm=%d,n=%d\np=%d,q=%d\n”,f,g,m,n,p,q); 运行程序,分析结果。

(4)将p、q 改用%o 格式符输出。运行程序,分析结果。

四、实验内容

1、在C 编辑环境下编辑实验指导中给出的程序、编译并运行。

2、本节实验题目:

(1)若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b'。想得到以下的输出格式和结果,请写出程序。 要求输出结果如下:(注意空格的输出) a= 3 b= 4 c= 5 x=1.200000,y=2.400000,z=-3.600000 x+y= 3.60 y+z=-1.20 z+x=-2.40 u= 51274 n= 128765 c1='a' or 97(ASCII) c2='B' or 98(ASCII) (2)假设m是一个三位数,试编写一程序完成将m的个位,十位,百位反序输出(例如:123反序输出为321)。

五、实验结果

三、1:

d,2,7500

2、(1): a=61,b=62 c1=a,c2=b d= 3.56,e= -6.87 f= 3157.890121,g= 0.123456789000 m=50000,n=-60000 p=32768,q=40000 (2): a=-15536,b=5536 c1==,c2=> d=3157.89,e= 0.12 f= 3157.890121,g= 0.123456789000 m=50000,n=-60000 p=50000,q=5536 (3): c1==,c2=> d= 3157.890137,e= 0.123456791043 f=3157.890121,g=0.123457 m=-15536,n=0 p=5536,q=-1 (4): a=15536,b=5536 c1==,c2=> d= 3157.890137,e= 0.123456791043 f=3157.890121,g=0.123457 p=12640,q=177777

六、源程序清单 2(1): #include void main() { int a=3,b=4,c=5; long int u=51274,n=128765; float x=1.2,y=2.4,z=-3.6; char c1='a',c2='b'; printf("a=%2d b=%2d c=%2d\n",a,b,c); printf("x=%f,y=%f,z=%f\n",x,y,z); printf("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x); printf("u=%6ld n=%9ld\n",u,n); printf("%s %s %d%s\n","c1='a'","or",c1,"(ASCII)"); printf("%s %s %d%s\n","c2='B'","or",c2,"(ASCII)");

} (2:) #include void main() { int a,b; scanf("%d",&a); b=a/100+a%100/10*10+a%10*100; printf("%d",b);

}

七、分析、总结、及心得

在本次实验中,学会了赋值语句的使用方法,不同类型数据的输入输出,尤其是某些空格应特别注意,了解了在scanf语句中不能用\n,这也是我一直犯的错误。

实验四 选择结构程序设计

一、实验目的

1、学会正确使用逻辑运算符及逻辑表达式;

2、熟练掌握if 语句与switch 语句;

二、实验预习

1、认真阅读if 语句和switch 语句部分内容。

2、编写好所需要的程序。

三、实验指导

1、输入三角形的三边长,判断这个三角形是否是直角三角形。

(1)算法分析:直角三角形斜边最长,要先找出三边中最长的边,判断最长边的平方 是否等于其余两边的平方和,若相等就是直角三角形。 根据分析结果书写源程序。 #include void main( ) { int a,b,c,t ;/* 三边设为a,b,c,t 是用于交换的中间变量*/ scanf("%d,%d,%d",&a,&b,&c); if(a

t=a ;

a=b ;

b=t ; }/* a 中放a,b 中较长边*/ if(a

t=a ;

a=c ;

c=t ; }/* a 中放a,b,c 中的最长边*/ if(a*a==b*b+c*c)

printf("Y"); else

printf("N"); } (2)编辑源程序 (3)编译【F9】,直到没有错误。 (4)运行【Ctrl+F9】,输入: 3,4,5↙

(5)查看结果【Alt+F5】,输出: Y

四、实验内容

1、在C 编辑环境下编辑实验指导中给出的程序、编译并运行。

2、本节实验题目:

(1)给出一个百分制成绩,要求输出成绩等级A、B、C、D。90 分以上为A,80~89分为B,70~79 分为C,60~69 分为D,60 分以下为E。

①事先编好程序,要求分别用if 语句和switch 语句实现。运行程序,并检查结果是否正确。

②再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级。

③修改程序,使之能正确处理任何数据。当输入数据大于100 或小于0 时,通知用户“输入数据错”,程序结束。

(2)给出一个不多于5位的正整数,要求:①求出它是几位数。②分别打印出每一位数。③按逆序打印出各位数字。

五、简述编程思路

2.1.1首先写一段程序(switch语句)来对不是所要求的输入的判断与执行,其次写出主要要执行的语句对于switch要求用break跳出,if则不同,

六、源程序清单 2.1.1:(用switch) #include void main() { float a; char b; printf("please input a score:"); scanf("%f",&a); while(a100) { printf("input error");

scanf("%f",&a); } switch((int)a/10) {

case 0:

case 1:

case 2:

case 3:

case 4:

case 5:b='E';break;

case 6:b='D';break;

case 7:b='C';break;

case 8:b='B';break;

case 9:

case 10:b='A'; }

printf("b=%c\n",b);

} 2.1.2:(用if)

#include void main() { float a; char b; printf("please input a score:"); scanf("%f",&a); while(a100) { printf("input error");

scanf("%f",&a); } if(a>=0&&a

b='E'; else if (a>=60&&a

b='D'; else if (a>=70&&a

b='C'; else if (a>=80 &&a

b='B'; else

b='A';

printf("b=%c\n",b);

} 2.2: #include void main() { long int a; long int g,s,b,q,w,f,place; scanf("%ld",&a); while(a>99999) { printf("input error"); scanf("%ld",&a); } if(a>9999) place=5; else if (a>999) place=4; else if(a>99) place=3; else if(a>9) place=2; else place=1; printf("%d\n",place); g=a%10; s=a%100/10; b=a%1000/100; q=a%10000/1000; w=a/10000; printf("%ld,%ld,%ld,%ld,%ld\n",g,s,b,q,w); f=a%10*10000+a%100/10*1000+a%1000/100*100+a%10000/1000*10+a/10000; printf("f=%ld\n",f);

}

七、实验心得

通过本次实验,明白了if和switch的联系,以及长整形在打印时注意的地方,学会使用逻辑运算符及逻辑表达式。

实验五 循环控制

一、实验目的

1.熟练掌握for 语句、while 语句、do-while 语句实现循环的方法; 2.理解循环嵌套及其使用方法;

3.掌握break 语句与continue 语句的使用;

4.掌握用循环实现一些常用算法(如穷举、迭代、递推等)。

二、实验预习1.认真阅读本章教材中循环控制部分.2.编写好所需要的程序。

三、实验指导 1.打印如下图案

* * *

* * * * * * * * * * * *

(1)算法分析:从图案中找出行数,空格数,星号数间的关系如下: 行数空格数星号数 1 3 1 2 2 3 3 1 5 4 0 7 i 4-i 2*i-1 可用双重循环控制整个图案的输出。若用循环变量i,j 分别控制外层,内层循环,则 i 的取值从1 到4,表示行数,在每行中要确定前面空格个数和星号个数,空格个数是4-i,

星号个数是2*i-1。

(2)根据分析结果写出源程序 #include void main( ) { int i,j ; /*定义循环控制变量*/ for(i=1;i

(6)查看结果【Alt+F5】。输出题目要求的图案。

四、实验内容

1.在C 编辑环境下编辑实验指导中给出的程序,编译并运行。 2.要求学生独立完成如下题目:

(1)输出100到1000之间的所有水仙花数。所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。

(2)输入一行字符,分别统计出其中英文字母、空格、数字 和其他字符的个数。

(3)试利用图形函数完成极坐标函数ρ=cos(3*X)图像的绘制。【进阶题目,选做】 根据以上题目要求编程并上机调试运行。

五、编程思路

2(1)对一个数字每一位的输出的前提下在利用一个if语句即可。 2(2)先明白英文字母、空格、数字的ASCII,在用if函数即可。

六、程序运行结果 2(1):

#include #include void main() { int a=100,g,s,b; while(a>=100&&a

printf("%d\n",a);

a++; }

} (2):

#include void main() { char c; int i=0,j=0,k=0,l=0; while((c=getchar())!='\n') {

if(c>=65&&c96&&c

i++;

else if(c>=48&&c

j++;

else if(c==32)

k++;

else

l++; } printf("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l);

} (3):

#include #include #define PI 3.1415926

int main() { int gdriver, gmode; float p,x,px,py,zx,zy; gdriver=VGA; gmode=VGAHI; initgraph(&gdriver, &gmode, "c: c"); for(x=0;x

p=cos(3*x);

zx=p*cos(x);

zy=p*sin(x);

px=320+zx*100;

py=240-zy*100;

putpixel(px,py,14); }

getch(); closegraph(); return 0; }

七、实验总结、心得

通过本次实验,理解了一些循环语句的选择、运用,对一些简单循环的嵌套有了更进一步的理解。

第13篇:C语言实验报告

C语言程序设计(B)

(2010-2011-2)

实验报告

教学班级:

学号:

姓名:

课程教师:王华金

实验辅导教师:王华金

江西理工大学

1 P123--

五、

1、编写函数,找出5*5数组对角线上元素的最小值,并在主函数中调用它。要求元素的值通过键盘输入。

实验前的源程序:

#include int func(int p[5][5]) { int i,j,min; min=p[0][0]; for(i=0;i

for(j=0;j

if(i==j)

if(p[i][j]

return min; } void main() { int i,j,m,a[5][5]; printf(\"请输入a[5][5]:\\n\"); for(i=0;i

[Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名4.cpp:13: error: `main\' must return `int\' [Warning] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名4.cpp:27:2: warning: no newline at end of file

构建中止 未命名4: 1 个错误, 1 个警告

江西理工大学

2

实验后的源程序:

#include int func(int p[5][5]) { int i,j,min; min=p[0][0]; for(i=0;i

for(j=0;j

if(i==j)

if(p[i][j]

return min; } main() { int i,j,m,a[5][5]; printf(\"请输入a[5][5]:\\n\"); for(i=0;i

P123--

五、

3、编写从整形数组中检索给定数值的函数,若找到则输出该数值在数组中的位置。

实验前的源程序:

#include \"stdio.h\" int Find(int array[],int Array size,int num) { int i; for(i=0;i

江西理工大学

3 int main() { int a[]={1,2,3,4,5}; num=4,n=5,index; index=find(a,5,num); if(index) printf(\"%d在数组中第%d位置\",num,index); else printf(\"数组中没有这个数!\"); }

实验错误报告:

[Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名3.cpp:2: error: expected `,\' or `...\' before \"size\" [Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名3.cpp:5: error: expected `;\' before \"size\" [Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名3.cpp:5: error: `size\' was not declared in this scope [Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名3.cpp:5: error: expected `)\' before \';\' token [Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名3.cpp:5: error: expected `;\' before \')\' token [Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名3.cpp:13: error: `num\' was not declared in this scope [Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名3.cpp:13: error: `n\' was not declared in this scope [Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名3.cpp:13: error: `index\' was not declared in this scope

江西理工大学

4 [Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名3.cpp:14: error: `find\' was not declared in this scope [Warning] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名3.cpp:19:2: warning: no newline at end of file 实验后的源程序:

#include \"stdio.h\" int Find(int Array[], int Array_size, int num) { int i; for(i=0;i

P123--

五、

6、输入10名学生5门课的成绩,分别用函数求:(1)每门课的平均分。(2)找出最高的分数所对应的学生和成绩。

实验前的源程序:

#include void input(float a[10][5]) //输入学生成绩 { int i,j;

for(i=0;i

{

printf(\"输入第%d个学生五门课的成绩:\",i+1);

for(j=0;j

scanf(\"%f\",&a[i][j]);

} } void aver_cour(float a[10][5]) //课程的平均分

江西理工大学

5 {

int i,j;

float sum;

for(i=0;i

{

sum=0;

for(j=0;j

sum+=a[j][i];

printf(\"第%d门课的平均成绩为:%6.2f\\n\",i+1,sum/10);

} } void highest(float a[10][5]) //查找最高分

{

int i,j,flag1,flag2; float max=0;

for(i=0;i

{

for(j=0;j

{

if(max

{

max=a[i][j];

flag1=i;

flag2=j;

}

}

}

printf(\"最高分对应的是学生:%d课程:%d\\n\",flag1+1,flag2+1); } void main() {

float a[10][5];

input(a);

aver cour(a);

highest(a);

}

实验错误报告:

[Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名6.cpp:35: error: `main\' must return `int\' [Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名6.cpp:38: error: `aver\' was not declared in this scope [Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名6.cpp:38: error: expected `;\' before \"cour\"

江西理工大学

6 [Warning] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名6.cpp:40:4: warning: no newline at end of file

构建中止 未命名6: 3 个错误, 1 个警告 实验后的源程序:

#include void input(float a[10][5]) //输入学生成绩 { int i,j;

for(i=0;i

{

printf(\"输入第%d个学生五门课的成绩:\",i+1);

for(j=0;j

scanf(\"%f\",&a[i][j]);

} } void aver_cour(float a[10][5]) //课程的平均分

{

int i,j;

float sum;

for(i=0;i

{

sum=0;

for(j=0;j

sum+=a[j][i];

printf(\"第%d门课的平均成绩为:%6.2f\\n\",i+1,sum/10);

} } void highest(float a[10][5]) //查找最高分

{

int i,j,flag1,flag2; float max=0;

for(i=0;i

{

for(j=0;j

{

if(max

{

max=a[i][j];

flag1=i;

flag2=j;

}

}

}

printf(\"最高分对应的是学生:%d课程:%d\\n\",flag1+1,flag2+1); } main()

江西理工大学

{

float a[10][5];

input(a);

aver_cour(a);

highest(a); } P173-

五、

2、对具有10个元素的char类型的数组,从下标为6的元素开始全部设置\'#\'号,保持前6个元素中的内容不变。

实验前的源程序:

#include\"stdio.h\" main() {int i ; char a[10]={\'h\',\'e\',\'l\',\'l\',\'o\',\'j\',\'p\',\'i\',\'j\',\'d\'}; for(i=0;i

for(pi=(a+6);pi

*pi=\'#\'; for(i=0;i

[Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名1.cpp:8: `pi\' undeclared (first use this function) [Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名1.cpp:8: (Each undeclared identifier is reported only once [Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名1.cpp:8: for each function it appears in.)

构建中止 未命名1: 3 个错误, 0 个警告

江西理工大学

8

实验后的源程序:

#include\"stdio.h\" main() {int i ; char a[10]={\'h\',\'e\',\'l\',\'l\',\'o\',\'j\',\'p\',\'i\',\'j\',\'d\'}, *pi; for(i=0;i

for(pi=(a+6);pi

*pi=\'#\'; for(i=0;i

P173-

五、

5、输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换,并输出对换后的10个数。

实验前的源程序:

#include void Deal(int *p) { int i,m;

int max,min;

max=min=0; for(i=0;i

if(*(p+i)>*(p+max)) max=i;

if(*(p+i)

printf(\"%d \",*(p+i++)); printf(\"\\n\"); }

江西理工大学

9 void main() { int data[10]; int i=0; printf(\"请输入十个数:\\n\"); while(i

scanf(\"%d\",data+i++) Deal(data); Show(data); } 实验错误报告:

[Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名7.cpp:24: error: `main\' must return `int\' [Error] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名7.cpp:30: error: expected `;\' before \"Deal\" [Warning] C:\\Users\\陶鑫\\Documents\\C-Free\\Temp\\未命名7.cpp:32:2: warning: no newline at end of file

构建中止 未命名7: 2 个错误, 1 个警告

实验后的源程序:

#include void Deal(int*p) { int i,m; int max,min; max=min=0; for(i=0;i*(p+max))max=i; if(*(p+i)

江西理工大学

10 } void Show(int*p) { int i=0; printf(\"交换后结果如下:\\n\"); while(i

P173-

五、

7、编写小学生做加、减、乘、除四则运算的程序。例如在操作系统下,键入cal 15*15,则在屏幕上显示15*15=225.实验前的源程序:

实验错误报告:

实验后的源程序:

#include main() {

int i,j,k; char *f[2]; int b[2]; scanf(\"%s\",&f[1]); scanf(\"%d\",&b[1]);

江西理工大学

江西理工大学12

} scanf(\"%s\",&f[2]); scanf(\"%d\",&b[2]); i=b[1];j=b[2]; k=i*j; printf(\"%d*%d=%d\",i,j,k);

第14篇:C语言实验报告

实验报告Ⅰ

指导教师曾宪华实验时间: 2010 年10月日 学院通信与信息工程专业通信类

班级0101105学号2011210150姓名陈环宇 实验室s313

实验目的及要求:

(1)掌握选择结构程序设计,学会if语句嵌套的应用。

(2)以此程序掌握使用断点调试程序的方法。

实验题目:

实验内容及步骤:

1 源程序(已修正)

操作步骤

a.打开C++,新建文件,输源程序。

b.进行编译和连接时,没有出现错误或者警告。

c.单击Go,输入a,b,c的值后,程序执行到断点①处,输入变量a,b,c,查看a,b,c的值。此时,变量的值与输入的值一致。

d.单击Go,程序运行到断点②处,运行显示d为49.81,此时方程有实根。

e.单击Go,运行到最后一个断点处,运行显示x1=-0.44 ,x2=-3.80,符合题目要求。 f.单击Stop Debugging,调试完成。

运行结果示例

心得体会:

当编写的程序较大时,要适当设置断点,可及时观察当前变量或表达式的值。 理解了关系表达式和逻辑表达式的区别。

第15篇:C语言实验报告

河南工业大学 C语言实验报告

专业班级:生物10级4班学号:姓名:指导老师: 杨爱梅 评分:

实验题目:循环结构程序设计

实验目的:熟练掌握while,do—while及for语句的格式、执行过程及循环嵌套的使用

实验内容:P140-141习题6,8,16

实验步骤:(具体程序及运行结果,运行结果截屏)

实验体会:(200字以内)

第16篇:c语言实验报告

实验报告一

(注意:红字不用抄写,其它必须抄写。实验纸不够用写反面。)

一、实验内容

if语句、ifelse语句、ifelse if语句的练习

二、重点难点

分析题目,正确应用相应的选择语句

三、实验目的

掌握if语句、ifelse语句、ifelse if语句的简单用法

四、实验要求

根据题目,编写程序并在vc6.0开发平台运行,查看运行结果是否与期望一致

五、实验题目

输入三角形的三边边长,判断并输出,说明三角形是等边、等腰、直角、一般三角形。

六、实验过程

1.画流程图

2.编写完整的程序

3.写出实验程序运行结果

七、实验总结:(模仿着写三行文字即可)

通过……对……进行了练习……实验中遇到了……经过……解决了……从实验中学到了……以后在实验中应注意……。

第17篇:C语言实验报告

《C语言程序设计》实验报告

实验名称 ____ C程序的运行环境和运行C程序的方法_学期日期

同组人李江涛指导老师_杨雪松___________成绩___________ -------------------------

【实验目的】:

1.了解所用的计算机系统的基本操作方法,学会独立使用该系统

2.了解在该系统上如何编辑、编译、连接和运行一个C程序

3.通过运行简单的C程序,初步了解C源程序的特点

【实验原理及相关知识】:(此处请简短概述一下就可以)

【实验设备】:(正确填写每次实验所用的设备型号)

【实验内容】:(此外按实指导书的要求写自己设计的东西)

【实验过程】:

【实验总结】:(此处写实验完成情况及对相关结果的分析总结)

【实验心得及其他】:

请各位同学认真添写实验报告,不要抄袭,尽量用自己的语言,自己的想法完成实验及

实验报告报告中不要求有过多的原理,主要看的是自己设计的实验内容和过程及完成情况。

第18篇:c语言实验报告

南昌大学实验报告

学生姓名: 学 号: 专业班级:

√ 综合 □ 设计 □ 创新 实验日期: 实验成绩: 实验类型:□ 验证 □一.实验名称

实验3 控制语句

二.实验目的

1.熟练掌握if 、if…else、if……elseif语句和switch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。

2.熟练掌握while语句、do……while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。

3.掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。

三.实验内容

1. 选择结构程序设计; 2. if语句的使用;

3. 使用switch语句实现多分支选择结构; 4. 三种循环语句的应用; 5. 循环结构的嵌套;

6. break和continue语句的使用。

三.实验环境

PC微机

DOS操作系统或 Windows 操作系统 Visual c++程序集成环境

四.实验内容和步骤

本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。学会单步调试和断点调试程序及变量跟踪方法。

1. 任意输入4个整数,要求按由小到大的顺序输出。

2.编程实现:输入一个整数,将其数值按照①小于10,②10~99,③100~999,④1000以上四个类别分类并显示。

要求: (1)将变量定义为整型。

(2)输入整数前,利用puts()/printf()给出提示信息。

(3)输出结果时要有必要的说明,例如:输入358时,显示358 is 100 to 999。 (4)该程序利用if语句实现。

运行程序,分别输入9,21,321,4321数据检查输出信息的正确性。

3.编写程序:根据公式

261111...... ,输出 π的值。

122232n2要求:

(1)变量π为单精度类型,n为整型;

(2)计算当n的取值分别为20,50 ,100,200时的π值,说明什么问题?

(3)修改程序,不给出n值,而改为求π值,直到最后一项的数值小于10-4 为止。

(4)对修改后的程序,输出π值以及总的项数n。输出格式为:π=值;n=值。

4.从键盘输入一个0~1000之间的任意整数,输出该整数的所有因子(例如:输入12,其因子为1,2,3,4,6,12)。

要求:

(1)采用while循环语句实现。

(2)输出格式为:Input:12 Output:1,2,3,4,6,12 5.从键盘输入学生的考试成绩,利用计算机将学生的成绩划分等级并输出。学生的成绩可分成5个等级,90-100分为A级,80-89分为B级,70-79分为C级,60-69分为D级,0-59分为E级。要求在输入负数时,给出错误提示。

① 事先编好程序,要求分别用if语句和switch语句实现。运行程序,并检查结果是否正确。

② 再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级。修改程序,使之能正确处理任何数据。当输入数据大于100或小于0时,通知用户“输入数据错”,程序结束 6.某航空公司规定:在旅游旺季7~9月份,如果订票20张及其以上,优惠票价的10%,20张以下,优惠5%;在旅游淡季1~6月份,10~12月份,订票20张及其以上,优惠票价的20%,20张以下,优惠10%。编写一个C程序,根据月份和旅客订票张数决定优惠率。已知机票单价,请算出旅客的总付款。请使用不同的测试数据进行测试。 7.计算并输出1000以内最大的10个素数以及它们的和。

要求:

(1)在程序内部加必要的注释。

(2)由于偶数不是素数,可以不考虑对偶数的处理。

(3)虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。

(4) 输出形式为:素数1+素数2+素数+…+素数10 = 总和值。

五.实验数据及处理结果

/*写出实验内容的算法(用流程图表示)、完整的程序、结果并能对结果的正确性及上机时产生的问题进行分析,注意程序变量命名应见名知意、有适当的注释,程序书写规范*/ 【习题1】

【设计思路】 :输入a,b,c,d四个数,将四个数两两进行比较,如果前者大于后者,则将两数的值交换,否则不变。这样重复操作6次,最后输出a,b,c,d的值,则a,b,c,d从大到小排列。

【数据输入】输入整型变量 a,b,c,d 【数据输出】输出 a,b,c,d的值,使其从大到小排列。 【源程序实现】

#include main() {

int a,b,c,d,t; printf(\"please input four numbers(example:1 2 3 4):\\n\"); scanf(\"%d %d %d %d\",&a,&b,&c,&d); if(a>b) {t=a;a=b;b=t;}/* 实现a,b的交换 */ if(a>c) {t=a;a=c;c=t;}/* 实现a,c的交换 */ if(a>d)

} {t=a;a=d;d=t;}/* 实现a,d的交换 */ if(b>c) {t=b;b=c;c=t;}/* 实现b,c的交换 */ if(b>d) {t=b;b=d;d=t;}/* 实现b,d的交换 */ if(c>d) {t=c;c=d;d=t;}/* 实现c,d的交换 */ printf(\"%d,%d,%d,%d\",a,b,c,d); 【结果及截图】

答:输入64 3 5 23,运行结果为3,5,23,64,其截图如下:

输入格式的提示。

【修改后程序实现及结果】 /*习题

2、4请添加此步*/

【问题分析】 输入数据时,没有按正确格式输入,所以在输入数据之前,应该给出一个【习题2】

【设计思路】

【数据输入】 输入整型变量x。 【数据输出】 输出x的范围。 【源程序实现】

#include

main()

{

int x;

printf(\"Please input a number:\\n\");

scanf(\"%d\",&x);

printf(\"%d is \",x);

if(x

else if(x

else if(x

else printf(\"more than 1000\\n\");

return 0;

}

【结果及截图】

答:运行程序,分别输入9,21,321,4321,截图如下:

【习题3】

【源程序实现】

#include

#include

main()

{

int n,N;

float pi,sum=0;

printf(\"Please input a number:\\nN=\");

scanf(\"%d\",&N);

for(n=1;n

sum+=1.0/(n*n);

pi=sqrt(6*sum);

printf(\"pi=%f\",pi);

return 0; } 修改后的程序: #include #include main() {

int n=0;

float pi,sum=0;

do

{

n++;

sum+=1.0/(n*n);

}while(1.0/(n*n)>=1e-4);

pi=sqrt(6*sum);

printf(\"pi=%f; n=%d\",pi,n);

return 0; }

【结果i及截图】

答:计算当N的取值分别为20,50 ,100,200时,截图如下:

【结果ii及截图】

【习题4】

【源程序实现】

#include main() { int num,i=2; printf(\"Input:\"); scanf(\"%d\",&num); printf(\"Output: 1\"); /*第一个因式为 1*/ while(i

【结果及截图】

答:输入30,得其因式为 1,2,3,5,6,10,15,30,截图如下:

【习题5】

【源程序实现】

If 语句

#include main() {

int num;

printf(\"Input:\");

scanf(\"%d\",&num);

if(num100)printf(\"The number is wrong!\");

else if(num

else if(num

else if(num

else if(num

else printf(\"A\");

return 0; }

Switch 语句

#include main() {

int num,n;

printf(\"Input:\");

scanf(\"%d\",&num);

n=num/10;

switch(n)

{

case 0:

case 1:

case 2:

case 3:

case 4:

case 5: printf(\"E\");break;

case 6: printf(\"D\");break;

case 7: printf(\"C\");break;

case 8: printf(\"B\");break;

case 9:

case 10: printf(\"A\");break;

default: printf(\"error!\");

}

return 0; }

【问题分析】

【习题6】

【源程序实现】

#include main() { int month,num; float price,cost; printf(\"month=\");scanf(\"%d\",&month); printf(\"\\nprice=\");scanf(\"%f\",&price); printf(\"\\nnum=\");scanf(\"%d\",&num); if(month>=7&&month=20) cost=price*0.9*num; else cost=price*0.95*num;} if((month>=1&&month=11&&month=20) cost=price*0.8*num; else cost=price*0.9*num;} printf(\"cost=%f\",cost); }

【习题7】

【源程序实现】

#include #include void main() { int num,i,sum=0,count=0; for(num=999;count!=10;num-=2) {for(i=2;i=sqrt(num)) {count++; sum+=num; printf(\"%d+\",num);} } printf(\"\\b=%d\",sum); } 【结果及截图】

六.简答题

七、实验总结及体会

第19篇:c语言实验报告

学号:__________ 姓名:__________ 班级:__________ 日期:__________

指导教师:__________ 成绩:__________

实验一 上机操作初步和简单的c程序设计

一、实验目的

1、熟悉c语言运行环境turbo c++3.0

2、会简单的程序调试

3、熟悉c语言各种类型数据的输入输出函数的使用方法

4、掌握顺序结构程序设计

二、实验内容

1、上机运行本章3个例题,熟悉所用系统的上机方法与步骤。(习题1.7)

2、编写一个c程序,输入a、b、c 3个值,输出其中最大者。(习题1.6)

4、运行如下程序,写出运行结果。第一┆范文网整理该文章,版权归原作者、原出处所有...#include void main(){a=a+b; b=a-b; a=a-b;printf(\"%d,%dn\",a,b);}

三、实验步骤与过程

四、程序调试记录

xiexiebang.com范文网[CHAZIDIAN.COM]

第20篇:c语言实验报告

学号:__________ 姓名:__________ 班级:__________ 日期:__________

指导教师:__________ 成绩:__________

实验一 上机操作初步和简单的C程序设计

一、实验目的

1、熟悉C语言运行环境Turbo C++3.0

2、会简单的程序调试

3、熟悉C语言各种类型数据的输入输出函数的使用方法

4、掌握顺序结构程序设计

二、实验内容

1、上机运行本章3个例题,熟悉所用系统的上机方法与步骤。(习题1.7)

2、编写一个C程序,输入a、b、c 3个值,输出其中最大者。(习题1.6)

3、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。注意:在Trubo C++ 3.0中不能输入汉字,只能输入英文或拼音。(习题4.8)

4、运行如下程序,写出运行结果。第一┆范文网www.daodoc.com整理该文章,版权归原作者、原出处所有...#include

void main()

{

int a=1,b=2;

a=a+b; b=a-b; a=a-b;

printf(\"%d,%d\\n\",a,b);

}

三、实验步骤与过程

四、程序调试记录

《c语言实验报告.doc》
c语言实验报告
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

相关推荐

实施方案自查报告整改措施先进事迹材料应急预案工作计划调研报告调查报告工作汇报其他范文
下载全文