C语言程序设计重点必考实验题

合集下载

C语言程序常考题.doc

C语言程序常考题.doc

1将成绩分为A,B,C等的程序#include<stdio.h>void main(){int score;char grade;printf("Please input a score:\n");scanf("%d",&score);grade=score>=90?'A':(score>=60?'B':'C');printf("%d belongs to %c\n",score,grade);}2判断是数字,字母,还是其他字符#include<stdio.h>void main(){char c;printf("Please input a character:");c=getchar();if(c>='A'&&c<='Z'||c>='a'&&c<='z')printf("%c is letter\n",c);else if(c>='0'&&c<='9')printf("%c is digit\n",c);elseprintf("%c is other character\n",c);}3三角形面积#include<stdio.h>#include<math.h>void main(){float a,b,c,s,area;scanf("%f,%f,%f",&a,&b,&c);s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c);printf("area=%7.2f,s=%7.2f\n",area,s);}4输入数字,即可得到相应星期单词#include<stdio.h>void main(){int x;printf("Input integer number:");scanf("%d",&x);switch(x){case 1:printf("Monday\n");break;case 2:printf("Tuesday\n");break;case 3:printf("Wednesday\n");break;case 4:printf("Thursday");break;case 5:printf("Friday\n");break;case 6:printf("Saturday\n");break;case 7:printf("Sunday\n");break;default: printf("error\n");}}5圆的周长,面积,球的体积,表面积,圆柱体积#include<stdio.h>#define PI 3.1415926void main(){float r,h,l,s,sq,vq,vz;printf("请输入圆半径r,圆柱高h:\n");scanf("%f,%f",&r,&h);l=2*PI*r;s=PI*r*r;sq=4*PI*r*r;vq=4.0/3.0*PI*r*r*r;vz=PI*r*r*h;printf("圆周长: l=%6.2f\n",l);printf("圆面积: s=%6.2f\n",s);printf("圆球表面积:sq=%6.2f\n",sq);printf("圆球体积: sv=%6.2f\n",vq);printf("圆柱体积: sz=%6.2f\n",vz);}6某分段函数,输入X求解Y的值#include<stdio.h>void main(){float x,y;printf("Please input x:");scanf("&f",&x);if(x<-1)y=1;elseif(x<=1)y=2*x-5;elsey=5*x*x-1;printf("y=%10f\n",y);}7比较输入的两个数,并输出较大值#include<stdio.h>void main(){float x,y,max;printf("Please input two number x,y:");scanf("%f,%f",&x,&y);if(x>y)max=x;elsemax=y;printf("max=%7.2f",max);}例5.10 求两个整数的最大公约数和最小公倍数。

c语言编程题汇总

c语言编程题汇总

实验一:简单的C程序设计(2学时)一、实验方式:一人一机二、实验目的:1、了解C语言程序的编译环境和编写过程。

2、掌握C语言程序在Visual C++ 6.0环境下的调试过程。

3、初步了解C语言程序的特点。

4、掌握C语言的数据类型。

三、实验内容:1、计算两个数x和y的和。

(教材P5【例1-2】)2、从键盘输入华氏温度h,输出摄氏温度c(摄氏温度=5/9*(华氏温度-32))。

(实验教材P18)3、给定圆环,输入内圆环半径r1、外圆环半径r2,求出圆环的面积。

(实验教材P27)4、从键盘上输入两个整数x、y,实现两个数的交换,并求出最大值、最小值和两个数的平均值。

(实验教材P21)5、输入并运行以下程序,分析运行结果。

(实验教材P27)#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);}四、实验程序代码:1#include "stdio.h"void main(){int x,y,sum;x=123;y=456;sum=x+y;printf("sum is=%d\n",sum);}#include "stdio.h"main(){double h,c;// printf("Input h\n");scanf("%lf",&h);c=5.0/9*(h-32);printf("c=%lf",c);}3#include "stdio.h"#define p 3.14void main(){float r1,r2;double s1,s2,s;printf("please enter r1,r2:");scanf("%f%f",&r1,&r2);s2=r2*r2*p;s1=r1*r1*p;s=s2-s1;printf(“圆环面积为%lf\n",s);}4#include "stdio.h"void main(){int x,y,t,max,sum=0;float average;printf("请输入两个整数 x y:");scanf("%d%d",&x,&y);printf("您输入的两个整数 x y为:");printf("x=%d,y=%d\n",x,y);max=x;if(max<y) max=y;sum=x+y;average=sum/2.0;{t=x;x=y;y=t;}printf("交换后的两个整数 x y为:");printf("x=%d,y=%d\n",x,y);printf("最大值max=%d\n",max);printf("平均值average=%f\n",average); }五、实验运行结果(截图):2.3.4.实验二:顺序结构程序设计(2学时) 一、实验方式:一人一机二、实验目的:1、掌握标识符、常量、变量的定义及使用。

C语言课后实验设计题目及答案

C语言课后实验设计题目及答案
算法提示
设 total:桃子的总数
x1 :前一天的桃子数
x2 : 后一天的桃子数
day: 天数
计算公式:x1=(x2+1)*2 第1天的桃子数是第2天桃子数加1后的2倍。
(2)求1-1/2+1/3-1/4+⋯⋯,输入1个正整数n(n<=100),计算并输出1-1/2+1/3-1/4+⋯⋯的前n项和(保留3位小数)。
实验项目四 分支结构程序设计
题目
(1)输入四个整数,输出其中的最小值。
实验报告
1、主程序:
// zx.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
}
2、主程序:
// s.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
int main(int argc, char* argv[])
{
x=x*x*x*x;return(x);
}
int main(int argc, char* argv[])
{
float x;
printf("请输入X=");
scanf("%f",&x);
double s;

C语言程序设计实验与习题(1-4)

C语言程序设计实验与习题(1-4)

ffB v vbvv bgbb实验一C程序运行环境及简单程序的运行2.程序改错并调试改正后的程序⑴下列程序的功能为:计算x*y的值并将结果输出,程序中有8处错误,尝试改正并上机调试之(程序以文件名sy1_2.cpp#include <stdio.h>void 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语言程序的跟踪调试。

特别提示:当程序在编译时发现很多错误,此时应从上到下逐一改正,或改一个错误,就重新再编译,因为有时一个错误会引起很多错误信息。

12习题一一、选择题参考答案: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运算符的使用方法。

C语言实验题及参考答案

C语言实验题及参考答案

实验一1、计算整数各位数字之和(10 分)输入一个3 位正整数,将其每一位的数字相加,输出和输入格式:输入一个3 位正整数。

变量数据类型为unsigned 。

输出格式:输出整数每一位相加后的整数和。

输入样例:输出样例:【参考答案】#include "" int main(){ unsigned int a,ge,shi,bai,sum;scanf("%d",&a);ge=a%10;shi=a/10%10;bai=a/100;sum=ge+shi+bai;printf("%d\n",sum);return 0;}2、计算代数表达式(10 分)求:输入格式:输入角度x。

变量数据类型为double 。

π 为。

输出格式:输出y 的值,精确到小数点后2 位。

输入样例:输出样例:【参考答案】#include <>#include <>#define PIint main(){double x,y;scanf("%lf",&x); y=sqrt((sin(60*PI/180)+1)*(sin(30*PI/180)+1)/cos(x*PI/180));printf("%.2lf",y);return 0;}3、逆序的三位数 (10 分)程序每次读入一个正3 位数,然后输出按位逆序的数字。

有结尾的0 时,输出不应带有前导的0。

比如输入700,输入格式:每个测试是一个3 位的正整数。

输出格式:输出按位逆序的数。

输入样例:输出样例:注意:当输入的数字含输出应该是7。

【参考答案】#include ""int main(){ int a,ge,shi,bai,b;scanf("%d",&a);ge=a%10;shi=a/10%10;bai=a/100;b=ge*100+10*shi+bai;printf("%d\n",b);return 0;}4、求整数均值 (10 分)本题要求编写程序,计算4 个整数的和与平均值。

C语言程序设计练习题(答案)

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程序设计题库及详解答案

c程序设计题库及详解答案在C语言的学习过程中,掌握各类编程题目并理解其解答是至关重要的。

以下是一些常见的C程序设计题库及对应的详解答案。

1. 求两个数的最大公约数使用辗转相除法(欧几里得算法)可以求得两个数的最大公约数。

以下是求解的C程序代码:```c#include <stdio.h>int gcd(int a, int b) {while (b != 0) {int temp = b;b = a % b;a = temp;}return a;}int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);printf("最大公约数是:%d\n", gcd(num1, num2));return 0;}```2. 计算一个数的阶乘阶乘是一个数与所有小于它的正整数的乘积。

以下是计算阶乘的C 程序代码:```c#include <stdio.h>long long factorial(int n) {if (n == 0)return 1;return n * factorial(n - 1);}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);printf("%d 的阶乘是:%lld\n", num, factorial(num)); return 0;}```3. 判断一个数是否为素数素数是指只能被1和其本身整除的大于1的自然数。

以下是判断素数的C程序代码:```c#include <stdio.h>#include <math.h>int isPrime(int n) {if (n <= 1)return 0;for (int i = 2; i <= sqrt(n); i++) {if (n % i == 0)return 0;}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num))printf("%d 是素数。

C语言程序设计综合实训题目

C语言程序设计综合实训题目

一、参考题目及选题(1)学生信息管理系统设计问题描述:学生信息包括:学号, 姓名, 年龄, 性别, 出生年月, 政治面貌, 籍贯, 家庭住址, 电话, E-mail等。

试设计一学生信息管理系统, 使之能提供以下功能:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息用文件保存)(3)学生信息浏览功能(4)学生信息排序、查询功能对信息进行排序, 可以按学号, 按姓名, 按性别, 按出生年月日, 按籍贯进行查询(5)信息统计a) 可以按性别, 按出生年, 按籍贯统计学生人数b) 可以按班级统计学生人数c) 可以按政治面貌统计学生人数按班级统计学生党员人数, 团员人数, 以及所占比例, 设计并输出统计报表。

(6)学生信息的删除与修改●设计要求:●界面比较美观;有一定的容错能力, 比如输入的成绩不在0~100之间, 就提示不合法, 要求重新输入;●最好用链表的方式实现。

算法分析:首先, 一个学生包括这么多的属性, 应该考虑定义一个结构, 其次, 我们应该考虑数据的存储形式:是定义一个数组来存储, 还是定义一个链表呢?在这里假如我们以数组的方式来存储, 当然可以, 但是我们知道, 假如我们定义一个数组的话, 我们首先必须知道学生人数大概是多少, 以便我们确定数组的大小, 但是题目中没有给出, 而且题目要求中有大量的删除、插入操作, 所以用链表的方式比较方便。

对于菜单的实现, 其实也比较简单, 首先我们用printf语句把程序的功能列出来, 然后等待用户输入而执行不同的函数, 执行完了一个功能后又回到菜单。

文件的读写操作大家参照书中的有关文件的章节。

(2)、学生综合测评系统每个学生的信息为: 学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。

考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%, 10%, 10%, 20%。

C语言程序设计 上机实验指导与习题 参考答案

C语言程序设计 上机实验指导与习题 参考答案

C 语言程序设计上机实验指导与习题参考答案仅供教师内部参考华南农业大学目录上机实验1实验1 C 语言程序初步1一实验目的1二实验内容1实验2 基本数据类型运算和表达式3一实验目的3二实验内容3实验3 基本输入与输出5一实验目的5二实验内容5实验4 选择结构程序设计4一实验目的4二实验内容4实验5 循环结构程序设计一9一实验目的9二实验内容9实验6 循环结构程序设计二15一实验目的15二实验内容15实验7 数组17一实验目的17二实验内容17实验8 字符数组的应用22一实验目的22二实验内容22实验9 函数的基本应用24 一实验目的24二实验内容24实验10 指针与结构体26一实验目的26二实验内容26*实验11 链表29一实验目的29二实验内容29*实验12 文件32一实验目的32二实验内容32上机实验实验1 C 语言程序初步一实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2 了解在该系统上如何编辑编译连接和运行一个C 程序3 通过运行简单的C 程序初步了解C 程序的特点4 在教师的指导下学会使用JudgeOnline 实验系统二实验内容1 运行第一个C 程序[题目The first C Program]将下列程序输入TC 或VC编译连接和运行该程序void mainprintf "The first C Program\n"[具体操作步骤]以Turbo C 上的操作为例1Windows 进入后按照第一章中介绍的方法进入Turbo C2在编辑窗口中输入程序3保存程序取名为a1c4按照第一章中介绍的方法编译连接和运行程序2 在JudgeOnline 系统中提交实现了计算ab 功能的程序[题目1001计算ab]由键盘输入两个整数计算并输出两个整数的和实现该功能的程序如下void mainint a bscanf "dd" a b1 printf "d" a b1在程序编辑窗口中输入程序2保存程序取名为a2c3按照前二章中介绍的方法编译连接和运行程序4在程序运行过程中输入15 30↙↙表示输入回车符5 如果看到如下输出结果则表明1530 的结果正确如果得不到如下结果则需检查并更正程序456 按照第三章中介绍的方法进入JudgeOnline 实验系统7 显示题目列表点击题号为1001题名为计算ab的题目8 查看完题目要求后点击页面下端的sumbit 参照第二章提交程序的方法提交程序a2c9 查看评判结果如果得到accepted则该题通过否则返回第一步检查程序是否正确2实验2 基本数据类型运算和表达式一实验目的1掌握C 语言数据类型熟悉如何定义一个整型和实型的变量以及对它们赋值的方法2 掌握不同的类型数据之间赋值的规3 学会使用C 的有关算术运算符以及包含这些运算符的表达式特别是自加和自减-- 运算符的使用4 进一步熟悉C 程序的编辑编译连接和运行的过程二实验内容1 变量的定义[题目1117变量定义按要求完成程序]下面给出一个可以运行的程序但是缺少部分语句请按右边的提示补充完整缺少的语句void mainint a b 定义整型变量a 和bint i j 定义实型变量i 和ja 5b 6i 314 j iabprintf "a db di fj f\n" a b i j[具体操作步骤]1将代码补充完整2在TC 或VC上运行通过3在JudgeOnline 实验系统上提交2 赋值表达式与赋值语句[题目1118赋值表达式与赋值语句写出程序运行结果] 阅读下面程序写出运行结果void mainfloat aint b cchar d ea 35b ac 330d c3e \\printf "fddcc" abcde运行结果为35000003330J\[提示]赋值语句具有类型转换的功能但可能会改变数据3 基本运算[题目1119基本运算写出程序运行结果]阅读下面程序写出运行结果void mainint a b cfloat d 15 e fa 357b 1510c be 1510f d10printf "dddfff" abcdef运行结果为0211500000010000001500000[提示]除法分整除与普通除法之分4实验3 基本输入与输出一实验目的1熟练掌握putchargetcharprintf scanf 函数的使用方法2 掌握各种类型数据的输入输出的方法能正确使用各种格式转换符二实验内容[题目1126字符的输入与输出]编程实现由键盘输入一个字符后在屏幕上输出该字符[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]a↙↙[正确输出] [正确输出]a参考程序include "stdioh"mainchar chch getcharputchar ch[题目1127计算加法]编程实现由键盘输入一个加法式输出正确的结果两个加数均为整数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]1020 ↙- 1560↙[正确输出] [正确输出]30 45参考程序include "stdioh"mainint a bscanf "dcd" abprintf "d" ab[题目1014求圆面积]由键盘输入圆半径r 请计算该圆的面积注取314159结果保留两位小数位另外程序只要能对r 在0 到10000 范围的情况输出正确答案即可[第一组自测数据] [键盘输入]5652 ↙[键盘输入][正确输出] 112↙1335502 [正确输出][第二组自测数据] 39408[提示]结果保留两位小数可采用printf 函数的格式控制字符来实现参考程序include "stdioh"mainfloat arearscanf "f"rarea 314159rrprintf "02f"area2[题目1015计算摄氏温度值]从键盘输入一个华氏温度值要求按格式输出其对应的摄氏温度值精确到小数点后两位数学公式描述为5C F 329[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]100↙100↙[正确输出] [正确输出]3778 3778[提示]注意公式中的除为普通除法参考程序includevoid mainfloat fcscanf "f"fc 509 f-32printf "2f"c3实验4 选择结构程序设计一实验目的1了解C 语言表示逻辑的方法以0 代表假以非0 代表真2 学会正确使用逻辑运算符和逻辑表达式3 熟练掌握if 语句和switch 语句4 结合程序掌握一些简单的算法二实验内容[题目1120判断点是否在圆]由键盘输入一个点的坐标要求编程判断这个点是否在单位圆上点在圆上输出Y 不在圆上输出N 使用小数点后3 位精度进行判断[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]07070707 ↙8>0505↙[正确输出] [正确输出]Y N[提示] 1平面上的点与圆的关系分为在圆内在圆上在圆外三种本题要求判断是否在圆上2判断两实数相等采用判断这两实数的差的绝对值小于规定误差精度本题为0001 的方法实现参考程序include "stdioh"include "mathh"void mainfloat abscanf "ff"abif fabs aabb-1 1e-3printf "Y\n"else printf "N\n"[题目1017求数的位数]由键盘输入一个不多于9 位的正整数要求输出它是几位数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]349213 ↙10000↙[正确输出] [正确输出]6 5[提示]划定一位数二位数九位数的范围后用if else if else 语句实现判断4参考程序mainint nplacescanf "ld"nif n 99999999 place 9else if n 9999999 place 8else if n 999999 place 7else if n 99999 place 6else if n 9999 place 5else if n 999 place 4else if n 99 place 3else if n 9 place 2else place 1printf "ld\n"place[题目1018数的排序]由键盘输入三个整数a b c按从小到大的顺序输出这三个数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]654590 ↙963 ↙[正确输出] [正确输出]456590 369参考程序includemainint abctscanf "ddd"abcif a b t aa bb tif a c t aa cc tif b c t bb cc tprintf "ddd"abc[题目1016字符变换]由键盘输入5 个字符将其中的大写字母变成小写其它类型的字符不变并按输入顺序逐个输出[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]ApPLe ↙aB 5 ↙[正确输出] [正确输出]apple ab 5[提示]下面代码实现由键盘读入一个字符并按题意处理后输出char aa getcharif a A a Z a a32putchar a5现在题目要求处理5 个字符怎么做呢请自己思考参考程序includemainchar abcdescanf "ccccc"abcdeif a Za A a a32if b Zb A b b32if c Zc A c c32if d Zd A d d32if e Ze A e e32printf "ccccc"abcde[题目1019数的整除]由键盘输入5 个整数逐个判断它们能否被27 整除能的输出YES不能的输出NO 注意输出时一个判断结果占一行5 个数的判断共占5 行[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]8 27 17577 325 54 ↙8 27 17577 325 54 ↙[正确输出] [正确输出]NO NOYES YESYES YESNO NOYES YES[提示]整除即除得余数为0参考程序include "stdioh"mainint abcdescanf "d d d d d"abcdeif a27 0 printf "YES\n" else printf "NO\n"if b27 0 printf "YES\n" else printf "NO\n"if c27 0 printf "YES\n" else printf "NO\n"if d27 0 printf "YES\n" else printf "NO\n"if e27 0 printf "YES\n" else printf "NO\n"[题目1020正负奇偶判断]由键盘输入非零整数x 判断该数正负正数输出positive 负数输出negative 接着判断该数的奇偶性奇数输出odd偶数输出even[第一组自测数据] negative[键盘输入] odd-43 ↙[第二组自测数据][正确输出] [键盘输入]698 ↙positive[正确输出] even参考程序include "stdioh"mainint nscanf "d"nif n 0 printf "negative\n"else printf "positive\n"if n2 0 printf "even\n"else printf "odd\n"[题目1023简单计算器]下面程序是实现一个简单的运算器保留两位小数点如果由键盘输入1050计算机可以输出结果6000如果输入8 *6计算机输出4800如果输入204 计算机输出500 如果输入8-6计算机输出200 请在空处填上适当的代码运行通过后并提交include "stdioh"void mainfloat abcscanf "fcf"switch opcasecase - _case _case __default printf "error"returnprintf "result " c[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]452↙501-23 ↙[正确输出] [正确输出]90 27107参考程序includeint mainchar opscanf "fcf"aopbswitch opcase c abbreakcase -c a-bbreakcase c abbreakcase c abbreakdefaultprintf "error"breakprintf "result 2f"c8实验5 循环结构程序设计一一实验目的1熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中用循环实现一些常用算法如穷举迭代递推等二实验内容[题目1024计算阶乘]输入正整数n计算n 结果用长整型数表示注n 123n[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]5 ↙8 ↙[正确输出] [正确输出]120 40320参考程序includemainlong in 1ascanf "ld"afor i 1i ai n niprintf "ld\n"n[题目1025计算数列和]有数列1357911现要求由键盘输入n计算输出该数列的前n 项和[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]2 ↙ 5 ↙[正确输出] [正确输出]4 259参考程序includemainlong nsum 0it 1scanf "ld"nfor i 1i nisum sumtt t2printf "ld\n"sum或includemainlong nsumscanf "ld"nsum nnprintf "ld"sum注评判系统不对程序实现细节进行分析只对运行结果进行评测[题目1026 加一行字符中的数字]由键盘输入一行字符总字符个数从1 个至80 个均有可能以回车符表示结束将其中每个数字字符所代表的数值累加起来输出结果[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]abc123↙A6H7T65↙[正确输出] [正确输出]6 24[提示] 1可以使用下面程序段逐个读入键盘输入的一行字符char chwhile ch getchar \n2 数字字符转为对应的数值可用a ch-0参考程序includemainchar cint s 0awhile c getchar \nif c 0c 9a c-48s saprintf "d"s10[题目1029求最大公约数]由键盘输入两个正整数mn mn 用长整数表示计算它们的最大公约数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]1624↙1725↙[正确输出] [正确输出]8 1[提示]公约数是既能整除m 又能整除n 的数题目要求满足这一条件的最大的一个参考程序includemainlong rmntempscanf "ldld"mnwhile m 0r nmn mm rprintf "ld\n"n或includemainlong mntisscanf "ldld"mnt m nnmfor i t-1i 1i--if mi 0ni 0s i breakprintf "d"s[题目1030字符变换]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束将其中的大写字符变成小写其它类型的字符不变最后输出变换后的句子[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙ThiS IS My fIrSt C ProgrAm ↙[正确输出] [正确输出]how are you this is my first c program11参考程序includemainchar cwhile c getchar \nif c Ac Zc c32putchar c[题目1037计算数列和]有数列编程实现由键盘输入n计算输出数列前n 项和结果保留四位小数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]20 ↙30 ↙[正确输出] [正确输出]326603 880403参考程序includemainint itnfloat a 2b 1s 0scanf "d"nfor i 1i nis sabt aa abb tprintf "4f\n"s[题目1044输出最小值]从键盘输入十个整数输出最小值[ 自测数据][键盘输入]12 45 76 87 5 87 43 55 99 21 ↙[正确输出]512参考程序include "stdioh"mainint itminscanf "d" minfor i 1i 10iscanf "d" tif t min min tprintf "d\n"min*[题目1031统计单词个数]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束以空格分割单词要求输出单词的个数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙There are many students and many[正确输出] trees↙3 [正确输出]7参考程序includemainint inum 0word 0char cfor i 0 c getchar \niif c word 0else if word 0word 1numprintf "d"num*[题目1042百万富翁]一个百万富翁遇到一个陌生人陌生人找他谈了一个换钱的计划该计划如下我每天给你m 元而你第一天只需给我一分钱第二天我仍给你m 元你给我2 分钱第三天我仍给你m 元你给我4分钱依次类推你每天给我的钱是前一天的两倍直到一个月38 天百万富翁很高兴欣接受这个契约现要求编写一个程序由键盘输入m计算多少天后百万富翁开始亏钱[第一组自测数据] 18[键盘输入] [第二组自测数据]100↙[键盘输入][正确输出] 10000↙13[正确输出] 25参考程序includeincludemainint nmiscanf "d"mfor i 1i 38iif 001 pow 2i-1 -1 -im 0 breakprintf "d"i-114实验6 循环结构程序设计二一实验目的1进一步熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中使用多重循环二实验内容[题目1028求素数]输出2 到200 之间包括2 200 的所有素数注要求1 行1 个素数按由小到大的顺序输出[提示]采用双重循环外层循环产生2 到200 之间的数内层循环对数进行判断是否为素数参考程序includeincludemainint mkifor m 2m 200mk sqrt mfor i 2i kiif mi 0 breakif i k printf "d\n"m[题目1035打印菱形]由键盘输入正数n要求输出2n1 行的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]3 ↙ 2 ↙[正确输出] [正确输出]15参考程序include "stdioh"include "mathh"mainint nijkscanf "d"nfor i 1i 2n1ik abs n1-ifor j 1j kj printf " "for j 1j 2n1-2kj printf ""printf "\n"[题目1038打印图案]由键盘输入正数n要求输出中间数字为n 的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]4 ↙ 3[正确输出] [正确输出]1 1121 121 12321 12321 1234321 121 12321 1 1211参考程序includeincludemainint nijkhscanf "d"nfor i -n1i n-1ifor j 0j abs i jprintf " "for k 1k n-abs i k printf "d"kfor h n-abs i -1h 1h-- printf "d"hprintf "\n"16实验7 数组一实验目的1掌握一维数组和二维数组的定义赋值和输入输出方法2 掌握与数组有关的算法二实验内容[题目1039倒序]由键盘输入10 个整数倒序输出数字间由一个空格分隔[ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]66 13 67 99 2 19 20 14 5 70参考程序includemainint a [10]int ifor i 0i 10i scanf "d"a[i]for i 9i 0i-- printf "d\n"a[i][题目1040统计不同数字个数]由键盘输入20 个整数统计不同数字的个数[ 自测数据][键盘输入]70 5 14 22 19 2 99 67 13 66 5 93 44 38 22 11 39 22 33 11↙[正确输出]16[提示]上述答案中因为5 有1 个重复数字11 有1 个重复数字22 有2 个重复数字故不同数字有16个分别是70 5 14 22 19 2 99 67 13 66 93 44 38 11 39 3317参考程序include"stdioh"mainint a [20]int itp 0for i 0i 20iscanf "d"a[i]for t 0t itif a[t] a [i] breakif t ipprintf "d"p[题目1062打印矩阵]由键盘输入一个3×4 的矩阵要求输出它的转置矩阵[ 自测数据][键盘输入] [正确输出] 1 6 9 3 1 1 11 1 02 6 1 91 9 8 9 9 0 83 2 9参考程序includemainint a [3][4]b[4][3]ijfor i 0i 3ifor j 0j 4jscanf "d"a[i][j]b[j][i] a [i][j]for i 0i 4ifor j 0j 3jprintf "d "b[i][j]printf "\n"*[题目1047冒泡排序]由键盘输入10 个数用冒泡法对10 个数从小到大排序并按格式要求输出代码如下请填充完整数字间由一个空格分隔incude "stdioh"mainint a[10] i j t18for i 0i 10iscanf "d"___________for ___________for j 0j ____jif ______________________for i 0i 10iprintf "d "a[i][ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]2 5 13 14 19 20 66 67 70 99参考程序includemainint a [10]int ijtfor i 0i 10iscanf "d"a[i]for i 0i 9ifor j 0j 9-ijif a[j] a [j1]t a [j] a [j] a[j1] a[j1] tfor i 0i 10iprintf "d "a[i]*[题目1046计算高精度加法]由键盘输入两个位数很长的整数一行一个数每个数最长不超过80 位试计算并输出这两个数的和[ 自测数据][键盘输入]1XXXXXXXXXX23456789 ↙987654321098765 ↙[正确输出]1XXXXXXXXXX4455555419参考程序include "stdioh"include "stringh"mainint a [100] 0 b[100] 0 c[100] 0char s[101]int i 0n1 0n2 0 0e 0gets sn1 strlen sfor i n1-1i 0i-- a[n1-1-i] s[i]-0gets sn2 strlen sfor i n2-1i 0i-- b[n2-1-i] s[i]-0if n1 n2 n1else n2for i 0i ic[i] a[i]b[i]e 10e a[i]b[i]e 10if c[] 0 printf "d"c[]for i -1i 0i--printf "d"c[i]*[题目找矩阵中的鞍点]由键盘输入一个3 ×4 3 行4 列的矩阵输出矩阵中的鞍点即在矩阵行中最大列中最小的数若没有鞍点输出NO 字样[ 自测数据][键盘输入]87 90 110 98 ↙70 97 210 65 ↙98 45 120 30 ↙[正确输出]11020参考程序includemainint ijka[3][4]jflagfor i 0i 3ifor j 0j 4jscanf "d"a[i][j] for i 0i 3ia [i][0]j 0for j 0j 4jif a[i][j]a [i][j] j jflag 1for k 0k 3kif a [k][j]flag 0 breakif flagprintf "d" breakif flagprintf "NO"21实验8 字符数组的应用一实验目的1掌握字符数组和字符串函数的使用2 掌握与字符串处理有关的算法二实验内容[题目1121定义存贮字符串的字符数组]在下面程序中填充定义字符数组的语句使程序完整include "stringh"void mainchar s[80] 定义字符数组sstrcpy s "abcdefghij klmn"printf "s" s参考程序[题目1123字符串的输入与输出]下面程序实现从键盘读入字符串后输出到屏幕请填充必要的语句include "stdioh"void mainchar s[50]printf "Whats your name"gets s 由键盘读入字符串printf "Your name is "printf "s" s 打印字符串参考程序[题目1122字符串的合并]从键盘输入3 个字符串每个字符串以回车符做为结束标志将3 个字符串以输入先后顺序合并到字符串s 中请填空使用程序完整include "stdioh"include "stringh"mainchar s[100] ""char a [30]gets a strcat s a22gets a strcat s agets a strcat s a可以写多行代码printf "s" s[ 自测数据][键盘输入] [正确输出]123 123abc456abc456参考程序[题目1050寻找字符串]由键盘输入两个字符串假设第一个字符串必包含第二个字符串如第一个字符串为ABCDEF第二个为CDE则CDE 包含在ABCDEF 中现要求编程输出第二字符串在第一行字符串中出现的位置如果第二个字符串在第一个字符串中出现多次则以最前出现的为准[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]ABCDEFG ↙hellhello ↙DE ↙hello ↙[正确输出] [正确输出]4 5[提示]方法1建立双重循环外层循环变量指示第一个串的查找起始位置内层循环从起始位置开始判断第二个字符中是否出现在此处方法2 使用字符串函数strstr参考程序include "stdioh"mainint ijchar a [80] b[80]gets a gets bfor i 0a[i] \0ifor j 0b[j] \0jif a[ij] b[j] breakif b[j] \0 breakif a[i] \0 printf "d"i1else printf "Not Found"23实验9 函数的基本应用一实验目的1掌握定义函数的方法2 掌握函数实参与参的对应关系以及值传递的方式3 掌握函数的嵌套调用和递归调用的方法4 掌握全局变量和局部变量动态变量静态变量的概念和使用方法二实验内容[题目1059函数定义]下面是使用辗转相除法求最大公约数的程序请补充完整程序中函数的定义与调用include "stdioh"int f int m int nint rwhile r mn 0m nn rreturn nmainint a b nscanf "dd" a bprintf "d\n" f a b[题目1083编写函数计算阶乘]下面程序实现由键盘读入整数n计算并输出n 请补充完整计算阶乘的函数long fanc int along in 1for i 1i ai n nireturn nvoid mainint nscanf "d" n24printf "ld" fanc n[题目1124函数中的变量]写出下面程序的运行结果int f1 int xstatic int z 3y 0yzreturn xyzmainint a 1kfor k 0k 3k printf "4d"f1 a 程序运行结果为6 8 10*[题目1084编写递归调用函数实现十进制数转二进制数]下面程序实现由键盘输入一个正整数不大于100000000 输出其对应的二进制数原码表示请填空include "stdioh"void fun int iif i 1fun i2printf "d" i2mainint nscanf "d" nfun n25实验10 指针与结构体一实验目的1通过实验进一步掌握指针的概念会定义和使用指针变量2 能正确使用数组的指针和指向数组的指针变量3 能正确使用字符串的指针和指向字符中的指针变量4 掌握结构体类型变量的定义和使用二实验内容[题目1091交换两数由大到小输出]下面程序交换两数使两数由大到小输出请填空include "stdioh"void swap int p1 int p2int temptemp p1p1 p2p2 tempint mainint ab int papbscanf "dd" a bpa a pb bif a b swap pa pbprintf "d d\n"ab[题目1065数组中的指针]设有如下数组定义int a[3][4] 1357 9111315 17192123计算下面各项的值设数组a 的首地址为2000一个int 类型数占四个字节注意地址则输出地址变量则输出变量值要求一行一个答案不允许多余空行及空格1a[2][1] 2 a[1] 3 a 4 a 15 a 16 a 17 a[2] 18 a 1 19 a2 226参考程序include "stdioh"mainprintf "19\n"printf "2016\n"printf "2000\n"printf "2016\n"printf "2004\n"printf "2016\n"printf "2036\n"printf "2020\n"printf "21"[题目1092函数实现求字符串长度]下面程序以指针方式传递参数由函数实现求字符串长度请填空完成include "stdioh"include "stringh"int f char preturn strlen pint mainchar s[80]int iscanf "s" si f sprintf "d" i[题目1125定义结构体类型]要求定义一个名为student 的结构体类型其包含如下成员1字符数组name 最多可存放10 个字符2 字符变量sex用于记录性别3 整数类型变量num用于记录学号4 float 类型变量score 用于记录成绩并使下列代码完整定义结构体类型struct studentchar name[20]char sex。

C语言程序设计实验及习题(1-4)

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运算符的使⽤⽅法。

C语言实验5(附参考答案)

C语言实验5(附参考答案)

实验5:运算符与表达式(4)实验目的:1、熟悉条件运算符、复合赋值运算符的基本运用和规则。

2、进一步熟悉C语言程序的编辑、编译、连接和运行的方法。

实验内容:1、写出下面逻辑表达式的值。

设a=3,b=4,c=5。

①a + b > c && b == c =0②a || b + c && b – c =1③!( a > b ) && ! c || 1 =1④(0||0)||5 =1⑤(10<12)&&! (1>-1) =02、将下面的数学表达式写成C语言逻辑表达式:x大于0,并且X小于等于10 x>=0&&x<=10a或b中有一个大于零__a>0||b>0________3、求下面算术表达式的值。

(1)x+a%3*(int)(x+y)%2/4 =0设x=2.5,a=7,y=4.7(2)(float)(a+b)/2+(int)x%(int)y =0设a=2,b=3,x=3.5,y=2.5先自己分析,再试着用程序求解,看得到的结果是否一致。

4、写出下面表达式运算后a的值,设原来a=10。

设a和n已定义成整型变量。

(1)a+=a =20(2)a-=2 =8(3)a*=2+3 =50(4)a/=a+a =0(5)a%=(n%=2),n的值等于5 =0(6)a+=a-=a*=a =0先自己分析,再试着用程序求解,看得到的结果是否一致。

5、闰年是能够被4整除,但是不能够被100整除,或者能够被400整除,假设年份用变量名year表示,请用表达式写出以上条件。

year%4==0&&year%100!=0||year%400==06、程序填空(已知一个摄氏温度c,要求输出华氏温度f。

公式为f=5/9*c+32.5)main( ){float c,f;c=37.5;f= 5.0/9*c+32.5;printf("%5.2f\n",f);}7、先思考下面程序的输入,然后放到编译器里面去验证,看看是否和自己思考的结果一样,并把正确结果写在程序下文。

C语言程序设计本科实验题目1-3

C语言程序设计本科实验题目1-3

C语言程序设计实验报告院别专业班级学号姓名教师西安思源学院电信学院编制实验序号: 1 实验日期:实验名称:熟悉C语言运行环境实验地点:一、实验要求1、自行设计,独立完成。

2、根据实验任务,设计主要算法及流程。

3、设计测试数据。

4、列出结果。

5、列出程序清单(加有必要的注释)6、列出程序的运行结果。

二、实验任务1、编程,在屏幕上显示如下信息:*************************Welcome to SiY uan!*************************2、求两个自然数之和。

显示出结果。

3、编写程序,从键盘输入梯形的上下底边长度和高,计算梯形的面积。

三、实验目的1、熟悉掌握C语言的编程环境。

四、实验调试过程与步骤(列出程序清单,写出运行结果,运行结果截图)(可另附页)五、总结检验1、是否达到实验目的?何处体现?2、哪些地方使你困惑?你是如何解决的?3、你认为哪些知识点重要,必须牢记?实验序号: 2 实验日期:实验名称:顺序结构程序设计实验地点:一、实验要求1、自行设计,独立完成。

2、根据实验任务,设计主要算法及流程。

3、设计测试数据。

4、列出结果。

5、列出程序清单(加有必要的注释)6、列出程序的运行结果。

二、实验任务1、输入大写字母,将它转化成小写字母,分别以整型和字符型输出。

2、用scanf函数输入半径和高,分别计算圆周长度、圆面积、圆柱体积、圆球体积。

要求:小数点后保留2位数字。

∏(圆周率)采用宏定义方式取值。

三、实验目的1、掌握格式化的输入、输出函数的用法。

2、掌握整型数据与字符型数据之间的转换。

3、掌握变量的定义和使用。

4、掌握算数运算符和算数表达式的使用。

5、掌握顺序结构程序设计的方法。

四、实验调试过程与步骤(列出程序清单,写出运行结果,运行结果截图)(请另附页)五、总结检验1、是否达到实验目的?何处体现?2、哪些地方使你困惑?你是如何解决的?3、你认为哪些知识点重要,必须牢记?实验序号: 3 实验日期:实验名称:选择结构程序设计实验地点:(请另附页)五、总结检验1、是否达到实验目的?何处体现?2、哪些地方使你困惑?你是如何解决的?3、你认为哪些知识点重要,必须牢记?实验序号: 4 实验日期:实验名称:选择结构程序设计实验地点:一、实验要求1、自行设计,独立完成。

C语言程序设计实验与习题答案

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==0printf("%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;}n Total wheattatol ’s timeter\=n%",weheattal/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整除的整数之和。

c语言必做100题

c语言必做100题

c语言必做100题1. 编写一个C程序,输出“Hello, World!”。

2. 编写一个C程序,计算并输出1到100的和。

3. 编写一个C程序,判断一个数是否为素数。

4. 编写一个C程序,将一个字符串反转。

5. 编写一个C程序,实现二分查找算法。

6. 编写一个C程序,实现插入排序算法。

7. 编写一个C程序,实现选择排序算法。

8. 编写一个C程序,实现冒泡排序算法。

9. 编写一个C程序,实现快速排序算法。

10. 编写一个C程序,实现希尔排序算法。

11. 编写一个C程序,将一个二维数组转置。

12. 编写一个C程序,计算一个数的阶乘。

13. 编写一个C程序,实现斐波那契数列。

14. 编写一个C程序,计算两个数的最大公约数。

15. 编写一个C程序,计算两个数的最小公倍数。

16. 编写一个C程序,计算一个数的平方根。

17. 编写一个C程序,计算一个数的立方根。

18. 编写一个C程序,实现矩阵乘法运算。

19. 编写一个C程序,实现字符串的查找和替换。

20. 编写一个C程序,实现栈的基本操作(入栈、出栈、查看栈顶元素)。

21. 编写一个C程序,实现队列的基本操作(入队、出队、查看队首元素)。

22. 编写一个C程序,实现链表的基本操作(插入、删除、倒置)。

23. 编写一个C程序,实现二叉树的前序、中序和后序遍历。

24. 编写一个C程序,实现图的深度优先搜索算法。

25. 编写一个C程序,实现图的广度优先搜索算法。

26. 编写一个C程序,实现最短路径算法(Dijkstra算法或Floyd算法)。

27. 编写一个C程序,实现最小生成树算法(Prim算法或Kruskal算法)。

28. 编写一个C程序,实现拓扑排序算法。

29. 编写一个C程序,实现优先队列。

30. 编写一个C程序,实现哈希表的基本操作(插入、查找、删除)。

31. 编写一个C程序,实现堆的基本操作(插入、删除、查找最大值)。

32. 编写一个C程序,实现最大堆排序算法。

c语言程序设计考试题及答案解析

c语言程序设计考试题及答案解析

c语言程序设计考试题及答案解析一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 在C语言中,以下哪个函数用于计算并返回字符串的长度?A. strlen()B. strcpy()C. strcat()D. strcmp()答案:A3. 以下哪个选项是C语言中的合法整型常量?A. 0x12B. 0b101C. 0.5D. 1e2答案:A4. 在C语言中,以下哪个运算符用于计算两个数的差?A. +=B. -C. *D. /答案:B5. C语言中,以下哪个关键字用于声明一个函数?A. defineB. functionC. voidD. return答案:C6. 在C语言中,以下哪个关键字用于声明一个全局变量?A. staticB. externC. autoD. register答案:B7. C语言中,以下哪个函数用于将字符串复制到另一个字符串?A. strcpy()B. strncpy()C. strcat()D. strcmp()答案:A8. 在C语言中,以下哪个关键字用于声明一个静态局部变量?A. staticB. externC. autoD. register答案:A9. C语言中,以下哪个函数用于将一个整数转换为字符串?A. atoi()B. itoa()C. sprintf()D. sscanf()答案:B10. 在C语言中,以下哪个关键字用于声明一个指针?A. intB. charC. *D. void答案:C二、填空题(每题2分,共20分)1. C语言中,用于定义一个整型变量的关键字是________。

答案:int2. C语言中,用于定义一个浮点型变量的关键字是________。

答案:float 或 double3. C语言中,用于定义一个字符型变量的关键字是________。

c语言程序设计实验题答案

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语言实验考试必考题

fibonacci数列main(){long f,f1,f2; int i;f1=f2=1;printf("%10ld%10ld",f1,f2);for(i=3;i<=20;i++){f=f1+f2;printf("%10ld",f);if(i%4==0)printf("\n");f1=f2;f2=f;}}1+2!+3!+...main(){float n,s=0,t=1;for(n=1;n<=20;n++){t*=n;s+=t;}printf("1+2!+3!+4!...=20!=e\n",s); }a!#include<stdio.h>main(){int i,n;long s;s=1;i=1;printf("please input n;\n");scanf("%d",&n);do{s*=i;i++;}while (i<=n);printf("%d!=%ld\n",n,s);}计算e的近似值并输出第几项#include<stdio.h>main(){int n,i,e; float x,sum;scanf("%d",&e);sum=1;i=1;x=1.0;n=1;while(i<=e){x=x/i;sum+=x;i++;n++;}printf("sum=%f,%d",sum,n);}计算m的阶乘/* Note:计算m的阶乘*/#include "stdio.h"main(){int m; long mm;long facto();printf("Enter m=");scanf("%d",&m);mm=facto(m);printf("The %d factorial is %1d.\n",m,mm); }long facto(x)int x;{long y;for(y=1;x>0;--x)y*=x;return(y);}求C(n,m)/* Note:阶乘n,m */#include "stdio.h"int jiecheng( int x){int i;if(x==0) i=1;elsei=x*jiecheng(x-1);return(i);}int c(int n,int m){int c,z;c=n-m;z=jiecheng(n)/(jiecheng(m)*jiecheng(n-m));return(z);}main(){int a,m,n;k:scanf("%d%d",&m,&n);if(n<m) {printf("wrong!");goto k;}a=c(n,m);printf("m=%d,n=%d\n",m,n);printf("C(m,n)=%d\n",a);}求e的近似值#include "stdio.h"main(){double e=1,f=1;int n;for(n=1;n<20;n++) {f/=n;e+=f;}printf("e=%.121f\n",e);}产生44矩阵,并输出行列互换后的矩阵/* Note:产生4*4矩阵,并输出行列互换后的矩阵*/ #define N 4#include "stdio.h"void main(){int i,j,a[N][N],b[N][N];for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]);printf("A array:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("% -4d",a[i][j]);printf("\n");}for(i=0;i<N;i++)for(j=0;j<N;j++)b[i][j]=a[j][i];printf("B array:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("% -4d",b[i][j]);printf("\n");}}计算矩阵周边元素之和#include<stdio.h>#define N 4#define M 5main(){int array[N][M]={0};int i,j,sum=0,sam=0,last;printf("Please input a array:\n");for(i=0;i<N;i++)for(j=0;j<M;j++)scanf("%d",&array[i][j]);printf("the array is over\n");for(i=0;i<N;i++)for(j=0;j<M;j++){sum+=array[i][j];}for(i=1;i<N-1;i++)for(j=1;j<M-1;j++){sam+=array[i][j];}last =sum-sam;printf("sum is %d",last);}求矩阵对角线的和/* 求矩阵对角线的和*/#include<stdio.h>void main(){int a[4][4],j,i,s=0;for(i=0;i<4;i++){for(j=0;j<4;j++){a[i][j]=rand()%10+0;printf("%4d",a[i][j]);}printf("\n");}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3) s+=a[i][j];printf("%d\n",s);}输出对角线为1的矩阵#include <stdio.h>main(){int a[5][5]={0},*p[5],i,j;for(i=0; i<5; i++) p[i]= a[i] ;for(i=0; i<5; i++){ *(p[i]+i)=1;*(p[i]+5-i-1)=1;}for(i=0; i<5; i++){for(j=0; j<5; j++)printf("%2d", p[i][j]);printf("\n");}}在矩阵中查找指定数据/* 在矩阵中查找指定数据*/#include<stdio.h>#include<stdlib.h>#define N 5void main(){int i,j,k,t=0,a[N][N];printf("产生%d*%d个2位随即整数组成的数组:\n",N,N); for(i=0;i<N;i++){for(j=0;j<N;j++){a[i][j]=rand()%90+10;printf("%4d",a[i][j]);}printf("\n");}printf("输入要查找的整数:"); scanf("%d",&k);for(i=0;i<N;i++){for(j=0;j<N;j++)if(a[i][j]==k){printf("a[%d][%d]=%d\n",i,j,k);t=1;}}if(t!=1) printf("% d not found ! \n",k); }按逆序输出各位数字main(){unsigned long a;scanf("%ld",&a);{for(;a;printf("%d",a%10),a/=10); }}倒序输出#define N 3#include"stdio.h"main(){int a[N],k;for(k=0;k<N;k++)scanf("%d",&a[k]);for(k=N-1;k>=0;k--)printf("%d",a[k]);}利用指针排序#include<stdio.h>swap(int *p1,int *p2){int p;p=*p1;*p1=*p2;*p2=p;}main(){int n1,n2,n3;int *p1,*p2,*p3;printf("input three integers n1,n2,n3:");scanf("%d%d%d",&n1,&n2,&n3);p1=&n1;p2=&n2;p3=&n3;if(n1>n2) swap(p1,p2);if(n1>n3) swap(p1,p3);if(n2>n3) swap(p2,p3);printf("Now ,the order is: %d %d %d\n",n1,n2,n3); }冒泡排序法#define N 4#include<stdio.h>main(){int i,j,m,a[N],end=0;for(i=0;i<N;i++)scanf("%d",&a[i]);for(j=1;j<=N-1&&!end;j++){end=1;for(i=0;i<N-j;i++)if(a[i]<a[i+1]){m=a[i];a[i]=a[i+1];a[i+1]=m;end=0;}}for(i=0;i<N;i++)printf("%5d",a[i]);}排序,插入一个数后再排序/* Note:排序,插入一个数后再排序*/#include "stdio.h"void main(){int i,j,m,n,a[9];printf("Please input 8 numbers");for(i=0;i<8;i++)scanf("%d",&a[i]);for(i=0;i<=7;i++){for(j=1;j<=7-i;j++)if(a[j-1]>a[j]){m=a[j];a[j]=a[j-1];a[j-1]=m;}}for(i=0;i<8;i++)printf("%d ",a[i]);printf("\nplease input another number");scanf("%d",&n);for(i=0;i<=7;i++)if(n<=a[i]){for(j=8;j>i;j--)a[j]=a[j-1];break;}a[i]=n;for(i=0;i<=8;i++)printf("%d ",a[i]);}排序将前k个元素拍到k元素之后顺序不变/* Note:排序将前k个元素拍到k元素之后顺序不变*/ #include<conio.h>#include<stdio.h>main( ){ int n, k, xx[20];int i, j, t;printf("\nPlease enter a number: ");scanf("%d", &n );printf("\nPlease enter %d numbers: ",n);for (i=0; i<n; i++) scanf("%d", &xx[i] );printf("\nPlease enter another number: ");scanf("%d", &k );for (i=0; i<k; i++){ t=xx[0];for ( j = 1; j < n; j++ )xx[j-1]=xx[j];xx[j-1]=t;}printf("\nAfter moving:\n");for(i=0;i<n;i++) printf("%3d",xx[i]);printf("\n");}输出两数平方和的百位#include<stdio.h>main(){int a,b,c;scanf("%d%d",&a,&b);c=a*a+b*b;if(c>100) printf("%d",c/100);else printf("%d",a+b);}输入三个数从大到小输出#include<stdio.h>main(){int a,b,c,t;printf("please input a,b,c\n");scanf("%d,%d,%d",&a,&b,&c);if(a<b){t=a;a=b;b=t;}if(a<c){t=a;a=c;c=t;}if(b<c){t=b;b=c;c=t;}printf("%d>=%d>=%d\n",a,b,c);}选择排序法#define N 5main(){int i,j,m,p,a[N];for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N-1;i++){p=i;for(j=i+1;j<N;j++)if(a[p]>a[j]) p=j;if(p!=i){m=a[p];a[p]=a[i];a[i]=m;}}for(i=0;i<N;i++)printf("%5d",a[i]);}输出0-30之间的偶数/* 输出0-30之间的偶数*/#include<stdio.h>void main(){ int i,a=1;for(i=0;i<30;i+=2,a++){printf("%4d",i);if(a%5==0) printf("\n");}}输出所有大于1010的4位偶数#include "stdio.h"void main(){int i;for(i=1010;i<=9876;i+=2)if(i/100%11&&i%100%11&&i/10%100%11&&i/1000!=i%10&&i/1000!=1/10%10&&i/100%10! =i%10) printf(" %d",i);}四个奇数相加#include<stdio.h>main(){int a,b,c,d,s;printf("please input a,b,c,d:\n");scanf("%d,%d,%d,%d",&a,&b,&c,&d);s=0;if((a%2)!=0) s=s+a;if((b%2)!=0) s=s+b;if((c%2)!=0) s=s+c;if((d%2)!=0) s=s+d;printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);printf("s=%d\n",s);}判断两个数中的最大值(if else)#include<stdio.h>main(){float x,y;scanf("%f,%f",&x,&y);if(x>y) printf("max=%f\n",x); else printf("max=%f\n",y);}求十个数中最大的数#include<stdio.h>main(){int i,k,max;scanf("%d",&max);for(i=2;i<11;i++){scanf("%d",&k);if(max<k) max=k;}printf("max=%d\n",max);}输出最大值/* Note:输出最大值*/#include "stdio.h"main(){float a,b;int c;scanf("%f%f",&a,&b);c=max(a,b);printf("MAX is %d\n",c); }max (float x,float y){float z;z=x>y?x:y;return(z);}三角形判断#include<stdio.h>main(){int a,b,c;scanf("%d%d%d",&a,&b,&c);if((a+b)&&(a-b)<c)if((a!=c)&&(b!=c)&&(a!=b))printf("不是等边三角形");else if((a==b)&&(b==c)&&(c==a)) printf("三角形为等边三角形");else printf("三角形为等腰三角形"); else printf("a,b,c不能组成三角形");}输入三角形的三条边并输出main(){int x,y,z;k: scanf("%d,%d,%d",&x,&y,&z);if(x+y<=z||x+z<=y||y+z<=x){printf("data error! Input again\n"); goto k;}printf("x=%d,y=%d,z=%d\n",x,y,z); }分钟转化为小时#include<stdio.h>main(){int a=790,b,c;b=a/60;c=(a-b*60);printf("%d小时%d分钟",b,c);}国际象棋盘输出/* Note:国际象棋盘输出*/#include "stdio.h"void main(){int i,j;for(i=0;i<8;i++){for(j=0;j<8;j++)if((i+j)%2==0)printf("%c%c",219,219);elseprintf(" ");printf("\n");}菱形输出main(){int i,j,k;for(i=0;i<=3;i++){for(j=0;j<=2-i;j++)printf(" ");for(k=0;k<=2*i;k++)printf("*");printf("\n");}for(i=0;i<=2;i++){for(j=0;j<=i;j++)printf(" ");for(k=0;k<=4-2*i;k++)printf("*");printf("\n");}}输出九九乘法表#include<stdio.h>main(){int a,b,c;printf(" * 1 2 3 4 5 6 7 8 9\n");printf(" -----------------------------\n");for(a=1;a<=9;a++){printf("%3d",a);for(b=1;b<=a;b++){c=a*b;printf("%3d",c);}printf("\n");}}输出菱形的图形#include<stdio.h>#define N 4main(){int m=N*2,i,j;for(i=1;i<m;printf("\n"),i++)for(j=1;j<m;putchar(N-abs(i-N)<=abs(j++-N)?' ':'*'));}输出每行和列上的星数/* Note:输出每行和列上的星数*/#include "stdio.h"void main(){int a,b,i,k;printf("请输入每行和列上的星个数");scanf("%d%d",&a,&b);b=b-2;{ for(i=1;i<=a;i++){printf("* ");}printf("\n");}{for(i=1;i<=b;i++){printf("*");for(k=1;k<=((a-1)*2+(a-2));k++) printf(" ");printf("*");printf("\n");} }{for(i=1;i<=a;i++){printf("* ");}printf("\n");}}图形输出main(){int i,j,n;for(i=1;;i++){scanf("%d",&n);if(n%2!=0){for(i=1;i<=n;i++){if(i<=((n+1)/2)){for(j=1;j<=((n+1)/2)-i;j++){printf(" ");}for(j=1;j<=(2*i-1);j++){printf("*");}printf("\n");}else {for(j=1;j<=i-((n+1)/2);j++){printf(" ");}for(j=1;j<=(2*((n+1)-i)-1);j++){printf("*");}printf("\n");}}}else printf("请重新输入\n");}}switch语句输入的数分段#include"stdio.h"main(){int x;printf("please input x:\n");scanf("%d",&x);switch(x/10){case 10:case 9: printf("x=%d-A\n",x);break; case 8: printf("x=%d-B\n",x);break; case 7:case 6: printf("x=%d-C\n",x);break; case 5:case 4:case 3:case 2:case 1:case 0: printf("x=%d-D\n",x);break; default : printf("x=%d data error! \n",x); }}单个字符的输出#include "stdio.h"void main(){char s1[80],s2[80];int i;printf("input string s2:\n");gets(s2);for(i=0;s2[i]!='\0';i++)s1[i]=s2[i];s1[i]='\0';puts(s1);}输入的数范围在0-100main(){int x;k: scanf("%d",&x);if(x<0||x>100){printf("data error! Input again\n"); goto k;}}判断是否是回文#include<stdio.h>#include<string.h>void daozhi(char str[]){int i,n;char c,*s=str;for(n=0;s[n]!='\0';)n++;printf("n=%d\n",n);for(i=0;i<=n/2;i++){c=str[i];str[i]=str[n-i-1];str[n-i-1]=c;}}void main(){char str1[100],str2[100];int b;gets(str1);strcpy(str2,str1);daozhi(str2);b=strcmp(str1,str2);if(b==0)printf("%s yes",str1);elseprintf("%s not",str1);}判断整数是否是素数#include<stdio.h>main(){int i,k,n;scanf("%d",&k);n=1;for(i=2;i<k;i++)if(k%i==0){n=0;i=k;}if(n==1) printf("%d is a prime\n",k); else printf("%d is not a prime\n",k); }判断整数是否是素数1#include<stdio.h>#include<math.h>void prime(double n){int i,j=0;for(i=2;i<=(int)sqrt(n);i++)if((int)n%i==0){j++;break;}if(j==0) printf("shi su shu");else printf("bu shi sushu");}main(){double n;scanf("%lf",&n);prime(n);}求水仙花数#include<stdio.h>main(){int i,j,k,n;for(n=0;n<1000;n++){i=n/100;j=n/10%10;k=n%10;if(n=i*i*i+j*j*j+k*k*k){printf("%d*%d*%d+%d*%d*%d+%d*%d*%d\n",n,i,i,i,j,j,j,k,k,k); }}}输出0-1000以内的素数main(){int n,i,k;for(k=0;k<=1000;k++){n=1;for(i=2;i<k;i++)if(k%i==0) {n=0;break;}if(n==1) printf("%4d",k);}}输出1000以内的水仙花数/* Note:输出1000以内的水仙花数*/#include "stdio.h"main(){int i,a,b,c;for(i=100;i<999;i++)if((a=i/100)*a*a+(b=i/10%10)*b*b+(c=i%10)*c*c==i)printf("%d\t",i);}输出一千以内的水仙花数和素数#include "stdio.h"prime(long n){int i;for(i=2;i<n;i++){if(n%i==0) return 0;}return 1;}main(){long n,j=0,t=0,k=0,i;for(n=100;n<1000;n++){t=n/100;k=n-(t*100);i=k/10;j=n%10;if(n==((t*t*t)+(i*i*i)+(j*j*j))){if(prime(n)) printf("%d既是素数又是水仙花数\n",n); else printf("%d是水仙花数不是素数\n",n);}else continue;}}完数#include <stdio.h>main(){int n=1000;int r,j,i;for(i=1;i<n; i++){r = 0;for(j=1;j<i;j++){if(i%j == 0){r = r + j;}}if(r == i){printf("the result is:%d\n",r);}}return 0;}计算字符个数#include "stdio.h"void main(){char s1[80];int i;printf("input string s1:\n");gets(s1);i=0;while(s1[i]!='\0') i++;printf("i=%d\n",i);}商品价格统计/* Note:商品价格统计*/#include<stdio.h>#include<conio.h>main(){ int i, a[100]={90, 180, 270, 380, 590, 530, 140, 750, 380}, b[6];{for(i=0;i<=6;i++)b[i]=0;for(i=0;i<9;i++){switch(a[i]/100){case 0:++b[0];break;case 1:++b[1];break;case 2:++b[2];break;case 3:++b[3];break;case 4:++b[4];break;case 7:++b[5];break;case 6:++b[5];break;case 5:++b[5];break;}}}printf("The result is: ");for (i=0; i<6; i++) printf("%d ", b[i]);printf("\n");}统计各个整数的个数/* 统计各个整数的个数*/#define N 100void main(){int i,j,k,a[N],b[10];k=0;printf("Input a integer(0--9),end with -1\n");scanf("%d",&j);while(j>=0&&j<=9){a[k]=j;k++;scanf("%d",&j);}for(i=0;i<10;i++)b[i]=0;for(i=0;i<k;i++)b[a[i]]+=1;for(i=0;i<10;i++)printf("%d:%d\n",i,b[i]);}统计数据#include<stdio.h>main(){char ch;int let1,let2,digit,space,other;let1=let2=digit=space=other=0;while((ch=gethcar())!='!')if(ch>='a'&&ch<='z') let2++;else if(ch)='A'&&ch<='Z') let1++;else if(ch)='0'&&ch<='9'dig++else if(ch==' ') space++;else other++;printf("let1=%d,let2=%d,digit=%d,space=%d,other=%d\n"),let1,let2,digit,space,other); }统计选票#define N 3#define M 10#include"string.h"#include "stdio.h"void main(){char s[N][10],k[10];int b[N],i,j;for(i=0;i<N;i++){gets(s[i]);b[i]=0;}printf("请输入所投候选人姓名:\n");for(i=0;i<M;i++)if(strcmp(s[j],k)==0){b[j]++;break;}for(i=0;i<N;i++)printf("%10s;%5d\n",s[i],b[i]);}1-3_5-9+...-99+101main(){int i=1,sum=i;while(i<101){sum+=i=i-2;sum+=i=-i+2;} printf("%d\n",sum);|ax2+bx+c=0#include<stdio.h>#include<math.h>main(){float a,b,c,a2,x1,x2;double d;printf("Input a,b,c\n");scanf("%f,%f,%f",&a,&b,&c);if(a==0)x1=-c/b;else{d=b*b-4*a*c;a2=2*a;x1=-b/a2;if(d>=0) x2=sqrt(d)/a2;else x2=sqrt(-d)/a2;}if(a==0)printf("root=%f\n",x1);elseif(d>=0){printf("real root:\n");printf("root 1=%f,root2=%f\n",x1+x2,x1-x2);else{printf("complex root:\n");printf("root1=%f+%fi\n",x1,x2); printf("root2=%f-%fi\n",x1,x2);}}Xn的前中后三相相加#include "stdio.h"void main(){long a=0,b=1,c=0,e ; int i,d;scanf("%d",&d);for(i=1;i<=(d+2)/3;i++)e=b(a+=b+c,b+=c+a,c+=a+b); printf("%10ld%10ld%10ld",a,e);}计算2/1+3/2+...21/13main(){int n,t,number=20;float a=2,b=1,s=0;for(n=1;n<=number;n++){s=s+a/b;t=a;a=a+b;b=t;}printf("sum is %9.6f\n",s);}计算100个数的平均值大于平均数#define N 5main(){int k;float a[N],av,s;s=0;for(k=0;k<N;k++){scanf("%d",&a[k]);s=s+a[k];av=s/N;printf("average=%f\n",av);for(k=0;k<N;k++)if(a[k]>av) printf("%f",a[k]);}计算x的n次方/* Note:计算x的n次方*/#include "stdio.h"long power (x,n)int x,n;{long p;for(p=1;n>0;--n)p*=x;return(p);}main(){int x,m;printf("Enter x and m;");scanf("%d%d",&x,&m);printf("X power M is %ld.\n",power(x,m));}买苹果梨西瓜main(){int i,j,k;printf("apple watermelon pear\n");for(i=1;i<=100;i++)for(j=1;j<=10;j++)if((k=100-i-j)*2==400-i*4-j*40)printf("%4d%7d%9d\n",i,j,k);}判断某数能被k整除#include<stdio.h>main(){int k,a,i;printf("please input numbers:\n");scanf("%d,%d",&a,&k);if(a%k==0) printf("%d/%d=%d yes\n",a,k,i=a/k); else printf("%d/%d no\n",a,k);}求1到n之和#include<stdio.h>main(){int s,i;s=0;i=1;while (i<=100){s+=i;i++;}printf("1+2+2+...+100=%d\n",s);}求f=1-13+15-17+.../* Note:求f(x)=1-1/3+1/5-1/7+... */#include "stdio.h"#include"math.h"void main(){int s,i;float n,t,pi;t=1.0;pi=0;n=1.0;s=1.0;scanf("%d",&i);while(n-1<=i){pi=pi+t;n+=2.0;s=-s;t=s/n;}printf("pi=%f\n",pi);}求每个学生的平均成绩/* 求每个学生的平均成绩*/#define N 5#include "stdio.h"void main(){int i,j;float a[N][5];for(i=0;i<N;i++)for(j=0;j<4;j++)scanf("%f",&a[i][j]);for(i=0;i<N;i++){a[i][4]=0;for(j=1;j<4;j++)a[i][4]+=a[i][j];a[i][4]/3;}for(i=0;i<N;i++){printf("% -4.0f",a[i][0]);for(j=1;j<5;j++)printf("%-6.1f",a[i][j]);printf("\n");}}求一个特定的平方数一个整数加上100后是一个完全平方数,再加上168又是一个完全平方数#include"math.h"main(){long int i,x,y,z;for(i=1;i<100000;i++){ x=sqrt(i+100);y=sqrt(i+168);if(x*x==i+100&&y*y==i+168)printf("\n%ld\n",i);}}任取1-9中的4个互不相同的数,使他们的和为12main(){int i,j,k,m,n=0;for(i=1;i<10;i++)for(j=1;j<10;j++)for(k=1;k<10;k++)for(m=1;m<10;m++){if(i==j||i==k||i==m||j==k||j==m||k==m) continue; if(i+j+k+m!=12) continue;n++;printf("{%d,%d,%d,%d}",i,j,k,m);if(n%6==0)printf("\n");}}任意输入10个数,求他们的和main(){double p=0,n=0,f;int i;for(i=1;i<=10;i++){acanf("%lf",&f);if(f>0) p+=f;else n+=f;}printf("%lf%lf%lf\n",p,n,p+n);}输出递增分数之和#include<stdio.h>main(){int i; float s;s=0;i=1;while(i<=100){s+=1.0/i;i++;}printf("s=%f\n",s);}输出既能被5整除又能被3整除main(){int n;for(n=10;n<100;n++){if(n%3!=0||n%5!=0) continue;printf("%5d",n);}}输入a,b求a的b次方main(){unsigned long a,b,c,i;scanf("%ld%ld",&a,&b)'c=a%1000;for(i=1;i<b;i++) c=c*a%1000;if(c<100) printf("0");if(c<10) printf("0");printf("%ld\n",c);}实现字符串连加/* Note:实现字符串连加*/#include "stdio.h"void main(){char s1[80],s2[80];int i,k;printf("Input string s1 and s2 :\n");gets(s1);gets(s2);i=0;while(s1[i]!='\0') i++;k=0;while(s2[k]!='\0'){ s1[i]=s2[k];i++;k++;}s1[i]='\0';printf("s1=s1+s2=%s\n",s1);}输入两个字符窜,使其合并/* Note:输入两个字符窜,使其合并*/ #include <stdio.h>main(){char str1[80],str2[80],str[80];char *p,*q,*r,*s;int i,j,n;printf("Enter string1:");gets(str1);printf("Enter string2:");gets(str2);for(p=str1,q=str2,r=str;*p!='\0'&&q!='\0';)if(*p<*q)*r++=*p++;else*r++=*q++;s=(*p!='\0')?p:q;while(*s!='\0')*r++=*s++;*r='\0';printf("Result:");puts(str);}输入若干个字符串中最短的字符串/* Note:输入若干个字符串中最短的字符串*/#include "stdio.h"#include"string.h"void main(){char s1[80],min[80]; int k,len;printf("Input string:\n");gets(s1);strcpy(min,s1);len=strlen(min); /* strlen(x); 求字符串长度的函数*/ gets(s1);do{ k=strlen(s1);if(k<len){len=k;strcpy(min,s1);}gets(s1);}while(s1[0]!='\0');printf("len=%d,min=%s\n",len,min);}大小写字母转换/* Note:大小写字母转换*/#include "stdio.h"void main(){char a[15]="china";strupr(a); /* 转换为大写字母*/puts(a);strlwr(&a); /* 转换为小写字母*/puts(a);}输入若干个字符,把其中的小写字母换成大写字母#include<stdio.h>main(){char ch;ch=getchar();while(ch!='#'){ch=ch>='a'&&ch<='z'?ch-32:ch;putchar(ch);ch=getchar();}}字母加密输出a-c/* Note:字母加密输出a-c */#include "stdio.h"void main(){int c;while((c=getchar())!='\n'){if((c>='A'&&c<'Y')||(c>='a'&&c<'y'))c+=2;else if(c=='y'||c=='Y'||c=='z'||c=='Z')c=-24;putchar(c);}putchar('\n');}求最大公约数和最小公倍数main(){int x,y,a,b,t;scanf("%d,%d",&x,&y);a=x;b=y;t=a%b;while(t!=0){a=b;b=t;t=a%b;}printf("x=%d,y=%d-%d,%d\n",x,y,b,x*y/b); }输出无重复的三位数字/* Note:输出无重复的三位数字*/#include "stdio.h"void main(){int i,j,k;for(i=1;i<5;i++)for(j=1;j<5;j++)for(k=1;k<5;k++){if(i!=k&&i!=j&&j!=k)printf("%d%d%d\n",i,j,k);}}。

C语言实验题

C语言实验题

实验二 C基本数据类型及运算目的要求:掌握C语言中整型、字符型、实型变量的定义及赋值;学会使用C的有关运算符及相关表达式;进一步熟悉VC++ 6.0的集成开发环境。

实验内容:1. 编写程序,从键盘接收3个实数(分别为10.0、20.0、5.0),输出这3个数的和s、乘积t和平均值a。

2. 编程。

要求用户输入两个整数a、b(分别为20、10),读取用户从键盘输入的值,然后:1) 用整型输出这两个数的和、差;2) 用长整型输出这两个数的积,用float输出商;3) 用整型输出这两个数的余数,用float输出平均值。

3. 再次运行程序第2题中的程序,使整数a、b的值分别为10、20,分析程序运行结果,并给出说明 *。

实验三 C简单程序设计目的要求:掌握C语言中赋值语句的使用。

掌握数据输入输出的方法。

能正确使用各种格式转换符。

实验内容:1. 编写一个程序,从键盘接收一个一位的整型数,经转换,用字符函数putchar输出。

例如,输入整数5,程序运行后输出字符5。

2. 编程。

输入半径,计算球体表面积和球体积。

3. 编写一个程序,要求通过键盘给6个变量赋值,然后将变量的值在屏幕上打印输出。

这六个变量的值分别为:10,-10,40000,a,3.14,hello。

*实验四 C程序控制结构--分支目的要求:学会正确使用逻辑运算符与逻辑表达式。

掌握分支结构的格式及流程。

学会利用分支结构控制程序的流程。

实验内容:1. 编程实现:键盘输入三个整数,分别存放到变量a,b,c中,输出其中的最小值(要求不改变a、b、c的值)。

2. 编程实现:键盘输入一个字符,如是大写字母,则输出相应小写字母;如是小写字母,则输出相应大写字母;其它字符原样输出。

3. 计算以下分段函数值具体要求如下:①用if语句实现分支结构的编程。

②自变量与函数均采用双精度类型。

③自变量x用scanf函数输入,且输入前要有提示。

④结果的输出采用以下形式:x=具体值,f(x)=j具体值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5 大写字母转换成小写字母 输入一个大写英文字母,输出相应的小写字母。 6 编写摄氏温度、华氏温度转换程序。 从键盘输入一个摄氏温度,屏幕就显示对应的华氏温度,输出取两位小数。转换 公式:F=(C+32)×9/5 。
1
分支结构 7 判断数的符号 输入整数 x,若x 大于0,y=1;若x 等于0,y=0;否则,y=-1,最后输出y。 8 计算个人所得税 输入一个职工的月薪 salary,输出应交的个人所得税tax(保留2 位小数)。 tax = rate * (salary-850) 当 salary <= 850 时,rate = 0; 当 850 < salary <= 1350 时,rate = 5; 当 1350 < salary <= 2850 时,rate = 10; 当 2850 < salary <= 5850 时,rate = 15; 当 5850 < salary 时,rate = 20; 9、试编程判断输入的正整数是否既是 5 又是 7 的正倍数。若是,则输出 yes; 否则输出 no。
2
循环结构 10.是求 1 -100 之间的所有除 5 余 2 的数之和。 11.所谓回文数是从左往右和从右往左读起来都一样的数字,如 121 是一个回文 数,计算从 1881 开始到 4000 年为止,共有多少个年号是回文年号? 12.是求 1-5000 之间的能被 7 整除的前若干个偶数之和, 当和大于 600 时程序退 出,请将运行结果。 13.编程序求出 1~100 所有整数的平方和并输出结果。 14.一个数如果刚好与小于它的所有因子之和相等,则称该数为一个“完数”, 如:6=1+2+3,则 6 就是一个完数。求出 800 以内的所有完数之和。 15.所谓回文数是从左至右与从右至左读起来都是一样的数字,如:121 是一个 回文数。编写程序,求出 300—800 的范围内所有回文数的和。 16.有 36 个学生一起买小吃,共花钱 120 元,其中每个大学生花 4 元,每个中学 生花 2 元,每个小学生花 1 元,问大、中、小学生的人数分配共有多少种不同的 解(去掉某类学生为 0 的解)? 17. 求 1 至 100 之间的奇数和 18.输出 2 至 1000 之间在的质数。 19.输入一个 3 位的正整数,输出其各位上的数字。 20.对 15 个数进行排序,按从小到大的顺序输出。 21.一个数除了能被 1 和它本身整除之外,不能被其它整数整除,该数称为素数。 求出 1000-5000 之间素数的和。 22.求[600,900]之间素数的个数。
3
函数 23.求a+aa+aaa+…+aa…a 输入 2 个正整数a 和n, 求a+aa+aaa+…+aa…a(n 个a)之和。 要求定义并调用函数 fn(a,n),它的功能是返回aa⋯a(n 个a)。 例如,fn(3,2)的返回值是33。 24. 统计素数并求和 输入 2 个正整数m 和n(1<=m,n<=500),统计并输出m 和n 之间的素数的个 数以及这些素数的和。 要求定义并调用函数 prime(m)判断m 是否为素数。 25. 输出 Fibonacci 序列 输入 2 个正整数m 和n(1<=m,n<=10000), 输出m 和n 之间所有的Fibonacci 数。Fibonacci 序列(第1 项起):1 1 2 3 5 8 13 21 ...... 要求定义并调用函数fib(n), 它的功能是返回第n 项Fibonacci 数。 例如, fib(7) 的返回值是13。 26.用下列迭代公式求a的平方根。X从键盘输入。精读为10
5
指针 32.查找整数 定义一个函数 search(int list[],int n,int x),在数组list中查找元素x,若找 到则返回相应下标,否则返回-1。在main函数中调用search,main函数如下: void main() { int i, x, a[10], res; for(i=0; i<10; i++) scanf("%d", &a[i]); scanf("%d", &x); res = search(a, 10, x); printf("%d ", res); } 33.排序 定义函数void sort(int a[],int n),用选择法对数组a中的元素排序。自己定义 main函数,并在其中调用sort函数。 34.找最长的字符串 输入5个字符串,输出其中最长的字符串。 35.字符串复制 分别用字符数组和字符指针定义函数strmcpy(s,t,m), 将字符串t中从m个字符 开始的全部字符复制到字符串s中去。 36.删除字符 编写一个函数delchar(s,c),该函数将字符串s中出现的所有c字符删除。自己 定义main函数,并在其中调用delchar(s,c)函数。
x n 1 1 a ( xn ) 2 xn
-6
4
数组和字符串 27. 求最大值及其下标 输入一个正整数 n (1<n<=10),再输入n 个整数,输出最大值极其下标(设最大 值惟一,下标从0 开始)。 28. 逆序输出 输入一个正整数 n (1<n<=10),再输入n 个整数,按逆序输出这些数。 29. 交换最小值和最大值 输入一个正整数 n (1<n<=10),再输入n 个整数,将最小值与第一个数交换,最 大值与最后一个数交换,然后输出交换后的n 个数。 30. 求矩阵每行元素之和 输入 2 个正整数 m 和 n (1≤m, n≤6),然后输入该m 行 n 列矩阵a 中的元 素,分别求出各行元素之和, 并存入一维数组row 中, 再输出row. 31. 求字符串长度 连续输入一批以 # 结束的字符串(字符串的长度不超过80),遇 ## 则全部输入 结束。统计并输出每个字符串的有效长度。
C 语言程序设计实验 36 题 邓作杰 编 简单程序设计与基本数据处理 1 显示短句 在屏幕上显示一个短句“Programming in C is fun!” 2 求两个数的和与差 输入整数 a 和 b,计算并输出 a、b 的和与差。 3 求平方根 输入 1 个实数 x,计算并输出其平方根(保留 1 位小数) 4 华氏温度转换为摄氏温度 输入华氏温度 f,计算并输出相应的摄氏温度 c(保留 2 位小数)。c = 5/9(f-32).
6
相关文档
最新文档