哈工大(威海)c语言实验报告册答案
哈工大威海 编译原理实验报告
附录:类 C 语言的词法文法 id Letter <temp> int10 Num int10 | Num OP +| - |* |/ |>| < | = | ( | ) | ; | ‘ | == | >= |<= | != Keywordif | then | else | while | do Lettera|b|c|d|e|f|g|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P| Q|R|S|T|U|V|W|X|Y|Z Num0|1|2|3|4|5|6|7|8|9 |ε <temp> Letter <temp> | Num <temp> |ε
一:系统功能分析与设计:
可对一段包含加减乘除括号的赋值语句进行语法分析,其必须以$为终结符,语句 间以;隔离,判断其是否符合语法规则,依次输出判断过程中所用到的产生式,并 输出最终结论。
二:开发平台(操作系统,设计语言)
Windows 7,Microsoft Visual C++ 6.0(Dos) ,C++
附录:简单类 c 语言文法 产生式 语义规则 注:P为文法的开始符号 说明语句部分文法: P→DS D →L id ; D |ε L → int | float 程序语句部分文法: S → id = E; S.code = E.code || gen(id.place’:=’E.place) S → if (C) S1 C.true = newlabel; C.false = S.next; S1.next = S.next; S.code = C.code || gen(C.true’:’) || S1.code S → if (C) S1 else S2 S → while (C) S1 do S2 C.true = newlabel; C.false = newlabel; S1.next = S2.next =S.next; S.code = C.code || gen(C.true’:’) || S1.code || gen(‘goto’S.next)|| gen(C.false’:’)|| S2.code; S → S ;S C → E1 > E2 C.code = E1.code || E2.code || gen(‘if’E1.place’>’E2.place’goto’C.true) || gen(‘goto’C.false) C → E1 < E2 C.code = E1.code || E2.code || gen(‘if’E1.place’<’E2.place’goto’C.true) || gen(‘goto’C.false) C → E1 == E2 C.code = E1.code || E2.code || gen(‘if’E1.place’=’E2.place’goto’C.true) || gen(‘goto’C.false) E → E1 + T E.place = newtemp; E.code = E1.code||T.code|| gen(E.place’:=’E1.place’+’T.place) E → E1 – T E.place = newtemp; E.code = E1.code || T.code ||
C语言实验册完整答案
实验2答案五.程序改错#include<stdi o.h>int main(void){int x=3,y;y = x*x;printf("%d = %d * %d\n",y,x,x); /* 输出*/printf("%d * %d = %d\n",x,x,y);return 0;}六、一般编程题6.1#include<stdio.h>int main(void){int x,y;printf("Input x: ");scanf("%d",&x);printf("Input y: ");scanf("%d",&y);printf("%d + %d = %d\n",x,y,x+y);printf("%d - %d = %d\n",x,y,x-y);printf("%d * %d = %d\n",x,y,x*y);printf("%d / %d = %d\n",x,y,x/y);printf("%d %% %d = %d\n",x,y,x%y);return 0;}6.2#include<stdio.h>int main(void){ float x; double y;printf("Input x: ");scanf("%f",&x);printf("Input y: ");scanf("%lf",&y);printf("%f + %f = %f\n",x,y,x+y);printf("%f - %f = %f\n",x,y,x-y);printf("%f * %f = %f\n",x,y,x*y);printf("%f / %f = %f\n",x,y,x/y);return 0;}6.3#include<stdio.h>int main(void){ char c;printf("Input c: ");scanf("%c",&c);printf("%c\n",c+32);return 0;}6.4#include<stdio.h>int main(void){int celsius,fahr;fahr = 150;celsius = 5*fahr/9 - 5*32/9;printf("fahr = %d, celsius = %d\n", fahr, celsius);return 0;} 如果使用公式9)32(5-⨯=f c 计算结果不一样,celsius = 65。
C语言实验报告题及答案
《C程序设计实验》实验一C程序开发环境(2学时)1.实验目的熟悉C语言的集成开发环境,了解菜单的使用方法;掌握C语言程序上机的编辑、编译、连接、运行的基本步骤;了解C语言程序的结构。
2.实验内容(1)熟悉C语言程序上机的编辑、编译、连接、运行的基本步骤;(2)输入并调试、运行下面的程序。
#include <stdio.h>int main( ){printf ("This is a C program.\n");return 0;}(3)输入并调试、运行下面的程序。
#include <stdio.h>int main( ){int max(int x,int y);int a,b,c;scanf("%d,%d",&a,&b);c = max(a,b);printf("max=%d\n",c);return 0;}int max(int x,int y){int z;if (x > y) z = x;else z = y;return(z);}3.实验仪器设备微型计算机一套,配置Windows系统和VC++6.0/Turbo C3.0 软件。
4.问题讨论将printf函数改为print,调试并分析结果。
实验二数据类型、运算符与表达式(2学时)1.实验目的掌握整型、字符型和实型变量的定义和使用;掌握算术运算符的使用;掌握C语言表达式的运算规则。
2.实验内容(1)输入并调试、运行下面的程序。
#include <stdio.h>int main(){char c1,c2;c1=97;c2=98;printf("%c %c\n",c1,c2);printf("%d %d\n",c1,c2);return 0;}(2)输入并调试、运行下面的程序。
#include <stdio.h>int main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d\n",i,j,m,n);return 0;}3.实验仪器设备微型计算机一套,配置Windows系统和VC++6.0/Turbo C3.0 软件。
C语言实验参考答案
C语言实验参考答案实验一5、输入并运行自已编写的程序(教材第一章P14 三编程题)。
实验二1、编写一个程序,从键盘接收3个实数(分别为10.0、20.0、5.0),输出这3个数的和s、乘积t和平均值a。
#include <stdio.h>main(){float x,y,z,s,t,a;printf(“x,y,z=”);scanf(“%f,%f,%f”,&x,&y,&z);s=x+y+z;t=x*y*z;a=s/3;printf(“s=%f,t=%f,a=%f\n”,s,t,a);}2、编程。
要求用户输入两个整数a、b(分别为20、10),读取用户从键盘输入的值,然后:1)用整数输出这两个数的和、差;2)用长整型输出这两个数的积,用float输出商;3)用整数输出这两个数的余数,用float输出平均值。
#include <stdio.h>main(){int a,b,he,cha,yu;long ji;float shang,aver;printf(“a,b=”);scanf(“%d,%d”,&a,&b);he=a+b;cha=a-b;ji=(long)a*b;shang=1.0*a/b;yu=a%b;aver=(a+b)/2.0;printf(“a+b=%d,a-b=%d,a*b=%ld\n”,he,cha,ji);printf(“a/b=%f,a%%b=%d,aver=%f\n”,shang,yu,aver);}实验三1、编写一个程序,从键盘接收一个一位的整型数,经转换,用字符函数putchar输出。
例如,输入整数5,程序运行后输出字符5。
#include <stdio.h>main(){int a;char c;printf(“a=”);scanf(“%d”,&a);c=a+48;putchar(c);}2、编程。
哈工大 C语言实验报告(答案)
实验1简单C 程序设计2、将下列由程序流程图描述的算法,转换为C 源代码并填写到图1-3b 框中,然后输入计算机并运行后并分析其运行结果(本小题2分)。
图1-3a 程序流程图图1-3bC 源程序3、项目编程(本小题12分)(1)请向计算机输入a,b,c 三个值,经过程序处理后,要求输出其中最大的一个。
/*C 语言源代码*/main(){}项目要求:①画出程序流程图;②根据流程图编写程序图1-4a 程序流程图图1-4b C 源程序(2)请向计算机输入a,b,c 三个值,经过程序处理后,要求按值从小到大输出。
项目要求:①画出程序流程图;②根据流程图编写程序/*输出最大值*/main(){}项目提示:①可采用if结构;②a,b,c由scanf函数输入程序流程图/*将a,b,c三个值由小到大输出*/main(){}1-5a程序流程图图1-5b C源程序(3)编程实现打印下列由字母组成的树形。
说明:本项目编程的知识点是让学生对双重循环语句结构的理解,清楚双重循环的特点(即当外循环变量中的值变化一次时,则内循环变量中的值要变化若干次)。
提示:可用外循环变量代表行数;内循环变量代表需打印字符的个数。
难点:①字符个数是按奇数变化递增②左右边界字符打印的位置图1-6a字母A-G组成的树形/*打印图形*/main(){}图1-6b C源程序(4)设计报选体育科目统计程序设某学校在新生入学时,需报选体育选修科目。
体育科目包括:篮球、排球、体操、兵乓球和网球。
请为某班级(30人)统计报选各体育科目人数。
项目要求:①画出程序流程图;②根据流程图编写源程序项目提示:可采用switch与for结构程序流程图C语言源代码main(){}图1-7a程序流程图图1-7b C 源程序实验2数组与排序五、项目编程(本题12分,每小题4分)1、将下列一组数读入到a 数组中,然后从a数组中找出其中最大的元素并与第一个数互换;然后从a数组中找出最小的元素并与最后一个数互换,而其余元素的位置不变。
《C语言程序开发》实验报告和参考答案
《C语言程序开发》实验报告和参考答案1实实验报告课程名称:C语言程序开发学生姓名:学生学号:专业班级:指导教师:实验日期:2目录实验一循环结构程序设计(一)求1+2+3+.......+100,1100nn(二)输出100~200之间的不能被3整除的数。
实验二数组及其应用(一)有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
(二)输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
实验三函数及其应用(一)有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁。
问第4个学生岁数,他说比第3个学生大2岁。
问第3个学生,又说比第2个学生大2岁。
问第2个学生,说比第1个学生大2岁。
最后问第1个学生,他说是10岁。
请问第5个学生多大。
(二)用选择法对数组中10个整数按由小到大排序,一维数组名作函数参数。
实验四指针及其应用(一)将若干字符串按字母顺序(由小到大)输出。
(二)有a个学生,每个学生有b门课程的成绩。
要求在用户输入学生序号以后,能输出该学生的全部成绩。
用指针函数来实现。
3实验一循环结构程序设计实验题目:(一)求1+2+3+.......+100,1100nn(二)输出100~200之间的不能被3整除的数。
实验目的1.掌握循环语句的执行过程及用法2.初步掌握循环程序设计的基本技巧3.掌握用while语句,do-while语句和for语句实现循环的方法4.掌握多重循环的使用(一)实验步骤1.题目分析2.源程序代码3.运行结果(二)实验步骤:1.题目分析源程序代码3.运行结果4实验二数组及其应用实验题目:(一)有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
(二)输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
实验目的1.掌握一维数组的定义及其元素的引用方法2.掌握利用一维数组实现一些常用算法的基本技巧3.掌握二维数组的定义及其应用4.掌握字符数组和字符串函数的使用5.掌握有关二维数组的基本编程技巧(一)实验步骤:1.题目分析2.源程序代码:3.运行结果(二)实验步骤:1.题目分析2.源程序代码3.运行结果5实验三函数及其应用实验题目:(一)有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁。
C实验报告答案
C程序设计初步一、实验目的(1) 熟悉C语言程序的运行环境(VC++ 。
(2) 掌握C语言程序的上机步骤,了解运行C程序的方法。
(3) 掌握C语言程序的书写格式和C语言程序的结构。
二、实验内容(均要求给出运行结果)1.程序改错题(1) 以下程序实现计算x×y的值并将结果输出。
请改正程序中的错误。
#include ""void main()/**********FOUND**********/{ int x=y=4;z=x*y;/**********FOUND**********/printf("z=%d/n", Z);}答案:=======(答案1)=======int x=,4,y=4,z;=======(答案2)=======printf("z=%d\n", z);(2) 以下程序实现输入圆的半径,求圆的周长。
请改正程序中的错误。
#include ""void main(){ int r;float l;printf("Enter r:");scanf("%d", &r);/**********FOUND**********/l=2πr/**********FOUND**********/printf("l=%d\n",l);}答案:=======(答案1)=======l=2**r;=======(答案2)=======printf("l=%f\n", l);2.程序填空题(1) 下面程序能对两个整型变量的值进行交换,请填空。
#include ""void main(){ int a=3,b=4,t;t=a;/***********SPACE***********/【】;/***********SPACE***********/【】;printf("a=%d,b=%d\n",a,b);}答案:=======(答案1)=======a=b=======(答案2)=======b=t(2) 下面程序不用第三个变量,实现两个数的对调操作。
(最新版)C语言实验报告(答案)
《C程序设计》实验报告学期:教师姓名:教研室:实验1 熟悉C语言程序的运行环境,掌握数据描述1.1 实验目的1.了解在开发环境中如何编辑、编译、连接和运行一个C语言程序。
2.通过运行简单的C语言程序,初步了解C语言程序的结构特点。
3.掌握C语言数据类型的概念,学会使用C语言的相关运算符构成表达式。
1.2 实验预习1.熟悉Visual C++的启动和退出及Visual C++中的编辑、编译、连接和运行命令。
2.了解下列命令及函数:include<stdio.h>、main、printf、scanf。
3.熟悉Visual C++环境下每个菜单项的功能及相关命令对应的操作。
4.各种数据类型变量的定义形式及取值范围;熟悉下列标识符的含义。
int、short (int)、long (int)、unsigned (int)、float、double、char、void 5.各类运算符的优先级和结合规则。
6.常量与变量的区别和联系。
运行环境:1.双击桌面Visual C++快捷方式进入Visual C++,或通过执行“开始——>程序——> Microsoft Visual Studio 6.0——> Microsoft Visual C++6.0”或执行文件"C:\Program Files\Microsoft Visual Studio\COMMON\MSDev98\Bin\MSDEV.EXE"。
2.单击“文件”菜单的“新建”命令。
3.在打开的“新建”对话框中选择“文件”标签。
4.选择C++ Source File,在目录输入栏选择文件保存位置,然后在文件输入栏中输入文件名,扩展名为.c (例如first.c) ,单击确定按钮。
如图所示:5.在源窗口中输入源程序,如图所示。
应工具进行编译编译连接运行若程序有错则找到出错行修改程序。
7.连接:若程序没有语法错误,则可按功能键F7或执行“编译”菜单中的“构件”命令或通过工具栏中的相关工具(编译工具右边工具),进行连接生成可执行文件。
C语言实验报告答案
C语言实验报告答案二、编程题(参考答案)1、#include “stdio.h”void main(){ int Math=82,eng=78,comp=91,average;average=(Math+eng+comp)/3;printf(“Math=%d,eng=%d,comp=%d,average=%d\n”,Mat h,eng,comp,average);}2、#include “stdio.h”void main(){ int n=152,d1,d2,d3;d1=n%10;d2=(n/10)%10;d3=n/100;printf(“整数%d的个位数字是%d,十位数字是%d,百位数字是%d\n”,n,d1,d2,d3); }3、#include “stdio.h”void main(){ int n1,n2;printf(“Enter n1,n2:”);scanf(“%d,%d”,&n1,&n2);printf(“%d+%d=%d\n”,n1,n2,n1+n2);printf(“%d/%d=%d\n”,n1,n2,n1/n2);printf(“%d%%%d=%d\n”,n1,n2,n1%n2);}三、改错题原错误行(共三行):/********************************** found ********************************/#in clude “stdoi,h”/********************************** found ********************************/ printf(“%d=%d*%d\n”,x);/********************************** found ********************************/ printf(“%d*%d=%d\n”,y);改正后:#include “stdio.h”printf(“%d=%d*%d\n”,y,x,x);printf(“%d*%d=%d\n”,x,x,y);一、改错题1、原错误行(共三行):/********************************** found ********************************/ #include “stdoi,h”/********************************** found ********************************/ scanf(“%lf”,x);/********************************** found ********************************/ y=1/x改正后:#include “stdio.h”scanf(“%lf”,&x);y=1/x;2、原错误行(共两行):/********************************** found ********************************/ { int i,sum;/********************************** found ********************************/ for(i=1,i<=100,i++)改正后:{ int i,sum=0;for(i=1;i<=100;i++)二、编程题(本标题报告上漏印了)2、(因为报告上小题号就是从2开始的,没有第1题)#include “stdio.h”#include “math.h”void main(){ int a,b,c;float s,area,perimeter;printf(“请输入三角形的三边:”);scanf(“%d,%d,%d”,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){ perimeter=a+b+c;s=perimeter/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“area =%.2f,perimeter=%.2f\n”,area,perimeter); }elseprintf(“不构成三角形”);}3、#include “stdio.h”void main(){ int i,m,n;float sum=0;printf(“Enter m:”);scanf(“%d”,&m);printf(“Enter n:”);scanf(“%d”,&n);for(i=m;i<=n;i++)sum=sum+1.0/i;printf(“sum=%.3f\n”,sum);}4、#include “stdio.h”void main(){ int i,n;float sum=0;printf(“Enter n:”);scanf(“%d”,&n);for(i=1;i<=n;i++)sum=sum+1.0/(2*i-1);printf(“sum=%.2f\n”,sum);}5、#include “stdio.h”void main(){ int i,m,n;long a=1,b=1;printf(“Enter m:”);scanf(“%d”,&m);printf(“Enter n:”);scanf(“%d”,&n);for(i=1;i<=m;i++)a=a*i;for(i=1;i<=n;i++)b=b*i;printf(“%d!+%d!=%ld\n”,m,n,a+b); }实验三一、改错题原错误行(共三行):/********************************** found ********************************/ double sum;/********************************** found ********************************/ for(i=1;i<10;i++)sum=sum+fact(i);p rintf(“1!+2!+…+10!=%f\n”,sum);}/********************************** found ********************************/ double fact(int n);改正后:double sum=0;for(i=1;i<=10;i++)double fact(int n)二、编程题1、int even(int n){ if(n%2==0)return 1;elsereturn 0;}2、int prime(int x){ int n;for(n=2;n<x;n++)< bdsfid="194" p=""></x;n++)<>if(x%n==0)return 0;if(x>=2)return 1;elsereturn 0;}3、#include “stdio.h”int fun1(int n){ if(n%2==0)return 1;elsereturn 0;}int fun2(int x){ int n;for(n=2;n<x;n++)< bdsfid="213" p=""></x;n++)<> if(x%n==0)return 0;if(x>=2)return 1;elsereturn 0;}void main(){ int i,m,n,a,b;printf(“Enter m:”);scanf(“%d”,&m);printf(“Enter n:”);scanf(“%d”,&n);a=fun1(m);b=fun2(n);if(a==1) printf(“%d是偶数\n”,m);else printf(“%d是奇数\n”,m);if(b==1) printf(“%d是素数\n”,n);else printf(“%d不是素数\n”,n); }实验四一、改错题1、原错误行(共两行):/********************************** found ********************************/ { int i,s;/********************************** found ********************************/ if(str[i]<=’0’||str[i]>=’9’)改正后:{ int i,s=0;if(str[i]>=’0’&&str[i]<=’9’)2、原错误行(共三行):/********************************** found ********************************/ { int i,j,n,x,a[n];/********************************** found ********************************/ a[i] =a[i+1];/********************************** found ********************************/ a[i]=x; /*插入改正后:{ int i,j,n,x,a[10];a[i+1] =a[i];a[j]=x;3、原错误行(共三行):/********************************** found ********************************/ max=str;/********************************** found ********************************/ if(max<str)< bdsfid="252"p=""></str)<>/********************************** found ********************************/ max=str;改正后:strcpy(max,str);if(strcmp(max,str)<0)strcpy(max,str);4、原错误行(共两行):/********************************** found ********************************/ void fun(int a[],int n) /*该函数求出a数组中n个元素奇数的个数*//********************************** found ********************************/ if(a[i]%2==0) m++;改正后:int fun(int a[],int n)if(a[i]%2!=0) m++;二、编程题1、#include “stdio.h”void main(){ int i,n,min,max,s1,s2,t,a[10];printf(“请输入数据个数n值:”);scanf(“%d”,&n);printf(“请输入这%d个数:”,n);for(i=0;i<n;i++)< bdsfid="273" p=""></n;i++)<>scanf(“%d”,&a[i]);min=a[0]; s1=0;max=a[n-1]; s2=n-1;for(i=0;i<n;i++)< bdsfid="278" p=""></n;i++)<>{ if(a[i]<="">if(a[i]>max) { max=a[i]; s2=i; }}if(s1!=0) { t=a[0];a[0]=a[s1];a[s1]=t; }if(s2!=n-1) { t=a[n-1];a[n-1]=a[s2];a[s2]=t; } for(i=0;i<n;i++)< bdsfid="285" p=""></n;i++)<>printf(“%d ”,a[i]);}2、int sum(int a[],int n){ int i,sum=0;for(i=0;i<n;i++)< bdsfid="292" p=""></n;i++)<>sum+=a[i];return sum;}实验五一、改错题1、原错误行(共两行):/********************************** found ********************************/ scanf(“%d”,&p++);/********************************** found ********************************/ x[0]=x[k];改正后:scanf(“%d”,p++);x[0]=k;二、编程题1、int search(int *a,int n,int x){ int i;for(i=0;i<n;i++)< bdsfid="309" p=""></n;i++)<>if(a[i]==x) return i;return -1;}2、int fun(char *s){ int i,j,n;n=strlen(s);for(i=0,j=n-1;i<="" bdsfid="318" p="">if(s[i]!=s[j])return 0;return 1;}3、此题为选作题#include “stdio.h”void sort(int *a,int n){ int i,j,k,t;for(i=0;i<n-1;i++)< bdsfid="329" p=""></n-1;i++)<> { k=i;for(j=i+1;j<n;j++)< bdsfid="332" p=""></n;j++)<> if(a[j]if(k!=i){ t=a[i];a[i]=a[k];a[k]=t; }}}main(){ int a[10],i,n;printf(“请输入n值:”);scanf(“%d”,&n);printf(“请输入这%d个元素值:”,n);for(i=0;i<n;i++)< bdsfid="345" p=""></n;i++)<>scanf(“%d”,&a[i]);sort(a,n);for(i=0;i<n;i++)< bdsfid="349" p=""></n;i++)<>printf("%d ",a[i]);printf("\n");}一、改错题(原错误行共两行):/********************************** found ********************************/ { scanf(“%d”,&score[j]);/********************************** found ********************************/ printf("总分最高的学生是:%s,%d\n", name, sum);改正后:{ scanf(“%d”,&a[i].score[j]);printf("总分最高的学生是:%s,%d\n", a[k].name, a[k].sum);二、编程题1、#include "stdio.h"typedef struct student /*定义结构体类型*/{ long num;char name[9];int score[3];float aver;}STU;void main(){ STU a[10];int i,j,n,s=0;printf("输入n:");scanf("%d",&n);for(i=0;i<n;i++)< bdsfid="374" p=""></n;i++)<>{ printf("输入第%d个学生的学号、姓名和3门课成绩:",i+1);scanf("%ld",&a[i].num);scanf("%s",a[i].name);s=0;for(j=0;j<3;j++){ scanf("%d",&a[i].score[j]); s+=a[i].score[j]; }a[i].aver=s/3.0;}for(i=0;i<n;i++)< bdsfid="384" p=""></n;i++)<>printf("%s,%.2f分\n",a[i].name,a[i].aver);}三、填空题p->next= head ;head= p ;}p=head ;一、改错题(原错误行共两行):/********************************** found ********************************/ FILE fp;/********************************** found ********************************/if((fp=fopen(“a.txt”,“w”))!=NULL)改正后:FILE *fp;if((fp=fopen(“a.txt”,“w”))==NULL)二、编程题1、#include "stdio.h"#include "string.h"void main(){ FILE *fp;char a[10];if((fp=fopen("test.txt","w"))==NULL) { printf("error");exit(0);}scanf("%s",a);strupr(a);fputs(a,fp);fclose(fp);}2、#include "stdio.h"#include "string.h"void main(){ FILE *fp;char a;if((fp=fopen("test.txt","r"))==NULL) { printf("error");exit(0);}while(!feof(fp)){ a=fgetc(fp);printf("%c",a);}fclose(fp);}3、#include "stdio.h"#include "stdlib.h"typedef struct student{ long num;char name[9];int score[3];float aver;}STU;void main(){ FILE *fp;int i,j,n,s;STU a;scanf("%d",&n);if ((fp=fopen("stud.dat","wb"))==NULL){ printf("File connot be opened\n");exit(0);}for(i=1;i<=n;i++){ scanf("%ld",&a.num);scanf("%s",/doc/204579141.html,); s=0;for(j=0;j<3;j++){ scanf("%d",&a.score[j]); s+=a.score[j]; }a.aver=s/3.0;fwrite(&a,sizeof(STU),1,fp);}fclose(fp);}4、#include "stdio.h"#include "stdlib.h"typedef struct student{ long num;char name[9];int score[3];float aver;}STU;void main(){ FILE *fp;int i,j,n,s;STU a;if ((fp=fopen("stud.dat","rb"))==NULL){ printf("File connot be opened\n");exit(0);}while(fread(&a,sizeof(STU),1,fp)!=NULL){ printf("%ld\t%s\t",a.num,/doc/204579141. html,);printf("%d\t%d\t%d\t%.2f\n",a.score[0],a.score[1],a.score[2], a.aver);}fclose(fp);}。
哈尔滨工业大学(威海)操作系统实验报告及答案
哈尔滨工业大学(威海)操作系统实验报告说明:本实验报告实验答案,是本人在上实验时的测试数据,由于操作系统实验中后面实验与当时所做实验的计算机的配置有关,因此本实验报的数据仅供参考。
实验1进程的描述与控制Windows 2000编程(实验估计时间:100分钟)1.1 背景知识Windows 2000 可以识别的应用程序包括控制台应用程序、GUI应用程序和服务应用程序。
控制台应用程序可以创建GUI,GUI应用程序可以作为服务来运行,服务也可以向标准的输出流写入数据。
不同类型应用程序间的惟一重要区别是其启动方法。
Windows 2000是以NT技术构建的,它提供了创建控制台应用程序的能力,使用户可以利用标准的C++工具,如iostream库中的cout和cin对象,来创建小型应用程序。
当系统运行时,Windows 2000的服务通常要向系统用户提供所需功能。
服务应用程序类型需要ServiceMail()函数,由服务控制管理器(SCM)加以调用。
SCM是操作系统的集成部分,负责响应系统启动以开始服务、指导用户控制或从另一个服务中来的请求。
其本身负责使应用程序的行为像一个服务,通常,服务登录到特殊的LocalSystem账号下,此账号具有与开发人员创建的服务不同的权限。
当C++编译器创建可执行程序时,编译器将源代码编译成OBJ文件,然后将其与标准库相链接。
产生的EXE文件是装载器指令、机器指令和应用程序的数据的集合。
装载器指令告诉系统从哪里装载机器代码。
另一个装载器指令告诉系统从哪里开始执行进程的主线程。
在进行某些设置后,进入开发者提供的main()、Servicemain()或WinMain()函数的低级入口点。
机器代码中包括控制逻辑,它所做的事包括跳转到Windows API函数,进行计算或向磁盘写入数据等。
Windows允许开发人员将大型应用程序分为较小的、互相有关系的服务模块,即动态链接库(DLL)代码块,在其中包含应用程序所使用的机器代码和应用程序的数据。
哈工大(威海)c语言实验报告册答案
实验1简单判定性问题求解一、实验学时完成本实验需4学时。
二、实验目的1、阅读程序题(1)掌握C语言数据类型,熟悉如何定义一个整型、字符型的变量,以及对它们赋值的方法;(2)掌握不同的类型数据之间赋值的规律;(3)掌握数据在内存中的存储方式;(4)学会输入、输出函数的基本格式和使用方法;(5)学会使用有关算术运算符、逻辑运算符、关系运算符,以及包含这些运算符的表达式。
2、编程题(1)如何运用判定性结构进行程序设计;(2)如何运用判定性结构进行程序设计。
3、调试题(1)熟悉C程序的编辑、编译、连接和运行的过程。
三、实验指导为了达到最佳的实验效果,以下提供几条适于编程的指导意见,可供参考。
1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意观察数据在内存中的存储方式、含不同种运算符表达式的输出结果。
2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,完成程序的设计。
要注意简单判定性问题的结构选择。
3、调试题应明确程序的调试、测试是一项非常烦琐的工作,也是非常重要的工作。
对于初学者来说应该建立良好的习惯,在调试程序的时候,应该尽可能考虑到程序运行时各种可能情况。
四、实验内容1、阅读程序题(1)( ){ /*定义字符型变量*/c12; /*向字符变量赋以整数*/c1=97;c2=98;(" \n"12); /*以字符形式输出*/(" \n"12); /*以整数形式输出*/}该程序的输出结果是思考:可否改成 c1,c2;输出结果是?相同(2)(){75;("\n");}思考:若将语句中变为,可否输出分式的值?可以(3)(){9;; /*包含复合的赋值运算符的赋值表达式*/("\n");}思考:赋值表达式a+=a-=a+a的求解步骤?第一步:()9 第二步18(4)(){1;("\n");}出结果是思考:-1在内存中的存储形式?取反加一11111111111111111111111111111111(32个)(5)(){x1;1;x1; /*有符号数据传送给无符号变量*/(""1);}思考:(有符号赋值给无符号)(6)(){345;("\n",(!(a<b))(1));("");}思考:若将第一个语句中变为,结果将如何?1(换行)6(7)(){ 123;() ("\n");("\n");}该程序的输出结果是 1 。
C语言实验报告_答案
《C语言程序设计》实验指导学院:信息科学与技术学院专业:计算机通信学期:2011~2012学年教师:目录实验1 熟悉C语言程序开发环境............................... 错误!未定义书签。
1.1 实验目的 ......................................................................................... 错误!未定义书签。
1.2 实验预习 ......................................................................................... 错误!未定义书签。
1.3 实验任务 ......................................................................................... 错误!未定义书签。
1.4 实验报告 ......................................................................................... 错误!未定义书签。
实验2 数据描述............................................. 错误!未定义书签。
2.1 实验目的 ......................................................................................... 错误!未定义书签。
2.2 实验预习 ......................................................................................... 错误!未定义书签。
哈工大威海c语言试题及答案
哈工大威海c语言试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述中,错误的是:A. C语言是一种高级语言B. C语言是一种面向对象的程序设计语言C. C语言具有结构化的特点D. C语言具有较好的移植性答案:B2. C语言中,用于定义变量的关键字是:A. varB. defineC. intD. let答案:C3. 下列选项中,不属于C语言标准输入输出函数的是:A. printfB. scanfC. coutD. getchar答案:C4. 在C语言中,用于定义数组的关键字是:A. arrayB. listC. vectorD. int答案:D5. 下列关于C语言函数的描述中,正确的是:A. 函数必须有返回值B. 函数可以没有参数C. 函数可以有多个返回值D. 函数可以嵌套定义答案:B二、填空题(每题2分,共20分)1. 在C语言中,表示逻辑“与”的运算符是______。
答案:&&2. C语言中,定义一个整型变量的关键字是______。
答案:int3. 在C语言中,用于输入输出的头文件是______。
答案:stdio.h4. C语言中,用于计算两个数的和的运算符是______。
答案:+5. 在C语言中,用于定义一个函数的关键字是______。
答案:int(或其他类型)三、简答题(每题10分,共20分)1. 请简述C语言中指针的作用。
答案:指针在C语言中用于存储变量的内存地址,它允许程序直接访问内存,可以实现动态内存分配、函数参数传递、数组操作等功能。
2. 请简述C语言中结构体的定义和使用。
答案:结构体在C语言中是一种复合数据类型,它允许将多个不同类型的数据项组合成一个单一的数据结构。
定义结构体时,使用关键字struct,然后定义一个或多个成员。
使用结构体时,可以创建结构体变量,并通过点号(.)访问其成员。
四、编程题(每题20分,共40分)1. 编写一个C语言程序,实现计算并输出100以内所有偶数的和。
哈工大威海计算机操作系统原理实验报告4.
计算机操作系统原理实验报告
班级:1104202 学号:110420212 姓名:李敖哈尔滨工业大学(威海实验四页面置换算法
、实验目的
1•掌握内存管理基本功能和请求分页式管理的基本原理以及页面置换算法。
2.学会在Linux操作系统下使用C函数和系统调用的编程方法。
3.掌握利用C语言设计实现不同置换策略的页面置换算法。
4.验证虚存存储管理机制及其性能。
对于生成的引用串,计算、比对不同页面
置
换算法的缺页率。
、实验要求
1.学生应完成如下章节的学习:进程和线程、调度、存储管理。
2.安装Linux操作系统,使用C语言编程,利用相关系统调用实现设计。
三、实验内容
1•创建空闲存储管理表、模拟内存、页表等。
2.提供一个用户界面,用户利用它可输入不同的页面置换策略和其他附加参
数。
3.运行置换程序,输出缺页率结果。
四、程序流程图
1.最佳页面置换算法流程图
开始
1
2.先进先出页面置换算法流程图
开蛤
初始化进种块
3.最近最久未使用页面置换算法流程图
初縮化进出块
五、实验结果
最佳页面置换算法分区
先进先出页面置换算法
最近最久未使用页面置换算法六、结果分析本程序已基本实现了页面的置换
算法,包括最佳页面置换算法、先进先出页面置换算法和最近最久未使用页面置换算法。
页表最大空间为5,随机进程最大
序列为50。
c语言实验报告三答案(完整版)
实验三循环控制实验课程名:高级语言程序设计(C)专业班级:学号:姓名:实验时间:实验地点:指导教师:一、实验目的和要求1. 熟练掌握用while语句、do while语句和for语句实现循环的方法。
2. 掌握在程序设计中用循的方法实现一些常用算法。
并进一步学习调试程序的方法。
二、实验内容1、任务名称程序c40101.c求1+…+100,填空,实现该功能。
(1、)源代码:#include<stdio.h>int main(){int s,i;s=0;for(i=1;i<=100;i++)s=s+i;printf("1+2+...+100=%d\n",s);return 0;}运行结果:(需要截图)(2、)源代码:#include<stdio.h>int main(){int s=0,i=1;while(i<=100){s+=i;i++;}printf("1+2+...+100=%d\n",s);return 0;}运行结果:运行结果分析:2、任务名称:分别运行这两个程序,若输入7,这两个程序的结果分别是多少?若输入12,这两个程序的结果又分别是多少?比较为什么会有这样的区别?(1、)源代码:#include <stdio.h>void main(){ int i,n,sum=0;scanf("%d",&i);n=i;while(i<=10){ sum+=i;i++;}printf("%d+...+10=%d\n",n,sum);}运行结果:(需要截图)(2、)源代码:#include <stdio.h>int main(){ int i,n,sum=0;scanf("%d",&i);n=i;do{ sum+=i;i++;} while(i<=10);printf("%d+...+10=%d\n",n,sum);return 0;}运行结果:运行结果分析:3、任务名称:下面程序,若输入12345,分析输出结果是多少?源代码:#include <stdio.h>void main( ){ long data;scanf("%ld",&data);while(data){ printf("%ld,",data%10);data=data/10;}}运行结果:(需要截图)运行结果分析:4、任务名称:程序c40104.c 实现求Fibonacci 数列的前n 个数。
C语言课后习题部分答案(哈工大)
第一章:1.2答:控制器、运算器、存储器、输入设备和输出设备。
第二章:2.2(1)C(2)B(3)A(4)B(5)D(6)D(7)D(8)CB第三章3.2(1)C(2)D3.3(1)在scanf函数中,参数应是两个变量的地址。
scanf(“%d,%d”,&a,&b);(2) 数据输出格式与数据类型不相配printf(“%f”,f);(3) 数据输入格式与数据类型不相配scanf(“%lf%ld”,&var,&a);(4)在scanf输入格式控制串中多了\n,a和b前面少了&scanf(“%d,%d”,&a,&b);(5)%f的输入格式不应有精度控制Scanf(“%5f”,&f);(6)程序输入错误使变量a,b的值不是6,2输入a=6,b=2(回车)3.4(1)aabbccabc(2)0 1 1(3)68(4)3.500000(5)12 913 9(6)12 913 93.5因为1/2在C语言中的值为零,S始终是零,结果错误。
#include<stdio.h>#include<math.h>main()float a,b,c;float s,area;printf("Input a,b,c:");scanf("%f,%f,%f",&a,&b,&c);s =1.0/2*(a+b+c);area = sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%.2f\n",area);getch();}第四章4.2(1)D(2)B(3)D(4)D4.3(1)over!(2)right(3)right(4)right?(5)1,abcdefg$abcdefgEnd!2,abcdefgEnd!(6)************************(7)*#*#*#$4.4(1)1,(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) 2,flag(2)1,(ch >= …a‟ && ch <= …z‟) || (ch >= …A‟ && ch <= …Z‟) 2,ch <= …9‟ && ch >= …0‟3,ch = …‟(3)1,fahr2,Celsius = 5.0 / 9 * (fahr - 32)3,fahr = fahr + step4.15#include<stdio.h>#include<math.h>main()int n = 1,count = 1;double e = 1.0,term = 1.0;while(fabs(term) >= 1e-5){term = term / n;e = e + term;n++;count++;}printf("e=%f,count=%d\n",e,count);getch();}4.18#include<stdio.h>main(){int i,j,k,n;printf("result is:");for(n=100; n<1000; n++){i = n/100;j = (n-i*100)/10;k = n%10;if(i*100 + j*10 + k==i*i*i + j*j*j + k*k*k){printf("%d\t",n);}}printf("\n");getch();}4.19#include<stdio.h>#include<math.h>main(){int i1,i2,i3,i4,k,n;printf("Input data is:");scanf("%d",&n);k = fabs(n);i1 = k / 1000;i2 = (k - i1 *1000)/100;i3 = (k-i1*1000-i2*100)/10;i4 = k % 10;printf("The sum of the total bit is %d\n",i1+i2+i3+i4);getch();}4.20#include<stdio.h>main(){int x = 0;do{x++;}while(!(x%5==1 && x%6==5 && x%7==4 && x%11==10));printf("x=%d\n",x);getch();}4.22#include<stdio.h>main(){int i,j,k;for(i=0; i<=3;i++){for(j=0;j<=3;j++){for(k=0;k<=6;k++){if(i+j+k==8){printf("i=%d,j=%d,k=%d\n",i,j,k);}}}}getch();}4.23#include <stdio.h>main(){int x,y;for (x=1; x<=97; x++){y=98-x;if(2*x + 4*y == 386){printf("x=%d, y=%d\n",x, y);}}getch();}4.24#include<stdio.h>main(){int x,y,z;for (x=0; x<=20; x++){for(y=0; y<=33; y++){z = 100 - x - y;if (5*x + 3*y + z/3.0 == 100){printf("x=%d, y=%d, z=%d\n", x, y, z);}}}getch();}。
哈工程C语言教材课后答案
第一章1.2 有三个数A、B、C,设计算法,求三个数中最大的数并输出。
(可用自然语言或流程图表示)。
#include<stdio.h>void main(){int a,b,c,max;printf("please input three numbers:\n");scanf("%d%d%d",&a,&b,&c);max=a;if(b>a)max=b;if(c>max)max=c;printf("the answer is %d\n",max);}1.3 设计算法,求N个整数的平均值。
#include<stdio.h>void main(){int N,i;float aver,a,s=0;printf("please input the amount of the number:\n");scanf("%d",&N);for(i=0;i<N;i++){printf("please input the number\n");scanf("%f",&a);s=s+a;}aver=s/N;printf("the average is %f",aver);}第二章1. 填空题⑴换行、回车⑵整型变量_⑶整型⑷_6_⑸2.52. 选择题⑴_A_⑵_A_⑶A_⑷_B_⑸_D⑹C⑺ C ⑻ D ⑼ C ⑽ D ⑾B⑿D⒀ B ⒁ D3. ⑴答案:6,0,6⑵答案:8,10,16⑶答案:3.500000⑷答案:6⑸答案:1⑹答案:261⑺答案:16⑻答案:04. 编程题⑴输入长方形的长和宽,输出长方形的周长和面积。
#include<stdio.h>void main(){int a,b,l,s;scanf(―%d%d‖,&a,&b);l=(a+b)*2;s=a*b;printf(―%d,%d‖,l,s);}⑵输入一个字符,输出其ASCII代码。
C语言实验答案
C语言实验答案实验一:编写C程序求和实验背景:C语言是一种通用的程序设计语言,可以用于开发各种应用程序。
在本实验中,我们将学习如何使用C语言编写程序来求和。
实验步骤:1. 打开集成开发环境(IDE)或文本编辑器,创建一个新的C程序文件。
2. 在程序文件中,添加必要的头文件,如stdio.h。
3. 在主函数中,声明变量来存储要求和的数字。
4. 使用printf函数提示用户输入数字,并使用scanf函数从用户处接收输入。
5. 在程序中使用循环语句(如for循环或while循环)将输入的数字相加。
6. 使用printf函数将求和结果输出到屏幕上。
7. 编译并运行程序,验证结果是否正确。
实验示例代码:```c#include <stdio.h>int main() {int num1, num2, sum = 0;printf("请输入第一个数字: ");scanf("%d", &num1);printf("请输入第二个数字: ");scanf("%d", &num2);for(int i = num1; i <= num2; i++) {sum += i;}printf("两数之间的和为: %d\n", sum);return 0;}```实验结果:假设用户输入的第一个数字为1,第二个数字为5,则程序会输出结果:```两数之间的和为: 15实验二:编写C程序实现字符串反转实验背景:在C语言中,对字符串进行反转是一种常见的操作,可以用于解决很多问题,如判断回文等。
在本实验中,我们将学习如何使用C语言编写程序来实现字符串反转。
实验步骤:1. 打开集成开发环境(IDE)或文本编辑器,创建一个新的C程序文件。
2. 在程序文件中,添加必要的头文件,如stdio.h和string.h。
哈工大C语言DNA实验报告
printf("苯丙氨酸");
}
else if((DNA[i]=='T')&&(DNA[i+1]=='T')&&(DNA[i+2]=='C'))
{
printf("苯丙氨酸");
}
else if((DNA[i]=='T')&&(DNA[i+1]=='C')&&(DNA[i+2]=='A'||'G'||'C'||'T'))
}
else if((DNA[i]=='T')&&(DNA[i+1]=='G')&&(DNA[i+2]=='T'))
{
printf("半胱氨酸");
}
else if((DNA[i]=='T')&&(DNA[i+1]=='G')&&(DNA[i+2]=='C'))
{
printf("半胱氨酸");
}
else if((DNA[i]=='T')&&(DNA[i+1]=='G')&&(DNA[i+2]=='A'))/**/
if((DNA[i]=='T')&&(DNA[i+1]=='T')&&(DNA[i+2]=='A'))/**/
C语言实验报告参考答案(原)
改成:printf("\’%c\’\’%c\’%d\n",a,b,c);
问题5把scanf("%c%c%d",&a,&b,&c);和printf("%c,%c,%d\n",a,b,c);
改成scanf("%c%*c%c%*c%d",&a,&b,&c);
#include<math.h>
int count(int x)
{
int sum,i;
sum =0;//记住因子的个数
for(i=1;i<=x/2;i++)
if(x%i == 0)
sum +=1;
return sum+1;
}
int main(void)
{
int i,y;
for(i=1;i<=100;i++)
#include<stdio.h>
#include<math.h>
int prime(int m)
{
int i,k;
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>k)return 1;
return 0;
}
main()
{
int i,k;
k=0;
for(i=3;i<=5000;i++)
if(prime(i)==1){k++;printf("%d is a prime muber \n",i);}
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1简单判定性问题求解一、实验学时完成本实验需4学时。
二、实验目的1、阅读程序题(1)掌握C语言数据类型,熟悉如何定义一个整型、字符型的变量,以及对它们赋值的方法;(2)掌握不同的类型数据之间赋值的规律;(3)掌握数据在内存中的存储方式;(4)学会输入、输出函数的基本格式和使用方法;(5)学会使用有关算术运算符、逻辑运算符、关系运算符,以及包含这些运算符的表达式。
2、编程题(1)如何运用if-else判定性结构进行程序设计;(2)如何运用switch判定性结构进行程序设计。
3、调试题(1)熟悉C程序的编辑、编译、连接和运行的过程。
三、实验指导为了达到最佳的实验效果,以下提供几条适于编程的指导意见,可供参考。
1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意观察数据在内存中的存储方式、含不同种运算符表达式的输出结果。
2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,完成程序的设计。
要注意简单判定性问题的结构选择。
3、调试题应明确程序的调试、测试是一项非常烦琐的工作,也是非常重要的工作。
对于初学者来说应该建立良好的习惯,在调试程序的时候,应该尽可能考虑到程序运行时各种可能情况。
四、实验内容1、阅读程序题(1)main( ){ /*定义字符型变量*/char c1,c2; /*向字符变量赋以整数*/c1=97;c2=98;printf("%c %c\n",c1,c2); /*以字符形式输出*/printf("%d %d\n",c1,c2); /*以整数形式输出*/}该程序的输出结果是 a b(换行)97 98 。
思考:可否改成int c1,c2;输出结果是?相同(2)main(){int a=7,b=5;printf("%d\n",b=b/a);}该程序的输出结果是0 。
思考:若将printf语句中%d变为%f,可否输出分式的值?可以(3)main(){int a=9;a+=a-=a+a; /*包含复合的赋值运算符的赋值表达式*/printf("%d\n",a);}该程序的输出结果是-18 。
思考:赋值表达式a+=a-=a+a的求解步骤?第一步:a=a-(a+a)=-9 第二步a=a+a=18(4)main(){int k=-1;printf("%d,%u\n",k,k);}该程序的输出结果是-1 4294967295 。
思考:-1在内存中的存储形式?取反加一11111111111111111111111111111111(32个)(5)main(){unsigned x1;int b=-1;x1=b; /*有符号数据传送给无符号变量*/printf("%u",x1);}该程序的输出结果是4294967295 。
/happymawolf/article/details/6342937(有符号赋值给无符号)(6)main(){int a=3,b=4,c=5;printf("%d\n",(!(a<b))&&(c=c+1));printf("%d",c);}该程序的输出结果是0(换行)5 。
思考:若将第一个printf语句中&&变为|| ,结果将如何?1(换行)6(7)main(){ int a=1,b=2,c=3;if(c=a) printf("%d\n",c);else printf("%d\n",b);}该程序的输出结果是 1 。
2、编程序并上机调试运行(包括题目及要求、流程图、程序清单、测试数据及结果)(1)将一个百分制成绩转换成等级制成绩,百分制与等级制的对应关系如下表:百分制90-100 80-89 70-79 60-69 <60等级制优良中差劣具体要求如下:1)用switch语句实现该功能;2)用键盘输入百分制成绩,输入前要有提示信息,对于不合理的数据应输出错误信息;3)输出结果应包含百分制成绩和成绩等级;4)分别输入成绩-10,30,60,68,75,83,95,102,查看记录运行结果。
见下页测试数据:100,50,-20输出结果:优,劣,成绩输入错误#include<stdio.h>#include<stdlib.h>void main(){float score;int level;printf("请输入成绩:\n");scanf("%f",&score);if (score>100||score<0)printf("成绩输入错误!\n");else{level=(int)((score-50)/10);switch(level){case 5: printf("优\n");break;case 4: printf("优\n");break;case 3: printf("良\n");break;case 2: printf("中\n");break;case 1: printf("差\n");break;default: printf("劣\n");break;}}}流程图程序代码⎪⎪⎪⎩⎪⎪⎪⎨⎧=====年期限年期限年期限年期限年期限8%84.05%75.03%69.02%66.01%63.0开始定义变量n 、s 输入成绩sn=(s-50)/10n=0输出“劣”是n=1输出“差”是否n=2输出“中”是否n=3输出“良”是否N=4或n=5输出“优”是否输出“错误!”否结束(2)银行整存整取存款不同期限的月息利率分别为:输入存款的本金和年限,求到期时能从银行得到程序代码月息利率=的利息与本金的合计。
(利息的计算公式为:利息=本金×月息利率×12 ×存款年限。
见下页测试数据:4,100 04,-10133.12 本金金额不能为负!#include<stdio.h> #include<stdlib.h> void main(){ int year;double input,out;printf("输入存储年份:\n"); scanf("%d",&year);printf("输入本金数额:\n");scanf("%lf",&input);if (input<0) printf("本金金额不能为负!\n");else{switch(year){case 1: out=input+input*year*12*0.63/100;printf("%5.2lf",out);break;case 2:out=input+input*year*12*0.66/100;printf("%5.2lf",out);break;case 3: ; case 4:out=input+input*year*12*0.69/100;printf("%5.2lf",out);break;case 5: ;case 6: ; case 7:out=input+input*year*12*0.75/100;printf("%5.2lf",out);break;case 8:out=input+input*year*12*0.84/100;printf("%5.2lf",out);break;default:printf("输入错误!");break;}}}流程图(3)调试下面程序,使之具有如下功能:输入a 、b 、c 三个整数,求最小值。
main() {int a,b,c;scanf("%d%d%d",a,b,c); if((a>b)&&(a>c))开始定义变量y ,s ,n输入本金及存储年限y=1是y=2否y=3或y=4否y=5或y=6或y=7否y=8否输出“错误!”否结束S=0.63%是S=0.66%是S=0.69%S=0.75%是S=0.84%是n=n+n*12*S*y 输出nif(b<c)printf("min=%d\n",b);elseprintf("min=%d\n",c);if((a<b)&&(a<c))printf("min=%d\n",a);}程序中包含有一些错误,按下述步骤进行调试。
1)设置断点。
2)通过单步执行,观测变量,发现程序中的错误。
程序调试记录1、程序出现的错误及改正第四行,abc前都加&,在%d%d%d中两个%d之间加空格; { }括住六到九行;把第十行if改成else if;2、程序的改进1.每个<或>后加一个=;2.在程序末尾添加如下指令else if((a<=b)&&(a>=c)||(a>=b)&&(a<=c)){if (b<=c)printf("min=%d\n",b);elseprintf("min=%d\n",c);}实验2循环结构及其应用一、实验学时完成本实验需4学时。
二、实验目的1、熟练掌握while,do—while,for语句实现循环的方法,包括如何正确地设定循环条件,如何控制循环的次数。
2、掌握break语句与continue语句的使用方法。
3、熟悉循环的嵌套以及从循环体内退出循环的处理。
4、理解什么是循环程序结构。
三、实验指导为了达到最佳的实验效果,以下提供几条适于模块化编程的指导意见,可供参考。
1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意循环语句的一般使用方法,以及复合运算符的使用。
2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,以面向过程的、模块化设计方法完成程序设计。
【例题解析】编写一个程序,输出半径为1到10的圆的面积,若面积在40到90之间则予以输出,否则,不予输出。