C语言程序设计实验与习题答案
C语言程序设计 上机实验指导与习题 参考答案(第四版)
C 语言程序设计上机实验指导与习题参考答案(第四版)(学生改编)实验 1:C语言程序初步一、实验目的(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。
(2)了解在该系统上如何编辑、编译、连接和运行一个 C程序。
(3)通过运行简单的 C 程序,初步了解 C程序的特点。
(4)在教师的指导下,学会使用在线评判系统。
二、实验内容1.运行第一个 C 程序题目:ThefirstCProgram将下列程序输入visualc ,编译、连接和运行该程序。
includequotstdio.hquotmain printfquotThefirstCProgramnquot具体操作步骤(1)在编辑窗口中输入程序。
(2)保存程序,取名为a1.c。
(3)按照第一章中介绍的方法,编译、连接和运行程序。
,则该题完成。
4按照第三章介绍的方法,将代码提交到在线评判系统,系统返回“通过”2.在在线评判系统中提交实现了计算 ab 功能的程序题目 1001:计算ab由键盘输入两个整数,计算并输出两个整数的和。
实现该功能的程序如下,inclu dequotstdio.hquotmain int ab scanfquotddquotampaampbprintfquotdquotab(1)在程序编辑窗口中输入程序。
(2)保存程序,取名为a2.c。
(3)按照前二章中介绍的方法,编译、连接和运行程序。
(4)在程序运行过程中,输入 15 30↙↙表示输入回车符(5)如果看到如下输出结果,则表明1530 的结果正确,如果得不到如下结果,则需检查并更正程序。
45(6)按照第三章中介绍的方法进入在线评判系统。
(7)显示题目列表,点击题号为 1001,题名为“计算ab”的题目。
(8)查看完题目要求后,点击页面下端的“sumbit” ,参照第二章提交程序的方法提交程序a2.c。
(9)查看评判结果,如果得到“accepted”则该题通过,否则返回第一步检查程序是否正确。
c语言程序设计案例教程 实验项目-设计性题目参考答案
C语言程序设计案例教程(含实验)设计性实验的程序参考答案实验项目一 C程序的编辑、编译、连接和运行题目:编写程序,要求屏幕上显示如下信息:************************ This is a C program .************************程序:#include <stdio.h>void main(){printf(“***********************”);printf(“* This is a C program .*”);printf(“***********************”);}实验项目二数据类型、运算符、表达式题目(1)程序填空:输入1 个实数x,计算并输出其平方根(保留1 位小数)。
填空1.double x,root;2.root=sqrt(x);(2)输入一个大写英文字母,输出相应的小写字母。
填空1.ch=ch+32;实验项目三顺序结构程序设计题目(1)编写程序,输入三角形的三边长a、b、c,求三角形面积area。
程序代码:#include <stdio.h>#include <mach.h>main(){float a,b,c,s,arer;printf(" 请输入三角形的三个边a,b,c:\n");scanf("%f,%f,%f",&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf("三角形的边为a=%7.2f, b=57.2f, c=%7.2f\n",a,b,c);printf("三角形的面积area=%7.2\n ",area);(2)设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
c语言程序设计实验.设计.习题.答案.顺序结构与逻辑运算
}
实验四部分
4-1-a该程序的功能是:输入两个数:a、b,判断a*a+b*b的值,若a*a+b*b的值等于3或1,则y=a+b;若a*a+b*b的值等于0,则y=b-a;若a*a+b*b的值等于其他值,则输出“eerror”;最后输出y的值。
运行结果画面:
#include<stdio.h>
main()
{
int a,M;
scanf("%d",&a);
M=a>0?a:-a;
printf("abs(a)=%d\n",M);
}
4-4运行结果画面:
#include<stdio.h>
main()
{
int c,t,m;
printf("input the number of coat and trousers your want buy:\n");
scanf("%d",&x);
h=x/60;
m=x%60;
printf("%d小时%d分钟",h,m);
}
3-7我使用的算法:进行千分位转换,四舍五入。
运行结果画面:
#include<stdio.h>
main()
{
double x;
scanf("%lf",&x);
printf("%7.2f\n",x);
怎样终止调试状态(程序复位)?在菜单栏中选择“调试”,然后选择“StopDebugging”。
单步调试状态下,向下运行一条语句的操作方法(分两种情况回答,第一种,跟踪到自定义函数内部,第2种,不跟踪到自定义函数内部):第一种选择“Step Into”,跟踪到自定义函数内部;第2种选择“Step over”,不跟踪到自定义函数内部
c语言程序设计实验与习题指导颜晖答案
c语言程序设计实验与习题指导颜晖答案【篇一:c语言程序设计谭浩强版何钦铭颜晖版习题答案全集】【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf(\n);for(i=1;i5;i++) /*以下为三重循环*/for(j=1;j5;j++)for (k=1;k5;k++){if (i!=ki!=jj!=k) /*确保i、j、k三位互不相同*/printf(%d,%d,%d\n,i,j,k);}}【程序2】题目:企业发放的奖金根据利润提成。
利润(i)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf(%ld,i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i=100000)bonus=i*0.1;else if(i=200000)bonus=bonus1+(i-100000)*0.075;else if(i=400000)bonus=bonus2+(i-200000)*0.05;else if(i=600000)bonus=bonus4+(i-400000)*0.03;else if(i=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf(bonus=%d,bonus);}-----------------------------------------------------------------------------【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
2.6.3同步自测C语言程序设计实验与习题指导习题答案
2.6.3同步自测C语言程序设计实验与习题指导习题答案2.6.3 同步自测一、选择题1.在C程序的函数调用时,主调函数中的实参和被调函数中的形参(B)。
(A)个数、次序必须相同,但数据类型可以不考虑(B)个数、次序和对应参数的数据类型都应该相同(C)个数、次序和数据类型均可以不相同(D)对应参数数据类型应相同,但个数和次序可以不考虑2.以下程序的输出结果是(C)。
int x=3,y=4;void main( ){ int x,y=5;x=y++;printf("%d",x);}表达式(A)3 (B)4 (C)5 (D)63.在C语言中,函数默认的存储类型为(A)。
(A)auto (B)register (C)static (D)extern4.执行下面的程序后,变量a的值是(B)。
#include#define SQR(X) X*Xvoid main(){ int a=10,k=2,m=3;a/=SQR(m)/SQR(k);printf("%d\n",a);}(A)10 (B)1 (C)5 (D)05.一个C程序的执行是从(A)。
(A)本程序的main函数开始,到main函数结束(B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束(C)本程序的main函数开始,到本程序文件的最后一个函数结束(D)本程序文件的第一个函数开始,到本程序main函数结束6.以下有关宏替换的叙述不正确的是(D)。
(A)宏替换不占用运行时间(B)宏名无类型(C)宏替换只是字符串替换;(D)宏替换是在运行时进行的7.设有以下宏定义:#define N 3#define Y(n) (N+1*n)则执行语句:z=2*(N*Y(5+1)); 后,z的值为(A)。
(A)30 (B)72 (C)48 (D)548.在C语言中,以下叙述错误的是(C)。
(A)函数被调用时,系统才为形参分配内存(B)实参和对应形参的数据类型必须一致(C)实参可以是变量、常量或表达式(D)形参可以是变量、常量或表达式9. 一个数据类型为void的函数中可以没有return语句,那么函数的被调用时(A)。
C语言程序设计练习题(答案)
C语言程序设计练习题(答案)1.1上机实训项目实验1实验步骤1、进入VC环境从“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”,这时进入VC集成环境的主菜单窗口,屏幕显示如图1_1所示。
图1-1 VC集成环境的主菜单窗口2、VC环境下C程序的编辑、连接和运行(1)新建一个源程序①在VC环境中选择“文件”菜单,然后单击“新建”菜单项。
如图1-2所示图1-2 选择新建② 在弹出的新建对话框中设置好相应的内容,如图2-2所示。
要事先准备好保存文件的目录,例d:\lx 目录。
在图1-3中“文件”一栏的源程序文件的扩展名一定要输入C 语言程序的扩展名“.c ”。
设置好后,单击“OK ”,就回到了VC++的编辑界面,即将进行输入和编辑的源程序文件example.c 文件存放在D 盘的LX 目录下。
图1-3 新建对话框的设置③ 在图1-4的工作区中,输入源程序2.设置源程序的文件名,扩展名一定要为“.c ”且一定要输入扩展名1.单击该处3.设置存放目录图1-4 输入、编辑源程序④输入源程序文件后可在主菜单栏中选择“文件”(FILE),并在其下拉菜单中选择“保存”(SAVE),如图1-5所示。
图1-5 保存源程序⑤源程序的编译如图2-6所示,单击主菜单的“编译”(Build),在其下拉菜单中选择“编译example.c”(Compile example.c),或者单击工具栏上的“编译”按钮,如图1-6所示。
在单击“编译”后,屏幕上会出现一个如图1-7所示的对话框。
内容是“This build command requires an activeproject worksapce,Would you like to create a default project worksapce?”,要创建一个默认的项目工作区,单击“是(Yes)”,表示同意,将开始编译;单击“No ”,表示不同意,将取消编译。
《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语言程序初步一、实验目的(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。
(2)了解在该系统上如何编辑、编译、连接和运行一个 C程序。
(3)通过运行简单的 C 程序,初步了解 C程序的特点。
(4)在教师的指导下,学会使用在线评判系统。
二、实验内容1.运行第一个 C 程序题目:ThefirstCProgram将下列程序输入visualc ,编译、连接和运行该程序。
includequotstdio.hquotmain printfquotThefirstCProgramnquot具体操作步骤(1)在编辑窗口中输入程序。
(2)保存程序,取名为a1.c。
(3)按照第一章中介绍的方法,编译、连接和运行程序。
,则该题完成。
4按照第三章介绍的方法,将代码提交到在线评判系统,系统返回“通过”2.在在线评判系统中提交实现了计算 ab 功能的程序题目 1001:计算ab由键盘输入两个整数,计算并输出两个整数的和。
实现该功能的程序如下,inclu dequotstdio.hquotmain int ab scanfquotddquotampaampbprintfquotdquotab(1)在程序编辑窗口中输入程序。
(2)保存程序,取名为a2.c。
(3)按照前二章中介绍的方法,编译、连接和运行程序。
(4)在程序运行过程中,输入 15 30↙↙表示输入回车符(5)如果看到如下输出结果,则表明1530 的结果正确,如果得不到如下结果,则需检查并更正程序。
45(6)按照第三章中介绍的方法进入在线评判系统。
(7)显示题目列表,点击题号为 1001,题名为“计算ab”的题目。
(8)查看完题目要求后,点击页面下端的“sumbit” ,参照第二章提交程序的方法提交程序a2.c。
(9)查看评判结果,如果得到“accepted”则该题通过,否则返回第一步检查程序是否正确。
C语言程序设计实验指导书课后答案
实验一(1)编程求37+29的值,实习VC环境。
#include<>void main(){(int a,b,sum;a=37;b=29;sum=a+b;printf("sum=%d",sum);&}(2)从键盘输入三个整数,求出最大数并输出。
#include<>》void main(){int a,b,c,y;int max(int x,int y);printf("input a,b,and c:");】scanf("%d,%d,%d",&a,&b,&c);y=max(a,b);y=max(y,c);printf("\nmax=%d\n",y);}&int max(int x,int y){int z;if(x>y) z=x;else z=y;~return(z);}(3)通过上机实践,运行下列程序并分析输出结果。
!A 程序代码#include<>void main(){char ch='a';…printf("%c对应的ASCII码是:%d\n",ch,ch);}程序输出结果:a对应的ASC||码是:97B 程序代码#include<>\void main(){int a=168;float b=;float x=,y;~printf("a=%5d\n",a);printf("a=%-5d\n",a);printf("b=%\n",b);printf("b=%e\n",b);y=(int)(x*100+/;}printf("x=f,y=%f\n",x,y);}程序输出结果:a=168《a=168b==+002x=f,y=`C程序代码#include<>void main(){int a=168;(printf("十进制数%d对应的八进制数是%o\n",a,a);printf("十进制数%d对应的十六进制数是%x\n",a,a); }程序输出结果:十进制数168对应的八进制数是250&十进制数168对应的十六进制数是a8、,实验二顺序结构已知a=,b=,c=,计算s=-4ac的结果并输出。
C语言程序设计实验及习题(1-4)
C语⾔程序设计实验及习题(1-4)ffB v vbvv bgbb实验⼀C程序运⾏环境及简单程序的运⾏2.程序改错并调试改正后的程序⑴下列程序的功能为:计算x*y的值并将结果输出,程序中有8处错误,尝试改正并上机调试之(程序以⽂件名sy1_2.cpp#includevoid main{ int x=2;y=3;aA=x*yprint ("a=%d",a);printf(‘\n’);}⑵下列程序的功能为:输⼊圆的半径,计算圆⾯积并将结果输出;程序中有9处错误,尝试改正并上机调试之(程序以⽂件名sy1_3.cpp存盘)。
#include stdio.h;int mian();float r; area;printf("input r:\n"); scanf("%f",r);area=3.14159r*r;printf("r=%f , area=%f\n"3.编写程序并上机调试⑴输⼊三个整数a、b、c,显⽰出其中的最⼤值。
4.分析与总结⑴总结C程序的结构和书写规则。
⑵阅读:附件1-C语⾔程序的跟踪调试。
特别提⽰:当程序在编译时发现很多错误,此时应从上到下逐⼀改正,或改⼀个错误,就重新再编译,因为有时⼀个错误会引起很多错误信息。
习题⼀⼀、选择题参考答案:1~5 C B A C D 6~10 C C A C B 11~14 A A C B⼆、综合题绘制NS 算法流程图。
(1)输⼊10个数,求其中的最⼤值。
(2)输⼊3个数,将它们升序排列输出。
(3)输⼊2个数,求它们的最⼤公约数。
(4)输⼊⼀元⼆次⽅程的系数a 、b 、c ,判断其根。
实验⼆顺序结构程序设计1.阅读程序,尝试写出程序的运⾏结果,然后输⼊并调试程序,对照其实际输出与分析的结果是否⼀致,若不⼀致,请找出原因。
⑴以下程序⽤于测试C中不同类型数据所占内存字节数,运⾏并体会sizeof运算符的使⽤⽅法。
(word完整版)C语言程序设计课后习题1-8参考答案
C语言程序设计课后习题1—8参考答案习题1参考答案一、简答题1、冯诺依曼计算机模型有哪几个基本组成部分?各部分的主要功能是什么?答:冯诺依曼计算机模型是由运算器、控制器、存储器、输入设备、输出设备五大功能部件组成的。
运算器又称算术逻辑部件,简称ALU,是计算机用来进行数据运算的部件。
数据运算包括算术运算和逻辑运算。
控制器是计算机的指挥系统,计算机就是在控制器的控制下有条不紊地协调工作的.存储器是计算机中具有记忆能力的部件,用来存放程序和数据.输入设备是用来输入程序和数据的部件。
输出设备正好与输入设备相反,是用来输出结果的部件。
2、简述计算机的工作原理。
答:计算机的工作原理可简单地概括为:各种各样的信息,通过输入设备,进入计算机的存储器,然后送到运算器,运算完毕把结果送到存储器存储,最后通过输出设备显示出来。
整个过程由控制器进行控制。
3、计算机软件系统分为哪几类?答:软件内容丰富,种类繁多,通常根据软件用途将其分为两大类:系统软件和应用软件。
系统软件是指管理、监控、维护计算机正常工作和供用户操作使用计算机的软件。
这类软件一般与具体应用无关,是在系统一级上提供的服务。
系统软件主要包括以下两类:一类是面向计算机本身的软件,如操作系统、诊断程序等。
另一类是面向用户的软件,如各种语言处理程序(像BC、VC等)、实用程序、字处理程序等。
在操作系统的基础上运行。
4、什么叫软件?说明软件与硬件之间的相互关系。
答:软件是指计算机程序及有关程序的技术文档资料。
两者中更为重要的是程序,它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。
在不太严格的情况下,认为程序就是软件。
硬件与软件是相互依存的,软件依赖于硬件的物质条件,而硬件则需在软件支配下才能有效地工作.在现代,软件技术变得越来越重要,有了软件,用户面对的将不再是物理计算机,而是一台抽象的逻辑计算机,人们可以不必了解计算机本身,可以采用更加方便、更加有效地手段使用计算机。
C语言程序设计习题解析与实验指导(含答案)
样采用指数形式,但尾数部分被省略了,也不合法;答案 C 采用小数形式,其小数部分可以省略;
答案 D 表示的是整型常量。因此本题选择答案 C。
3. 下列不合法的常量是
。
A.'\x4A'
B." "
C. .8e0
D.'\483'
【参考答案】D
【解析】此题考查的是各种数据类型常量的表示方法:答案 A 是一个转义字符常量,“\x”后
的程序叫做目标程序。由于计算机只能识别二进制码,因此用机器语言编写的源程序就是计
算机能直接识别并运行的目标程序,二者之间无需经过任何翻译;而用汇编语言编写的源程
序需要经过汇编程序汇编才能得到对应的目标程序;用高级语言编写的源程序经过相应的编
译器编译或者用解释的方式得到目标程序,不同语言对应的编译程序或者说编译器不一样。
一、单选题
1.以下哪一个可以作为正确的变量名
。
A. R&D
B._filename C.for D.$X;
【参考答案】B
【解析】此题考查的是标识符的命名规则:标识符是以字母或下划线开头,后面跟字母、
数字、下划线的任意字符序列。答案 A 中的变量名使用了“&”号,不符合要求;答案 C
是关键字,而用户自定义标识符不能使用关键字;答案 D 的变量名以“$”开头,不符合以
2
主教材习题答案及解析 1-3 章
输入设备:键盘、光电笔、扫描仪、鼠标、摄像头、数码相机、手写输入板、游戏杆、 麦克风;
输出设备:打印机、音响、显示器、绘图仪; 既是输入设备又是输出设备:U 盘、SD 卡、光盘、触摸屏、硬盘。 【解析】根据输入设备、输出设备、外存储器的功能以及这些硬件本身的功能区分。 4.简述源程序与目标程序的关系。 【参考答案】 程序员用某种编程语言所编写的程序称为源程序;计算机能直接执行的程序称为目标程 序。目标程序的操作码和操作数都是 0/1 序列,而源程序却不一定是 0/1 序列。源程序必须 转换为目标程序计算机才能读懂并执行。 用机器语言编写的源程序就是目标程序;用汇编语言编写的源程序必须用汇编程序经过 汇编得到目标程序;用高级语言(不是全部)编写的源程序必须用特定的编译程序经过编译 得到目标程序。但并非所有的高级语言编写的源程序都会被编译为目标程序,有的高级语言 例如 BASIC 语言的源程序就是通过解释方式执行程序的,就是边扫描边解释,逐句输入逐 句翻译,计算机一句句执行,并不产生目标程序。 【解析】根据教材 1.2.2 小节的知识。 5.简述 C 程序的开发过程。 【参考答案】 一个 C 程序从编写到执行出结果一般需要 6 个步骤:编辑、预处理、编译、链接、装 载和执行。下面是这几个步骤所完成的任务。 (1)编辑 编辑是通过输入设备将 C 语言源程序录入到计算机中,生成扩展名为“.c”的源文件。 (2)预处理 预处理是指通过预处理器对程序中的预处理指令(它们是为优化代码而设计的)进行转 译。每条预处理指令以符号“#”开头。 (3)编译
《C语言程序设计》实验设计习题答案
实验三3.4编写程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数输出void main(){char c1,c2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);putchar('\n');printf("%c %c\n",c1,c2);}3.5把790分钟换成用小时和分钟表示,然后输出。
void main(){int s=790;printf("%d小时",s/60);printf("%d分钟",s%60);}3.6将读入三个数a,b,c,然后交换它们的值,把a的值给b,把b的值给c,把c的值给a.main(){int a,b,c,t;scanf("%d,%d,%d",&a,&b,&c);t=a;a=b;b=c;c=t;printf("%d,%d,%d",a,b,c);3.7输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入处理,然后输出此数,验证处理是否真确。
#include<stdio.h>void main(){float x,s,a;int z;scanf("%f",&x);a=100*x+0.5;z=(int)(a);s=z/100.0;printf("%.2f\n",s); }main(){int a,b,t;double c;scanf("%lf",&c);b=100*c;t=1000*c;a=t%10;if (a>=5) b=b+1;else b=b+0;c=1.0*b/100;printf("%7.2lf/n",c); return 0;}void main(){int x,y;scanf("%d",&x);if(x<0&&x>-5) y = x ; if(x==0) y = x-1;if(x<10&&x>0) y = x+1; printf("%d",y);}实验四4.2不嵌套if语句void main(){int x,y;scanf("%d",&x);if(x<0&&x>-5) y = x ;if(x==0) y = x-1;if(x<10&&x>0) y = x+1;printf("%d",y);}法二:嵌套if语句void main(){int x,y;scanf("%d",&x);if((x>-5)&&(x<0)) y=x;else if(x==0) y=x-1;else if(x<10&&x>0) y=x+1;printf("%d",y);}4.3如下程序运用条件运算符求变量的绝对值?void main(){int a,M;scanf("%d",&a);M=a>0?a:-a;printf("abs(a)=%d",M);4.4某服装店经营套服,也可单件出售,若买的不少于50套,每套80元,不足50套的每套90元,只买上衣每件60元,只买裤子每条45元,(读入所买上衣C和裤子t的件数,计算应付款m。
C语言程序设计实验实验指导书及答案
实验一熟悉C程序运行环境班级学号姓名成绩一、实验目的1. 熟悉C语言Visual C++调试环境;2. 掌握C程序的编辑、调试及运行;二、实验内容项目1. 调试并运行下面程序,并写出运行结果:include <>int main{printf“Good morning\n”;printf“Hello,world\n”;return 0;}运行结果注意,按照屏幕输出格式写:项目2. 调试并运行下面程序,并写出运行结果:include <>int main{int a , b , sum; /定义变量/a=23; b=56; /为变量赋值/sum=a+b; /计算两个变量的和/printf“sum is %d\n”,sum; /输出计算结果/return 0;}运行结果:项目3. 调试并运行下面程序,并写出运行结果:include <>int maxint,int;int main{int a , b , c; /定义变量/a=23; b=56; /为变量赋值/c=maxa,b; /调用max函数,将得到的值赋给c/ printf“max is %d\n”,c; /输出c的值/return 0;}int maxint x,int y /定义max函数,函数值为整型/ {int z; /定义变量/ifx>yz=x;elsez=y;returnz; /将z的值返回/}运行结果:三、提高部分1.试想,如果求10个数中的最大者,则程序该如何编写;程序代码运行结果:实验二数据及其运算班级学号姓名成绩一、实验目的1. 掌握C数据类型的概念、熟悉整型、字符型和实型基本类型的常量的用法;学会三种基本类型变量的定义、赋值和使用方法;2. 掌握算术表达式、关系表达式及逻辑表达式的特点及用法;3. 熟悉运算符的优先级和结合性的概念;4. 学习简单程序的编写方法;二、实验内容项目1. 编辑运行下面程序,并分析运行结果;include<>int main{int m,a,b,c,d,e; /定义整型变量/printf“please input a data:m=”;scanf“%d”,&m;/从键盘输入一个整数/a=m+1;b=m-2;c=m3;d=m/4;e=m%5;printf“a=m+1;a=%d\n”,a;printf“b=m-2;b=%d\n”,b;printf“c=m3;c=%d\n”,c;printf“d=m/4;d=%d\n”,d;printf“e=m%%5;e=%d\n”,e;return 0;}运行结果:项目2. 编辑运行下面程序,并分析运行结果;include<>int main{float m,n,s;printf“m=”;scanf“%f”,&m;/输入矩形的边长/printf“n=”;scanf“%f”,&n;/输入矩形的边长/s=mn; /计算矩形的面积/printfs=%f\n”,s;/输出矩形的面积/return 0;}1输入24和5,运行结果:2输入-24和5,运行结果:分析结果是否正确3对上面程序进行修改,当输入一个非法的边长负数或零,会给出提示而不计算矩形的面积;输入-24和5,运行结果:项目3. 先阅读程序,并写出结果,再运行程序并分析结果;include<>int main{int i,j,m,n,p,q,x,y;i=8;j=10;p=0;q=0;x=1;y=1;m=++i;选做根据矩形面积的计算方法,编写一个输入圆半径r,计算园周长L和圆面积S的程序;注意判断圆半径r是否大于零;程序代码和运行结果可写在指导书背面实验三程序控制结构选择班级学号姓名成绩项目1.三角形成立条件判断及面积计算项目任务输入三个整型数据,判断这三个整型数据能否围成三角形,如果能组成三角形,计算并输出它的面积,如果不能围成三角形输出“三条边不能围成三角形”;项目说明C语言实现选择结构筑要用if语句,按照判断所给定的条件是否满足,根据判定结果的真或假来决定执行在if语句中给出的两种操作之一;项目目的1正确使用关系表达式和逻辑表达式表达条件;2学习分支语句if的使用方法;3进一步熟悉VC集成环境的使用方法,学习VC环境提供的调试工具;项目要点1已知三边求三角形面积的公式:p=a+b+c/2 s= sqrtpp-a p-b p-c2已知三边能围成三角形的条件是:任意两边之和大于第三边;3C语言中求平方根的函数是sqrtdouble x,该函数在头文件中;4if语句中“表达式”必须用“”和“”括起来,它的值为逻辑值;除常见的关系表达式或逻辑表达式外,也允许是其他类型的数据,如整型、实型、字符型等;5else子句可选是if语句的一部分,必须与if配对使用,不能单独使用;程序代码:运行结果:项目2. 百分制成绩转换为成绩等级项目任务输入一个百分制成绩,输出对应的等级;项目目的1正确使用关系表达式和逻辑表达式表达条件;2学习多switch分支选择语句的使用方法;项目要点解决本项目的关键是如何将输入的百分制成绩与case 常量联系起来,不难想到将百分制成绩用score 表示除以10之后再取整,一定得到0到10之间的数;9、10对应’a ’,8对应‘b ‘,……,5、4、3、2、1、0对应’e ’既不及格; 程序代码:运行结果:项目3.选做⎝⎛<--=>+=0100012x x x x x y ;程序代码和运行结果可写在指导书背面实验四程序控制结构循环班级学号姓名成绩项目1:使用循环结构实现重复处理项目说明从键盘输入一个班的成绩,把百分制转换成等级制;将百分制成绩用score表示除以10之后再取整,一定得到0到10之间的数;9、10对应’a’,8对应‘b‘,……,5、4、3、2、1、0对应’e’既不及格;要求分别使用三种循环结构实现;该项目中,假设班级人数不固定,规定输入若干0至100的成绩,如果成绩不在此范围,则表示结束;该项目中,同时要使用switch语句实现多分支选择结构;项目目的1掌握用while语句和do…while语句实现循环的方法;2掌握用for语句实现循环的方法;3掌握三种语句的特点和应用技巧;4掌握用break语句和continue语句改变循环状态的方法;项目内容1、用while语句实现的程序代码:2、用do…while和break语句实现的程序代码:3、用do…while和continue语句实现的程序代码:4、用for语句实现的程序代码:项目2.选做求101!nn =∑即求1!2!3!10!++++程序代码和运行结果可写在指导书背面实验五数组班级学号姓名成绩项目1.冒泡排序法项目说明输入10个数,用“冒泡法”对10个数排序由小到大;冒泡法的基本思想:通过相邻两个数之间的比较和交换,使数值较小的数逐渐从底部移向顶部,较大的数逐渐从顶部移向底部;就像水底的气泡一样逐渐向上冒,故而得名;项目目的1掌握冒泡排序算法的编程;2掌握与数组有关的算法;程序代码:运行结果:项目2.字符统计项目说明有一篇文章,共有3行文字,每行80个字符;要求分别统计出其中英文字母和数字的个数;项目目的1掌握键盘输入字符串方法;2掌握二维数组的处理方法;技术要点13行文字可定义一个二维字符数组来表示;2使用gets 函数对字符串进行输入;程序代码:include <>int main{int i,j,upp,low,dig,spa,oth;char text380;upp=low=dig=spa=oth=0;for i=0;i<3;i++{ printf"please input line %d:\n",i+1;getstexti;for j=0;j<80 && textij='\0';j++{if textij>='A'&& textij<='Z'upp++;else if textij>='a' && textij<='z'low++;else if textij>='0' && textij<='9'dig++;else if textij==' 'spa++;elseoth++;}}printf"\nupper case: %d\n",upp;printf"lower case: %d\n",low;printf"digit : %d\n",dig;printf"space : %d\n",spa;printf"other : %d\n",oth;return 0;}运行结果:项目3.选做在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小,则该元素即为该二维数组的一个鞍点;要求从键盘上输入一个二维数组,当鞍点存在时,把鞍点找出来; 程序代码和运行结果可写在指导书背面实验六函数班级学号姓名成绩项目1:使用函数实现对二维数组转置;项目说明写一个函数,使给定的33的二维整型数组转置,即行列互换;要求输出转换之前和转换之后的结果; 项目目的1掌握函数的定义和调用;2掌握二维数组名作为函数的参数的使用技巧;技术要点1使用二重循环对二维数组进行输入,处理和输出;2二维数组名作为函数的参数,定义函数需要给出第二维的大小;程序代码:运行结果:项目2:使用函数实现成绩处理项目说明输入3个学生4门课的成绩,分别用函数实现以下功能:1计算每个学生的平均分;2计算每门课的平均分;3找出12个分数中最高分数所对应的学生和课程;项目目的1掌握函数的定义和调用;2掌握全局变量的使用;技术要点学生成绩可定义成全局的二维数组,这样自定义函数可以直接使用,而不需要进行参数的传递; 程序代码:运行结果:项目3.选做求101!nn =∑即求1!2!3!10!++++阶乘要求使用递归函数来实现,程序代码和运行结果可写在指导书背面实验七指针班级学号姓名成绩项目1.使用指针参数交换两个变量值项目说明用函数实现两个变量值的交换,使其在主调函数和被调函数中的值一致,并且返回这两个变量的和以及乘积;要求用指针变量作为函数参数;项目目的1熟悉如何定义指针变量,掌握将指针变量作为函数参数的方法;2掌握通过指针参数由被调函数向主调函数传递多个值的方法;技术要点由于变量的值始终存放在内存单元中,因此,要交换两个变量的值,只需交换这两个变量对应的存储单元的值即可,这就需要知道两个变量的地址;也就是说,需要保证主调函数与被调函数中所要交换的两个数的内存单元是同一内存单元,即传递的参数是内存单元的地址,而不是内存单元中的值;程序代码:运行结果:项目2. 数组的排序和的插入项目目的1熟悉如何定义指针变量,掌握将指针变量指向一维数组元素的方法;2掌握如何对数组进行排序;3掌握如何在一个有序的数列中查找合适的位置;4掌握如何将一个数插入到一个有序数列中;技术要点1排序可采用冒泡法或者选择法;2有序数组中插入一个数的关键是找到该数据插入的位置,然后将插入位置及其后的所有元素均后移一位,在空出的位置放入待插入的数据;例如,在13、27、38、49、65、76、97 这列有序数据中插入53 这个数,成为新的有序数列13、27、38、49、53、65、76、97;4定义数组时多开辟一个存储单元,用于存放待插入的数据;程序代码:运行结果:项目3.选做程序代码和运行结果可写在指导书背面编写函数 int findint p,int n,int x,在指针 p 所指的数组中查找整型数 x,如果 x 在数组中,则该函数返回 1,否则返回 0;n 为数组的大小;编写主函数测试之;。
c语言程序设计实验题答案
c语言程序设计实验题答案【篇一:c语言程序设计及实验指导练习及习题参考答案(8--10)】8练习参考答案1、练习8-1. 如果有定义:int m, n = 5, *p = m; 与m = n 等价的语句是 b 。
a.m = *p; b. *p = *n; c. m = n; d. m = **p;8-2. 设计一个程序计算输入的两个数的和与差,要求自定义一个函数sum_diff(float op1, float op2, float *psum, float *pdiff),其中op1 和op2 是输入的两个数,*psum 和*pdiff 是计算得出的和与差。
解答:#include stdio.hint main (void){float op1, op2, sum, diff;void sum_diff(float op1, float op2, float *psum, float *pdiff);printf(“input op1 and op2: “);scanf(“%f%f”, op1, op2);sum_diff(op1, op2, sum, diff);printf(“%f+%f=%f; %f-%f=%f \n”,op1,op2,sum,op1,op2,diff);return 0;}void sum_diff(float op1, float op2, float *psum, float *pdiff){*psum = op1 + op2;*pdiff = op1 – op2;}8-3. 两个相同类型的指针变量能不能相加?为什么?解答:不能。
因为指针变量是一种特殊的变量,指针变量的值存放的是所指向变量的地址,两个地址相加并不能保证结果为一个有效的地址值,因而在c 语言中指针变量相加是非法的。
8-4. 根据表8.2 所示,这组数据的冒泡排序其实循环到第6 遍(即n-2)时就已经排好序了,说明有时候并不一定需要n-1 次循环。
c程序设计教程与实验课后实验答案
c程序设计教程与实验课后实验答案【篇一:c程序设计教程与实验__吉顺如__实验一到七】> 一、实验目的1.掌握在visual c++6.0环境下c程序的建立、编辑、编译和执行过程。
2.掌握c程序的最基本框架结构,完成简单程序的编制与运行和调试。
3.掌握发现语法错误、逻辑错误的方法以及排除简单错误的操作技能。
二、实验内容1.从键盘输入两个数a和b,求它们的平方和,并在屏幕上输出。
输入该c程序,编译并运行之,记下屏幕的输出结果,以文件名sy1_1.c保存。
#include stdio.h main() {int a,b,sum; /*定义整型变量a、b、sum */ printf(please input a,b \n); /*输出提示信息*/(1计算x*y的值并将结果输出。
试纠正程序中存在的错误,以实现其功能。
程序以文件名sy1_2.c保存。
#include stdio.hmainmain(){ int x=2;y=3;a int x=2,y=3,a; a=x*ya=x*y;print (a=%d,a);printf (a=%d,a); printf(\n);}(2)下程序的功能为:求两数中的较大数据并输出。
纠正程序中存在的错误,以实现其功能。
程序以文件名sy1_3.c保存。
#include stdio.h1viod main()voidmain() {int a ,b , max;scanf(“%d,%d”,a,b);scanf(“%d,%d”,a,b); max=a; max=a;if (maxb) max=b; if (maxb) max=b; printf(“max=%d”,ma x);printf(“max=%d”,max); }3.程序填空题(1)从键盘输入两个整数,输出这两个整数的和。
根据注释信息填写完整程序,以实现其功能。
以文件名sy1_4.c保存。
#includestdio.h main() {/* 定义整型变量x,y,total*/ printf(please input x,y !);/*输出提示信息 *//*由键盘输入两个数分别赋予x和y*/ total=x+y;/*赋值语句 */printf(%d + %d=%d\n,x,y,total);/* 输出两个整数的和 */ }(2)从键盘输入两个整数,输出这两个整数的差。
C语言程序设计实验与习题指导同步自测答案
C语言程序设计实验与习题指导同步自测答案2.1.3 同步自测一、选择题1.D2.C3.D4.C5.A6.B7.D8.C二、填空题1.①c ②exe2.①main3.①函数说明部分②函数体4.①主或main ②主或main5.①;2.2.3 同步自测一、选择题1.B2.D3.C4.C5.C6.B7.D8.A9.C 10.B 11.D 12.D 13.D 14.C 15.C 16.D 17.C 18.C 19.B 20.A 21.D 22.A 23.D 24.C 25.D 26.B 27.B 28.D 29.D 30.C 31.A 32.B 33.D 34.B 35.C2.3.3 同步自测一、选择题1.B2.C3.D4.A5.B6.A7.A8.A9.D 10.B2.4.3 同步自测一、选择题1.B2.A3.B4.C5.B6.D7.C8.A9.D 10.B 二.编程题1.#include<stdio.h>void main(){int x,y;printf("请输入自变量x的值: ");scanf("%d",&x);if(x<0) y=3*x+1;else if(x<5) y=2*x;else y=x+2;printf("\n函数y的值为: %d",y);}2.#include<stdio.h>void main(){int a,b,c,d,t;printf("请输入四个整数:\n");scanf("%d%d%d%d",&a,&b,&c,&d);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;c=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}printf("按新顺序输出的数为: %d %d %d %d",a,b,c,d);}2.5.3 同步自测一、选择题1.C2.C3.D4.D5.D6.C7.D8.B9.A 10.B11.B 12.B 13.B 14.B 15.C二、填空题1.①getchar()2.①n++3.①′\n′②num++;4.①n<=m ②total=total+sum5.①(i/100)*(i/100)*(i/100)+((i/10)%10)*((i/10)%10)*((i/10)%10)+(i%10)*(i%10)*(i%10)②g==i6.①107.①i%j==08.①b9.①y=1 ②x%i==0 10.①2*x+4*y==90三.读程序写结果题1. 8,172. 57233. 4四.编程题1.main(){int x,y,a,b;for(x=100;x<1000;x++){y=0;a=x;while(a){ y=y*10+a%10;a=a/10;}if(x+y==1333)printf("a=%d;b=%d;c=%d\n",x/100,(x/10)%10,x%10);}}2.main(){long x,y/* 存放x */,n/* 记录x的位数 */,s/* 存放x*x */;long z /* 存放被取的顺序从右到左的相应部位数字 */,t/*十进制的权*/; for(x=1;x<=100;x++){y=x;n=0;z=0;t=1;while(y){n++; /* 记录x的位数 */y=y/10;}s=x*x;for(;n>0;n--){z+=(s%10)*t; /* 取相应部位数字 */t*=10;s=s/10;}if(x==z) printf("%-10ld",x);}}3.main(){int i;for(i=1;i<=100;i++)if((i+3)%5==0&&(i-3)%6==0){printf("%d",i);break;}}4.main(){int x,a,b,c;for(x=100;x<1000;x++){a=x/100;b=(x/10)%10;c=x%10;if(a*a*a+b*b*b+c*c*c==1099)printf("%-10d",x);}}5.main(){int x,a,b,c,count=0;for(x=100;x<1000;x++){a=x/100;b=(x/10)%10;c=x%10;if(a+b+c==5)count++;}printf("共有%d个其各位数字之和是5的数字",count);}2.6.3 同步自测一、选择题1.B2.C3.D4.B5.A6.D7.D8.D9.D 10.B 11.B 12.A 13.D 14.D 15.B 16.B 17.A 18.A 19.B 20.A21.A 22.D 23.D 24.A 25.A二、填空题1.① fac(n-1)2.①a*a%8!=13.①a%b4.①i++5.①j!=0 或 j ② n%10+’0’6.① x>=’a’&&x<=’z’7.① x=n ②n%10 ③x三、读程序写结果题1. 9,192. f=63. 1 2 35. 306. -5,-12,-77. 10,20,30 8. !EDCBA9. 4321 10. 713. 5,2517. 15,145 18. 6四、编程题1.#include <stdio.h>void delspace(char *s){ int i,j;for(i=0,j=0;s[i]!=’\0’;i++)if(s[i]!=’ ’){s[j]=s[i];j++}s[j]=’\0’;}{ char *str;printf(“input string:”);gets(str);delspace(str);printf(“%s”,str);}3.#include <stdio.h>#include <math.h>void main(){int isprime(int x);int a;printf(“please input the number:\n”);scanf(“%d”,&a);if(isprime(a))printf(“the %d is a prime\n”,a);elseprintf(“the %d is not a prime\n”,a);}int isprime(int x){ int j;for(j=2;j<=sqrt(x);j++)if(x%j==0) return 0;return 1;}2.7.3 同步自测一、选择题1.C2.A3.C4.A5.D6.C7.C8.D9.B 10.B11.D 12.C 13.D 14.D 15.B二、填空题1.① k=p2.①a[i][j]<min3.① i+j==24.① continue5.①j=3 ② a[j-1][k-1]6.① x/10 或int(x/10)7.① !(s[i]>=’0’&&s[i]<=’9’)8.①a[n-i-1]=temp三、读程序写结果题1. max=10,row=2,colum=12. 18,103. countryside4. xbcdBCD四、编程题1. 参考程序及评分标准一:#include<stdio.h>#define N 5viod main(){ int a[N+1],x,i,k;for(i=0;i<N;i++)scanf("%d",&a[i]);scanf("%d",&x); //2分 for(i=0;a[i]<x&&i<N;i++); //3分 for(k=N;k>i;k--)a[k]=a[k-1];a[i]=x; //3分 for(i=0;i<=N;i++)printf("%5d",a[i]);putchar(‘\n’); //2分 }参考程序及评分标准二:#include<stdio.h>#define N 5viod main(){ void insert(int v[],int n,int x);int a[N+1],x,i;for(i=0;i<N;i++)scanf("%d",&a[i]);scanf("%d",&x); //2分 insert(a,N,x); //2分 for(i=0;i<=N;i++)printf("%5d",a[i]);putchar(‘\n’); //2分 }void insert(int v[],int n,int x){int i,k;for(i=0;v[i]<x&&i<n;i++); //2分 for(k=N;k>i;k--)v[k]=v[k-1];v[i]=x; //2分}3.#include <stdio.h>#include <string.h>void main(){void copystr(char *p1,char *p2,int m);sca nf(“%s”,str1);scanf(“%d”,&m);if(strlen(str1)<m)printf(“input error”);else{ copystr(str1,str2,m);printf(“the result is :%s”,str2);}}void copystr(char *p1,char *p2,int m){ int n=0;while(n<m-1){n++; p1++;}while(*p1!=’\0’){*p2=*p1;p1++;p2++;}*p2=’\0’;}2.9.3 同步自测一、选择题1. 2. 3. 4. 5. 6. 7. 8. 9. 10.11. 12. 13. 14. 15.。
C语言程序设计实验与习题答案
2.程序填空(1)以下程序的功能是计算1~50之间能被7整除的整数之和。
#include<stdio.h>void main(){int i,sum= 0;for(i=1; 50;i++)if( i%7==0) sum+=i;printf("sum=%d\n",sum);}(2) 下面程序接收来自键盘的输入,直到输入<Ctrl>+Z(值为-1)键为止。
这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。
请填空。
#include <stdio.h>void main(){char cx;char front=’’;while ( (cx=getchar())!=’\n’){if (cx!=’’)putchar(cx);if (cx= =’’)if (front!=’’)putchar(cx);front=cx;}}3.程序改错(1)下列程序的功能是求1+3+5+…99的和。
#include <stdio.h>void main( ){ int s,i; ★ //int s=0,i;i=1;while(i<=99)s=s+i;★ //{s=s+i;i++;}printf("1+3+5+…99的和是:%d\n",s);}(2)下面程序的功能是输入一个正整数,判断是否是素数,若为素数输出1,否则输出0。
#include <stdio.h>void main(){ int i,x,y=0; ★ //y=1scanf("%d",&x);for(i=2;i<=x/2&&y;i++)if ((x%i)!=0) y=0; ★ //x%i==0 printf("%d\n",y);}4.设计性实验(1)题/* 方法(1)精度控制 */#include <stdio.h>#include <math.h>main(){ int s;float n,t,pi;t=1; pi=0; n=1.0; s=1;while((fabs(t))>=1e-6){ pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;printf("pi=%10.6f\n",pi);}/* 方法(2)次数控制*/#include <stdio.h>#include <math.h>main(){ int s;long times;float n,t,pi;t=1; pi=0; n=1.0; s=1;for(times=1;times<=1e9;times++){ pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;printf("pi=%10.6f\n",pi);}(2)题main(){int i,j,frame;double wheattal=0;double wheatfnu=1;printf("Please input frame’s numbers:");scanf("%d",&frame);for(i=0;i<frame;i++){wheattal+=wheatfnu;wheatfnu+=wheatfnu;}printf("\n Total wheattatol’s timeter=%e\n",wheattal/1.40e8); }(3)题/*方法一:使用递推公式n=n+2*/main(){int i,n=1;double s=0,t=1;for(i=1;i<=20;i++){t*=n;s+=t;n+=2;}printf("s=%lf",s);getch();}/*方法二:使用通项公式2*i+1*/main(){int i;double s=0,t=1;for(i=1;i<=20;i++){t*=2*i+1;s+=t;}printf("s=%lf",s);getch();}/*方法三*/#include "stdio.h"main(){long total,sum,m,n,t;total=0;for(m=1;m<=20;m++){sum=1;t=1;for(n=1;n<=m;n++) { sum=sum*t; t=t+2;} total=total+sum;}printf("total=%ld",total);}2.程序填空(1)以下程序的功能是计算1~50之间能被7整除的整数之和。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 程序填空(1) 以下程序的功能是计算1〜50之间能被7整除的整数之和。
#in clude<>void mai n(){int i,sum= _____ 0______ ;for(i=1; 50 ______ ;i++)if( i%7==0 ) sum+=i;pri ntf("sum=%d\n",sum);}(2) 下面程序接收来自键盘的输入,直到输入<Ctrl>+Z值直为-1)键为止。
这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。
请填空。
#in clude <>void mai n(){char cx;char front=' ';while ((cx=getchar())!=' \n' ){if (cx!=‘')putchar(cx);if (cx=—')if (front!='') putchar(cx);front=cx;}}3. 程序改错(1)下列程序的功能是求1+3+5+…99的和。
#in clude <>void main( ){ int s,i; ★ 10.6f10.6f10.6f10.6f 代表个数*/for(i=1;i<=9;i++)for(j=0;j<=9;j++)for(k=0;k<=9;k++)if(i*i*i+j*j*j+k*k*k==1099) /* 在所有组合中找出满足指定条件的*/{printf("%4d",100*i+10*j+k);n++;if(n%5==0) printf("\n"); /* 表示每行输出5 个数*/}}#include<>#include<>main(){int i,j,k;for(i=1;i<=4;i++) /* 上三角形有4 行,每循环1 次输出1 行*/{for(k=1;k<8-((2*i-1)/2);k++) /* 该循环输出每行的空格.8 用于调节偏离位置,可换成别的数( >=8) */printf(" ");for(j=1;j<=2*i-1;j++) /* 该循环输出每行的 '*字'符*/printf("*");putchar( n''); /* 换行*/}for(i=3;i>=1;i--) /* 下面为倒三角形,有3 行*/{for(k=1;k<8-((2*i-1)/2);k++)printf(" ");for(j=1;j<=2*i-1;j++)printf("*");putchar( n'' );}}main( ){ int n=1,score,t; scanf("%d",&score); while (score>=0&&n<=5) { n++;t=0;while(score!=0){ t=t+(score%10)*(score%10); score=score/10;}if(t==108)printf("%d",score);scanf("%d",&score);}#include ""main(){float x0,x1,x2,fx0,fx1,fx2; /*x1,x2 分别表示每次区间的左右端点,x0 代表区间的中间点,fx0,fx1,fx2 代表相应点的函数值*/do{printf("please input x1&x2:");scanf("%f,%f",&x1,&x2);fx1=x1*((2*x1-4)*x1+3)-6;fx2=x2*((2*x2-4)*x2+3)-6;}while(fx1*fx2>0); /* 该循环指定有根的区间*/do{x0=(x1+x2)/2;fx0=x0*((2*x0-4)*x0+3)-6;if((fx0*fx1)<0) /* 丢掉右区间*/{x2=x0;fx2=fx0;}else /* 丢掉左区间*/{x1=x0;fx1=fx0;}while(fabs(fx0)>1e-5); /* 该循环实现二分法求根*/ printf("root x=%f",x0);}}2)程序填空(1)#include <>void main(){int m,n,num1,num2,temp;printf("Input two positive integer:\n"); scanf("%d,%d",&num1,__&num2 );if(num1<num2){temp=num1; num1=num2; num2=__temp _____ ;}m=num1;n=num2;while(n!=0){ temp=__m%n _________ ;m=n;n=temp;}printf("The grestest common divisor is %d\n",m);printf("The lowest common multiple is %d\n",num1*num2/__m ___ );}(2)下面程序是计算表达式1+(1+2)+(1+2+3)+…+(1+2+3+…+10)和。
#in clude<>void mai n(){int sum,i,j,t;sum二 ___ ① ______ ;for(i=1;i<=10;i++){t=0;for(j=1;j<= ______ ② ________ ;j++)t=t+j;sum二 ___ ③ ________ ;}pri ntf("1+ (1+2) + (1+2+3) + ...+ (1+2+3十 (10)=%d\n",sum);}①0 ②i ③sum+t3.程序改错(1)下面的程序是求1〜100之间的素数,并将所有素数按每行10个输出。
#in clude <>#defi ne <> ★10.3f ⑴①a[10]=x;②break;③a[k]=x;附:算法简析mai n(){int x,i,j,k;/*感觉似乎j定义了没什么作用*/int a[11]={8,18,28,38,48,58,68,78,88,98};printf(" 请输入需要插入的一个整数:"); scanf("%d",&x);a[10]=x;/* 把x 放到数据串最末位置*/ for(i=0;i<10;i++)if(x<a[i]) {k=i;break;}/* 寻找x 的插入点,当发现插入点时退出*/for(i=10;i>k;i--)/* 将插入点以及其后的每个数据后移一个单位(给x 腾位) *//* 实例演示——腾位8 18 28 38 48 58 68 78 88 98 ( x)8 18 28 38 38 48 58 68 78 88 98插入点*/a[i]=a[i-1];a[k]=x;/* 将x 放到插入点位置*/for (i=0;i<11;i++)printf("%3d",a[i]);printf("\n");}⑵① i%7==0||i%11==0②n++③i%5==03.⑴ a.将continue;改为break;b. 将i二k-1;改为j=k-1;c. 将j=k+1;改为i=k+1;d. 将for(i=0;i<10;i++) 改为for(i=0;i<9;i++); 附:算法简析#include <>void main(){int x, i,j,k;int a[10]={ 8,18,28,38,48,58,68,78,88,98}; printf(" 请输入需要删除的一个整数:");scanf("%d",&x);i=0;j=9;while(i<=j){k=(i+j)/2 ; if(a[k]==x) break; if(a[k]>x) j=k-1; if(a[k]<x) i=k+1;}/* 二分法查找x 在数组中的位置,该位置即删除点,注意始末坐标不要弄颠倒*/if(i>j) printf(" 需要删除的数不在数组中\n");else { for( ;k<9;k++) a[k]=a[k+1];/* 挤位,后面的数据向删除点靠拢*//* 实例演示——挤位(若删除38)删除点8,18,28,38,48,58,68,78,88,988,18,28,48,58,68,78,88,98,98 */for (i=0;i<9;i++)/* 删除一个数,只剩9 个,数组最末尾储存的是重复的数据(倒数第二个),故不输出*/printf("%5d",a[i]);}}⑵a.将for(i=0,j=0;iv=10;i++)改为for(i=1,j=0;iv=10;i++)b. 将if(i%3=0)改为if(i%3==0)c. 将for(;j>=0;j++)改为for(;j>=0;j--)4.⑴#include<> #include<> int isprime(int x){int k=sqrt(x);for(;k>1;k--) if(x%k==0) return 0;return x;}void sort(int a[],int x){int i,k,t; for(i=0;i<x-1;i++) for(k=i+1;k<x;k++) if(a[i]>a[k]){ t=a[i]; a[i]=a[k]; a[k]=t;}}void main(){int num[50],prime[50],i,n=0,j; printf("PLease input 50 integers:\n"); for(i=0;i<50;i++) { scanf("%d",&num[i]); if((j=isprime(num[i]))!=0) prime[n++]=j;} sort(prime,n); printf("The sorted prime numbers are : \n"); for(i=0;i<n;i++) printf("%-5d",prime[i]);} ⑵ #include<>#include<>main(){char input[10],paswor[10]="password",ch,flag=0;int count=1,i=0;while(count<=3){printf(" 请输入密码:");while((ch=getch())!=13){input[i++]=ch;putchar( '* ');}input[i]= 0';if(strcmp(input,paswor)==0){printf("\n\n 你好!我的主人!");flag=1;break;}elseprintf("\n\n 离我远点!"); count++;getch();}if(flag==0)printf(" 密码输入三次错误,你不是我的主人!\n\n 离我远点!否\n\n 则,我很生气,后果很严重");getch();}⑶main(){int num[10],i,max,min,maxj,minj;printf("Please input the data:\n");scanf("%d",&num[0]);max=min=num[0];for(i=1;i<10;i++){ scanf("%d",&num[i]); if(max<num[i]){max=num[i];maxj=i;}if(min>num[i]){min=num[i];minj=i;}}printf("The maximum element ' s underside is %d,max=%d",maxj,num[maxj]);nThe minimum element ' s underside is %d,min=%d",minj,num[minj]);}⑷#include<>#include<> void input(int a[],int *n) {int i;printf("How many datas do you want to input "); scanf("%d",n);printf("\nPlease input %d datas:\n",*n);for(i=0;i<*n;i++)scanf("%d",&a[i]);}void sort(int a[],int n){int i,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}void menu(int a[],int n){int i;gotoxy(1,24); printf("Datas: "); for(i=0;i<n;i++)printf("%-3d",a[i]);gotoxy(1,1);printf(" MENUprintf("************************\n"); printf("* \n"); *\n");printf("* a data *\n");printf("* *\n");printf("* a data *\n");printf("* *\n"); printf("* a data *\n");printf("* *\n"); printf("* *\n");printf("* *\n"); printf("************************\n");printf("PLease input a command==>");}void find(int a[],int n){int x;int low=0,high=n-1,mid;printf("\nPLease input a data to be searched: ");scanf("%d",&x); while(low<=high){mid=(low+high)/2;if(x==a[mid]) break;else if(x>a[mid]) low=mid+1;else high=mid-1;}nThis data can ' t be found in the database!"); else {printf("\nThis data is in the position %d",mid); gotoxy(7+3*(mid+1)-2,23);putchar(25);}}void insert(int a[],int n){int x,k,i;printf("\nPLease input a data to be inserted:"); scanf("%d",&x);a[n]=x; for(i=0;i<n;i++)if(x<a[i]) {k=i;break;}for(i=n;i>k;i--)a[i]=a[i-1];a[k]=x;gotoxy(1,24);delline();printf("Datas: ");for(i=0;i<=n;i++) printf("%-3d",a[i]);}void Delete(int a[],int n){int x,low,high,mid,i;printf("\nPLease input a data to be deleted:"); scanf("%d",&x);low=0;high=n-1; while(low<=high) {mid=(low+high)/2 ; if(a[mid]==x) break;if(a[mid]>x) high=mid-1; if(a[mid]<x) low=mid+1; } if(low>high) printf("Thedata to be deleted is not in the database!\n"); else { for( ;mid<n-1;mid++)a[mid]=a[mid+1]; gotoxy(1,24);delline();printf("Datas: "); for(i=0;i<=n-2;i++) printf("%-3d",a[i]);}}main(){int a[50],n=0;char com;input(a,&n);sort(a,n);clrscr(); menu(a,n); com=getch(); switch(com) { case ' 1' :find(a,n);break; case '2' :insert(a,n);break; case ' 3' :Delete(a,n);break; default: break;}getch();}/*DT made it in 2009/05/16*/程序填空:( 1 ) #include <>#define N 4void main(){ int a[N][N],s1=0,s2=1,max,i,j;for(i=0; i<N; i++)for(j=0; j<N; j++)scanf("%d", &a[i][j] );max= a[0][0] ;for(i=0;i<N;i++)for(j=0; j< N ;j++){if(i==j) s1=s1+a[i][j] ;if(i+j==N-1) s2*=a[i][j];if(a[i][j]> max )max=a[i][j];}printf("s1=%d,s2=%d,max=%d\n",s1,s2,max); }(2)#include<>#define M 4#define N 3void main( )for(i=0;i<N;i++)sum+=a[0][i]+ a[M-1][i] ;for(j=1;j<M-1;j++)sum+=a[j][0]+ a[j][N-1] ;printf("%d\n",sum);}改错:(1)#in#include<>#define M 3#define N 4void main( ){int a[M][N]={{1,2,3,4},{5,6,7,8 },{9,10,11,12}}; int b[N][M];int i,j;for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%3d",a[i][j]);printf("\n");}for(i=0;i<N;i++)for(j=0;j<M;j++)b[i][j]=a[j][i];printf("\n");for(i=0;i<N;i++){for(j=0;j<M;j++)printf("\n");}}printf("%3d",b[i][j]);void main(){int d[][4] ={{0,0,0,0}},i,j;printf("\nPlease input 16 num: ");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&d[i][j]);for(i=0;i<4;i++)for(j=0;j<4;j++)if(d[i][j]<d[j][i])d[i][j]=d[j][i];for(i=0;i<4;i++){printf("\n\n\n\n\n");/* 为了保持每行的间隔与每列的相同*/for(j=0;j<4;j++)if(j>=i)printf("\t%d",d[i][j]);/* 为了使位数不同的数输出依然保持三角型*/ elseprintf("\t");}}设计性实验:(1)#include<>#define M 3void main(){int i,j,max,min,m=0,n=0,p=0,q=0;#define N 6for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]);max=min=a[0][0];for(i=0;i<M;i++)for(j=0;j<N;j++){ if(a[i][j]>max){max=a[i][j];m=i;n=j;}else if(a[i][j]<min){ min=a[i][j];p=i;q=j;}}printf("max(%d,%d)=%d,min(%d,%d)=%d",m,n,max,p,q,min);}3)#include<>#define N 20 void main(){int n,i,j;int a[N][N];printf("please input the n:");scanf("%d",&n);for(i=0;i<n;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i<n;i++)for(j=1;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i<n;i++){for(j=0;j<=i;j++)printf("%-4d",a[i][j]);printf("\n");}}2.程序填空(1)以下程序的功能是求数组a 中元素的和#in elude <>void mai n(){ int a[10];int *p,sum=0;for(p=a; pva+10; p++)sea nf("%d",①); 〃pfor(p=a;p<a+10;p++)sum=sum+ ②_______ 〃*p prin tf("sum=③_______ \n",sum); //%d}(2)以下程序功能是在数组中查找与x值相同的元素所在的位#in elude<>void mai n(){ int i,x,a[11];printf( “ please in put ten nu mber:” );for(i=1;i<11;i++)sea nf("%d",a+i);prin tf("please in put x:");sea nf("%d", &x);a[0]= ________ ①___________ ; //xi=10;while(x != *(a+i))______ ② ________ ; // i--if( _______ ③ _________ ) //x==*(a+i)printf("found position is : %d',i);elseprintf("not foun d!");3.程序改错(1)以下程序的功能是求一元二次方程的实数根。