C语言上机实验_代码_上课用
C语言程序设计上机实验报告
(1)创建新项目
选择“文件”一“新建”一“项目”命令;或者按[Ctrl+Shif+N]组合键;也可以在主窗口的起始页面中单击“新建项目”按钮,进入新建项目向导 在“新建项目”对话框左窗格的已安装的模板中选择"VisualC++”--“ Win32”
在对话框中窗格中选择“Win32控制台应用程序”
②在“添加命令”对话框中(见图2.4),从“类别”列表框中选择类别名称,如“调试”,从“命令”列表框中选择要添加的命令,如“开始执行(不调试)”
③单击“确定”按钮,再单击“关闭”按钮。
单击工具栏右侧的下拉按钮,也可以添加或删除命令按钮。
(4)菜单或工具栏的其他操作
在“自定义”对话框“命令”选项卡的“请选择要重新排列的菜单或工具栏”选项组中,选择要移动的菜单或工具栏,单击“上移”或“下移”按钮移动菜单或命令:单击“删除”菜单成命令,单击“全部重置”按钮将所选的菜单栏、工具栏或上下文菜单恢复为其原单需覆由“键盘”按租,可给选中的命令设定快捷键:单击“修改所选内容”按键可以对菜单或命令进行分组
选中“自动换行”复选框,行中水平方向超出可视编辑器区域的任何部分会自动显示在下一行。
选中“行号”复选框,行号出现在每行代码的旁边。行号不会添加到代码中,也不会打印出来,仅供参考。
制表符相关设置。
在“选项”对话框的左侧窗格中选择“文本编辑器”一“C/C++”或“所有语言”一“制表符”,如图2.20所示。各选项的含义如下:
单击“移除”按钮,将选定的文件从当前项目中移除,文件没有被删除,依然存于该项目单击“删除”按钮,选定的文件将永久删除,该项目文件夹内不再含有此文件。
(3)建立多项目文件
C语言上机实训
上机实验二变量的定义及基本数据类型一、实验概要1、熟练掌握C语言变量的定义和使用。
2、掌握C语言的基本数据类型。
二、实验内容1.运行下面程序,写出运行结果,并分析原因。
#include"stdio.h"main(){char x,y,z;x='a';y=3+x;printf("%c\t%d\n",x,x);printf("%c\t%d\n",y,y);x=-28;z=98+x;printf("%c\t%d\n",x,x);printf("%c\t%d\n",z,z);}2. 运行下面程序,写出运行结果,并分析原因。
#include"stdio.h"main(){char x,y;x=’a’;y=’B’;printf("%c \n",x-32);printf("%c \n",y+32);}3 运行下面程序,写出运行结果,并分析原因。
#include “stdio.h”main( ){char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“%c%c\t%c\tabc”,c1,c2,c3);printf(“\t\b%c%c\n”,c4,c5);}4. 运行下列程序,写出运行结果。
#include “stdio.h”main( ){char x,y;x=’a’; /*第5行*/y=’b’; /*第6行*/printf(“x=%c,y=%c\n”,x,y);printf(“x=%d,y=%d\n”,x,y);}并分析在下面三种情况下的运行结果:(1)该程序的变量定义原来为char x,y;现在改成int x,y; 运行程序,分析运行结果。
(2)将5、6行改为:x=a;y=b; 再运行程序,分析程序为什么有错误出现。
C语言上机实验
实验1目的1、熟悉VC++语言的上机环境及上机操作过程。
2、了解如何编辑、编译、连接和运行一个C程序。
3、初步了解C程序的特点。
三、实验内容:说明:前三题为必做题目,后两题为选做题目。
1、输出入下信息:(实验指导书P79)*************************Very Good*************************2、计算两个整数的和与积。
(实验指导书P81)3、从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。
(书P3)4、在屏幕上显示一个文字菜单模样的图案:=================================1 输入数据2 修改数据3 查询数据4 打印数据=================================5、从键盘上输入两个整数,交换这两个整数。
实验二二、实验目的:1、掌握C语言的数据类型。
2、学会使用C语言的运算符及表达式。
3、掌握不同数据类型的输入输出方法。
三、实验内容:说明:前四题为必做题目,后两题为选做题目。
1、输入r1、r2,求出圆形垫片面积。
(实验指导书P84)2、输入华氏温度h,输出摄氏温度c。
(实验指导书P85)3、从键盘输入一个3位整数,将输出该数的逆序数。
(实验指导书P89)4、输入并运行以下程序,分析运行结果。
#include <stdio.h>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、输入三角形三条边的边长,求三角形的面积。
(书P55)6、输入3个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。
C语言程序设计
C语言程序设计上机实验报告实验一一、实验名称: C程序的运行环境和运行C程序的方法二、实验目的:了解在C编译系统上如何编辑、编译、连接和运行一个C程序三、实验内容:(1). 输入并运行一个简单的C程序。
(2). 设计程序,对给定的两个数求和。
(3). 设计程序,对给定的两个数进行比较,然后输出其中较大的数。
四、源程序代码:代码1:#include<stdio.h>int main(){printf("hello world!\n");return 0;}运行结果1:程序分析1:代码2:#include<stdio.h> int main(){int a=5,b=6,c;c=a+b;printf("c=%d\n",c);return 0;}运行结果2:程序分析2:代码3:#include<stdio.h>int main(){int a=5,b=6,c;if(a>b){c=a;}else{c=b;}printf("%d\n",c);return 0;}运行结果3:程序分析3:五.实验总结C语言程序设计上机实验报告实验二一、实验名称:顺序结构程序设计二、实验目的:正确使用常用运算符(算术运算符、赋值运算符)的用法,熟练掌握算术运算符及其表达式,逻辑运算符和逻辑表达式。
三、实验内容:(1). 编写程序,实现小写字母转大写。
(2). 编写程序,实现输入两个不同类型数据后,经过适当的运算(加、减、乘、除)后输出。
(3). 编写程序,计算三角形面积、立方体的体积和表面积、圆的面积和周长。
(4). 编写程序,实现单字符getchar和putchar输入输出。
(5). 编写程序,实现十进制、八进制、十六进制不同数制的输出。
四、源程序代码代码1:#include<stdio.h>int main(){char c1,c2;c1=getchar();printf("%c,%d\n",c1,c1);c2=c1-32;printf("%c,%d\n",c2,c2);return 0;}运行结果1:程序分析1:代码2:#include<stdio.h>int main(){int a=5,c1,c2;double b=3.141592653,c3,c4;c1=a/b;c3=a/b;c2=a+b;c4=a+b;printf("%d,%d,%lf,%lf\n",c1,c2,c3,c4);return 0;}运行结果2:程序分析2:代码3:#include<stdio.h>int main(){here: printf("计算三角形的面积请输入‘1’,立方体的体积和表面积请输入‘2’,圆的面积和周长请输入‘3’.\n");int a;scanf("%d",&a);if(a==1){double l,h,s;printf("请输入三角形的底边长和所在底边的高.");scanf("%lf%lf",&l,&h);s=l*h/2;printf("三角形的面积为%.16f\n",s);}else if(a==2){printf("请输入立方体的长宽高.");double b,c,d,v,s;scanf("%lf%lf%lf",&b,&c,&d);v=b*c*d;s=b*c+b*d+c*d;printf("立方体的体积为%.16f,表面积为%.16f\n",v,s);}else{double r,s,c,m;printf("请输入圆的半径");scanf("%lf",&r);m=3.141592653;s=m*r*r;c=2*m*r;printf("圆的面积为%.16f,圆的周长为%.16f\n",s,c);}goto here;}运行结果3:程序分析3:代码4:#include<stdio.h> int main(){getchar();putchar('b');return 0;}运行结果4:程序分析4:代码5:#include<stdio.h>int main(){int a;printf("请输入任意十进制整数:");scanf("%d",&a);printf("转换为八进制数为:%o\n转化为十六进制数为:%x\n",a,a); return 0;}运行结果5:程序分析5:五、实验总结C语言程序设计上机实验报告实验三一、实验名称:选择结构程序设计二、实验目的:正确使用逻辑运算符和逻辑表达式,熟练掌握if 语句和switch 语句,学习调试程序。
C语言上机实验报告1
C语言上机实验报告1
实验目的:1、初步知道什么是C语言
2、了解C语言的特点
3、会上机运行简单的C程序
4、了解怎样从程序得到运算结果
实验器材:电脑、C程序设计课本
实验内容:1、在屏幕上输出以下一行信息。
This is a C program.
2、求两个整数之和。
3、求两个整数中的较大者。
实验步骤及结果:
实验结果分析及结论:
对于实验一利用printf函数输出了题目中要求的信息This is a C program.
对于实验二我们定义了a,b来存放两个整数,定义了sum来存放和数。
用赋值运算符“=”把相加的结果传送给sum,最后输出sum就得到两数之和。
所以123和456的和为579。
对于实验三我们调用max函数来得出两数中的较大者。
所以输入8和5运行得较大者为8.实验心得体会和建议:
1、#include<stdio.h>是编译预处理指令。
2、int表示此函数的类型是整型。
3、main是函数的名字,表示“主函数”。
每一个C语言程序都必须有一个main函数。
4、函数体由{}括起来。
5、\n是换行符。
6、每一个语句最后都有一个分号,表示语句结束。
7、程序右侧的//表示从此出道本行结束是“注释”。
8、return0表示函数执行完毕时返回函数值0.
实验评价及结论:
通过这次实验我初步知道了什么是C语言,了解了C语言的特点,会上机运行简单的C程序,知道了怎样从程序得到运算结果。
实验指导老师签字:年月日。
C语言上机实验报告
n=2.0;
t=1.0;
m=1.0;
scanf("%f", &x);
while( t > 0.00000000000001||t<-0.0000000000001)
{
m=-(x*x)/(4*n*n-6*n+2);
t=m*t;
sinx=sinx+t;
n++;
}
printf("sin%.0fis %.20f\n", x, sinx);
printf("50个分数中最高的分数是第%d个学生的第%d门课,分数为:%.2f\n",li,lj,largest);
for(i=0;i<10;i++)
{
for(j=0;j<5;j++)
if(score[i][j]<90)
printf("5门课不都高于90分的是%d位同学\n",i+1);
}
}
实验结果:
getchar();
return 0;
}
实验结果:
输入:2
Sin2 is 0.45464870333671570000
一、实验项目:
数组
二、实验目的:
掌握一维数组和二维数组的定义、赋值和输入输出的方法,字符数组和字符串函数的使用,与数组有关的算法(特别是排序算法)。
三、实验平台:
Microsoft Visual C++
(2)求没门课程的平均分;
(3)输出一张包括10个学生成绩的成绩单;
(4)找出最高分所对应的学生和课程;
(5)分别统计5门课的成绩都高于90分的学生人数。
C语言程序设计上机实验报告(精选5篇)
C语言程序设计上机实验报告(精选5篇)第一篇:C语言程序设计上机实验报告黔南民族师范学院 C语言程序设计上机实验报告系部:计算机科学系年级:2013 级班级:姓名:学号:实验时间:实验成绩:2013年月日实验三顺序结构程序的设计一实验名称:顺序结构程序的设计二.实验环境:windows XP系统,VC++6.0软件三.实验目的:四.实验内容:五.算法描述流程图六.源程序七.测试数据及运行结果八.实验心得实验成绩评分要求1、原创性发现抄袭或雷同成绩为0分2、正确性程序正确60分3、可读性格式清楚,有注释,变量命名规范20分4、健壮性对特殊测试数据有考虑有测试10分5、效率程序运行效率高10分第二篇:《c语言程序设计》上机实验报告要求《c语言程序设计》上机实验报告要求1.实验环境:软件系统:使用的软件环境硬件系统:机型说明2.实验目的:掌握如何编辑、编译、链接调试运行c程序3.实验内容:(1)掌握顺序结构程序设计.P26 ,p49,p62 3.2~3.7(2)掌握选择结构程序设计(if 和switch语句的用法)p4.2~(3)循环结构程序设计(while, dowhile,for语句的用法)。
(4)掌握数组的定义、输入和输出的方法,字符数组、字符串函数的使用。
(5)了解函数的定义,熟悉函数实参与形参的“值传递”方式,掌握函数的嵌套调用和递归调用方法。
(6)熟悉指针含义及其使用。
(7)熟悉结构体和共用体的使用。
(8)熟悉文件的使用。
4.实验要求:(1)输入编写的源程序,检查程序有无错误(语法和逻辑错误),有则改之。
(2)编译和连接,仔细分析编译信息,如有错误应找出原因并改正。
(3)运行程序,输入数据,分析结果。
5.实验结果:输出程序清单和运行结果。
(要求把原题内容,调试好的程序和其结果一并打印),6.实验体会分析运行结果,本次调试程序取得的经验(遇到的问题,解决的方法等)。
第三篇:C程序设计上机实验报告10C程序设计实验报告实验名称:指针与数组学时安排:2课时实验类别:上机操作型实验要求:1人1组 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、实验目的1.理解指针、地址和数组间的关系;2.掌握通过指针操作数组元素的方法;3.掌握数组名作为参数的编程方式。
C语言程序设计上机实验指导
C语言程序设计上机实验指导目录实验一 c语言程序的开发环境 (1)实验二数据类型描述 (3)实验三顺序结构 (6)实验四选择结构 (9)实验五循环结构 (12)实验六函数与编译预处理 (16)实验七数组 (19)实验八指针 (23)实验九结构体数据类型与链表 (25)实验十共用体与枚举类型 (27)实验十一文件 (29)实验一 c语言程序的开发环境一、目的、要求1、使学生了解c语言不同于其他语言的特点。
2、掌握在c语言的开发环境中如何实现简单程序的编辑、运行,熟悉c程序的开发环境及上机步骤。
3、通过简单的c程序,熟悉c语言程序的结构特点,掌握其基本结构框架。
4、通过实践,掌握c源程序的书写格式。
二、预习内容1、熟悉Turbo c的集成开发环境,掌握启动、退出、编辑运行的操作。
2、了解基本命令及函数:include<stdio.h>,include<math.h>,main(),printf(),scanf()等。
三、上机内容1、输入下列程序,记录在Turbo c 下的操作方法。
#include <stdio.h>main(){printf(“I am a student!”);}环境的启动操作:程序的编译方法:快捷键是;菜单操作是程序的保存方法:快捷键是;菜单操作是程序的运行方法:快捷键是;菜单操作是运行结构的查看:快捷键是;菜单操作是环境的退出操作:快捷键是;菜单操作是2、预测结果并上机验证#include <stdio.h>main(){printf(“************\n”);printf(“I am a student!\n”);printf(“************\n”);}预测的结果是:上机验证的结果是:3、预测结果并上机验证#include<stdio.h>#include<math.h>main(){int a,b,sum;scanf(“%d,%d”,&a,&b);sum=a+abs(b);printf(“a and b is %d”,sum);}程序运行后输入:5,-5预测的结果是:上机验证的结果是:4、分析程序的功能,并上机验证#include<stdio.h>#include<math.h>main(){int a,b,sum;scanf(“%d,%d”,&a,&b);sum=abs(a+b);printf(“%d+%d = %d”,a,b,sum);}程序的功能是:上机验证的结果是:5、试编写程序实现下列输出** ** * ** * * *编写的程序为:实验二数据类型描述一、目的、要求1、了解c语言的数据类型的种类。
c语言上机实验
实验3(1)程序#include <stdio.h>int main(){int a=3,b=5,c=7,x=1,y,z;a=b=c;x+2=5;z=y+3;return 0;}程序错误;提示语言--------------------Configuration: fd - Win32 Debug--------------------Compiling...fd.cppC:\Documents and Settings\Administrator\桌面\fd.cpp(2) : error C2447: missing function header (old-style formal list?)执行cl.exe 时出错.fd.exe - 1 error(s), 0 warning(s)修改为:#include <stdio.h>int main(){int a=3,b=5,c=7,x=1,y,z;a=b=c;x=5+3;z=y+3;return 0;}分析结果:在赋值和运算中是从右到左。
分析:A 变量名可以是数字,英文字母(大小写均可)。
下划线。
B大小写可以区分是成不同文件。
C 赋值运算的特点是自右向左的。
实验4(1)整数除的危险性#include <stdio.h>int main(){int a=5,b=7,c=100,d,e,f;d=a/b*c;e=a*c/d;f=c/b*a;}程序在运行结果为:0 0 0;分析原因:A 5/7*100,结果是5/7等于0,再0乘上100等于0。
B 5*100/7,结果是5*100等于500,再500/7等于0。
C 100/7*5 结果是100/7等于0,再0*5等于0。
结论:原因在于,当整除不成立时,结果为0,所以结论会影响下一次的运行。
(2)#include <stdio.h>main(){int a=5,b=8;printf(“a++=%d”,a++);printf(“a=%d”,a);printf(“++b=%d”,++b);printf(“b=%d”,b);}得到结论为分析结果:i++“先引用,后增值”:++i“先增值,后引用”所以a++是5,因为先引用,a是6,因为是增值的结果,++b是9,是因为先增值,b是9,是因为后引用的结果。
C语言课程设计上机实习内容.(共5篇)
C语言课程设计上机实习内容.(共5篇)第一篇:C语言课程设计上机实习内容.C语言课程设计上机实习内容一、程序设计题目:简单的学生成绩管理程序设计二、程序设计功能及要求:1、原始数据输入和结果输出要求使用文件存放;2、计算每个学生三门功课的平均分,并按平均分排列名次,若平均分相同则名次并列;结果写入文件。
3、统计全班每门课程的平均分,并计算各分数段(60以下,60~69,70~79,80~89,90以上)的学生人数;结果写入文件。
4、按格式在屏幕上打印每名学生成绩条;5、在屏幕上打印出所有不及格学生的下列信息:学号,不及格的课程名,该不及格课程成绩;6、(选做)在屏幕打印优等生名单(学号,三门课程成绩,平均成绩,名次),优等生必须满足下列条件:1)平均成绩大于90分;或平均分大于85分且至少有一门功课为100分;或者平均分大于85分且至少两门课程成绩为95分以上;2)名次在前三名3)每门功课及格以上;(若完成选做题,课程设计成绩将给予加分)三、文件格式1、原始数据文件格式(具体数据自行编写)学号姓名英语C语言高等数学张三李四….….….2、输出数据文件(由程序自动生成)1)学生综合成绩文件。
(由程序自动生成)学号姓名英语 C语言高等数学平均成绩名次张三 76 89 78 80.5 5 李四….….….3 ….2)统计结果文件。
分数段英语C语言高等数学<60…60~69…70~79…80~89…>=90 …平均成绩75.5 …四、实习报告要求1、程序分析和设计2、流程图3、源程序清单4、调试过程: 测试数据及结果,出现了哪些问题,如何修改的5、程序有待改进的地方。
6、本次实习的收获和建议。
第二篇:C语言上机实习报告一、实验目的1.能够描述VC++6.0开发平台的使用过程,学会运行一个C程序的基本步骤,包括编辑、编译、链接和运行。
2.能够使用算术表达式和赋值表达式书写正确的语句。
3.能够使用输入/输出函数编写简单的程序。
C语言上机实验_代码_上课用
上机实践1 初识C语言实验1 一个简单的C程序simple.c#include <stdio.h>int main() {【代码1】//输出"很高兴学习C语言\n"【代码2】//输出"We are students\n"getchar();return 0;}实验2 有多个函数的C程序twoFuction.c#include <stdio.h>void speakHello(); //函数的原型void showStar(); //函数的原型int main() {showStar();speakHello();showStar();speakHello();showStar();}void speakHello() {【代码1】//输出""how are you\n"}void showStar() {【代码2】//输出"******\n"}实验答案实验1【代码1】:printf("很高兴学习C语言\n");【代码2】:printf ("We are students\n");实验2【代码1】:printf("how are you\n");【代码2】:printf("******\n");上机实践2 C程序的基本结构实验1 有多个源文件的C程序main.c#include <stdio.h>int add(int,int); //add的函数原型int sub(int,int);int main(){int result = 0;int x=12,y=20;printf("调用add函数计算和\n");result = add(x,y);printf("result =%d \n",result);printf("调用sub函数计算差\n");result = sub(x,y);printf("result =%d \n",result);}computer.cint add(int,int); //函数原型int sub(int,int);int add(int a,int b) {int sum =0;sum = a+b;return sum;}int sub(int a,int b) {int difference =0;difference = a-b;return difference;}实验2 向C程序添加源文件like.c#include <stdio.h>void swim();void seeTV();void swim() {printf("我喜欢游泳\n");}void seeTV() {printf("我喜欢看电视\n");}上机实践3 标识符与基本数据类型change.c#include<stdio.h>int main(){【代码1】//用int声明名字是cupOne,cupTwo的变量【代码2】//用int声明名字是temp的变量cupOne = 12;cupTwo = 18;printf("cupOne中的液体体积是:%d\n",cupOne);printf("cupTwo中的液体体积是:%d\n",cupTwo);【代码3】//将cupOne赋值给temp【代码4】//将cupTwo赋值给cupOne【代码5】//将temp赋值给变量cupTwoprintf("cupOne中的液体体积是:%d\n",cupOne);printf("cupTwo中的液体体积是:%d\n",cupTwo);return 0;}实验2 戒指的价值ringRice.c#include<stdio.h>【代码1】使用define预处理指令定义符号常量UnitPrice,其值是789int main(){【代码2】//用float 声明名字是goldMeasure1的变量【代码3】//用double 声明名字是goldMeasure2的变量;double fingerRingPrice;goldMeasure1 = 8.987654321f;fingerRingPrice = UnitPrice*goldMeasure1;printf("计量工具1显示的戒指的质量是(小数点保留10位):%12.10f\n",goldMeasure1);printf("根据计量工具1给出戒指的价格是:%f\n",fingerRingPrice);goldMeasure2 = 8.987654321;fingerRingPrice = UnitPrice*goldMeasure2;printf("计量工具2显示的戒指的质量是(小数点保留10位):%12.10f\n",goldMeasure2);printf("根据计量工具2给出戒指的价格是:%f\n",fingerRingPrice);return 0;}实验3 录入、输出成绩单scoreList.c#include<stdio.h>int main(){【代码1】//声明存放成绩的float型变量: math,english,chinesefloat sum = 0;【代码2】//调用scanf函数从键盘为: math,english,chinese输入值,输入的值用空格分隔sum = math+english+chinese;printf("%f\t%f\t%f\t总成绩:%f\n",math,english,chinese,sum);【代码3】//调用scanf函数从键盘为: math,english,chinese输入值,输入的值用逗号分隔sum = math+english+chinese;printf("%f\t%f\t%f\t总成绩:%f\n",math,english,chinese,sum);【代码4】//调用scanf函数从键盘为: math,english,chinese输入值,输入的值用减号分隔sum = math+english+chinese;printf("%f\t%f\t%f\t总成绩:%f\n",math,english,chinese,sum);return 0;}实验4 因地制宜、量力而行scoreList.c#include<stdio.h>#include<limits.h>#include<float.h>int main(){char ch1=97,ch2=ch1+256;short m1,m2;printf("ch1是%c,ch2是%c\n",ch1,ch2);printf("char型取值范围%d至%d\n",CHAR_MIN,CHAR_MAX);printf("unsigned char型取值范围%d至%d\n",0,UCHAR_MAX);printf("short型取值范围%d值%d\n",SHRT_MIN,SHRT_MAX);printf("unsigned short型取值范围%u至%u\n",0,USHRT_MAX);m1 = 60;m2 = m1+65536;printf("m1=%d,m2=%d\n",m1,m2);printf("int型取值范围%d值%d\n",INT_MIN,INT_MAX);printf("unsigned int型取值范围%u至%u\n",0,UINT_MAX);printf("long型取值范围%ld值%ld\n",LONG_MIN,LONG_MAX);printf("unsigned longt型取值范围%lu至%lu\n",0,ULONG_MAX);printf("float型取值范围%e至%e\n",FLT_MIN,FLT_MAX);printf("double型取值范围%e至%e\n",DBL_MIN,DBL_MAX);return 0;}实验答案实验1【代码1】:int cupOne,cupTwo;【代码2】:int temp;【代码3】:temp = cupOne;【代码4】:cupOne = cupTwo;【代码5】:cupTwo = temp;实验2【代码1】:#define UnitPrice 789;【代码2】:float goldMeasure1;【代码3】:double goldMeasure2;实验3【代码1】:float math,english,chinese;【代码2】:scanf("%f %f %f",&math,&english,&chinese);【代码3】:scanf("%f,%f,%f",&math,&english,&chinese);【代码4】:scanf("%f-%f-%f",&math,&english,&chinese);上机实践4 运算符、表达式与语句ticket.c#include <stdio.h>int main() {int ticketNumber;char a1,a2,a3,a4,a5;printf("输入彩票号码:\n");scanf("%d",&ticketNumber);【代码1】//将ticketNumber%10的值赋值给变量a1【代码2】//将ticketNumber/10的值赋值给变量ticketNumbera2 = ticketNumber%10;ticketNumber = ticketNumber/10;a3 = ticketNumber%10;ticketNumber = ticketNumber/10;a4 = ticketNumber%10;ticketNumber = ticketNumber/10;a5 = ticketNumber%10;printf("个,十,百,千,万位上的数字依次是:%d,%d,%d,%d,%d\n",a1,a2,a3,a4,a5);【代码3】//输出a1+a2+a3+a4+a5【代码4】//输出a1*a2*a3*a4*a5ticketNumber = a5*10000+a4*1000+a3*100+a2*10+a1;printf("%d\n",ticketNumber);ticketNumber = a1*10000+a2*1000+a3*100+a4*10+a5;printf("%d\n",ticketNumber);return 0;}实验2 武林高手之对决InputArray.c#include <stdio.h>int main() {【代码1】//声明两个无符号的short型变量:personOne,personTwounsigned short energySum;personOne = 6;personTwo = 3;printf("当前高手1和高手2的能量:%u,%u\n",personOne,personTwo);【代码2】//将表达式personOne++*personTwo--赋值给energySum;【代码3】//输出energySum的值;printf("当前高手1和高手2的能量:%u,%u\n",personOne,personTwo);energySum = personOne++*personTwo--;printf("第二次互相击掌产生的能量:%u\n",energySum);printf("当前高手1和高手2的能量:%u,%u\n",personOne,personTwo);energySum = personOne++*personTwo--;printf("第三次互相击掌产生的能量:%u\n",energySum);printf("当前高手1和高手2的能量:%u,%u\n",personOne,personTwo);return 0;}实验3 电路图circuit.c#include <stdio.h>int main() {int above1,above2,center,bottom1,bottom2;int pass = 0;printf("输入开关above1的状态(非0或0)");scanf("%d",&above1);printf("输入开关above2的状态(非0或0)");scanf("%d",&above2);printf("输入开关center的状态(非0或0)");scanf("%d",¢er);printf("输入开关bottom1的状态(非0或0)");scanf("%d",&bottom1);printf("输入开关bottom2的状态(非0或0)");scanf("%d",&bottom2);【代码1】//above1和above2为开状态的逻辑表达式的值赋值给passprintf("pass = %d\n",pass);pass = (above1!=0||bottom1!=0)&&(center!=0)&&(above2!=0||bottom2!=0);【代码2】//above1或bootom1为开状态,center为开状态、above2或bootom2为开状态的逻辑表达式的值赋值给passprintf("pass = %d\n",pass);【代码3】//bottom1和bottom2为开状态的逻辑表达式的值赋值给passprintf("pass = %d\n",pass);return 0;}实验4 托运行李baggageAndMony.c#include <stdio.h>#define TrainCharge 12#define CarCharge 22#define PlaneCharge 0.062int main() {double weight,charge;printf("输入行李重量:");scanf("%lf",&weight);printf("行李重量:%f公斤(kg)\n",weight);printf("需要计费的重量:%d(kg)\n",(int)weight);【代码1】//将表达式(int)weight*TrainCharge的值赋值给chargeprintf("用火车托运(%d元/kg),费用:%f元\n",TrainCharge,charge);printf("需要计费的重量:%d(kg)\n",(int)(weight+0.5));【代码2】】//将表达式(int)(weight+0.5)*CarCharge的值赋值给chargeprintf("用汽车托运(%d元/kg),费用:%f元\n",CarCharge,charge);printf("行李重量:%f克(g)\n",weight*1000);printf("需要计费的重量:%d(g)\n",(int)(weight*1000+0.5));【代码3】//将表达式(int)(weight*1000+0.5)*PlaneCharge的值赋值给chargeprintf("用飞机托运(%f元/g),费用:%f元\n", PlaneCharge,charge);return 0;}实验答案实验1【代码1】:a1 = ticketNumber%10;【代码2】:ticketNumber = ticketNumber/10;【代码3】:printf("a1+a2+a3+a4+a5=%d\n",a1+a2+a3+a4+a5);【代码4】:printf("a1*a2*a3*a4*a5=%d\n",a1*a2*a3*a4*a5);实验2【代码1】:unsigned short personOne,personTwo;【代码2】:energySum=personOne++*personTwo--;【代码3】:printf("第一次互相击掌产生的能量:%u\n",energySum);实验3【代码1】:pass = (above1!=0)&&(above2!=0);【代码2】:pass = (above1!=0||bottom1!=0)&&(center!=0)&&(above2!=0||bottom2!=0);【代码3】:pass = (bottom1!=0)&&(bottom2!=0);实验4【代码1】:charge = (int)weight*TrainCharge;【代码2】:charge = (int)(weight+0.5)*CarCharge;【代码3】:charge = (int)(weight*1000+0.5)*PlaneCharge;上机实践5 分支语句equation.c#include <stdio.h>#include <math.h>int main() {double a,b,c;double root1,root2;double disc;printf("输入系数a,b,c(逗号分隔):");scanf("%lf,%lf,%lf",&a,&b,&c);disc = b*b-4*a*c;if(a==0) {【代码1】//使用if-else语句,根据b是否为0输出是否为方程以及是方程时,方程的根}else {【代码2】//使用if-else语句,根据disc是否为负输出是否为二次方程以及方程的根}return 0;}实验2 商场的优惠shop.c#include <stdio.h>#define POINT1 100#define POINT2 200#define POINT3 500int main(){float amountMoney = 0;float charge = 0;printf("输入商品的总额:");scanf("%f",&amountMoney);if(amountMoney<POINT1) {charge = amountMoney;}else if(amountMoney<POINT2&&amountMoney>=POINT1){【代码1】//计算支付金额并赋值给charge}else if(amountMoney<POINT3&&amountMoney>=POINT2){【代码2】//计算支付金额并赋值给charge}else if(amountMoney>=POINT3){【代码3】//计算支付金额并赋值给charge}printf("顾客支付金额:%-20.2f\n",charge);printf("顾客节省金额:%-20.2f\n",amountMoney-charge);return 0;}实验3 四则运算computer.c#include <stdio.h>int main(){double numberOne,numberTwo = 0;char opration = '+';double result = 0;printf("输入第一个运算数、运算符号、第二个运算数(不要有任何分隔符号):\n");scanf("%lf%c%lf",&numberOne,&opration,&numberTwo);switch(opration) {case '+' :【代码1】//将numberOne+numberTwo赋值给resultprintf("%lf%c%lf=%lf\n",numberOne,opration,numberTwo,result);break;case '-' :【代码2】//将numberOne-numberTwo赋值给resultprintf("%lf%c%lf=%lf\n",numberOne,opration,numberTwo,result);break;case '*' :【代码3】//将numberOne*numberTwo赋值给resultprintf("%lf%c%lf=%lf\n",numberOne,opration,numberTwo,result);break;case '/' :result = numberOne/numberTwo;printf("%lf%c%lf=%lf\n",numberOne,opration,numberTwo,result);break;default:printf("%lf %c %lf不符合要求\n",numberOne,opration,numberTwo);}return 0;}实验4 自动售货机machineSell.c#include <stdio.h>int main() {unsigned short money;char drinkKind;printf("投入金额:2,3或5元(回车确认):");scanf("%d",&money);getchar(); //消耗回车if(money==2) {printf("选择净净矿泉水(A),甜甜矿泉水(B)和美美矿泉水(C)之一:\n");printf("输入A,B或C:");drinkKind=getchar();switch(drinkKind) {case 'A' : printf("得到净净矿泉水\n");break;case 'B' : printf("得到甜甜矿泉水\n");break;case 'C' : printf("得到美美矿泉水\n");break;default: printf("选择错误");}}else if(money==3) {printf("选择爽口可乐(A),清凉雪碧(B),和雪山果汁(C)之一:\n");printf("输入A,B或C:");drinkKind=getchar();switch(drinkKind) {case 'A' : printf("得到爽口可乐\n");break;case 'B' : printf("得到清凉雪碧\n");break;case 'C' : printf("得到雪山果汁\n");break;default: printf("选择错误");}}else if(money==5) {printf("选择草原奶茶(A),青青咖啡(B)和甜美酸奶(C)之一:\n");printf("输入A,B或C:");drinkKind=getchar();switch(drinkKind) {case 'A' : printf("得到草原奶茶\n");break;case 'B' : printf("得到青青咖啡\n");break;case 'C' : printf("得到甜美酸奶\n");break;default: printf("选择错误");}}else {printf("输入的钱币不符合要求");}return 0;}实验答案实验1【代码1】:if(b==0) {printf("不是方程\n");}else {printf("是一元一次方程,只有一个根:%f\n",-c/b);}【代码2】:if(disc>=0) {root1 = (-b+sqrt(disc))/2*a;root2 = (-b-sqrt(disc))/2*a;printf("是一元二次方程,有两个实根:%f,%f\n",root1,root2);}else {printf("是一元二次方程,没有实根\n");}实验2【代码1】:charge = POINT1+(amountMoney-POINT1)*0.9f;【代码2】:charge = POINT1+(POINT2-POINT1)*0.9f+(amountMoney-POINT2)*0.8f;【代码3】:charge = POINT1+(POINT2-POINT1)*0.9f+(POINT3-POINT2)*0.8f+(amountMoney-POINT3)*0.7f;实验3【代码1】:result = numberOne+numberTwo;【代码2】:result = numberOne-numberTwo;【代码3】:result = numberOne*numberTwo;上机实践6 循环语句实验1 数字中的各位之和与积DigitSum.c#include <stdio.h>int main(){unsigned short number;unsigned short remainder;unsigned short sum = 0,ji=1,temp=0;printf("输入一个正整数:");scanf("%d",&number);temp=number;while(number!=0) {remainder = number%10;【代码1】//将sum + remainder赋值给sum【代码2】//将ji * remainder赋值给ji【代码3】//将number/10赋值给number}printf("%u上各位数字之和是:%u\n",temp,sum);printf("%u上各位数字之积是:%u\n",temp,ji);return 0;}实验2 转动数字turnDigit.c#include <stdio.h>#include <stdlib.h>int main(){unsigned int number;unsigned int remainder,i=1,temp,save,count =1 ;unsigned short a5,a4,a3,a2,a1;//number上从高位到低位上的数字printf("输入一个正整数:");scanf("%d",&number);save = number;if(number>99999||number<9999){printf("输入的数字不符合要求\n");exit(0);}while(count<=5){do {remainder = number%10;switch(i) {case 1 :a1=remainder;break;case 2 :a2=remainder;break;case 3 :a3=remainder;break;case 4 :a4=remainder;break;case 5 :a5=remainder;break;}number = number/10;i++;} while(remainder!=0);temp = a1;a1 = a2 ;a2 = a3;a3 = a4 ;a4 = a5 ;a5 = temp;number=a5*10000+a4*1000+a3*100+a2*10+a1;printf("%u转动%u次是:%u\n",save,count,number);count++;}return 0;}实验3 计算正弦值sin.c#include <stdio.h>#include <math.h>int main(){unsigned short i;unsigned long n =1,jiecheng =1;short fuhao = 1;double sum =0,x = 1,item = x/jiecheng;double t = x*x,temp = x;printf("输入x的值(在0至π/2之间即可):");scanf("%lf",&x);item = x/jiecheng;t = x*x;temp = x;for(;item>=1E-5;) {sum = sum +fuhao*item;fuhao = -fuhao;【代码1】//将t*x赋值给x【代码2】//将n+2赋值给nfor(i=1,jiecheng=1;i<=n;i++) {jiecheng = jiecheng*i ;}【代码3】//将x/jiecheng赋值给item}printf("for语句计算结果是:\n%11.10lf\n",sum);printf("库函数计算结果是:\n%11.10lf\n",sin(temp));}实验4 猜字母游戏guessLetter.c#include <stdio.h>#include <time.h>#include <stdlib.h>int main(){char randomLetter; //随机的小写英文字母char guess; //用户的猜测char c = 'A';while(c<='Z') {printf("%3c",c);c++;}srand(time(NULL)); //用当前时间做随机种子randomLetter = rand()%26+'A';printf("\n给你一个a~z之间的字母,请猜出这个字母.\n");printf("输入你的猜测(回车确认):");guess = getchar();if(guess<='z'&&guess>='a')guess = guess-32; //变成大写字母getchar(); //消耗回车while(guess != randomLetter) {if(guess > randomLetter){printf("所猜字母大于给你的字母!\n");}else if(guess < randomLetter){printf("所猜字母小于给你的字母!\n");}printf("再输入你的猜测(回车确认):");guess = getchar();if(guess<='z'&&guess>='a')guess = guess-32; //变成大写字母getchar(); //消耗回车}printf("您猜对了,这个字母就是:%c\n",randomLetter);return 0;}实验5 记忆测试test.c#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){long now;char c1,c2,c3,c4,c5,c6;char s1,s2,s3,s4,s5,s6;unsigned short score = 0,i;char ok ='y',temp;srand(time(NULL)); //用当前时间做随机种子while(ok=='y'||ok=='Y') {ok = 'n';c1 = rand()%26+'a';c2 = rand()%26+'a';c3 = rand()%26+'a';c4 = rand()%26+'a';c5 = rand()%26+'a';c6 = rand()%26+'a';printf("%c%c%c%c%c%c",c1,c2,c3,c4,c5,c6);now = clock();for( ;clock()-now<=5000;) {}printf("\r"); // 将输出光标移动到本行开头(不回行)for(i=1;i<=6;i++) //输出6个*,以便擦除曾显示的字符串printf("*");printf("输入刚才显示的字符序列(回车确认):\n");scanf("%c%c%c%c%c%c",&s1,&s2,&s3,&s4,&s5,&s6);temp =getchar(); //消耗调用户确认输入时所输入的回车if(temp!='\n') {printf("输入非法,程序退出!");exit(0);}if(c1==s1&&c2==s2&&c3==s3&&c4==s4&&c5==s5&&c6==s6) { score++;printf("恭喜,记忆力不错!\n");}else {printf("遗憾,记得不准确\n");}printf("目前得分%u:\n",score);printf("继续测试吗?输入y或n(回车确认):");ok = getchar();getchar();}}实验答案实验1【代码1】:sum = sum + remainder;【代码2】:ji = ji * remainder;【代码3】:number = number/10;实验3【代码1】:x = t*x;【代码2】:n = n+2;【代码3】:item = x/jiecheng;上机实践7 函数的结构与调用circle.c#include <stdio.h>double getCircleArea(double); //函数原型double getCircleArea(double radius) { //函数定义double area = radius*radius*3.1415926;return area;}computer.c#include <stdio.h>double getCircleArea(double); //函数原型(在该源文件中就可以调用getCircleArea函数了)int main() {double radius,height;double volume;printf("输入柱体的底圆半径和高(逗号分隔):\n");scanf("%lf,%lf",&radius,&height);【代码1】// 将getCircleArea(radius)*height赋值给volume;printf("柱体的体积:%lf\n",volume);printf("输入锥体的底圆半径和高(逗号分隔):\n");scanf("%lf,%lf",&radius,&height);【代码2】// 将getCircleArea(radius)*height/3赋值给volume;printf("锥体的体积:%lf\n",volume);return 0;}实验2 商厦与亲民小店largeShop.c#include <stdio.h>double expensiveComputer(); //函数原型double expensiveComputer() { //函数定义int m = 1;double price,sum =0;printf("这里是商厦,请依次输入商品的价格(逗号分隔).\n");printf("输入任意字母结束输入过程:\n");m=scanf("%lf,",&price);while(m!=0) {sum = sum+ price;m=scanf("%lf,",&price);}getchar();printf("实际价格总额:%lf\n",sum);return sum;}smallShop.c#include <stdio.h>double cheapnessComputer(); //函数原型double cheapnessComputer() { //函数定义int m = 1;double price,sum =0;printf("这里是亲民小店,请依次输入商品的价格(逗号分隔).\n");printf("输入任意字母结束输入过程:\n");m=scanf("%lf,",&price);while(m!=0) {sum = sum+ price;m=scanf("%lf,",&price);}getchar();printf("实际价格总额:%lf\n",sum);return sum; //返回值的类型级别高于函数类型级别,编译会有警告}buy.c#include <stdio.h>double expensiveComputer(); //函数原型int cheapnessComputer(); //函数原型int main() {double price;printf("在商厦购物:\n");【代码1】//调用expensiveComputer函数,并将返回值赋值给priceprintf("需要支付:%lf元\n",price);printf("在亲民小店购物:\n");【代码2】//调用cheapnessComputer函数,并将返回值赋值给priceprintf("需要支付:%lf元\n",price);return 0;}实验3 钻石展览diamond.c#include<stdio.h>void printDiamond(int,int);void printDiamond(int position,int size) { int i,j,number;number= 2*size-1;for(i=1;i<=size;i++) {for(j=1;j<=size-i+position;j++)printf("%2s"," ");for(j=1;j<=i;j++)printf("%4s","*");printf("\n");}for(i=size+1;i<=number;i++) {for(j=1;j<=i-size+position;j++)printf("%2s"," ");for(j=number-i;j>=0;j--)printf("%4s","*");printf("\n");}}look.c#include<stdio.h>void printDiamond(int,int);int main() {printDiamond(2,2);printDiamond(1,3);printDiamond(0,4);getchar();return 0;}实验4 日历leap.cint isLeapYear(int);int isLeapYear(int year) {int leap =0;leap = (year%4==0 && year%100!=0)||(year%400 == 0);return leap;}weekDay.c#define StartYear 1600 // //1600年的1月1日是星期六int isLeapYear(int); //本源文件需要调用的函数的原型unsigned int getWeekDay(unsigned int,unsigned int,unsigned int); //本源文件定义的函数的原型unsigned int getWeekDay(unsigned int year,unsigned int month,unsigned int dayNumber){unsigned int i,daySum =0;unsigned int weekDay;for(i=StartYear;i<=year-1;i++) {if(isLeapYear(i))daySum = daySum+366;elsedaySum = daySum+365;}for(i=1;i<=month-1;i++) {if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)daySum = daySum+31;else if(i==4||i==6||i==9||i==11)daySum = daySum+30;else if(i==2) {if(isLeapYear(year))daySum = daySum+29;elsedaySum = daySum+28;}}daySum=daySum+dayNumber-1; //daySum是year/month/dayNumber与1600/01/01相差的天数switch(daySum%7) { //1600年的1月1日是星期六case 0 :weekDay = 6; //星期六break;case 1 :weekDay = 7; //星期日break;case 2 :weekDay = 1; //星期一break;case 3 :weekDay = 2; //星期二break;case 4 :weekDay = 3; //星期三break;case 5 :weekDay = 4; //星期四break;case 6 :weekDay = 5; //星期五break;}return weekDay;}calendar.c#include<stdio.h>unsigned int getWeekDay(unsigned int,unsigned int,unsigned int );int isLeapYear(int);int main() {unsigned int year,month;unsigned int weekDay;unsigned int i,dayNumber,maxDay;printf("输入日历的年(不小于1600)和月(逗号分隔):\n");scanf("%d,%d",&year,&month);weekDay = getWeekDay(year,month,1);if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) maxDay=31;if(month==4||month==6||month==9||month==11)maxDay=30;if(month==2) {if(isLeapYear(year))maxDay=29;elsemaxDay=28;}printf("%5s%5s%5s%5s%5s%5s%5s\n","日","一", "二", "三", "四", "五", "六");for(i=0;i<weekDay;i++)printf("%5s","");for(i=weekDay,dayNumber=1;i<weekDay+maxDay;i++) {if(i%7==0)printf("\n");printf("%5d",dayNumber);dayNumber++;}for(i=weekDay+maxDay;i<42;i++)printf("%5s","");return 0;}实验5 有理数rational.c#include<stdio.h>double add(int,int,int,int);int gongYue(int,int); //函数原型int main() {double result;result=add(1,3,1,6);printf("\n结果用小数表示是:%lf\n",result);result=add(2,3,-1,7);printf("\n结果用小数表示是:%lf\n",result);}double add(int b,int a,int n,int m) {int x;int y;int p,q;x = b*m+a*n; //计算出分子y = a*m; //计算出分母if(x<0&&y<0) {x = -x;y = -y;}p=x/gongYue(x,y);q=y/gongYue(x,y);printf("(%d/%d)+(%d/%d)=%d/%d",b,a,n,m,p,q);return (double)p/(double)q;}int gongYue(int m,int n) {int r;int t;if(m<0) m=-m;if(n<0) n=-n;if(m<n){t=m;m=n;n=t;}r = m%n;while(r!=0){ //使用辗转相除法计算最大公约数m = n;n = r;r = m%n;}return n;}实验6 Hannoi-塔tower.c#include<stdio.h>unsigned short move(int ,char,char,char);unsigned short move(int n,char one,char two,char three) { static unsigned short count=0;count++;if(n==1) {printf("from %c to %c\n",one ,three);}else if(n>=2) {count = move(n-1,one,three,two);printf("from %c to %c\n",one ,three);count = move(n-1,two,one ,three);}return count;}int main() {unsigned short m1,m2=0;printf("\nA-座有2个盘子的情况:\n");m1 = move(2,'A','B','C');printf("小和尚共花费了%u天.\n",m1);printf("\nA-座有3个盘子的情况:\n");m2 = move(3,'A','B','C');printf("小和尚共花费了%u天.\n",m2-m1);return 0;}实验7 打开画笔openSoftware.c#include<stdio.h>#include<stdlib.h>int main() {printf("列出当前目录下的子目录和文件:\n");system("dir");printf("打开画笔:\n");system("mspaint.exe");printf("打开记事本:\n");system("notepad.exe");printf("其他软件都结束了,才能输出我:\n");getchar();return 0;}实验答案实验1【代码1】:volume = getCircleArea (radius)*height;【代码2】:volume = getCircleArea (radius)*height/3;实验2【代码1】:price = expensiveComputer();【代码2】:price = cheapnessComputer();上机实践8 数组evaluate.c.#include<stdio.h>#include<math.h>int main() {double max,min; //存放最高、最低成绩double sum =0,aver,squareAver; //存放成绩的和、平均成绩、方差int count=0,i,N;【代码1】//声明类型是double、名字是score、长度为20的一维数组N = sizeof(score)/sizeof(double);printf("输入%d人的成绩(空隔或回车分隔):\n",N);for(i=0,sum=0;i<N;i++) {scanf("%lf",&score[i]);}for(i=0;i<N;i++) {【代码2】//将sum+score[i]赋值给sum}【代码3】//将sum/N赋值给averfor(i=0,sum=0;i<N;i++) {sum = sum+(score[i]-aver)*(score[i]-aver);}squareAver = sqrt(sum/N);max=min=score[0];for(i=0,sum=0,count=0;i<N;i++) {if(score[i]>max)max=score[i];if(score[i]<min)min=score[i];if(score[i]<60)count++;}printf("平均成绩:%lf\n",aver);printf("方差:%lf\n",squareAver);printf("其中一个最高成绩:%lf\n",max);printf("其中一个最低成绩:%lf\n",min);printf("不及格人数:%d\n",count);return 0;}实验2 二进制转化为十六进制jinzhi.c#include<stdio.h>#include<math.h>#define FOUR 4int main() {int i=0,m=0,j=0;long sum=0;unsigned short a[15]={1,0,1,1,1,0,1,1,1,1,1,0,1,1,1};unsigned short b[15%FOUR?15/FOUR+1:15/FOUR];int M = sizeof(b)/sizeof(unsigned short);printf("二进制表示:");for(i=0;i<15;i++) {printf("%u",a[i]);}printf("\n");for(i=15-1,sum=0;i>=0;i--) {sum = sum+a[i]*(int)pow(2,15-(i+1));}printf("十进制表示:%ld\n",sum);for(i=15-1,j=M-1;i>=0;i=i-FOUR) {for(m=0,sum=0;m<=FOUR-1;m++) {if(i-m>=0)sum=sum+a[i-m]*(int)pow(2,m);}b[j] =(unsigned short)sum;j--;}printf("十六进制表示:");for(i=0;i<M;i++) {switch(b[i]){case 10: printf("A");break;case 11: printf("B");break;case 12: printf("C");break;case 13: printf("D");break;case 14: printf("E");break;case 15: printf("F");break;default: printf("%d",b[i]);}}return 0;}实验3 修改整数中的数字changeNumber.c#include<stdio.h>#include <math.h>#include <limits.h># define OutNumber 4# define FindNumber 0int main() {unsigned long number,change=0;short a[10]={-1};int N = sizeof(a)/sizeof(unsigned short);int i=N-1,count=0 ;for(i=0;i<N;i++) {a[i]=-1;}printf("输入1至%lu之间的数:",ULONG_MAX);scanf("%ld",&number);i = N-1;while(number!=0){a[i]=(short)(number%10);number = number/10;i--;}for(i=0;i<N;i++) {if(a[i]==OutNumber)a[i]=8;}for(i=0;i<N;i++) {if(a[i]==FindNumber)。
C语言上机实验
实验六 指针程序设计
一、目的与要求
1、通过实验进一步掌握指针的概念,会定义和使用指针变量; 2、能正确使用数组的指针和指向数组的指针变量; 3、能正确使用字符串的指针和指向字符串的指针变量; 4、能正确使用指向函数的指针变量; 5、了解指向指针的指针的概念及其使用方法。
二、实验内容
1、编写子函数,对传送过来的三个数按由小到大的顺序排列,并通过形参传回调用函数。 2、编写函数int find(int *p,int n,int x),在指针p所指的数组中查找整型数x,如果x在数组 中,则该函数返回1,否则返回0。n为数组的大小。 3、有n个整数,使前面各数顺序向后移m个位置,最后 m个数变成最前m个数(如下图所示)。写一函数实现 以上功能,在主函数中输入n个整数和输出调整后的 n个整数。 4、在主函数中输入10个不等长的字符串。用另一个函数对它们按升序排序,然后在主函 数中输出这10个已排序的字符串。 5、用指针型指针对五个字符串进行排序,并将排序后的结果按顺序输出。 6、编写一程序,统计从键盘输入的命令行中第二个参数所包含的英文字符个数。
三、实验结果分析
对实验结果进行检验,如结果出现错误,分析产生错误的原因并修改程序、改正错误。
实验四、数组程序设计
一、实验目的及要求
1.掌握一维、二维数组的定义、赋值和输入输出的方法; 2.掌握字符数组的使用; 3.掌握与数组有关的算法(例如排序算法)。
二、实验内容
1、给整型二维数组 b[3][4]输入12个数据,计算并输出数组中所有正数之和、所有负数之和。 2、青年歌手参加歌曲大奖赛,有10个评委进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分)。 分析:这道题的核心是排序。将评委所打的10个分数利用数组按增序(或降序)排列,计算数组中除第一个和最后一个 分数以外的数的平均分。 3、设二维数组 b[5][4]中有鞍点,即b[i][j]元素值在第i行中最小,且在第j列中最大,试编写一程序找出所有的鞍点,并输 出其下标值。也可能没有。 4、从键盘输入一数,然后在一个整型一维数组a[20]中,用折半查找法找出该数是数组中第几个元素的值。如果该数不在 数组中,则打印”No found”。 5、编程打印如下图形: * * * * * * * * 6、有一电文,已按下列规律译成译码: A→Z a→z B→Y b→y C→X c→x 即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变。编写一个程序将密码译成原文,并输 出密码和原文。
C语言上机实验操作
Visual C++ 6.0集成环境
4. 执行
方法一:单击“编译”菜单 中“执行”命令。
方法二:单击主窗口编译工 具 栏 上 的 “ Build Execute”按钮来执行编 译连接后的程序。
运行成功,屏幕上输出执行 结果,并提示信息: “ Press any key to continue” 。 此 时 按 任 意键系统都将返回VC6主 窗口。
4.运行
运行可执行文件的方法很多,可在C系统下执行 “运行”命令。也可以在操作系统下直接执行可执行文 件。
可执行的程序文件运行后,将在屏幕上显示程序执 行的结果。
运行C程序的步骤和方法
二、上机运行C程序的方法
目前使用的大多数C编译系统都是集成环境(IDE)的。 可以用不同的编译系统对C程序进行操作 常用的有Turbo C 2.0、Turbo C++ 3.0、Visual C++等 Turbo C2.0:是一个集成环境,它具有方便、直观和 易用的界面,虽然它也是DOS环境下的集成环境,但 是可以把启动Turbo C2.0 集成环境的DOS执行文件 tc.exe生成快捷方式,也可以用鼠标操作。 Visual C++:也可以用Visual C++对C程序进行编译。
目名,如“gc1”和“位置” 框输入
或选择新项目所在位置,单击
“确定”按钮。 弹出“Win32
Console Application Step
单击“工程”
选择新项目位置 单击“单确击定“”完成”
单击“确定”
单击“Win32 Console Application”
C语言程序设计实验及代码
C语言程序设计实验及代码一、实验介绍本实验旨在通过C语言编程实践,培养学生的程序设计能力。
通过完成以下实验内容,学生将会加深对C语言的理解,掌握基本的编程技巧和方法,并能够编写简单的C语言程序。
二、实验内容1.实验一:实现一个简单的计算器程序编写一个简单的计算器程序,能够进行简单的加减乘除运算。
要求用户输入两个数字和操作符(+、-、*、/),然后输出计算结果。
实验提示:可以使用switch语句来实现根据操作符执行相应的运算。
2.实验二:实现一个学生成绩管理系统编写一个学生成绩管理系统程序,能够添加学生信息、显示学生信息、计算学生平均成绩等功能。
要求使用结构体来保存学生信息,并使用数组来存储多个学生的信息。
实验提示:可以使用循环来实现多次添加学生信息的功能。
可以使用指针来操作结构体数组。
3.实验三:实现一个简单的图书管理系统编写一个图书管理系统程序,能够添加图书信息、显示图书信息、查询图书信息等功能。
要求使用结构体来保存图书信息,并使用链表来存储多本图书的信息。
实验提示:可以使用链表的插入和删除操作来实现添加和删除图书的功能。
通过遍历链表来显示和查询图书的信息。
三、实验代码示例1.实验一代码示例:```c#include<stdio.h>int mainfloat num1, num2; //用于存储用户输入的两个数字char op; //用于存储用户输入的操作符float result; //用于存储计算结果printf("请输入两个数字和一个操作符(+、-、*、/):");scanf("%f %f %c", &num1, &num2, &op);switch(op)case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;case '*':result = num1 * num2;break;case '/':if(num2 != 0)result = num1 / num2;elseprintf("除数不能为0!\n");return 0;}break;default:printf("操作符输入错误!\n");return 0;}printf("计算结果:%f\n", result);return 0;```2.实验二代码示例:```c#include<stdio.h>#define MAX_STUDENT 100 //定义最大学生数量struct Studentint id; //学号char name[20]; //姓名float score; //成绩};void addStudent(struct Student *students, int *count) if(*count >= MAX_STUDENT)printf("已达到学生数量上限!\n");return;}printf("请输入学生的学号、姓名和成绩:");scanf("%d %s %f", &(students[*count].id),students[*count].name, &(students[*count].score));(*count)++;void showStudent(struct Student *students, int count) int i;if(count == 0)printf("暂无学生信息!\n");return;}printf("学号\t姓名\t成绩\n");for(i = 0; i < count; i++)printf("%d\t%s\t%f\n", students[i].id, students[i].name, students[i].score);}float calculateAverage(struct Student *students, int count) int i;float sum = 0;if(count == 0)return 0;for(i = 0; i < count; i++)sum += students[i].score;}return sum / count;int mainstruct Student students[MAX_STUDENT]; //保存学生信息的数组int count = 0; //学生数量int choice;while(1)printf("\n学生成绩管理系统\n");printf("1.添加学生信息\n");printf("2.显示学生信息\n");printf("3.计算平均成绩\n");printf("0.退出\n");printf("请输入对应操作的序号:");scanf("%d", &choice);switch(choice)case 1:addStudent(students, &count);break;case 2:showStudent(students, count);break;case 3:printf("平均成绩:%f\n", calculateAverage(students, count));break;case 0:return 0;default:printf("输入无效的序号!\n");break;}}return 0;```3.实验三代码示例:```c#include<stdio.h>#include<stdlib.h>#include<string.h>struct Bookchar name[50]; //书名float price; //价格struct Book *next; //指向下一本书的指针};struct Book *head = NULL; //链表的头指针void addBookstruct Book *newBook;char name[50], author[20];float price;newBook = (struct Book *)malloc(sizeof(struct Book)); scanf("%s %s %f", name, author, &price);strcpy(newBook->name, name);strcpy(newBook->author, author);newBook->price = price;newBook->next = head;head = newBook;void showBooksstruct Book *p;if(head == NULL)printf("暂无图书信息!\n");return;}p = head;while(p != NULL)printf("%s\t%s\t%f\n", p->name, p->author, p->price); p = p->next;}void searchByNamestruct Book *p;char name[50];if(head == NULL)printf("暂无图书信息!\n");return;}printf("请输入要查询的图书的书名:");scanf("%s", name);p = head;while(p != NULL)if(strcmp(p->name, name) == 0)printf("%s\t%s\t%f\n", p->name, p->author, p->price); return;}p = p->next;}printf("未找到该图书!\n");int mainint choice;while(1)printf("\n图书管理系统\n");printf("1.添加图书信息\n");printf("2.显示图书信息\n");printf("3.查询图书信息\n");printf("0.退出\n");printf("请输入对应操作的序号:");scanf("%d", &choice);switch(choice)case 1:addBook(;break;case 2:showBooks(;break;case 3:searchByName(;break;case 0:return 0;default:printf("输入无效的序号!\n");break;}}return 0;```以上是三个C语言程序设计实验的相关介绍和代码示例。
大学大一c语言程序设计实验室上机题全部代码答案(实验报告)
C语言实验报告实验1-1:hello world程序:源代码:#include<stdio.h>main(){printf("hello world!\n");system("pause");}实验1-2:完成3个数据的输入、求和并输出计算结果的程序:源代码:#include<stdio.h>main(){int i,j,k,sum;scanf("%d%d%d",&i,&j,&k);sum=i+j+k;printf("sum=%d",sum);system("pause");实验1-3:在屏幕上输出如下图形:ABBBCCCCC源代码:#include<stdio.h>main(){printf(" A\n");printf(" BBB\n");printf(" CCCCC\n");system("pause");}实验2-1:计算由键盘输入的任何两个双精度数据的平均值源代码:#include<stdio.h>main(){double a,b;scanf("%lf%lf",&a,&b);printf("%.1lf\n",(a+b)/2);system("pause");}实验2-2:写一个输入7个数据的程序,把输入的数据代入a + b * (c – d ) / e * f – g 表达式进行运算源代码:#include<stdio.h>main(){float a,b,c,d,e,f,g,x;scanf("%f%f%f%f%f%f%f",&a,&b,&c,&d,&e,&f,&g);x=a + b * (c - d ) / e * f - g;printf("x=%f",x);system("pause");}实验2-3:编写一个C语言程序,测试下列各表达式:i, ji + 1 , j + 1i++ , j++++i , ++ji+++++j源代码:#include<stdio.h>main(){int i=1,j=1;printf("%d %d\n",i+1,j+1);printf("%d %d\n",i++,j++);printf("%d %d\n",++i,++j);printf("%d\n",(i++)+(++j));system("pause");}实验2-4:输入存款金额money,存期year和年利率rate,根据下列公式计算存款到期时的利息interest (税前),输出时保留2位小数。
c上机实验报告
c上机实验报告C 上机实验报告一、实验目的本次 C 语言上机实验旨在通过实际操作,加深对 C 语言基本语法、数据类型、控制结构、函数等知识的理解和掌握,提高编程能力和解决实际问题的能力。
二、实验环境操作系统:Windows 10编程软件:Visual Studio 2019三、实验内容本次实验共包括以下几个部分:(一)基础语法练习1、变量与数据类型定义不同类型的变量,如整型(int)、浮点型(float、double)、字符型(char)等,并进行赋值和输出操作。
通过这个练习,熟悉了不同数据类型的存储方式和取值范围。
2、运算符与表达式学习和使用各种运算符,包括算术运算符(+、、、/、%)、关系运算符(>、<、==、!=、>=、<=)、逻辑运算符(&&、||、!)等。
编写表达式计算数值,并根据结果进行判断和输出。
3、控制结构(1)顺序结构编写简单的顺序执行程序,按照代码的书写顺序依次执行语句。
(2)选择结构使用ifelse 语句和switch 语句实现根据不同条件执行不同的代码块。
通过给定的条件判断,选择相应的执行路径。
(3)循环结构学习使用 for 循环、while 循环和 dowhile 循环,实现重复执行特定的代码段。
例如,计算 1 到 100 的累加和。
(二)数组与字符串1、数组定义一维数组和二维数组,对数组元素进行赋值、访问和操作。
实现数组的遍历、排序等常见算法。
2、字符串学习字符串的存储和操作,使用字符数组和字符串函数(如strlen、strcpy、strcmp 等)处理字符串。
(三)函数1、函数定义与调用定义自己的函数,实现特定的功能,并在主函数中调用这些函数。
通过函数的使用,提高代码的模块化和可重用性。
2、函数参数传递理解值传递和地址传递的区别,掌握如何通过函数参数传递数据,并在函数内部修改外部变量的值。
(四)指针1、指针的概念与基本操作学习指针的定义和使用,通过指针访问变量和数组元素。
《C语言程序设计基础》上机实验报告
《C语言程序设计基础》上机实验报告实验一:C语言程序设计基础
实验目的:熟悉C语言编程环境,掌握C语言程序的基本编写方法。
实验内容:编写一个简单的C语言程序,实现输入两个整数,然后输出它们的和。
实验步骤:
1. 打开C语言集成开发环境(IDE),例如Dev C++、Code::Blocks 等。
2. 创建一个新的C语言项目,命名为“sum”。
3. 在项目中新建一个源文件,命名为“sum.c”。
4.编写C语言程序代码如下:
```c
#include <stdio.h>
int mai
int num1, num2, sum;
printf("请输入第一个整数:");
scanf("%d", &num1);
printf("请输入第二个整数:");
scanf("%d", &num2);
sum = num1 + num2;
printf("两个整数的和为:%d", sum);
return 0;
```
5.保存并编译程序。
6.运行程序,在控制台输入两个整数,程序会输出它们的和。
实验结果:输入第一个整数为5,第二个整数为7,程序输出结果为“两个整数的和为:12”。
实验总结:通过本次实验,我熟悉了C语言程序的基本编写方法,掌握了输入输出操作和基本运算操作的语法规则。
在以后的学习中,我将更加努力地学习C语言,提高编程能力。
C语言上机实验参考程序
if (num>9) place=2; else place=1; printf("位数:%d\n",place); printf("每位数字为:"); ten_thousand=(int)(num/10000); thousand=(int)(num-ten_thousand*10000)/1000; hundred=(int)(num-ten_thousand*10000-thousand*1000)/100; ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10; indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10); switch(place) {case 5:printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv); printf("\n 反序数字为:"); printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand); break; case 4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv); printf("\n 反序数字为:"); printf("%d%d%d%d\n",indiv,ten,hundred,thousand); break; case 3:printf("%d,%d,%d",hundred,ten,indiv); printf("\n 反序数字为:"); printf("%d%d%d\n",indiv,ten,hundred); break; case 2:printf("%d,%d",ten,indiv); printf("\n 反序数字为:"); printf("%d%d\n",indiv,ten); break; case 1:printf("%d",indiv); printf("\n 反序数字为:"); printf("%d\n",indiv); break; } }
上机实验二——简单的C语言程序
上机实验二简单的C语言程序设计一.目的要求1.掌握C语言中输入、输出函数的基本使用方法。
2.掌握如何定义整型、单精度、双精度变量,如何输入或输出这些变量的值。
3.掌握C算术运算符的基本概念、基本属性、运算规则。
4.掌握关系运算的求值规则。
5.掌握简单的if-else语句6.记录运行结果,回答问题,完成上机实验报告。
二.实验内容【实验题1】在VC6.0中输入下列源程序,进行修改、编译、连接和运行。
void main ( ){ int c, f ; /* line 2 */f = 100;c = 5*( f-32 )/9; /* line 4 */printf("f= %d, c= %d\n", f, c); /* line 5 */}问:该C语言程序是否完整?缺少了哪个部分?修正后, 程序运行结果是:如果将标有/*line 4*/的代码行改为:c=5/9*(f-32);程序运行结果是什么?为什么会产生这样的结果?如果把标有/*line 2*/的代码行改为:float c,f;问,相应地, 应如何修改程序中标有/* line 5 */的代码行,才能正确显示结果?【实验题2】输入下列源程序,进行修改、编译、连接和运行。
分析++运算符。
#include <stdio.h># include <math.h> /* line 2 */void main( ){ float x, y;printf("input x: \n");scanf("%f", x); /* line 6*/if(x <= 1) y = exp(x); /* line 7 */else y = x * x -1; /* line 8 */printf(" f(%f) = %.2f \n", x, y); /* line 9*/}问:/*line 5*/的代码行有一个错误,正确的代码应改为:_____________。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上机实践1 初识C语言实验1 一个简单的C程序simple.c#include <stdio.h>int main() {【代码1】//输出"很高兴学习C语言\n"【代码2】//输出"We are students\n"getchar();return 0;}实验2 有多个函数的C程序twoFuction.c#include <stdio.h>void speakHello(); //函数的原型void showStar(); //函数的原型int main() {showStar();speakHello();showStar();speakHello();showStar();}void speakHello() {【代码1】//输出""how are you\n"}void showStar() {【代码2】//输出"******\n"}实验答案实验1【代码1】:printf("很高兴学习C语言\n");【代码2】:printf ("We are students\n");实验2【代码1】:printf("how are you\n");【代码2】:printf("******\n");上机实践2 C程序的基本结构实验1 有多个源文件的C程序main.c#include <stdio.h>int add(int,int); //add的函数原型int sub(int,int);int main(){int result = 0;int x=12,y=20;printf("调用add函数计算和\n");result = add(x,y);printf("result =%d \n",result);printf("调用sub函数计算差\n");result = sub(x,y);printf("result =%d \n",result);}computer.cint add(int,int); //函数原型int sub(int,int);int add(int a,int b) {int sum =0;sum = a+b;return sum;}int sub(int a,int b) {int difference =0;difference = a-b;return difference;}实验2 向C程序添加源文件like.c#include <stdio.h>void swim();void seeTV();void swim() {printf("我喜欢游泳\n");}void seeTV() {printf("我喜欢看电视\n");}上机实践3 标识符与基本数据类型change.c#include<stdio.h>int main(){【代码1】//用int声明名字是cupOne,cupTwo的变量【代码2】//用int声明名字是temp的变量cupOne = 12;cupTwo = 18;printf("cupOne中的液体体积是:%d\n",cupOne);printf("cupTwo中的液体体积是:%d\n",cupTwo);【代码3】//将cupOne赋值给temp【代码4】//将cupTwo赋值给cupOne【代码5】//将temp赋值给变量cupTwoprintf("cupOne中的液体体积是:%d\n",cupOne);printf("cupTwo中的液体体积是:%d\n",cupTwo);return 0;}实验2 戒指的价值ringRice.c#include<stdio.h>【代码1】使用define预处理指令定义符号常量UnitPrice,其值是789int main(){【代码2】//用float 声明名字是goldMeasure1的变量【代码3】//用double 声明名字是goldMeasure2的变量;double fingerRingPrice;goldMeasure1 = 8.987654321f;fingerRingPrice = UnitPrice*goldMeasure1;printf("计量工具1显示的戒指的质量是(小数点保留10位):%12.10f\n",goldMeasure1);printf("根据计量工具1给出戒指的价格是:%f\n",fingerRingPrice);goldMeasure2 = 8.987654321;fingerRingPrice = UnitPrice*goldMeasure2;printf("计量工具2显示的戒指的质量是(小数点保留10位):%12.10f\n",goldMeasure2);printf("根据计量工具2给出戒指的价格是:%f\n",fingerRingPrice);return 0;}实验3 录入、输出成绩单scoreList.c#include<stdio.h>int main(){【代码1】//声明存放成绩的float型变量: math,english,chinesefloat sum = 0;【代码2】//调用scanf函数从键盘为: math,english,chinese输入值,输入的值用空格分隔sum = math+english+chinese;printf("%f\t%f\t%f\t总成绩:%f\n",math,english,chinese,sum);【代码3】//调用scanf函数从键盘为: math,english,chinese输入值,输入的值用逗号分隔sum = math+english+chinese;printf("%f\t%f\t%f\t总成绩:%f\n",math,english,chinese,sum);【代码4】//调用scanf函数从键盘为: math,english,chinese输入值,输入的值用减号分隔sum = math+english+chinese;printf("%f\t%f\t%f\t总成绩:%f\n",math,english,chinese,sum);return 0;}实验4 因地制宜、量力而行scoreList.c#include<stdio.h>#include<limits.h>#include<float.h>int main(){char ch1=97,ch2=ch1+256;short m1,m2;printf("ch1是%c,ch2是%c\n",ch1,ch2);printf("char型取值范围%d至%d\n",CHAR_MIN,CHAR_MAX);printf("unsigned char型取值范围%d至%d\n",0,UCHAR_MAX);printf("short型取值范围%d值%d\n",SHRT_MIN,SHRT_MAX);printf("unsigned short型取值范围%u至%u\n",0,USHRT_MAX);m1 = 60;m2 = m1+65536;printf("m1=%d,m2=%d\n",m1,m2);printf("int型取值范围%d值%d\n",INT_MIN,INT_MAX);printf("unsigned int型取值范围%u至%u\n",0,UINT_MAX);printf("long型取值范围%ld值%ld\n",LONG_MIN,LONG_MAX);printf("unsigned longt型取值范围%lu至%lu\n",0,ULONG_MAX);printf("float型取值范围%e至%e\n",FLT_MIN,FLT_MAX);printf("double型取值范围%e至%e\n",DBL_MIN,DBL_MAX);return 0;}实验答案实验1【代码1】:int cupOne,cupTwo;【代码2】:int temp;【代码3】:temp = cupOne;【代码4】:cupOne = cupTwo;【代码5】:cupTwo = temp;实验2【代码1】:#define UnitPrice 789;【代码2】:float goldMeasure1;【代码3】:double goldMeasure2;实验3【代码1】:float math,english,chinese;【代码2】:scanf("%f %f %f",&math,&english,&chinese);【代码3】:scanf("%f,%f,%f",&math,&english,&chinese);【代码4】:scanf("%f-%f-%f",&math,&english,&chinese);上机实践4 运算符、表达式与语句ticket.c#include <stdio.h>int main() {int ticketNumber;char a1,a2,a3,a4,a5;printf("输入彩票号码:\n");scanf("%d",&ticketNumber);【代码1】//将ticketNumber%10的值赋值给变量a1【代码2】//将ticketNumber/10的值赋值给变量ticketNumbera2 = ticketNumber%10;ticketNumber = ticketNumber/10;a3 = ticketNumber%10;ticketNumber = ticketNumber/10;a4 = ticketNumber%10;ticketNumber = ticketNumber/10;a5 = ticketNumber%10;printf("个,十,百,千,万位上的数字依次是:%d,%d,%d,%d,%d\n",a1,a2,a3,a4,a5);【代码3】//输出a1+a2+a3+a4+a5【代码4】//输出a1*a2*a3*a4*a5ticketNumber = a5*10000+a4*1000+a3*100+a2*10+a1;printf("%d\n",ticketNumber);ticketNumber = a1*10000+a2*1000+a3*100+a4*10+a5;printf("%d\n",ticketNumber);return 0;}实验2 武林高手之对决InputArray.c#include <stdio.h>int main() {【代码1】//声明两个无符号的short型变量:personOne,personTwounsigned short energySum;personOne = 6;personTwo = 3;printf("当前高手1和高手2的能量:%u,%u\n",personOne,personTwo);【代码2】//将表达式personOne++*personTwo--赋值给energySum;【代码3】//输出energySum的值;printf("当前高手1和高手2的能量:%u,%u\n",personOne,personTwo);energySum = personOne++*personTwo--;printf("第二次互相击掌产生的能量:%u\n",energySum);printf("当前高手1和高手2的能量:%u,%u\n",personOne,personTwo);energySum = personOne++*personTwo--;printf("第三次互相击掌产生的能量:%u\n",energySum);printf("当前高手1和高手2的能量:%u,%u\n",personOne,personTwo);return 0;}实验3 电路图circuit.c#include <stdio.h>int main() {int above1,above2,center,bottom1,bottom2;int pass = 0;printf("输入开关above1的状态(非0或0)");scanf("%d",&above1);printf("输入开关above2的状态(非0或0)");scanf("%d",&above2);printf("输入开关center的状态(非0或0)");scanf("%d",¢er);printf("输入开关bottom1的状态(非0或0)");scanf("%d",&bottom1);printf("输入开关bottom2的状态(非0或0)");scanf("%d",&bottom2);【代码1】//above1和above2为开状态的逻辑表达式的值赋值给passprintf("pass = %d\n",pass);pass = (above1!=0||bottom1!=0)&&(center!=0)&&(above2!=0||bottom2!=0);【代码2】//above1或bootom1为开状态,center为开状态、above2或bootom2为开状态的逻辑表达式的值赋值给passprintf("pass = %d\n",pass);【代码3】//bottom1和bottom2为开状态的逻辑表达式的值赋值给passprintf("pass = %d\n",pass);return 0;}实验4 托运行李baggageAndMony.c#include <stdio.h>#define TrainCharge 12#define CarCharge 22#define PlaneCharge 0.062int main() {double weight,charge;printf("输入行李重量:");scanf("%lf",&weight);printf("行李重量:%f公斤(kg)\n",weight);printf("需要计费的重量:%d(kg)\n",(int)weight);【代码1】//将表达式(int)weight*TrainCharge的值赋值给chargeprintf("用火车托运(%d元/kg),费用:%f元\n",TrainCharge,charge);printf("需要计费的重量:%d(kg)\n",(int)(weight+0.5));【代码2】】//将表达式(int)(weight+0.5)*CarCharge的值赋值给chargeprintf("用汽车托运(%d元/kg),费用:%f元\n",CarCharge,charge);printf("行李重量:%f克(g)\n",weight*1000);printf("需要计费的重量:%d(g)\n",(int)(weight*1000+0.5));【代码3】//将表达式(int)(weight*1000+0.5)*PlaneCharge的值赋值给chargeprintf("用飞机托运(%f元/g),费用:%f元\n", PlaneCharge,charge);return 0;}实验答案实验1【代码1】:a1 = ticketNumber%10;【代码2】:ticketNumber = ticketNumber/10;【代码3】:printf("a1+a2+a3+a4+a5=%d\n",a1+a2+a3+a4+a5);【代码4】:printf("a1*a2*a3*a4*a5=%d\n",a1*a2*a3*a4*a5);实验2【代码1】:unsigned short personOne,personTwo;【代码2】:energySum=personOne++*personTwo--;【代码3】:printf("第一次互相击掌产生的能量:%u\n",energySum);实验3【代码1】:pass = (above1!=0)&&(above2!=0);【代码2】:pass = (above1!=0||bottom1!=0)&&(center!=0)&&(above2!=0||bottom2!=0);【代码3】:pass = (bottom1!=0)&&(bottom2!=0);实验4【代码1】:charge = (int)weight*TrainCharge;【代码2】:charge = (int)(weight+0.5)*CarCharge;【代码3】:charge = (int)(weight*1000+0.5)*PlaneCharge;上机实践5 分支语句equation.c#include <stdio.h>#include <math.h>int main() {double a,b,c;double root1,root2;double disc;printf("输入系数a,b,c(逗号分隔):");scanf("%lf,%lf,%lf",&a,&b,&c);disc = b*b-4*a*c;if(a==0) {【代码1】//使用if-else语句,根据b是否为0输出是否为方程以及是方程时,方程的根}else {【代码2】//使用if-else语句,根据disc是否为负输出是否为二次方程以及方程的根}return 0;}实验2 商场的优惠shop.c#include <stdio.h>#define POINT1 100#define POINT2 200#define POINT3 500int main(){float amountMoney = 0;float charge = 0;printf("输入商品的总额:");scanf("%f",&amountMoney);if(amountMoney<POINT1) {charge = amountMoney;}else if(amountMoney<POINT2&&amountMoney>=POINT1){【代码1】//计算支付金额并赋值给charge}else if(amountMoney<POINT3&&amountMoney>=POINT2){【代码2】//计算支付金额并赋值给charge}else if(amountMoney>=POINT3){【代码3】//计算支付金额并赋值给charge}printf("顾客支付金额:%-20.2f\n",charge);printf("顾客节省金额:%-20.2f\n",amountMoney-charge);return 0;}实验3 四则运算computer.c#include <stdio.h>int main(){double numberOne,numberTwo = 0;char opration = '+';double result = 0;printf("输入第一个运算数、运算符号、第二个运算数(不要有任何分隔符号):\n");scanf("%lf%c%lf",&numberOne,&opration,&numberTwo);switch(opration) {case '+' :【代码1】//将numberOne+numberTwo赋值给resultprintf("%lf%c%lf=%lf\n",numberOne,opration,numberTwo,result);break;case '-' :【代码2】//将numberOne-numberTwo赋值给resultprintf("%lf%c%lf=%lf\n",numberOne,opration,numberTwo,result);break;case '*' :【代码3】//将numberOne*numberTwo赋值给resultprintf("%lf%c%lf=%lf\n",numberOne,opration,numberTwo,result);break;case '/' :result = numberOne/numberTwo;printf("%lf%c%lf=%lf\n",numberOne,opration,numberTwo,result);break;default:printf("%lf %c %lf不符合要求\n",numberOne,opration,numberTwo);}return 0;}实验4 自动售货机machineSell.c#include <stdio.h>int main() {unsigned short money;char drinkKind;printf("投入金额:2,3或5元(回车确认):");scanf("%d",&money);getchar(); //消耗回车if(money==2) {printf("选择净净矿泉水(A),甜甜矿泉水(B)和美美矿泉水(C)之一:\n");printf("输入A,B或C:");drinkKind=getchar();switch(drinkKind) {case 'A' : printf("得到净净矿泉水\n");break;case 'B' : printf("得到甜甜矿泉水\n");break;case 'C' : printf("得到美美矿泉水\n");break;default: printf("选择错误");}}else if(money==3) {printf("选择爽口可乐(A),清凉雪碧(B),和雪山果汁(C)之一:\n");printf("输入A,B或C:");drinkKind=getchar();switch(drinkKind) {case 'A' : printf("得到爽口可乐\n");break;case 'B' : printf("得到清凉雪碧\n");break;case 'C' : printf("得到雪山果汁\n");break;default: printf("选择错误");}}else if(money==5) {printf("选择草原奶茶(A),青青咖啡(B)和甜美酸奶(C)之一:\n");printf("输入A,B或C:");drinkKind=getchar();switch(drinkKind) {case 'A' : printf("得到草原奶茶\n");break;case 'B' : printf("得到青青咖啡\n");break;case 'C' : printf("得到甜美酸奶\n");break;default: printf("选择错误");}}else {printf("输入的钱币不符合要求");}return 0;}实验答案实验1【代码1】:if(b==0) {printf("不是方程\n");}else {printf("是一元一次方程,只有一个根:%f\n",-c/b);}【代码2】:if(disc>=0) {root1 = (-b+sqrt(disc))/2*a;root2 = (-b-sqrt(disc))/2*a;printf("是一元二次方程,有两个实根:%f,%f\n",root1,root2);}else {printf("是一元二次方程,没有实根\n");}实验2【代码1】:charge = POINT1+(amountMoney-POINT1)*0.9f;【代码2】:charge = POINT1+(POINT2-POINT1)*0.9f+(amountMoney-POINT2)*0.8f;【代码3】:charge = POINT1+(POINT2-POINT1)*0.9f+(POINT3-POINT2)*0.8f+(amountMoney-POINT3)*0.7f;实验3【代码1】:result = numberOne+numberTwo;【代码2】:result = numberOne-numberTwo;【代码3】:result = numberOne*numberTwo;上机实践6 循环语句实验1 数字中的各位之和与积DigitSum.c#include <stdio.h>int main(){unsigned short number;unsigned short remainder;unsigned short sum = 0,ji=1,temp=0;printf("输入一个正整数:");scanf("%d",&number);temp=number;while(number!=0) {remainder = number%10;【代码1】//将sum + remainder赋值给sum【代码2】//将ji * remainder赋值给ji【代码3】//将number/10赋值给number}printf("%u上各位数字之和是:%u\n",temp,sum);printf("%u上各位数字之积是:%u\n",temp,ji);return 0;}实验2 转动数字turnDigit.c#include <stdio.h>#include <stdlib.h>int main(){unsigned int number;unsigned int remainder,i=1,temp,save,count =1 ;unsigned short a5,a4,a3,a2,a1;//number上从高位到低位上的数字printf("输入一个正整数:");scanf("%d",&number);save = number;if(number>99999||number<9999){printf("输入的数字不符合要求\n");exit(0);}while(count<=5){do {remainder = number%10;switch(i) {case 1 :a1=remainder;break;case 2 :a2=remainder;break;case 3 :a3=remainder;break;case 4 :a4=remainder;break;case 5 :a5=remainder;break;}number = number/10;i++;} while(remainder!=0);temp = a1;a1 = a2 ;a2 = a3;a3 = a4 ;a4 = a5 ;a5 = temp;number=a5*10000+a4*1000+a3*100+a2*10+a1;printf("%u转动%u次是:%u\n",save,count,number);count++;}return 0;}实验3 计算正弦值sin.c#include <stdio.h>#include <math.h>int main(){unsigned short i;unsigned long n =1,jiecheng =1;short fuhao = 1;double sum =0,x = 1,item = x/jiecheng;double t = x*x,temp = x;printf("输入x的值(在0至π/2之间即可):");scanf("%lf",&x);item = x/jiecheng;t = x*x;temp = x;for(;item>=1E-5;) {sum = sum +fuhao*item;fuhao = -fuhao;【代码1】//将t*x赋值给x【代码2】//将n+2赋值给nfor(i=1,jiecheng=1;i<=n;i++) {jiecheng = jiecheng*i ;}【代码3】//将x/jiecheng赋值给item}printf("for语句计算结果是:\n%11.10lf\n",sum);printf("库函数计算结果是:\n%11.10lf\n",sin(temp));}实验4 猜字母游戏guessLetter.c#include <stdio.h>#include <time.h>#include <stdlib.h>int main(){char randomLetter; //随机的小写英文字母char guess; //用户的猜测char c = 'A';while(c<='Z') {printf("%3c",c);c++;}srand(time(NULL)); //用当前时间做随机种子randomLetter = rand()%26+'A';printf("\n给你一个a~z之间的字母,请猜出这个字母.\n");printf("输入你的猜测(回车确认):");guess = getchar();if(guess<='z'&&guess>='a')guess = guess-32; //变成大写字母getchar(); //消耗回车while(guess != randomLetter) {if(guess > randomLetter){printf("所猜字母大于给你的字母!\n");}else if(guess < randomLetter){printf("所猜字母小于给你的字母!\n");}printf("再输入你的猜测(回车确认):");guess = getchar();if(guess<='z'&&guess>='a')guess = guess-32; //变成大写字母getchar(); //消耗回车}printf("您猜对了,这个字母就是:%c\n",randomLetter);return 0;}实验5 记忆测试test.c#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){long now;char c1,c2,c3,c4,c5,c6;char s1,s2,s3,s4,s5,s6;unsigned short score = 0,i;char ok ='y',temp;srand(time(NULL)); //用当前时间做随机种子while(ok=='y'||ok=='Y') {ok = 'n';c1 = rand()%26+'a';c2 = rand()%26+'a';c3 = rand()%26+'a';c4 = rand()%26+'a';c5 = rand()%26+'a';c6 = rand()%26+'a';printf("%c%c%c%c%c%c",c1,c2,c3,c4,c5,c6);now = clock();for( ;clock()-now<=5000;) {}printf("\r"); // 将输出光标移动到本行开头(不回行)for(i=1;i<=6;i++) //输出6个*,以便擦除曾显示的字符串printf("*");printf("输入刚才显示的字符序列(回车确认):\n");scanf("%c%c%c%c%c%c",&s1,&s2,&s3,&s4,&s5,&s6);temp =getchar(); //消耗调用户确认输入时所输入的回车if(temp!='\n') {printf("输入非法,程序退出!");exit(0);}if(c1==s1&&c2==s2&&c3==s3&&c4==s4&&c5==s5&&c6==s6) { score++;printf("恭喜,记忆力不错!\n");}else {printf("遗憾,记得不准确\n");}printf("目前得分%u:\n",score);printf("继续测试吗?输入y或n(回车确认):");ok = getchar();getchar();}}实验答案实验1【代码1】:sum = sum + remainder;【代码2】:ji = ji * remainder;【代码3】:number = number/10;实验3【代码1】:x = t*x;【代码2】:n = n+2;【代码3】:item = x/jiecheng;上机实践7 函数的结构与调用circle.c#include <stdio.h>double getCircleArea(double); //函数原型double getCircleArea(double radius) { //函数定义double area = radius*radius*3.1415926;return area;}computer.c#include <stdio.h>double getCircleArea(double); //函数原型(在该源文件中就可以调用getCircleArea函数了)int main() {double radius,height;double volume;printf("输入柱体的底圆半径和高(逗号分隔):\n");scanf("%lf,%lf",&radius,&height);【代码1】// 将getCircleArea(radius)*height赋值给volume;printf("柱体的体积:%lf\n",volume);printf("输入锥体的底圆半径和高(逗号分隔):\n");scanf("%lf,%lf",&radius,&height);【代码2】// 将getCircleArea(radius)*height/3赋值给volume;printf("锥体的体积:%lf\n",volume);return 0;}实验2 商厦与亲民小店largeShop.c#include <stdio.h>double expensiveComputer(); //函数原型double expensiveComputer() { //函数定义int m = 1;double price,sum =0;printf("这里是商厦,请依次输入商品的价格(逗号分隔).\n");printf("输入任意字母结束输入过程:\n");m=scanf("%lf,",&price);while(m!=0) {sum = sum+ price;m=scanf("%lf,",&price);}getchar();printf("实际价格总额:%lf\n",sum);return sum;}smallShop.c#include <stdio.h>double cheapnessComputer(); //函数原型double cheapnessComputer() { //函数定义int m = 1;double price,sum =0;printf("这里是亲民小店,请依次输入商品的价格(逗号分隔).\n");printf("输入任意字母结束输入过程:\n");m=scanf("%lf,",&price);while(m!=0) {sum = sum+ price;m=scanf("%lf,",&price);}getchar();printf("实际价格总额:%lf\n",sum);return sum; //返回值的类型级别高于函数类型级别,编译会有警告}buy.c#include <stdio.h>double expensiveComputer(); //函数原型int cheapnessComputer(); //函数原型int main() {double price;printf("在商厦购物:\n");【代码1】//调用expensiveComputer函数,并将返回值赋值给priceprintf("需要支付:%lf元\n",price);printf("在亲民小店购物:\n");【代码2】//调用cheapnessComputer函数,并将返回值赋值给priceprintf("需要支付:%lf元\n",price);return 0;}实验3 钻石展览diamond.c#include<stdio.h>void printDiamond(int,int);void printDiamond(int position,int size) { int i,j,number;number= 2*size-1;for(i=1;i<=size;i++) {for(j=1;j<=size-i+position;j++)printf("%2s"," ");for(j=1;j<=i;j++)printf("%4s","*");printf("\n");}for(i=size+1;i<=number;i++) {for(j=1;j<=i-size+position;j++)printf("%2s"," ");for(j=number-i;j>=0;j--)printf("%4s","*");printf("\n");}}look.c#include<stdio.h>void printDiamond(int,int);int main() {printDiamond(2,2);printDiamond(1,3);printDiamond(0,4);getchar();return 0;}实验4 日历leap.cint isLeapYear(int);int isLeapYear(int year) {int leap =0;leap = (year%4==0 && year%100!=0)||(year%400 == 0);return leap;}weekDay.c#define StartYear 1600 // //1600年的1月1日是星期六int isLeapYear(int); //本源文件需要调用的函数的原型unsigned int getWeekDay(unsigned int,unsigned int,unsigned int); //本源文件定义的函数的原型unsigned int getWeekDay(unsigned int year,unsigned int month,unsigned int dayNumber){unsigned int i,daySum =0;unsigned int weekDay;for(i=StartYear;i<=year-1;i++) {if(isLeapYear(i))daySum = daySum+366;elsedaySum = daySum+365;}for(i=1;i<=month-1;i++) {if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)daySum = daySum+31;else if(i==4||i==6||i==9||i==11)daySum = daySum+30;else if(i==2) {if(isLeapYear(year))daySum = daySum+29;elsedaySum = daySum+28;}}daySum=daySum+dayNumber-1; //daySum是year/month/dayNumber与1600/01/01相差的天数switch(daySum%7) { //1600年的1月1日是星期六case 0 :weekDay = 6; //星期六break;case 1 :weekDay = 7; //星期日break;case 2 :weekDay = 1; //星期一break;case 3 :weekDay = 2; //星期二break;case 4 :weekDay = 3; //星期三break;case 5 :weekDay = 4; //星期四break;case 6 :weekDay = 5; //星期五break;}return weekDay;}calendar.c#include<stdio.h>unsigned int getWeekDay(unsigned int,unsigned int,unsigned int );int isLeapYear(int);int main() {unsigned int year,month;unsigned int weekDay;unsigned int i,dayNumber,maxDay;printf("输入日历的年(不小于1600)和月(逗号分隔):\n");scanf("%d,%d",&year,&month);weekDay = getWeekDay(year,month,1);if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) maxDay=31;if(month==4||month==6||month==9||month==11)maxDay=30;if(month==2) {if(isLeapYear(year))maxDay=29;elsemaxDay=28;}printf("%5s%5s%5s%5s%5s%5s%5s\n","日","一", "二", "三", "四", "五", "六");for(i=0;i<weekDay;i++)printf("%5s","");for(i=weekDay,dayNumber=1;i<weekDay+maxDay;i++) {if(i%7==0)printf("\n");printf("%5d",dayNumber);dayNumber++;}for(i=weekDay+maxDay;i<42;i++)printf("%5s","");return 0;}实验5 有理数rational.c#include<stdio.h>double add(int,int,int,int);int gongYue(int,int); //函数原型int main() {double result;result=add(1,3,1,6);printf("\n结果用小数表示是:%lf\n",result);result=add(2,3,-1,7);printf("\n结果用小数表示是:%lf\n",result);}double add(int b,int a,int n,int m) {int x;int y;int p,q;x = b*m+a*n; //计算出分子y = a*m; //计算出分母if(x<0&&y<0) {x = -x;y = -y;}p=x/gongYue(x,y);q=y/gongYue(x,y);printf("(%d/%d)+(%d/%d)=%d/%d",b,a,n,m,p,q);return (double)p/(double)q;}int gongYue(int m,int n) {int r;int t;if(m<0) m=-m;if(n<0) n=-n;if(m<n){t=m;m=n;n=t;}r = m%n;while(r!=0){ //使用辗转相除法计算最大公约数m = n;n = r;r = m%n;}return n;}实验6 Hannoi-塔tower.c#include<stdio.h>unsigned short move(int ,char,char,char);unsigned short move(int n,char one,char two,char three) { static unsigned short count=0;count++;if(n==1) {printf("from %c to %c\n",one ,three);}else if(n>=2) {count = move(n-1,one,three,two);printf("from %c to %c\n",one ,three);count = move(n-1,two,one ,three);}return count;}int main() {unsigned short m1,m2=0;printf("\nA-座有2个盘子的情况:\n");m1 = move(2,'A','B','C');printf("小和尚共花费了%u天.\n",m1);printf("\nA-座有3个盘子的情况:\n");m2 = move(3,'A','B','C');printf("小和尚共花费了%u天.\n",m2-m1);return 0;}实验7 打开画笔openSoftware.c#include<stdio.h>#include<stdlib.h>int main() {printf("列出当前目录下的子目录和文件:\n");system("dir");printf("打开画笔:\n");system("mspaint.exe");printf("打开记事本:\n");system("notepad.exe");printf("其他软件都结束了,才能输出我:\n");getchar();return 0;}实验答案实验1【代码1】:volume = getCircleArea (radius)*height;【代码2】:volume = getCircleArea (radius)*height/3;实验2【代码1】:price = expensiveComputer();【代码2】:price = cheapnessComputer();上机实践8 数组evaluate.c.#include<stdio.h>#include<math.h>int main() {double max,min; //存放最高、最低成绩double sum =0,aver,squareAver; //存放成绩的和、平均成绩、方差int count=0,i,N;【代码1】//声明类型是double、名字是score、长度为20的一维数组N = sizeof(score)/sizeof(double);printf("输入%d人的成绩(空隔或回车分隔):\n",N);for(i=0,sum=0;i<N;i++) {scanf("%lf",&score[i]);}for(i=0;i<N;i++) {【代码2】//将sum+score[i]赋值给sum}【代码3】//将sum/N赋值给averfor(i=0,sum=0;i<N;i++) {sum = sum+(score[i]-aver)*(score[i]-aver);}squareAver = sqrt(sum/N);max=min=score[0];for(i=0,sum=0,count=0;i<N;i++) {if(score[i]>max)max=score[i];if(score[i]<min)min=score[i];if(score[i]<60)count++;}printf("平均成绩:%lf\n",aver);printf("方差:%lf\n",squareAver);printf("其中一个最高成绩:%lf\n",max);printf("其中一个最低成绩:%lf\n",min);printf("不及格人数:%d\n",count);return 0;}实验2 二进制转化为十六进制jinzhi.c#include<stdio.h>#include<math.h>#define FOUR 4int main() {int i=0,m=0,j=0;long sum=0;unsigned short a[15]={1,0,1,1,1,0,1,1,1,1,1,0,1,1,1};unsigned short b[15%FOUR?15/FOUR+1:15/FOUR];int M = sizeof(b)/sizeof(unsigned short);printf("二进制表示:");for(i=0;i<15;i++) {printf("%u",a[i]);}printf("\n");for(i=15-1,sum=0;i>=0;i--) {sum = sum+a[i]*(int)pow(2,15-(i+1));}printf("十进制表示:%ld\n",sum);for(i=15-1,j=M-1;i>=0;i=i-FOUR) {for(m=0,sum=0;m<=FOUR-1;m++) {if(i-m>=0)sum=sum+a[i-m]*(int)pow(2,m);}b[j] =(unsigned short)sum;j--;}printf("十六进制表示:");for(i=0;i<M;i++) {switch(b[i]){case 10: printf("A");break;case 11: printf("B");break;case 12: printf("C");break;case 13: printf("D");break;case 14: printf("E");break;case 15: printf("F");break;default: printf("%d",b[i]);}}return 0;}实验3 修改整数中的数字changeNumber.c#include<stdio.h>#include <math.h>#include <limits.h># define OutNumber 4# define FindNumber 0int main() {unsigned long number,change=0;short a[10]={-1};int N = sizeof(a)/sizeof(unsigned short);int i=N-1,count=0 ;for(i=0;i<N;i++) {a[i]=-1;}printf("输入1至%lu之间的数:",ULONG_MAX);scanf("%ld",&number);i = N-1;while(number!=0){a[i]=(short)(number%10);number = number/10;i--;}for(i=0;i<N;i++) {if(a[i]==OutNumber)a[i]=8;}for(i=0;i<N;i++) {if(a[i]==FindNumber)。