c语言实验报告_第1页
c语言实验报告_第2页
c语言实验报告_第3页
c语言实验报告_第4页
c语言实验报告_第5页
免费预览已结束,剩余41页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑第第页c语言实验报告四川师范高校计算机科学学院

《CC语言程序设计》

20212年年22月月班级:

22011级

专业::

电子商务

班级::

04班

姓名:

罗桂清

学号::

2009110438

指导老师:

廖雪花

《ﻬ《CC语言程序设计》试验课程简介

课程名称:C语言程序设计试验

课程性质::专业必修课课程属性:专业必修课学时学分:学时32学分1开课试验室:软件试验室面对专业:网络工程、软件工程、计算机科学与技术一、课程得任务与基本要求

C语言程序设计试验就是面对计算机相关专业同学开设得《C语言程序设计》试验课,就是协作《C语言程序设计》课程而开设得试验性训练环节.本课程得主要任务就是让同学充分把握C语言程序设计得基本概念、各种数据类型得使用技巧、模块化程序设计得方法等。C语言程序设计试验对课程中所涉及得学问进行验证,同时也就是同学很好地学习课程得帮助手段。通过C语言上机试验得教学活动,使同学真正全面把握C语言得基础学问,培育与提高同学得程序开发力量。

二、试验项目

【试验一】最简洁得C程序--挨次程序设计【试验二】规律运算与推断选取掌握【试验三】循环结构程序设计(一)

【试验四】循环结构程序设计(二)

【试验五】函数【试验六】数组(一)

【试验七】数组(二)【试验八】指针【试验九】结构体、共用体与文件【试验十】C程序综合性试验三、有关说明

1、与其它课程与教学环节得联系:

先修课程:计算机文化后续课程:面对对象程序设计、Java程序设计、数据结构、软件工程2、教材与主要参考书目:

(1)教材:

《C程序设计习题解答与上机指导》,谭浩强吴伟民著,北京:清华高校出版社,2003年。

(2)主要参考书目:

《C语言程序设计》谭浩强主编,清华高校出版社,2021年。

三、试验内容

试验一

最简洁得CC程序----挨次程序设计

(验证性试验

2学时)

(一))、试验目得

1.熟识wintc程序运行环境2。把握运行一个C程序得步骤,理解并学会C程序得编辑、编译、链接方法3.把握C语言中使用最多得一种语句-赋值语句4.把握数据得输入输出方法,能正确使用各种格式掌握符(二))、试验内容

1。写出下列程序得运行结果(1)#include

<stdio、hgt;voidmain(){

printf("*****************\n');printf("Thisisacprogram、\nquot;);printf("****************\n');}运行结果及分析:运行结果:

*****************

Thisisacprogram

*****************分析:

1、c程序中得#include〈stdio、h>就是指一个标准输入输出文件,它包含了标准输入输出函数。

2、一个c程序中必需只能有一个main函数,voidmain()就是指子最终不给程序返回任何值;3、这个程序中得prinft函数就是用来显示输出得,这三条命令全都会显示输出。

将程序中得\n去掉后,运行结果及分析:运行结果:

************************Thisisaprogram***************************分析:

1、一个c程序中必需只能有一个main函数,voidmain()就是指子最终不给程序返回任何值;2、c程序支持一些特别得反斜杠字符常量,这些常量常用于输出函数中,\n就是指换行输出,所以将\n去掉后,printf中得三条语句就不会换行输出,只显示在一排.

(2)#include

<stdio、h>voidmain(){

inta=100,b=20,sum,sb;sum=a+b;sb=a/b;

printf(quot;sum=%d,sb=%d',sum,sb);}运行结果及分析:运行结果:

sum=120、ssb=5

分析::

1、这就是一个关于数得简洁加法计算与除法计算并显示出结算结果得c程序;一个c程序中必需只能有一个main函数,voidmain()就是指子最终不给程序返回任何值;2、用int将变量定义成了整型变量;3、在定义变量时就将a与b初始化了值用于后面计算;4、将a与b得与赋值到了sum中,将a与b得商赋值到了sb中,并显示输出;5、%d就是指输出得时候就是输出整数型(3)#include

lt;stdio、h〉voidmain()

charc1,c2;

;89=2c;79=1cﻩﻩprintf('%c,%c\n",c1,c2);printf(quot;%d,%d\nquot;,c1,c2);printf('%c

%c\nquot;,c1+1,c2+2);}运行结果及分析:运行结果::

a

bb

97,98

cc,

dd

分析::

1、一个c程序中必需只能有一个main函数,voidmain()就是指子最终不给程序返回任何值;2、用char将c1与c2定义成字符变量,并给其赋值;所以;3。用printf(quot;%c,%c\n",c1,c2)输出c1与c2所对应得字符,而97、98所对应得ASCII值就是a与b4、用printf('%d,%d\n",c1,c2)输出所对应得值;

5、printf("%c

%c\nquot;,c1+1,c2+2)就是指将c1与c2中得值加上1与2后所对应得字符值输出。

(4)#include

〈stdio、hgt;voidmain(){

inti=8,j=10,m,n;m=++i;n=j++;

;)n,m,j,i,quot;d%,d%,d%,d%"(ftnirpﻩ}运行结果及分析:

运行结果::

9,11,9,10分析::

1、一个c程序中必需只能有一个main函数,voidmain()就是指子最终不给程序返回任何值;2、用int将i,j,m,n定义成整型变量;3.m=++i就是指将i加1后赋值给m与i,n=j++就是指先将j得值赋给n,然后j=j+1;4、用printf("%d,%d,%d,%d',i,j,m,n)显示输出各变量所对应得值。

再将本程序得第3行改为m=i++;n=++j;运行结果及分析:运行结果::

9,11,8,11分析:1、一个c程序中必需只能有一个main函数,voidmain()就是指子最终不给程序返回任何值;

2、用int将i,j,m,n定义成整型变量;3.m=i++就是指先将i得值赋给m,然后i=i+1得值;n=j++就是指将j+1得值赋给j与m;4、用printf(quot;%d,%d,%d,%dquot;,i,j,m,n)显示输出各变量所对应得值。

2。程序填空任意输入一个有五位数字得正整数x,分别输出每一数位上得数字(由高到低分别用b5,b4,b3,b2,b1表示),请将程序补充完整.#include<stdio、hgt;main(){

intb1,b2,b3,b4,b5;

long

int

x;Scanf("%ld',&x);b5=

(x/10000)

%10

;b4=(x/1000)%10;b3=

(x/100)%10;b2=(x/10)%10;b1=

xx

%%10

;)x,'n\dl%

sirebmuneht"(ftnirpﻩﻩ

printf("itsbitis:%d,%d,%d,%d,%d\n',b5,b4,b3,b2,b1);

}ﻩ程序分析:

1、由于此程序要输出一个五位数,所以应将变量得类型定义成longint,以免超出范围后导致乱码输出;

2、scanf函数用于键盘输入,此命令将用户输入得值赋给x;

3、将输入得五位数得每一位得值通过运算公式转换成数,并用prinft函数显示输出。

3.程序改错(留意:题中得编号为行序号,并非程序本身)计算任意一个半径为r得圆得面积与周长(结果保留两位小数)

(1)#include〈stdio、hgt;(2)main()

(3)

floatr;p=3、14,c,area;(4)

printf("inputr:');(5)

scanf("%f',r);(6)

c=2p*r;(7)

area=p*r*r(8)

printf("c=%-7、2f,area=%7、2f',c,area);(9)}错误语句得行号:

(33)

改正后得语句全行:floatr,

p=3、14,c,area;错误语句得行号:

(5)改正后得语句全行:

scanf("%f',&r);错误语句得行号:

(66)

改正后得语句全行:c=2*p*rr;

错误语句得行号:

(7)

改正后得语句全行:

area=p*r*rr;

改错分析:

11、在c程序中,一个语句中声明多个变量就是需要用",'隔开;

2、用scnff函数时,变量前面必需加操作符&,,指明该变量得地址;

3、乘法表示要用**号表示;

44、每一个执行语句结束后必需用分号";;'结束..

试验二

规律运算与推断选取掌握

(验证性试验

2学时)((一)、试验目得

1.了解规律量在C语言中得表示方法2.学会使用规律运算符与规律表达式3。娴熟把握if语句与switch语句(二)、试验内容

1.写出下列程序得运行结果(1)#include

<stdio、h>voidmain(){

inta,b,x=10,y=9;a=(-x==y++)?-x:

++y;b=y;printf("%d,%d\n',a,b);}运行结果及分析:

运行结果::

8,10

分析::

1.此程序就是关于规律运算符、递增与递减运算符以及条件运算符得应用;2.voidmain()就是指程序结束后不返回任何值;3.inta,b,x=10,y=9;就是定义int类型得整数变量及给想x与y初始化值;4.a=(--x==y++)?x:++y;就是指当x-1得值等于y得值时x=x1,否则x=++y,由于-x=9=y,所以条件成立,a得值就等于x,而在前面得运算中x=9、y=10,因此x=8;b=y=9;5.printf函数显示输出所运算出来得结果。

(2)#include

〈stdio、hgt;voidmain()

{int

a=2,b=1,c=2;If(a〈b)if(blt;0)c=0;elsec+=1;elseprintf("%d\n',c);}运行结果及分析:

运行结果:

22

分析:

1.此程序时关于if函数与c+=1类型得复合函数语句得应用;2.当if条件成立时就执行if下面得语句,不成立时则直接执行else语句,此程序中得if(a〈b)不成立,所以直接执行elsec+=1;

3.c+=1;就是指c=c+1,(3)#include

<stdio、h>voidmain(){inta=0,b=0,c=0;if(++agt;0||++b〉0)

++c;printf("\na=%d,b=%d,c=%d',a,b,c);}运行结果及分析:运行结果:

a=1,

b=0,c=1;

分析:

1、此程序就是关于if函数与递增运算符得应用;

2、inta=0,b=0,c=0;就是定义整形变量并给其赋值;3、if(++agt;0||++b>0)

++c;就是值当++agt;0与++b〉0同时满意时,执行后面得++才,由于前面条件满意,所以执行++c;因此a=1,c=1,而由于在规律条件成立时,值进行前面得运算,所以b还就是等于0;

4。Printf输出运算结果.(4)#include

<stdio、h〉voidmain(){

intx=1;switch(x){default:

printf("aquot;);

case1:

printf("b');

case2:

printf("c');}}运行结果及分析:运行结果:

abc

分析:

1.此程序就是关于switch语句得应用,在C语言中它常常跟Case一起使用,就是一个推断选择代码。其功能就是掌握业务流程流转得;2.voidmain()就是指程序结束后不返回任何值;intx=-1,就是指定义整形变量并给其赋值;3.在switch()开头时,从default处开头执行,输出a,在往下执行,不满意case1,输出b,再执行case2,也不满意,因此输出c。

在case1:printf("b');后加上break;语句,结果如何?修改程序并上机调试。

运行结果及分析:运行结果::

ab

分析::

1、此程序就是关于switch语句得应用,在C语言中它常常跟Case一起使用,就是一个推断选择代码.其功能就是掌握业务流程流转得;2、voidmain()就是指程序结束后不返回任何值;intx=-1,就是指定义整形变量并给其赋值;3、在switch()开头时,从default处开头执行,输出a在往下执行,不满意case1出c、在遇到break时退出执行。

2.程序填空输入两个整数,从用户处猎取这两个整数,显示其中较大得数,在其后跟随"islarger'。假如这两个数相等,显示"Thesenumbersareequal、'。请在_____内填入正确内容.#include

lt;stdio、h〉voidmain(){inta,b;printf("pleaseinputtwonumbers,a,b!

");scanf("%d%d',amp;a,amp;b);if(

agt;b

printf("%dislarger',a);elseif(______a=b________)printf("Thesenumbersareequal');else_____printf("%dislarger',b);}

填空①:aa>bb填空②:

__a=b___填空③:

_printf("%d

is

largerquot;quot;,bb);;结果分析:

运行结果::

islarger

分析::

1.此程序涉及到了scanf键盘输入与if条件语句得应用;2.scanf("%d%d',amp;a,&b)指用户输入两个数保存到a与b中;3.if(

a〉bb

)

printf("%dislargerquot;,a);elseif(______a=b________)

printf("Thesenumbersareequal');else_____printf("%d

islarger',b);指当a〉b成立时输出aislarger,若a=b时输出Thesenumbersareequal,若前面都不成立,a<b时,输出bislarger、;3.编写程序(1)编写一个程序,读入5个整数,然后确定并显示这组数中得最大整数与最小整数。

程序清单::

#include〈stdio、h>

voidmain(){

intmax,min,x,n;

printf("pleaseinputthefirstnumber:quot;);

scanf('%dquot;,&x);

max=min=x;

for(n=2;nlt;=5;n++)

{

printf(quot;pleaseinputthe%dnumber:",n);

scanf('%dquot;,&x);

if(x>max)

{max=x;continue;}

if(xlt;min)

min=x;

}

printf('thebiggestnumberis:%d;thesmallestnumberis:%d、\nquot;,max,min);

getch();}程序编写留意事项::

1.此程序要连续输入五个数,可用for循环输出五条printf函数;2.五个数排列大小,在输入第一个数得时候这个数既就是最大数也就是最小数,在之后没输入一个就是数得时候就与前一个数进行比较,大得储存在max里,小得话就存在min里,直到第五个数比较完后输出结果,printf('pleaseinputthe%dnumber:quot;,n);

scanf("%d',amp;x);

if(x〉max)

{max=x;continue;}

if(xlt;min)

min=x;实现了这个功能.(2)编写程序,读取一个整数,推断并显示出这个整数就是奇数还就是偶数.(提示:使用求模运算符。偶数就是2得倍数。任何2得倍数除以2时,余数均为零。)

程序清单::

#include〈stdio、hgt;voidmain()

{

intn;

printf('pleaseinputanumber");

scanf(quot;%d",amp;n);

if(n%2==0)

printf(quot;Thisnumberisevennumberquot;);

else

printf('Thisnumberisoddnumber');

getch();

}程序编写留意事项:

1.键盘输入函数不能丢掉位置掌握符号amp;;2.%就是模运算符,取两数相处得余数;3.推断就是奇数还就是偶数要用条件运算符if。。else语句。

(3)编写一个程序,从键盘中输入3个不同得整数,然后显示这3个整数得与、平均数、积、最小数与最大数.(用if语句)屏幕中得对话内容如下所示:

程序清单::

#include<stdio、h>voidmain()

inta,b,c,m,n;

printf('Inputthreedifferentintegers:\n');

printf('Inputfirstnumber:quot;);

scanf('%d,",&a);

printf("Inputscendnumber:');

scanf('%d,",&b);

printf("Inputthirdnumber:');

scanf("%d,",amp;c);

printf('Sumis%d\n",a+b+c);

printf("Averageis%d\nquot;,(a+b+c)/3);

printf("Productis%d\nquot;,a*b*c);

if(a〉bamp;amp;a〉c)m=a;

elsem=b;

if(b〉c)m=b;

elsem=c;

printf(quot;Maxis%d\n',m);

if(a<b)n=a;

elsen=b;

if(b〈c)n=b;

elsen=c;

printf("Minis%d\n",n);

getch();}程序编写留意事项::

1.函数要在main函数中进行定义,然后用scanf函数给定义好得三个变量赋值;2.对函数进行算术运算就是要用c语言中特定得运算符,乘号用*表示,除号用/表示,括号代表优先级运算;3.比较三个数大小得时候要用if、、else条件函数进行比较;4.假如要在一条语句中显示,要留意c语言中得运算挨次。

Inputthreedifferentintegers:132714Sumis54Averageis18Productis4914Smallestis13Largestis27

试验三

循环结构程序设计(一))

(验证性试验

2学时)(一))、试验目得

1.熟识用while语句、do-wile语句与for语句实现循环得方法2.把握在程序设计中用循环方法实现得算法((二)、试验内容

1。写出下列程序得运行结果(1)#include

lt;stdio、h>voidmain()

{intcount=1;while(count〈=10)

;++tnuocﻩprintf("%s\nquot;,count%2?"****':

"++++++++++');}}运行结果及分析:

运行结果::

+++++++++++

********

++++++++++

******

+++++++++++

*******

++++++++++

*******

++++++++++

*******

分析:

1.while就是入口掌握循环语句,先计算测试条件,假如该条件为真,那么就运行其循环体语句,运行完后,再次计算测试条件,假如仍为真,则连续计算循环体,直到条件为假,所以在本程序中,直到将count++运行到count等于10时停止运算;2.在prinrf语句中,count%2就是对count进行求模运算,并用?条件语句,当count%2时输出******,否则就输出++++++++++。由于count始终循环到10,所以就各出了五次。

(2)#include

lt;stdio、h〉voidmain(){

introw=10,Column;

)1=〉wor(elihwﻩ

{ﻩ

Column=1;

)01=lt;nmuloC(elihwﻩ

{ﻩ;)'>":'<"?2%wor,'s%"(ftnirpﻩ

ﻩColumn++;

}ﻩ

ﻩ;-worﻩ

;)'n\"(ftnirpﻩ

}}运行结果及分析:运行结果:

〉〉gt;〉>〉gt;gt;〉〉〉

lt;〈<〈〈〈<〈<〈〈ﻩgt;>〉gt;〉〉〉〉gt;>>

〈〈<〈〈<<〈〈lt;lt;ﻩgt;>gt;>〉>gt;gt;〉〉gt;

<<lt;lt;<<lt;<<lt;<ﻩ〉>〉〉〉〉gt;>gt;〉gt;

〈〈〈〈〈<〈〈〈lt;lt;〉>〉〉〉>gt;gt;>gt;>

lt;lt;lt;〈lt;lt;lt;〈<<lt;ﻩ分析:

1.while就是入口掌握循环语句,先计算测试条件,假如该条件为真,那么就运行其循环体语句,运行完后,再次计算测试条件,假如仍为真,则连续计算循环体,直到条件为假;2.while可进行循环得嵌套,在本程序中就进行了循环得嵌套,在第一个循环下,再进行while循环,其次个循环就是对Column进行求模与用?推断输出<>,始终循环到Column=10为止,第一个while循环就是掌握换行输出得,直到row〉=1时退出循环。

(3)#include

〈stdio、h〉voidmain()

inty=9;for(;ygt;0;y-)

if(y%3==0)

printf("%d\nquot;,-y);}运行结果及分析:

运行结果:

88

22

分析::

1.for语句也就是一种入口掌握循环,在本程序中for(;ygt;0;y-)就是循环条件,先将y初始化为9,每执行一次后面得循环体y就自减一次,知道ygt;=0就是停止循环;2.if(y%3==0)

printf(quot;%d\n',--y);就是循环体,意识就是当y除以3没有余数时

就输出y-1得值;3.该程序就是关于for循环与求模运算得应用。

2.编写程序(1)利用循环语句来显示如下所示得数值表:

程序清单如下:

#include

<stdio、h〉voidmain(){intn;printf(quot;N\t10*N\t100*N\t1000*N\nquot;)

n=1;

while(n〈=10)

{printf("%d\t%d\t%d\t%d\nquot;,n,10*n,100*n,1000*n);

n++;}

getch();}程序编写留意事项::

1.此程序得输出要用到循环语句,可以选择用for循环或者while循环;2.在编写程序时考虑到格式得美观可以用\t使各个数之间保持肯定得间距.(2)编写一程序,能够输入一组10个数字,推断并显示出这些数字中得最大数.提示:程序中应当使用如下得3个变量:

Counter:能够记数到10得记数器.

Number:当前输入到程序中得数字。

Largest:迄今为止所发觉得最大数字.程序清单:

#include〈stdio、hgt;voidmain()

{

intCounter,Number,Largest;

printf("pleaseinputthefirstnumber:');

scanf("%d',amp;Number);

Largest=Number;

for(Counter=2;Counter〈=10;Counter++)

{printf("pleaseinputthe%dnumber:quot;,Counter);

scanf('%d',amp;Number);

if(Number〉Largest)Largest=Number;

elseLargest=Largest;

printf(quot;thelargestnumberis%dquot;,Largest);

getch();}程序编写留意事项::

1.首先要定义好所需要得三个变量,即Counter:能够记数到10得记数器,Number:当前输入到程序中得数字与Largest:迄今为止所发觉得最大数字;counter在循环时用来计数,number存储从键盘输入得数字,largest就就是用来存储比较后最大得那个数字;此程序涉及到循环输出与比较大小,所以就要用for或者while语句来就是想循环,且在循环就是要留意没输入一个数时(第一个数除外)都要与之前输入得数进行比较,比较时就要用到if条件语句.3、要留意printf语句得位置,就是在循环输入与比较之后再进行输出.(3)请开发一个程序来输入每油箱得行程里程与所用得汽油。能够计算并显示出对于每个油箱每加仑汽油得行驶里程。处理输入信息后,计算并显示全部油箱每加仑汽油得行驶里程。以下就是一个事例得输入/输出:

程序清单:

#include<stdio、h〉voidmain()

{

floatGallon,Miles;

printf(quot;Enterthegallonsused<-1toendgt;:quot;);

scanf('%fquot;,amp;Gallon);

printf(quot;Enterthemilesdriven:');

scanf('%f",

&Miles);

printf("TheMiles/Gallonforthistankwas%f',Miles/Gallon);

getch();}

程序编写留意事项:

1.在定义Gallon与Miles这两个变量时要定义成实数浮点型;2.在用printf显示输出信息后就要用scanf函数输入相对应得函数;用scanf输入数字时要留意不要掉了地址掌握符。

(4)编写一个程序读入一个5位数,并推断该整数就是否就是回文。(回文指顺读与倒读都一样得数字与文字语句,例:12321,55555。)提示:使用除法运算符与求模运算符把该数分解成单位个数。

程序清单:

#include〈stdio、h>main(){

intb1,b2,b3,b4,b5;longintx;scanf('%ldquot;,&x);b5=(x/10000)%10;b4=(x/1000)%10;b3=(x/100)%10;b2=(x/10)%10;b1=x%10;if(b1==b5,b2==b4)

printf('thenumber%ldishuiwen",x);else

printf('thenumbe%ldisnothuiwenquot;,x);}程序编写留意事项::利用整除与取模运算计算出每一位上得数字,然后将第一项与第五项,其次项与第四项比较,显示其结果。

四验实ﻬ试验四

循环结构程序设计(二))

(验证性试验

2学时)(一)、试验目得

1.娴熟把握循环语句。

2.较敏捷地运用三种不同循环语句实现循环程序设计。

3.娴熟把握break语句、continue语句及循环得嵌套使用。

(二))、试验内容

1.写出下列程序得运行结果(1)#include

lt;stdio、h>voidmain()

inti,j,k,x=0;for(i=0;ilt;2;i++){

x++;for(j=0;j〈3;j++)

{

if(j%2)

continue;

;++xﻩﻩ}x++;}

k=i+j;printf('k=%d,x=%d\nquot;,k,x);}运行结果:

k=5,x=8

程序分析::

1.此程序就是关于for循环嵌套得应用,外循环for(i=0;ilt;2;i++)就是指给x赋值为0,循环一次后x=x+1,直到x等于2时停止,就是将{}里面得内容进行循环.2.内循环for(j=0;jlt;3;j++)就是给j赋初始值值为0,直到j等于3时停止循环,循环体为if(j%2)

continue;x++;3.在内循环中得if条件语句,就是指当j对2求模运算余数为0时连续进行循环,否则就退出循环,4.由于在循环结束后i=2,j=3,所以k=5,x++运行了8次,所以x=8、(2)#include

<stdio、h>

voidmain()

intx,y;for(y=1,x=1;ylt;=50;y++)

{

if(x〉=10)

break;if(x%2==1){x+=5;continue;}x=3;}

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

}运行结果:

XX=10,y=6

及分析:

1.此程序也就是关于for循环与if条件推断语句得应用;2.for(y=1,x=1;ylt;=50;y++)就是指给x与y初始化值为1,在每次循环后加上1,直到y得值<=50后停止循环;3.在循环体中得if(xgt;=10)

break;就是指当xgt;=10时停止跳出循环,if(x%2==1)

{x+=5;continue;}就是指当x得值与2进行求模运算余数为1就是进行x+=5得运算并连续,进行x=3得运算x得变化过程为:6,3,8,5,10;4.由于x〉=10时停止了循环,所以x=10,总共循环了5次,y得初始值为1,所以y最终得值为6、(3)#include

lt;stdio、h〉voidmain()

int

i,j,sum;

for(i=1;ilt;6;i++)

{

sum=0;

for(j=1;jlt;=4;j++)sum+=j;

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

}运行结果::

SSum=10

分析:

1.此程序就是关于for循环结构得嵌套使用;2.外循环for(i=1;i〈6;i++)将i初始为1,直到i得值等于6时停止循环;3.内循环for(j=1;j〈=4;j++)将j得值初始为1,直到j得值等于4时停止循环,sum+=j时指sum=sum+j;4.虽然外循环了6次,但每次在进行内循环时都将sum得值初始为0了,所以最终结果j=10、(4)#include

lt;stdio、h>voidmain()

intk=0,m=0,i,j;

for(i=0;ilt;2;i++)

for(j=0;jlt;3;j++)

k++;

k-=j;}

m=i+j;

printf('k=%d,m=%d\nquot;,k,m);}运行结果:

k=0,m=5

分析:

1.此程序就是关于for循环结构得嵌套使用;2.外循环for(i=0;i<2;i++)就是指将内循环进行两次循环,内循环就是指将k++;k-=j;进行三次循环;3、j循环中:k得值变化为:1,1,2,1,2,0、循环两次结果不变,所以k得值就为0,在循环结束后i与j得值分别为2与3,所以m得值为52.程序填空(1)下面程序得功能就是:输出100以内同时能被3与7整除得全部整数,请填空。

#includelt;stdio、h〉voidmain()

{

inti,j;

++i;_____①___;1=i(rofﻩ{

if(___②______)continue;printf("%d\t',i);}}填空①:

i〈=100;

填空②:ii%3amp;amp;i%7

程序分析:

1)、此程序就是关于for循环结构与if推断得应用;

2)、在for循环中,i=1就是给循环变量赋初始值为1,ilt;=100;就是循环条件,由于要计算1到100直接能被3与7整除得数,所以要条件要<=100、i++就是循环一次后进行自增运算;

3)、判读一个就是就是否同时被3与7整除,要用模运算与规律运算符实现,即i%3&i%7,并且当推断这个条件成立时将数输出。

(2)推断m就是否素数#include〈stdio、hgt;voidmain()

{

intm,i,k;

scanf("%d',&m);

for(i=2;ilt;m;i++)

if(__m%i==0_____)

break;

if(i〉=m)printf("%d就是一个素数\n',m);

elseprintf("%d不就是一个素数\nquot;,m);}填空:mm%i==0

并运行分析::

1)、此程序就是关于for循环结构与if推断得应用;

2)、素数就是只能被1与它本身整除得数,所以在进行一个数就是否就是素数得时候,就推断就是否能被2与数本身-1整除,假如可以就不就是素数,反之就就是,for(i=2;ilt;m;i++)

if(__m%i==0_____)break;就就是将一个数与2到本身减1进行模运算,为0时退出,并输出不就是素数,不等于0就是输出就是素数。

3.编写程序(1)编写一个程序,能够找出几个整数中最小得整数。假定程序读取得第一个值就是余下数值得数目。

程序清单:

#includelt;stdio、hgt;voidmain(){

inti,n,low=0;

printf(quot;pleaseinputanumber:\nquot;);

scanf(quot;%d',&n);

low=n;

for(i=1;i〈=4;i++)

{

printf('pleaseinputanumber:\n");

scanf('%d',&n);

if(low<n)

low=low;

}

else

{

low=n;

}

printf('thesmallestnumberis%d',low);

getch();}程序编写留意事项:

1、读取多个数据时为了便利要使用循环语句;、2、在对输入得数据进行比较时,将第一个数据赋给low、然后再将low与后面每输入一个就进行比较一次,每比较一次就将较小得值赋给low,直到最终输出。

(2)编写一个程序显示出如下菱形图案.可以使用printf语句来显示一个(*)与一个空格,尽量多使用循环语句(嵌套得for语句),尽量少用printf语句。

程序清单:

#include〈stdio、hgt;#defineN5voidmain()

inti,j;

for(i=1;i〈=N;i++)

{

for(j=1;jlt;=Ni;j++)

{

printf('quot;);

}

for(j=1;j<=2*i-1;j++)

printf('*');

printf(quot;\n');

}i=4,j=0;

for(;igt;=1;i--)

{

for(j=1;j<=5i;j++)

printf(quot;');

}

for(j=1;jlt;=2*i-1;j++)

{

printf(quot;*quot;);

printf("\n")

;

}getch();}程序编写留意事项::

1.此程序要用到fou循环得多重嵌套;2.在显示上半部分正三角形时for循环得行数计数器就是从1递增到5,每行显示得空格得个数用最大行数减去当前行数,输出得"*"号个数用公式2*N1计算出来;3.在显示下半部分倒三角形时for循环行数从最大行递减到1,每行空格个数用N当前行数。*号个数还就是用2*N1计算出来,这时得*号个数就是递减得。

(3)输入从1994~1999这个范围内得年份,并使用for循环语句来生成一个简洁得日历.留意闰年得情形。

程序清单::

#include〈stdio、hgt;

#includelt;conio、h>/*掌握台输入输出函数-*/#include〈stdlib、hgt;intIsLeapYear(int);/*-推断某一年就是否为闰年--*/voidmain(){

inti;

intday;

intyear;

inttemp;

inttemp_i;

longintYear_days=0;

intYear_Start=1;

intPer_Year_Days;

intmonth_day[]={31,28,31,30,31,30,31,31,30,31,30,31,29};/*一年每个月得天数--*/

printf(quot;Pleaseentertheyear(form1991-1994):quot;);

scanf("%dquot;,amp;year);

/*从公元1年开头执行循环,由于该年得一月一号为星期一,用某年得某天与这天相差得

天数与7求余数知道就是星期几---*/

while(Year_Start<year)

{

/*假如就是闰年则为366天,否则就为365天---*/

if(IsLeapYear(Year_Start)

Per_Year_Days=366;

else

Per_Year_Days=365;

/*从公元1年到输入年份得前一年得天数得总与-*/

Year_days=Year_days+Per_Year_Days;

Year_Start++;

}

/*--tmp为从1到12,对应每年得12个月--*/

for(temp=1;templt;=12;temp++)

switch(temp)

case1:

printf('

January(%d)\n',year);

break;

case2:

printf('

February(%d)\nquot;,year);

break;

case3:

printf(quot;

March(%d)\nquot;,year);

break;

case4:

printf(quot;

April(%d)\n',year);

break;

case5:

printf(quot;

May(%d)\n",year);

break;

case6:

printf("

June(%d)\n',year);

break;

case7:

printf('

July(%d)\n",year);

break;

case8:

printf('

August(%d)\n',year);

break;

case9:

printf("

September(%d)\n",year);

break;

case10:

printf(quot;

October(%d)\nquot;,year);

break;

case11:

printf('

November(%d)\n",year);

break;

case12:

printf('

December(%d)\n',year);

break;

/*---每个星期有七天,所以用每年得天数对7取余求就是星期几--*/

i=Year_days%7;

printf(quot;MonTueWedThuFriSatSun\nquot;);

if(i!=0)

for(temp_i=0;temp_i〈i;temp_i++)

printf("

');

day=1;

if(IsLeapYear(year)

&&temp==2)

while(daylt;=month_day[12])/*-去一年365天得值,就是闰年则为366天*/

if(daygt;1)

if(Year_days%7==0)

printf("\nquot;);

if(day〉=10)

printf('%d

',day);

else

printf('%d

quot;,day);

Year_days++;

day++;

}

else

while(day〈=month_day[temp1])

if(day〉1)

if(Year_days%7==0)/*-假如就是星期日则换行-*/

printf(quot;\nquot;);

if(day>=10)

printf(quot;%d

',day);

else

printf(quot;%d

quot;,day);

Year_days++;

day++;

}

printf("\n');

if(getch()

=="q')

exit(0);

}

getch();

/*--推断就是否就是闰年,就是则返回1,不就是则返回0*/}intIsLeapYear(intyear)

if((year%4==0)amp;&(year%100!=0)

||

(year%400==0)

return1;

else

return0;程序编写留意事项::

1.编写此程序时要用到掌握输入输出得函数,所以在开头要调用预定义文件中得函数;2.推断一年就是否就是闰年要用到IsLeapYear()函数,推断某一天就是星期几要用时间函数或者进行计算;

试验五

函数

(验证性试验、综合性试验

2学时)((一)、试验目得

1.把握定义函数得方法2.学会利用函数得相关概念解决问题3.学会使用函数得方法设计程序(二))、试验内容

1.写出下列程序得运行结果(1)#include"stdio、h'

;)ytni,xtni(fﻩvoidmain(){

inta=1,b=2;f(a,b);printf("%d,%d\n',a,b);}f(intx,inty){x=x+1;y=y+1;}运行结果:

1,2分析::

1、在main函数之前进行了一个自定义函数得声明,该函数默认为int类型,有两个形参变量,在main函数后进行了函数得定义,将两个变量得值各自加1,不返回值;2、在main函数中定义了两个整形变量并分别赋值为1,2、然后调用f(),将a与b得值传到函数中进行运算,但就是由于在调用函数时并没有返回值,所以调用完之后a与b中还就是原来得值。

(2)

#include

〈stdio、hgt;fun(inta);voidmain(){

inta=3;

fun(a);

printf(quot;%d\n',a);}fun(inta){

a=a+3;

printf(quot;%d,',a);}运行结果:

66,33

分析:

1、在main函数之前进行了自定义fun()函数得声明,在main函数哈进行了函数得定义,函数得功能就是将调用函数时得值加上3再付给原变量,然后输出该变量得值;2、在main函数中进行了函数调用,调用时传值为3,由于调用函数没有返回值,因此在函数调用结束之后,a得值还就是3、(3)#include

lt;stdio、h>intfun(intx)

staticinta=3;

ﻩa=a+x;

returna;}

)(niamdiovﻩ{

intk=2,m=1,n;

n=fun(k);

;)m(nuf=nﻩ

printf("%d\n',n);

}ﻩ运行结果::

66

分析:

1、在main函数之前进行了fun函数得定义,在fun函数中将a定义成了静态变量,所以只将a得值在每次调用fun函数时只将a得值初始化一次,且每次计算过后得值都保留在函数得a当中;2、在main函数中,第一次调用时将k得值得副本传递到fun函数,计算后a=5,返回a得值赋给n,其次次调用时将m得值得副本传递给fun函数进行计算,由于a时静态变量,值还就是5,所以计算后得结果就为6.

(4)#include

〈stdio、hgt;floatfac(intn)

{ﻩfloatf;

ﻩif(nlt;0)printf("error!quot;);

;1=f)1==n||0==n(fiesleﻩﻩ

elsef=fac(n1)*n;

return(f);

voidmain(){

int

n=4;

floaty;

;)n(caf=yﻩ

;)y,n,'n\f%=!d%"(ftnirpﻩ

}运行结果:

结果分析:

1、此程序就是用函数得迭代来实现计算一个数得阶层;2、在main函数之前自定义了一个函数,函数中先推断接受进来得数就是否小于0,若小于0就显示错误,等于0或1时返回1,大于1时调用函数自身计算阶层;3、在main函数中定义x并初始化为4,传递到fun函数中进行计算后将返回值赋给y并显示。

2、程序填空(1)

通过调用函数求a+b得与。

#include

〈stdio、h>floatadd(floatx,floaty);voidmain(){

floatadd(floatx,floaty);

;c,b,ataolfﻩ

scanf("%f,%f',amp;a,amp;b);

da

_____=cﻩadd(a,b)_________;

printf("%f',c);}floatadd(floatx,floaty)

floatz;

z=x+y;

returnz;}填空:

add(a,bb)

运行结果::

分析:

1、在主函数之前进行了自定义函数得声明,在main函数中定义三个实数,从键盘读取两个值到x与y中,调用add函数将x与y得值传递过去进行计算并将返回得值付给c;2、在add函数得定义中,将返回值类型定义成float类型,并将计算后得值返回。

(2)从键盘输入任意一个数,用函数计算它得阶乘#include

〈stdio、h〉longintf(inta)

{longint

i,t=1;

for(i=1;i<=a;i++)

;i*t=tﻩreturn_(t)___;}voidmain()

{

longintx;scanf("%ld',&x);printf("%ldquot;,f(x));}填空:

return_(t)___;运行分析::

1.在自定义函数中,用for循环来实现一个数得阶层得计算,用t来保存计算后得值,计算完后将t得值返回给主函数;2.在主函数中,定义一个变量,从键盘读取之后传递到自定义得f函数中,并将返回值显示出来,在编程时最好将返回值类型设置成长整型以便用来存储正确得数值。

3.编写程序(1)

编写函数floor,把值四舍五入为最近得整数。语句:y=floor+(x+、5);将把x四舍五入为最近得整数,并存如y。要求读取几个整数,并使用前面得语句把每个数字四舍五入为最近得整数。对于程序中处理得每个整数,显示出原始数字与四舍五入后得数字。

程序清单:

#includelt;stdio、hgt;int

floor(floatn);main(){

inti=0,s;

floatm;

for(i=0;i〈=3;i++)

m=0;

printf("Inputafloatnumber:');

scanf(quot;%fquot;,&m);

s=floor(m);

printf(quot;%d\n",s);

getch();

}intfloor(floatn)

intp;

p=n+0、5

return(p);}程序编写留意事项::

1、在main函数前先进行floor函数得声明;2、定义float型变量用sanf函数读取需要进行四舍五入得数,调用floor函数时传递值3、在main函数后进行floor函数得定义,由于传递过去得值为float类型,在加上0、5后取整就就是四舍五入后得值

(2)实现下列每个整型函数.

a)函数Celsius

返回与华氏温度等价得摄氏温度.

b)函数Fahrenheit返回与摄氏温度等价得华氏温度。

c)使用这两个函数编写程序,使其显示一些图表,图表中显示从0度~100度之间得全部摄氏温度得华氏温度等价值,以及从32度~212度之间得全部华氏温度得摄氏温度等价值.根据见解得表格形式来显示输出结果,在保留可读性得同时使输出得行数最小。

程序清单:

#include〈stdio、hgt;#defineLOW32#defineMAX212floatCelsius(floatfah);floatFahrenheit(floatcels);voidmain(){

inti,j;

floatfahrenheit,celsius;/*--从华氏到摄氏-*/

printf("Fahrenheit

Celsius\n\nquot;);

for(i=0;ilt;=100;i++)

celsius=Celsius(i*1、0);

printf(quot;%d

%7、2f\n",i,celsius);

}

/*-从摄氏到华氏--*/

printf('Celsius

Fahrenheit\n\n');

for(j=LOW;j<=MAX;j++)

fahrenheit=Fahrenheit(j*1、0);

printf(quot;

%d

%7、2f\n',j,fahrenheit);

}

getch();}floatCelsius(floatfah){

floatp;

p=(fah-32、0)/1、8;

return(p);}floatFahrenheit(floatcels)

{

floatp;

p=(9*cels)/5+32;

return(p);}

程序编写留意事项:六验实ﻬ试验六

数组(一))

(验证性试验

2学时)(一))、试验目得

1.把握一维数组得定义,赋值与输入输出得方法。

2.把握二维数组有关得定义,赋值与输入输出得方法.3。把握与数组有关得非数值计算方法.((二))、试验内容

1、写出下列程序得运行结果。

(1)#includelt;stdio、h〉voidmain(){inta[3]={1,2};inti,j;for(i=0;i<3;i++)

for(j=0;jlt;3;j++)

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

;)]i[a,quot;d%n\quot;(ftnirpﻩﻩ}ﻩ}运行结果:

33

11ﻩ2ﻩ2

33

11

22

22

33

结果分析:

1、此程序就是关于数组得运用,涉及到数组得定义及初始化值,数组在进行定义与赋值时要留意到元素就是从0开头,且要留一个位置储存结束标记,假如赋值得个数少于数组大小,则后面得都默认为0;22、、数组得每一个元素可以参与运算,此程序就就是用for循环将每一个元素依次与每一个元素相加。

(2)#include<stdio、h>#defineN20fun(inta[],intn,intm)

{inti,j;for(i=m;i〉=n;i-)a[i+1]=a[i];}

voidmain(){inti,a[N]={1,2,3,4,5,6,7,8,9,10};fun(a,2,9);for(i=0;i〈5;i++)

printf("%d,",a[i]);}运行结果:

12334

分析::

1、此程序既有关于数组得应用,也有关于函数得应用;2、Fun()所定义了一个函数,这个函数得作用就是将a[]数组里得元素从m个元素起,把前一个元素得值赋给后一个,到第n个元素时结束;3、在main函数后定义了一大小为20得数组,并给前十个赋值,调用fun函数后输出前五个元素得值,由于在调用过程中只将元素值转变到第四个,所以a[2]=a[3],因此结果为上图显示。

(3)#includelt;stdio、h〉voidswap1(intc[])

{intt;t=c[0];c[0]=c[1];c[1]=t;}voidswap2(intc0,intc1)

{intt;t=c0;c0=c1;c1=t;}voidmain()

inta[2]={3,5},b[2]={3,5};swap1(a)

;swap2(b[0],b[1]);printf('%5d%5d%5d%5d",a[0],a[1],b[0],b[1]);}运行结果:

335

分析:

1、此程序也就是关于函数与数组得综合应用;2、自定义Swap1函数得作用就是定义一个数组,定义一个整型变量,将变量t得值赋给数组里得第一个元素,第一个元素赋给其次个元素,第三个元素赋给t;3、自定义swap2函数得作用就是定义三个变量,将t得值赋给c1,c1得值赋给c2,c2得值赋给t,但就是由于在调用函数时就是备份了数组元素中得值,而函数调用过程中并没有返回值,所以原数组中得值没变;4、Main函数就是调用两个自定义函数,并且分别显示两个数组得前两个元素。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论