5-6次C语言上机作业
- 格式:docx
- 大小:1.00 MB
- 文档页数:9
实验一Visual C++6.0的使用及顺序结构程序设计一、实验目的1、掌握启动和退出VC6 的方法。
2、熟悉 VC6 开发环境。
3、初步掌握简单程序的上机操作基本步骤,熟悉 C 单文件程序的输入、编译、链接和运行过程。
4、初步掌握程序的编辑修改和调试。
5、熟练使用赋值运算、算术运算等表达式。
6、熟练使用标准输入、输出函数及各种数据类型的格式说明符。
二、实验内容1、下面C语言程序,其功能是显示字符串“欢迎同学们来到华北水院计算中心!”。
请同学们按照下面的实验指导学习VisualC++6.0的使用。
1 .启动 VisualC++6 .0 开发环境(1)单击开“始”按钮,选择程“序”——〉“Microsoft Visual Studio6.0菜单项,单击“MicrosoftVisualC++6.0”,屏幕出现标题为“当时的提示”的窗口。
(2)单击“结束”按钮,关闭窗口,进入VC6.0 开发环境的主窗口。
2 .使用 Visual C++6.0 对一个 C 程序进行编辑、编译、连接和运行。
⑴分析Visual C++6.0 中程序的开发过程与其它高级语言的开发过程相仿,都要经过编辑、编译、连接和运行四个步骤。
⑵步骤①编辑图 1-1 New 对话框编辑是将 C 源程序输入计算机的过程。
在Visual C++6.0 主界面下,点击File 菜单,选择Ne w 菜单项,即可出现New 对话框,如图1-1 所示。
在弹出窗口中的Files 标签页下,选择C++ Sour ce File。
在选项卡右面的File 编辑框里输入文件名如“Exa.c”,在 Location 编辑框里输入文件路径,2如 : \test”。
点击 OK 按钮。
将出现编辑窗口 ,如图 1-2 所示。
在图 1-2 所示的右端编辑窗口里输 入以下 C 源程序并保存文件。
图 1-2 编辑窗口②编译编译是使用系统提供的编译器将文本文件 Exa.c 生成机器语言的过程 ,结果为 Exa.obj ,由于没有 得到系统分配的绝对地址,还不能直接运行,如图 1-3 所示。
1。
阅读以下程序,说出其功能和运算结果。
#include 〈stdio.h〉int main( ){int n ;int factorial(int n);scanf(”%d”,&n) ;printf(”%d\n",factorial(n)) ;return 0 ;}int factorial(int n){int i, fact=1 ;for(i=1;i<=n;i++)fact=fact*i ;return fact ;}若输入5↙2.改正下列程序中的错误,在屏幕上显示“Welcome to You!”.#include <stdio.h〉int mian( ){printf(”Welcome to You!\n”)return 0 ;}3.若输入4,程序运行结果为【1 】,若输入-4,运行结果为【2 】,若输入10,运行结果为【3 】.#include〈stdio.h〉main(){i nt x,y;scanf(”%d",&x);if(x〈1){y=x;printf("x=%d,y=x=%d\n”,x,y);}else if(x<10){y=2*x-1;printf(”x=%d,y=2*x—1=%d\n",x,y);}else{y=3*x-11;printf(”x=%d,y=3*x—11=%d\n”,x,y);}}4.当输入19,2,21时下列程序运行的结果是()。
#include<stdio。
h>main(){int a,b,c,max;printf(”please scan three number a,b,c:\n");scanf(”%d,%d,%d”,&a,&b,&c);max=a;if(max<b)max=b;if(max〈c)max=c;printf("max is:%d”,max);}5. 运行以下程序时,从键盘键入China#<CR〉(〈CR〉代表回车),则下面程序的运行结果是。
1、用下面的scanf函数输入数据,使a=10, b=20, c1='A', c2='a', x=1.5, y=-3.75, z=67.8,请问在键盘上如何输入数据?scanf("%5d%5d%c%c%f%f%*f,%f", &a,&b,&c1,&c2,&x,&y,&z);2、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf函数输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字第三次作业1、有3个整数a,b,c,由键盘输入,输出其中最大的数。
2、有一个函数:x x<1y= 2x-1 1<=x<103x-11 x>=10写一段程序,输入x,输出y的值。
3、给出一百分制成绩,要求输出成绩等级A、B、C、D、E。
90分以上为A,80-89分为B,70-79为C,60-69为D,60分以下为E。
4、给一个不多于5位的正整数,输出这个数是几位数。
第四次作业1、给一个不多于5位的正整数,要求:a.求出它是几位数;+b.分别输出每一位数字;c.按逆序输出各位数字,例如:原数为321,应输出123。
2、教材P112页第5.8题(if语句解法创建一个独立文件,switch语句解法创建一个独立文件第五次作业1、输入两个正整数m和n,求其最大公约数和最小公倍数。
(经典题)2、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数,并输出。
3、求s=a+aa+aaa+aaaa+....+(a...a)之值,其中a是一个数字,n表示a的位数。
1、输入两个字符串,使用指针p将两个字符串按次序复制到数组c中。
例:输入“zhe"和"jiang",将"zhejiang"保存在数组c中。
第五次上机作业:(请用指针实现)1.数据移位有n(n<=10)个整数,使前面各数顺序向后移m(m<=n)个位置,最后m 个数变成最前面的m个数,如图所示。
编写函数shift(a,n,m)实现上述功能,在主函数中输入n个整数和输出调整后的n个数。
SAMPLE OUTPUTnInput n(n<=10):10Input 10 integers:Output the original:Output the shifted:#include <>#define N 10void shift(int a[ ],int n,int m);void main( ){ int i,n,m;int a[N];printf("Input n(n<=10):");scanf("%d",&n);printf("Input %d integers:\n",n);for(i=0;i<n;i++)scanf("%d",a+i);printf("Output the original:\n");for(i=0;i<n;i++)printf("%d ",*(a+i));printf("\n");printf("Input m(m<=%d):",n);scanf("%d",&m);shift(a,n,m);printf("Output the shifted:\n");for(i=0;i<n;i++)printf("%d ",*(a+i));printf("\n");}void shift(int a[ ],int n,int m){ int i,j,t;for(i=0;i<m;i++){ t=a[n-1];for(j=n-2;j>=0;j--)a[j+1]=a[j];a[0]=t;}}2.字符串排序在主函数中输入10个不等长的字符串放入二维字符数组中,编写函数sort()利用指针数组对其排序,在主函数中输出排好序的字符串。
实验一(第1章实验)实验目的:1.掌握运行C语言程序的全过程。
2.熟悉编译环境。
3.初步熟悉C语言程序的语法规定。
4.了解简单函数的使用方法。
实验内容:1.编程且上机运行:求3个整数的和。
2.编程且上机运行:求2个数的和、差、积和商。
3.编程且上机运行:输入3个数,求最大值。
4.编程且上机运行:输入圆的半径,求圆的面积和周长。
5.在屏幕上输出:“hello world!”实验结果:实验二(第3章实验)1.实验目的:理解C语言的类型系统。
实验内容:写程序测试数据-2在类型char,int,unsigned int,long int,unsigned long int 中存储情况。
实验过程:实验结果:参见各种类型的存储实现描述。
2.实验目的:了解混合类型计算中类型的转换规则。
实验内容:写程序测试多种类型数据一起运算时类型的转换及表达式结果的类型。
注意unsigned int和int数据运算时类型转换的方向。
实验过程:/** 类型转换问题* 试问下面两个表达式等价吗?*/#include <stdio.h>#include <stdlib.h>int main() {unsigned int ui,uj;ui = 1;uj = 2;if (ui < uj)printf("\n%u < %u is true !\n", ui, uj);elseprintf("\n%u < %u is false !\n", ui, uj);if (ui - uj < 0)printf("\n%u - %u <0 is true !\n", ui, uj);elseprintf("\n%u - %u <0 is false !\n", ui, uj);system("pause");return 0;}实验结果:参见类型转换规则。
第一次上机作业(2021):要求:独立完成,上机调试通事后上交作业提交邮件主题命名:班级学号姓名(第1次作业),例如:电1301班2王鹏(第1次作业)以附件形式将每次作业的所有程序源程序紧缩打包后提交,紧缩文件命名格式同上。
程序必需采用缩进格式1.大写字母转换成小写字母从键盘输入一个大写英文字母,输出相应的小写字母。
例:输入G输出g2.求平方根输入一个实数x,计算并输出其平方根(保留1 位小数)。
例:输入17输出The square root of is3.温度转换设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32)a)输入华氏温度(实型)b)输出的摄氏温度结果保留两位小数例:Please input Fahrenheit temperature:The corresponding Celsius temperature is4. 计算旅途时刻输入二个整数time1 和time2,表示火车的起身时刻和抵达时刻,计算并输出旅途时刻。
(输入的有效的时刻范围是0000 到2359,不需要考虑起身时刻晚于抵达时刻的情形。
)例:输入712 1411 (起身时刻是7:12,抵达时刻是14:11)输出The train journey time is 6 hours 59 minutes.5. 数字加密输入一个四位数,将其加密后输出。
方式是将该数每一名上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。
例:输入1257输出The encrypted number is 4601试探题:你可否编程找出谁做的好事?有四位同窗中的一名做了好事,不留名,夸奖信来了以后,校长问这四位是谁做的好事。
⏹A说:不是我。
⏹B说:是C。
⏹C说:是D。
⏹D说:他乱说。
已知三个人说的是实话,一个人说的是谎话。
此刻要依照这些信息,找出做了好事的人。
第1章C语言概述1-1编写程序,在屏幕上显示一个如下输出:1-2---------------------------------1-3Programming in C is fun!1-4I love C language.1-5---------------------------------1-6编写程序,在屏幕上显示一个如下图案:1-7* * * *1-8* * *1-9* *1-10*1-11已知某个圆的半径,编写一个程序,用来计算并显示面积。
1-12要求:将π定义为符号常量,并假设一个恰当的半径值。
OutputThe area of circle is:1-13已知两个整数20和10,编写程序,自定义函数add( )将这两个数相加,自定义函数sub( )计算这两个数的差,并按照下面形式显示计算结果:1-1420+10=301-1520-10=10Output20 + 10 = 3020 – 10 = 101-16已知变量a 、b 和c 的值,编写程序,用来计算并显示x 的值,其中cb a -=x 1-17请分别用以下数值运行该程序 1-18(1)a=250,b=85,c=25 1-19 (2)a=300,b=70,c=80Output (1)x =Output (2)x =第2章 常量、变量及数据类型 & 第3章 运算符和表达式 3-1 编写程序,求华氏温度100o F 对应的摄氏温度。
计算公式如下: 3-2 9)32(5-⨯=f c 3-3 式中:c 表示摄氏温度,f 表示华氏温度。
(c 定义为实型,f 定义为整型)OutputCelsius degree (corresponding to 100 Fahrenheit) is: .3-4 一个物体从100m 的高空自由落下,编写程序,求它在前3s 内下落的垂直距离。
设重力加速度为10m/s 2。
3-5 要求,将重力加速度定义为符号常量,尝试将其改为9.8 m/s 2,看结果有何不同?OutputThe falling vertical distance (in 3 seconds) is:.3-6将球的半径R定义为符号常量,计算球的表面积(4πR2)和体积(4/3*πR3)。
c语言上机练习共35篇C 语言程序上机实训题上机练习一一、程序改错题:程序功能:求 100 以内的偶数之和. #include "stdio.h" main() { int i,sum=1; sum+=i; printf("Sum=%d \n";sum); getch(); } 二、程序填空题:程序功能:输入数组最大的与最后一个元素交换,最小的与第一个元素交换,输出数组。
main() { int number[10]; input(number); max_min(number); output(number);} input(int number[10]) { int i; for(i=0;【?】;i++) scanf("%d,",&number[i]); scanf("%d",&number[9]);} max_min(int array[10]) { int max,min,k=0,l=0,t,p,; max=min=array[0]; for(p= 1;pmax) {max= array[p];k=p;} else if(array[0] /**********End **********/} main() { int m; printf("Enter m: "); scanf("%d", &m); printf("\nThe result is %ld\n", fun(m)); }1C 语言程序上机实训题上机练习二一、程序改错题:功能:求 1 到 10 的阶乘的和。
main() { int i; float t,s=0; float fac(int n); for(i=1;i #include 【?】 main() { float a,b,c,disc,x1,x2,realpart,imagpart;scanf("%f%f%f",&a,&b,&c); printf("the equation"); if(【?】/********** }End **********/2C 语言程序上机实训题上机练习三一、程序改错题:功能:将一个正整数分解质因数。
第一次上机练习(首次)1.阅读以下程序,说出其功能和运算结果(输入5↙)。
#include <stdio.h>int main( ){int n ;int factorial(int n) ;scanf("%d",&n) ;printf("%d\n", factorial(n)) ;return 0 ;}int factorial(int n){int i, fact=1 ;for(i=1;i<=n;i++)fact=fact*i ;return fact ;}答案:120 求n的阶乘。
2.改正下列程序中的错误,在屏幕上显示“Welcome to You!”。
#include <stdio.h>int mian( ){printf("Welcome to You!\n")return 0 ;}答案:2行main4行末尾少分号3.编写程序在屏幕上显示以下内容:Programming is fun.And Programming in C is even more fun!答案:#include <stdio.h>int main( ){printf("Programming is fun.\nAnd Programming in C is even more fun!\n") ;return 0 ;}4.编写程序输出以下图案:* * * ** * ** **答案:#include <stdio.h>void main( ){printf("* * * *\n");printf(" * * *\n");printf(" * *\n");printf(" *\n");}5.编写程序,计算并在屏幕上显示10~20的平方值。
C 语言上机考试题(第一套)1.编写函数fun ,它的功能是:计算并输出下列级数和:)1(1321211+⨯++⨯+⨯=n n S例如,当n = 10时,函数值为:0.909091注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。
试题程序:#include <conio.h>#include <stdio.h>double fun( int n ){float…………}main() /*主函数 */{ clrscr();printf(″%f\n ″, fun(10));}解答:#include <conio.h> #include <stdio.h> double fun( int n ) { double s=0; int i; for(i=1;i<n+1;i++) s+=1.0/(i*(i+1)); return s; } main() /*主函数 */ { system("cls"); printf("%f\n",fun(10)); }说明:主函数中的clrscr()函数为TC 下使用的清屏函数,在VC 中不能使用,在本题中可以直接删除或改为system("cls")2.在[10000, 20000]范围内考察个位数字是7的素数, 问:(1) 这样的素数有多少个?(2) 其中最大的一个等于几?解答:#include <stdio.h>int main(void){int max,num=0;int i,j;for(i=10000;i<20001;i++){for(j=2;j<i;j++)if( i%j==0 )break;if( j==i && i%10==7){num++;max=i;}}printf("num=%d,max=%d\n",num,max);return 0;}3. 编写程序,从键盘输入一年份,判断该年份是否为闰年。
第一次课熟悉win-TC编译环境、熟悉C语言程序结构1.使用C 语言编译环境,输入下面的源程序。
将你的程序命名为hello.c,然后编译运行它。
/* program writes the words "Hello, world" to the screen *File : Hello.c* By : NJCIT* Date : 07-03-09*/#include <stdio.h>main(){printf("Hello, world\n");return(0);}2.main() /*求两数之和*/{int a,b,sum; /* 这是变量定义*/a=123;b=456;sum=a+b;printf(“sum is %d\n”,sum);}问题:1.一个C语言源程序从哪里开始执行?2. C程序的函数由几部分构成?3. ANSI C 中的注释内容是用什么符号界定?第二次课熟悉printf()函数、常见转义字符及各种数据类型的输出格式1.2. main(){int a=5,b=7,c=-1;float x=67.8564,y=-789.124;char c=‘A’;long n=1234567;unsigned u=65535;printf(“%d%d\n”,a,b);printf(“%3d%3d\n”,a,b);printf(“%f,%f\n”,x,y);printf(“%-10f%-10f\n”,x,y);printf(“%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n”,x,y,x,y,x,y);printf(“%e,%10.2e\n”,x,y);printf(“%c,%d,%o,%x\n”,c,c,c,c);printf(“%ld,%lo,%x\n”,n,n,n);printf(“%u,%o,%x,%d\n”,u,u,u,u);printf(“%s,%5.3s\n”,”COMPUTER”,”COMPUTER”);}3. 假设下面的例子都是完整程序的一部分,那么他们每一个将会输出什么?4.加载,编译并运行下面的程序。
《C语言》上机实验题及参考答案2017《C语言》上机实验题及参考答案为了帮助大家备考接下来的计算机二级考试,应届毕业生店铺整理了2017《C语言》上机实验题及参考答案,希望能帮助大家备考计算机二级考试。
1、编程实现对键盘输入的英文名句子进行加密。
用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变:2、编程实现将任意的十进制整数转换成R进制数(R在2-16之间)。
3、从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、1角、5分、1分各多少张。
4、随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。
5、编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。
6、模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用A、B、C、D表示,当选某候选人时直接输入其编号(编号由计算机随机产生),若输入的不是A、B、C、D则视为无效票,选举结束后按得票数从高到低输出候选人编号和所得票数。
7、任何一个自然数m的立方均可写成m个连续奇数之和。
例如:1^3=12^3=3+53^3=7+9+114^3=13+15+17+19编程实现:输入一自然数n,求组成n3的n个连续奇数。
8、已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。
9、编制一个完成两个数的四则运算程序。
如:用户输入34+56则输出结果90.00。
要求运算结果保留两位小数,用户输入时一次将两个数和*作符输入。
10、输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。
如输入:56439,输出:5位数5,6,4,3,99,3,4,6,511、编写子函数:(1)用冒泡法将一个数组排成升序的函数---SUB1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---SUB2。
C 语言上机操作指导程序设计是实践性很强的过程,任何程序最终都必须在计算机上运行,以检验程序的正确与否。
因此在学习程序设计中,一定要重视上机实践环节,通过上机可以加深理解C语言的有关概念,以巩固理论知识,另一方面也可以培养程序调试的能力与技巧。
1(C语言程序的上机步骤按照C 语言语法规则而编写的C 程序称为源程序。
源程序由字母、数字及其它符号等构成,在计算机内部用相应的ASCII 码表示,并保存在扩展名为“(C”的文件中。
源程序是无法直接被计算机运行的,因为计算机的CPU 只能执行二进制的机器指令。
这就需要把ASCII 码的源程序先翻译成机器指令,然后计算机的CPU 才能运行翻译好的程序。
源程序翻译过程由两个步骤实现:编译与连接。
首先对源程序进行编译处理,即把每一条语句用若干条机器指令来实现,以生成由机器指令组成的目标程序(扩展名为“(OBJ”的文件)。
但目标程序还不能马上交计算机直接运行,因为在源程序中,输入、输出以及常用函数运算并不是用户自己编写的,而直接调用系统函数库中的库函数。
因此,必须把“库函数”的处理过程连接到经编译生成的目标程序中,生成可执行程序(扩展名为“(EXE”的文件),并经机器指令的地址重定位,便可由计算机运行,最终得到结果。
C语言程序的调试、运行步骤可以用图A-1 表示:图A-1 C 语言程序的调试、运行步骤图A-1 中,虚线表示当某一步骤出现错误时的修改路线。
运行时,无论是出现编译错误、连接错误,还是运行结果不对(源程序中有语法错误或逻辑错误),都需要修改源程序,并对它重新编译、连接和运行,直至将程序调试正确为止。
除了较简单的情况,一般的程序很难一次就能做到完全正确。
在上机过程中,根据出错现象找出错误并改正称为程序调试。
我们要在学习程序设计过程中,逐步培养调试程序的能力,它不可能靠几句话讲清楚,要靠自己在上机中不断摸索总结,它可以说是一种经验积累。
程序中的错误大致可分为三类:程序编译时检查出来的语法错误;连接时出现的错误;程序执行过程中的错误。
1)10002 显示Hello World! ........................................................................... 错误!未定义书签。
2)10003 显示What is a computer? .............................................................. 错误!未定义书签。
3)10004 显示图形(字符图案输出)......................................................... 错误!未定义书签。
4)10005 显示Welcome to You!(调试示例error01_1) ........................... 错误!未定义书签。
5)10006 显示"Programming in C is fun!" .................................................. 错误!未定义书签。
6)10007 显示图案(字符图案输出)....................................................... 错误!未定义书签。
7)20011 求华氏温度100°F对应的摄氏温度。
........................................... 错误!未定义书签。
8)20012 求华氏温度150°F 对应的摄氏温度。
......................................... 错误!未定义书签。
9)20013 求摄氏温度26°C对应的华氏温度。
............................................ 错误!未定义书签。
C语言上机练习题文件管理序列号:[K8UY-K9IO69-O6M243-OL889-F88688]1.输入一个不超过五位的正整数,输出其逆数。
例如输入12345,输出应为54321。
#include "stdio.h"main(){long n;int ww,qw,bw,sw,gw;printf("Please input:\n");scanf("%ld",&n);while(n<=0||n>99999){printf("\nThe number is too little or too large.Retryplease!\n");scanf("%ld",&n);}if(n>=10000&&n<=99999) {ww=n/10000;qw=n/1000%10;bw=n/100%10;sw=n/10%10;gw=n%10;printf("The old number is:%ld\n",n);printf("The new numberis:%d%d%d%d%d\n",gw,sw,bw ,qw,ww);}elseif(n>=1000&&n<=9999){qw=n/1000;bw=n/100%10;sw=n/10%10;gw=n%10;printf("The old number is:%ld\n",n);printf("The new numberis:%d%d%d%d\n",gw,sw,bw,q w);}elseif(n>=100&&n<=999){bw=n/100;sw=n/10%10;gw=n%10;printf("The old number is:%ld\n",n);printf("The new numberis:%d%d%d\n",gw,sw,bw);}elseif(n>=10&&n<=99){sw=n/10;gw=n%10;printf("The old number is:%ld\n",n);printf("The new number is:%d%d\n",gw,sw);}elseprintf("The old number equals the new number:%ld",n);}2.计算1+2+3…+n的值,n是从键盘输入的自然数。
上机实验一般应包括以下几个步骤:1.准备好上机所需的程序。
认真完成预习实验报告,报告应包括以下内容:①题目②相关知识点的表述③实验设计思路、流程图或语言描述④程序清单⑤实验中要验证的内容⑥实验计划手编程序应书写整齐,并经人工检查无误后才能上机,以提高上机效率。
对程序中自己有疑问的地方,应作出记号,以便在上机时给予注意。
初学者切忌不编程序或抄别人程序走上机,应从一开始就养成严谨的科学作风。
2.上机输入和调试自己所编的程序。
应该一人一组,独立上机。
上机过程中出现的问题,除了是系统的问题以外,一般应自己独立处理,不要轻易举手问教师。
尤其对“出错信息”,应善于自己分析判断。
这是学习调试程序的良好机会。
在使用键盘时,最好采用正确的指法击键,为今后正确使用键盘打下基础。
在程序调试通过后,打印输出程序清单和运行结果,在运行时要注意在输入不同数据时所得到的不同结果(例如解ax2+bx+c=0方程时,不同的a、b、c组合对应得到实根、复根的不同结果)。
此时应运行几次,分别检查在不同情况下程序是否正确。
3.上机结束后,应整理出实验报告,实验报告应包括以下内容:①题目②实验记录③程序清单(计算机打印出的程序清单)④运行结果(必须是上面程序清单所对应打印输出的结果)⑤实验分析⑥技术小结。
对运行情况所作的分析以及本次调试程序所取得的经验。
如果程序未能通过,应分析其原因。
实验一.数据类型、运算符和表达式一、目的要求:1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。
2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。
3.进一步熟悉C程序的编辑、编译、连接和运行的过程。
二、实验内容:1.编写程序验证各种数据类型、各种运算符。
2.输入并运行教材第三章例题3.1、例3.3、例3.4、例3.10,在上机前先用人工分析程序写出应得结果,上机后将二者对照。
C语言程序设计上机习题1、给出三角形的三边a、b、c,求三角形的面积〔应先判断a、b、c三边是否能构成一个三角形〕.2、某幼儿园只收2~6岁的小孩,2~3岁编入小班,4岁编入中班,5~6岁编入大班,编制程序实现每输入一个年龄,输出该编入什么班.3、编写程序,输入一个整数,判断它能否被3、5、7整除,并根据情况输出下列信息:〔1〕能同时被3、5、7整;〔2〕能同时被3、5、7中的两个数整除,并输出这两个数;〔3〕只能被3、5、7中的一个数整除;〔4〕不能被3、5、7中的任何一个数整除.4、请列出所有的个位数是6,且能被3整除的两位数.5、求1~500中能被5整除的数的倒数之和.6、编写程序,输入某门功课的若干个同学的成绩,以-1作为终值,计算平均成绩并输出.7、若口袋里放入12个球,3个红球,3个白的,6个黑的,从中任取8个,编写程序,列出所有可能的取法.8、编写一个程序,求2012!的末尾有多少个0?9、一个自然数平方的末几位与该数相同时,称该数为同构数.例如:252=625,则25为同构数.编程求出1~1000中的同构数.10、输入一个较大的整数,求小于该整数的最大5个素数.11、求下列数列的近似值:S=1-1/22+1/33-1/44+…〔-1〕n/n n.输入精度,当某一项的精度小于该值时停止计算.float fun<float esp>{ }void main<>{float esp;scanf<"%f",&esp>;printf<"%f\n",fun<esp>>;}12、编写一个函数change<int x,int r>,将十进制整数x转换成r<1<r<10>进制后输出.13、求1000以内的亲密数对.亲密数对的定义为:若整数a 的所有因子〔不包括本身〕之和为b,b的所有因子〔不包括b本身〕之和为a,且a和b不相等,则称a与b为亲密数对.int fun<int x>{ }void main<>{int n,a,b;for<n=1;n<1000;n++>{b=fun<n>;a=fun<b>if<a!=b&&a==n>printf<"\n%d,%d\n",a,b>;} }14、用递归法求下列问题的解:一对小兔,一个月后长成中兔,第二个月长成大兔,长成大兔,长成大兔后以后每个月生一对小兔.第20个月有多少对兔子?15、定义一个函数long f<char s[ ]>,函数功能是将字符串s<只由数字符组成>转换为一个整数,并作为函数的返回值.long f<char s[ ]>{ }void main<>{ char s[10];long int res;gets<s>;res=f<s>;printf<"%ld\n",res>; }16、自编一函数,其功能是求一维数组最大值的下标,最大值由主函数输出.int fun<float aa[ ],int n >{ }void main<>{float a[10];int k,max;for<k=0;k<10;k++>scanf<"%f’,a+k>;max=fun<a,10>;printf<"Max=%f\n",a[max]>; }17、编写一个函数fun<char s[ ],int n>,函数的功能是将字符串s循环左移n个字符.主函数输入一个字符串的一个整数.void fun<chaf s[ ],int n>{ }void main<>{char ss[255];int n;gets<ss>;printf<"Input data:\n">;scanf<"%d",&n>;fun<ss,n>;puts<ss>;}18、编写一个函数,其功能是将字符串中指定的字符删除.void fun<char *ss,char c>{ }void main<>{char s[255],ch;printf<"Input a string:\n">;gets<s>;printf<"Input a character:\n">;scanf<"%c",&ch>;fun<s,ch>;puts<s>;}19、完成下面的函数,函数的功能是将a数中大于平均值的数组元素存入b数组中,大求平均值的数据个数通过指针方式返回.void fun<int *a,int *b,int k,int *n>{ }void main<>{int a[10],b[10],kk,,sum;for<kk=0;kk<10;kk++>scanf<"%d",aa+k>;fun<a,b,10,&sum>;for<kk=0;kk<sum;kk++>printf<"%6d",*<b+kk>>;}20、从键盘输入一任意的字符串,编一函数,其功能是将该字符串的数字字符构成一个数据返回.例如:输入字符串为1dfk3d45,得到返回值为1345.void fun<char *s,long int *n>{ }void main<>{char s[20];long int d;gets<s>;fun<s,&d>;printf<"%ld\n",d>;}参考答案1.#include<stdio.h>#include<math.h>void main<>{float a=3,b=4,c=5,p=0,s=0;if<<a+b>c>&&<a+c>b>&&<b+c>a>>{p=0.5*<a+b+c>;s=sqrt<p*<p-a>*<p-b>*<p-c>>;printf<"面积是%f\n",s>;}else printf<"不能构成三角形\n">;}2.#include<stdio.h>#include<math.h>void main<>{int age;printf<"请输入年龄:">;scanf<"%d",&age>;if<age>=2&&age<=6>if<age<=3>printf<"编入小班\n">;elseif<age<=5>printf<"编入中班\n">;elseprintf<"编入大班\n">;elseprintf<"您的输入有误!\n">;}3.〔1〕#include<stdio.h>void main<>{int n;printf<"请输入数n:\n">;scanf<"%d",&n>;if<n%3==0&&n%5==0&&n%7==0>printf<"能同时被3,5,7整除">;}〔2〕#include <stdio.h>void main<>{int n;printf<"请输入数n:\n">;scanf<"%d",&n>;if<n%3==0&&n%5==0&&n%7!=0> printf<"能同时被3,5整除\n">;if<n%3==0&&n%5!=0&&n%7==0> printf<"能同时被3,7整除\n">;if<n%3!=0&&n%5==0&&n%7==0> printf<"能同时被5,7整除\n">; }<3>#include <stdio.h>void main<>{int n;printf<"请输入数n: ">;scanf<"%d",&n>;if<n%3==0&&n%5!=0&&n%7!=0> printf<"只能被3整除\n">;if<n%3!=0&&n%5==0&&n%7!=0> printf<"只能被5整除\n">;if<n%3!=0&&n%5!=0&&n%7==0> printf<"只能被7整除\n">;}<4>#include <stdio.h>void main<>{int n;printf<"请输入数n: ">;scanf<"%d",&n>;if<n%3!=0&&n%5!=0&&n%7!=0>printf<"不能被3、5、7中的任何一个数整除\n">;}4..#include <stdio.h>void main<>{int i;for<i=1;i<100;i++>{if<i%10 == 6 && i%3 == 0>printf<" %d",i>;}printf<"\n">;}5.#include <stdio.h>void main<>{float sum = 0;for<int i=1;i<=500;i++>{if<i%5 == 0>sum+=<1.0/i>;}printf<"sum=%f\n",sum>;}6.#include <stdio.h>void main<>{int n=0;float s=0,sum=0;printf<"请输入若干学生成绩<输入-1结束>:">;while<s!=-1>{sum+=s;scanf<"%f",&s>;n++;} sum=sum/<n-1>;printf<"该课程的平均成绩是:%5.2f\n",sum>;}7.#include <stdio.h>void main<>{int Red,White,Black;int Count=0;for <Red=0;Red<=3;Red++>for<White=0;White<=3;White++>{Black=8-Red-White;if <Black>=0 && Black<=6>printf<"%2d. %d个红球,%d个白球,%d个黑球\n",++Count,Red,White,Black>;}printf<"\n共有%d种!\n\n",Count>;}8.<这道题目就是看可以分解成多少个5相乘的数>#include <stdio.h>int main<>{int result=0;for<int i=1; i<=2012; ++i>for<int n=i; n%5==0; n/=5>++result;printf<"%d\n",result>;return 0;}9.#include <stdio.h>void main<>{long i,j,k;k=10;for<i=1;i<=1000;i++>{if<i==k>{k*=10;}j=i*i;if<j%k==i>{printf<"%ld\t%ld\n",i,j>;}}}10.#include <stdio.h>void main<>{int n,count=0;printf<"请输入一个整数n:">;scanf<"%d",&n>;for<int i=n; i>=2; i-->for<int t=2; t*t<=i; t++>{if<i%t==0>break;else{count++;if<count<=5>printf<"%d\t",i>;break;}}printf<"\n">;}11.#include <stdio.h>#include<math.h>float fun<float esp>{int n=0;float s=0;do{n++;s+=pow<-1,n-1>*1.0/pow<n,n>;}while<1.0/pow<n,n>>esp>;return s;}void main<>{float esp;scanf<"%f",&esp>;printf<"%f\n",fun<esp>>;}12.#include<stdio.h>void change<int x,int r>{int a[32],i;for<i=0;x!=0;i++>{a[i]=x%r;x/=r;}for<i--;i>=0;i-->printf<"%d",a[i]>;printf<"\n">;}void main<>{int x,r;printf<"请输入x和r:">;scanf<"%d%d",&x,&r>;change<x,r>;}13.#include <stdio.h>int fun<int x>{int y=0;for<int i=1;i<x;i++>{if<x%i==0>y+=i;}return y;}void main<>{int n,a,b;for<n=1;n<1000;n++>{b=fun<n>;a=fun<b>;if<a!=b&&a==n>printf<"%d %d\n",a,b>;}}14.#include <stdio.h>int func<int n>{if<n==1||n==0>return 1;else return 2*func<n-1>+func<n-2>; }void main<>{printf<"%d\n",func<20>>;}15.#include <stdio.h>#include<math.h>long f<char s[ ]>{ long t=0;for<int i=0;i<10;i++>{t+=<s[i]-48>*pow<10,9-i>;}return t;}void main<>{ char s[10];long int res;gets<s>;res=f<s>;printf<"%ld\n",res>;}16.#include <stdio.h>int fun<float aa[],int n >{ int max=0;for<int i=0;i<10;i++>if<aa[i]>=aa[max]>max=i;return max;}void main<>{float a[10];int k,max;for<k=0;k<10;k++>scanf<"%f",&a[k]>;max=fun<a,10>;printf<"Max=%f\n",a[max]>; }17.#include <stdio.h>#include <string.h>void fun<char s[ ],int n> {char a[200]="";memcpy<a,s,n>;strcat<strcpy<s,s+n>,a>; }void main<>{char ss[255];int n;gets<ss>;printf<"Input data:\n">;scanf<"%d",&n>;fun<ss,n>;puts<ss>;}18.#include <stdio.h>void fun<char *ss,char c>{int i,j;for<i=0;ss[i]!=0;i++>{if<ss[i]==c>for<j=i;ss[j]!=0;j++>ss[j]=ss[j+1];}}void main<>{char s[255],ch;printf<"Input a string:\n">;gets<s>;printf<"Input a character:\n">;scanf<"%c",&ch>;fun<s,ch>;puts<s>;}19.#include<stdio.h>void fun<int *a,int *b,int k,int *n> {float sum=0,avg=0;int i,j=0;for<i=0;i<k;i++>sum+=*<a+i>;avg=sum/k;for<i=0;i<k;i++>{if<a[i]>avg>{b[j]=a[i];j++;}}*n=j;}void main<>{ int a[10],b[10],kk,sum;for<kk=0;kk<10;kk++>scanf<"%d",&a[kk]>;fun<a,b,10,&sum>;for<kk=0;kk<sum;kk++>printf<"%6d",*<b+kk>>;}20.#include <stdio.h>#include<math.h>void fun<char *s,long int *n> {long int t=0;int count=0,i;int a;for<i=0;i<20;i++>{if<s[i]>=48&&s[i]<=57>{count++;}}for<i=0;i<20;i++>{if<s[i]>='0'&&s[i]<='9'>{ count--;t=t+<s[i]-48>*pow<10,count>;}}*n=t;}void main<>{ char s[20];long int d;gets<s>;fun<s,&d>;printf<"%ld\n",d>;}。
实验5 函数(1)
【实验题5-1】以下程序的功能:从键盘输入两个数,计算出他们的和,并将结果输出在屏幕上。
调试运行程序,观察出现了什么错误,提出两种修改方案。
【实验题5-2】下程序的功能:输出3~1000之的间的素数。
请选择合适的内容填入程序的空白处,并调试运行程序。
【实验题5-3】从键盘输入一个整数n,计算n^3,并将结果输出在屏幕上。
要求计算n^3用函数实现。
【实验题5-4】从键盘输入一个整数n,计算2n+1与++n之和。
要求计算两数之和用函数
实现。
注意写计算表达式的时候3*n之间的乘号不要丢掉,否则会提示:invalid suffix “n” on integer constant.
调用用户自定义函数是只写ifun=fun(n); 就可以了,不要在括号里加上int。
Ifun=fun(int n) ×
【实验题5-5】编写程序,计算Cmn=n!/(n-m)!m!。
要求如下:
1)编写一个函数计算n!;
2)编写主函数,输入n和m, 调用第1)项中的函数完成计算;
3)输出并计算C58、C712的结果。
【实验题6-1】以下程序功能:用已知三角形三边,求三角形面积。
但程序有错,请上机调试并改正错误。
【实验题6-2】以下程序运行的结果应该是a=14, b=15,temp=0。
在程序空白处填写适当的编译预处理命令。
【实验题6-3】用for循环输出20个0~99之间的随机数。
要求没输出五个随机数换一行。
【实验题6-4】从键盘输入一个字母,如果是大写字母就转换成小写字母输出;如果是小写字母就转换成大写字母输出。
要求用库函数实现。
【实验题6-6】调试运行以下程序,掌握内部函数和外部函数的使用。
该程序包括两个源程序文件“6_6_1.C”和“6_6_2.C”。
#include<stdio.h>
#define N 9
void main()
{
int itop,ibottom,iresearch,imiddle;
int iA[N]={0,1,2,3,4,5,6,7,8};
scanf("%d", &iresearch);
itop=0;
ibottom=N-1;
while(itop<=ibottom)
{
imiddle=(itop+ibottom)/2 ;
if(iresearch<iA[imiddle])
ibottom=imiddle-1;
else
if (iresearch>iA[imiddle])
itop=imiddle+1;
else{
printf("\n元素%d在数组中,下标是%d\n, iresearch,imiddle");
return;
}
}
printf("\n%d在数组中未找到\n",iresearch);
}。