第一篇:C语言实验报告,含递归(带程序)
一、写一个函数intdigit(int n,int k),它返回数n的从右边向左的第k个十进数字位值。例如,函数调用digit(1234,2)将返回值3。
二、写一个函数intisprime(intn),当n是质数时,函数返回非零值;当n是合数时,函数返回零值。
三、写一个函数reverse(chars[]),将字符串s[]中的字符存储位置颠倒后重新存于s[]中。试分别用递归和非递归两种形式编写。
四、写一个主函数输入测试数据(自己指定),并调用上述函数,检查函数功能的正确性。要求:把预备知识、步骤、程序框图、调试好的程序及存在的问题写在下面(不够可以附页)。
#include
#include
intdigit(int n,int k);
intisprime(intn);
void reverse(chars[]);//非递归实现
void reverse1(chars[]);//递归实现
int digit(int n,int k)
{
int m1,m2,i;
m1=n;
m2=0;
while(m1!=0)//统计n数字的位数
{
m1=m1/10;
m2=m2+1;
}
if(k<=0||k>m2)return 0;//不能正确截取
m1=n;
for(i=1;i m1=m1/10; m2=m1%10;//取第k位 return m2; } intisprime(intn)//是素数返回1,是合数返回0 { int i; if(n<0) n=-n; if(n==1)return 0; for(i=2;i<=n/2;i++) if(n%i==0) break; if(i>n/2) return 1; else return 0; } void reverse(chars[],int len)//非递归,字符串倒置 { int i;char ch; for(i=0;i { ch=s[i];s[i]=s[len-1-i];s[len-1-i]=ch; } } voidreverse1(chars[],int m,int n)//递归方法实现 { char ch; ch=s[m];s[m]=s[n];s[n]=ch; if(m<=n) reverse1(s,m+1, n-1); } void main() { int n=123456,k=4,len; char str[80]=“abcdefghij”,str1[80],str2[80]; if(digit(n,k)==0) printf(“%d输入错误n”,k); else printf(“%d的右边第%d位是:%dn”,n,k,digit(n,k)); if(isprime(k)==0) printf(“%d是合数n”,k); else printf(“%d是素数n”,k); len=strlen(str); printf(“原字符串n”); strcpy(str1,str); puts(str1); reverse(str1,len); printf(“倒置以后的字符串n”); puts(str1); }printf(“原字符串n”);strcpy(str2,str);puts(str2);reverse1(str2,0,len-1);printf(“倒置以后的字符串n”);puts(str2); 工程学院 实 验 报 告 课 程 名 称: c程序设计 课 程 代 码: 8234510 学院(直属系): 年级/专业/班: 2010级汽电1班 学 生 姓 名: 学 号: 31201008030 实验总成绩: 任 课 教 师: 开 课 学 院: 工程学院 实验中心名称: 交通实验中心 西华大学实验报告(理工类) 开课学院及实验室:汽车学院机房(5d-215)实验时间: 年 月 日 1、实验目的 2、实验设备、仪器及材料 3、实验内容 一般实验: 3.1实验方案设计与选择(设计性、创新性实验需写该项内容)3.2实验原理及实验步骤(实验工作原理或实验的主要操作过程)3.3实验记录(核心代码及调试过程) 注解:理工科实验需记录实验过程中的数据、图表、计算、现象观察等,实验过程中出现的问题; 其它如在计算机上进行的编程、仿真性或模拟性实验需记录程序核心代码以及程序在调式过程中出现的问题及解决方法;记录程序执行的结果。 上机实验: 3.1上机实验的内容及要求 3.2算法设计思想与算法实现步骤 3.3程序核心代码,程序调试过程中出现的问题及解决方法 3.4 程序运行的结果 4、实验总结 4.1实验结果分析及问题讨论 4.2实验总结心得体会 注解:实验总结的内容根据不同学科和类型实验要求不一样,一般理工科类的实验需要对实验结果进行分析,并且对实验过程中问题进行讨论;在计算机上进行的编程、仿真性或模拟性实验需要对上机实践结果进行分析,上机的心得体会及改进意见。其它实验应总结实验过程写出心得体会及改进意见。 1、实验目的(1)熟悉c语言的集成环境,了解菜单的使用方法。(2)掌握c语言程序上机的编辑、编译、连接、运行的基本步骤。(3)了解c语言程序的结构。 2、实验设备、仪器及材料(1)硬件环境 微型计算机(intel x86系列cpu)一台(2)软件环境 windows98/2000/xp操作系统 vc6.0集成开发环境 3、实验内容 3.1上机实验的内容及要求(1)熟悉vc中常用菜单项及对应快捷键的使用方法。(2)熟悉c语言程序上机的编辑、编译、连接、运行的基本步骤。(3)编程实现一个字符串的输出。(4)编程输出两个数的最大值。(5)计算由键盘输入的任意两个整数的积。3.2算法设计思想与算法实现步骤(1)编程实现一个字符串的输出为程序一,编程中,定义一个空函数后,直接由利用printf输出字符串。(2)编程输出两个数的最大值为程序二,编程中,用scanf函数输入两个数,再用选择函数判定两数大小,最后用printf函数输出最大值。(3)计算由键盘输入的任意两个整数的积为程序三,编程中,用scanf函数输入两数,再由乘积函数进行求积运算。 3.3程序核心代码,程序调试过程中出现的问题及解决方法 (1)程序核心代码 程序一: #include #include #include 当分别添加上丢失的符号后,问题解决,程序编辑成功。3.4 程序运行的结果 程序一运行结果: 程序二运行结果: 程序三运行结果: 4、实验总结 4.1程序运行结果分析及思考题讨论 根据程序运行结果和编程之前的预期结果一致,说明编程成功。 对于程序的结构应该熟记在心,而且在vc6.0集成开发环境中不需要用户去进行连接的操作,这一步的操作电脑会自动完成。4.2实验总结心得体会 对第一次c语言编程上机实验,对编程还有很多不是很熟悉的地方,需要在接下来的学习中进一步熟 练掌握操作。而且在以后的编程中对于printf,csanf函数的运用将会更多。在编程中还必须小心翼翼,如果出现编译错误,可参看界面下方的错误提示,这对于编程成功很有帮助。 1、实验目的篇二:c程序设计实验三实验报告 实 验 报 告 工学院 土木工程专业 09级 2011 至 2012 学 第 1 学期 学号:xxxxxx 姓名:xxxxxx 2011 年10月 08日 第3~4节 综合 楼 325教室 篇三:c语言实验报告1 实验名称:熟悉c程序的运行环境 一、实验目的和要求 了解turbo c++ 3.0的基本操作方法,学会独立使用该系统 编辑、编译、连接和运行一个c程序 通过运行简单的c程序,初步了解c源程序的特点 二、实验内容和原理 1.输入并运行一个简单、正确的程序 # include 三、实验环境 1.硬件:pc机; 2.软件:windows操作系统、turboc++ 3.0。 四、算法描述及实验步骤 1.内容1(1)启动tc++3.0,新建一个c文件; (2)输入程序1; (3)保存文件; (4)编译源程序,观察屏幕上显示的编译信息,修改出现的错误,直到编译成功,再次保存文件; (5)连接程序、运行程序,观察运行结果。2.内容2(1)启动tc++3.0,新建一个c文件; (2)输入程序2; (3)保存文件; (4)编译源程序,观察屏幕上显示的编译信息,修改出现的错误,直到编译成功; (5)连接程序、运行程序,观察运行结果。3.内容3(1)启动tc++3.0,新建一个c文件; (2)输入程序2; (3)保存文件; (4)编译源程序,观察屏幕上显示的编译信息,修改出现的错误,直到编译成功; (5)连接程序、运行程序; (6)输入数据,观察运行结果。 五、调试过程 1.输入后,按alt+f9编译,出现如下信息: 成功编译。 2.输入后,按alt+f9编译,出现如下信息: 经分析是由于int a, b, sum与sum=a+b俩句未加;导致。3.输入后,按alt+f9编译,出现如下信息: 经分析是由于int a, b, c句未加;导致。 修改后编译结果如下: 六、实验结果 1.2.3.输入123,654运行结果如下: 输入1989,1988运行结果如下: 七、总结 经过本次上机实验,我基本了解turbo c++ 3.0的操作方法,学会在该系统上编辑、编译、连接和运行一个c程序。同时也明白在编译过程中应留心一些细节问题(如一个语句结束要加“;”),也学会通过编译错误信息找出错误,并修正错误。 实验名称:数据类型、函数和表达式 八、实验目的和要求 掌握c语言数据类型,熟悉如何定义整型、字符型和实型变量并赋值 掌握不同类型数据之间赋值的规律 学会使用c的有关算法运算符及表达式,特别是自加(++)和自减(--)运算符的使用 进一步熟悉c程序的编辑、编译、连接和运行的过程 九、实验内容和原理 2.输入并运行下面程序,分析运行结果。# include m=++i; n=j++; printf(%d,%d,%d,%d,i,j,m,n); } 十、实验环境 1.硬件:pc机; 2.软件:windows操作系统、turboc++ 3.0。 十一、算法描述及实验步骤 (1)启动tc++3.0,新建一个c文件; (2)输入程序; (3)保存文件; (4)编译源程序,观察屏幕上显示的编译信息,修改出现的错误,直到编译成功; (5)连接程序、运行程序,观察分析运行结果。 十二、调试过程 1.经分析错误是由于printf(%c%c, c1, c2)后未加;导致。 修改后运行如下: 2.成功运行 3.printf(%u, %un a, b);改成printf(%u, %un, a, b);成功运行 4. 成功运行。 十三、实验结果 1.2.3.4.十四、总结篇四:c程序实验报告 《程序设计综合训练》 第一部分 设 计 报 告 专 业: 软件工程 班 级: 12软件1 学 号: 12144131 姓 名: 陈 雷 指导教师: 钱 进、吕 萍 成 计算机工程学院 2013年3月 目 录 (1)题目名称、内容、来源(如2010年省计算机等级考试秋季上机试卷2)。 (2)解题的基本思路,(3)设计方案,功能模块框图与程序流程图等。 (4)算法设计:算法描述、实现方法、详细流程图等。 (5)源代码:主要模块的代码与注释。 (6)程序调试:调试过程与步骤,发现的问题,解决的办法等。 (7)测试:运行程序,输入测试数据,判断是否达到预期目的。测试数据要有 典型意义,要注意临界值的选取,注意测试数据的广泛性和普适性。第二部分 (1)题目名称、内容。 (2)解题的基本思路,(3)设计方案,功能模块框图与程序流程图等。 (4)算法设计:算法描述、实现方法、详细流程图等。 (5)程序调试:调试过程与步骤,发现的问题,解决的办法等。 (6)测试:运行程序,输入测试数据,判断是否达到预期目的。测试数据要有 典型意义,要注意临界值的选取,注意测试数据的广泛性和普适性。 (7)总结:收获与体会,有实际内容,忌空洞无物,忌千篇一律,400字左右。 (8)附录:源代码(含注释)。 第一部分 2010秋03等级考试 1.编写函数int noco(int n,int *a)。函数动能是验证是验证n的立方可表示为n个连续奇数之和,若找到这样的表示则将连续奇数按从小到大的顺序存放到a指向的数组中并且函数返回1,否则函数返回0。2.编写函数main。函数功能是声明数组a,分别用整数1~10及数组a作为实参调用函数noco,并将结果数据按以下屏幕输出所示形式输出到屏幕及文件myf2.out中。#include printf(%d^3=,n); } else { printf(false);} fprintf(fp,false);fprintf(fp,%d^3=,n);for(i=0;i } k=k-2;for(j=0;j 1.编写函数long find_m(int n)。函数功能是查找满足以下条件的整数m:(1)m是 n的整数倍;(2)m的十进制表示中仅由0和1组成。函数返回找到的m的值。2.编写main 函数。函数功能是声明变量n和m,输入一个整数到n中(n<100), 用n作实参调用函数find_m,将n及找到的整数m输出到屏幕及文件myf2.out.#include 一列(列下标为0)和第二列(列下标为1)的值按如下规则生成第3列各元素的值,再以行为单位重排a数组各行元素的值,使得所有行按第3列元素从小到大有序。 第3列生成规则: 用数组a作为实参调用cresort函数,将a数组中数据输出到屏幕及文件myf2.out.#include stdio.h #define n 5 int isprime(int m){ int i;} void cresort(int a[][3],int n){ int i,j,k,m,c,t;for(i=0;i switch(c){ case 0:a[i][2]=1;break;case 2:a[i][2]=4;break;for(i=2;i<=m/2;i++)if(m%i==0)return 0;return 1;篇五:c程序设计实验报告 《c语言程序设计》实验报告 学号 不告诉你哦~ 班级 信管一班 姓名 你猜猜~哈哈 一、实验题目 一、编程实验 猜数问题:输入两个整数,并求这两个整数的和,输入所猜的结果,如果输入数比正确的结果要大,提示“猜大了”;如果输入数比正确的结果要小,提示“猜小了”;当猜对结果时提示“猜对了”,结束游戏(用函数调用方式编程)。 二、程序改错实验 输入一个数字 b,求sum=b+bb+bbb+„,改正下列程序中的错误。#include “stdio.h” main(){ int i,j;long int b,sum,temp;scanf(“%d”,&b);do { i++;for(j=0;j<=i;j++)temp+=(long int)pow(10,j-1)*b;sum+=temp;} while(i<=3)printf(“sum=%d”,sum);} 三、编程实验 编写两个矩阵相加减的程序,两矩阵的行列数均由用户输入(两矩阵的行列数要限制最大值),在屏幕上分行列打印出结果(矩阵元素为整型变量)。 解析:两个矩阵可以定义两个二维数组matrixl[m][n],matrix2[m][n]存放,用二重循环进行输入输出或实现对应元素的相加或相减运算,相加后矩阵元素存放在matrixl中,相减后矩阵元素存放在matrix2中(上机实验时输入矩阵的行数m=10, 矩阵的列数n=10)。 计算机软件技术基础实验报告 实验一:线性表的排序与查找 一.实验内容 a)键盘输入一组无序数据,添加到线性表中; b)排序线性表并输出排序结果; c)键盘输入一个数,并插入到排好序的线性表中(要求插入后的表仍为有序表),输出结果; d)键盘输入一个数,并从线性表中删除相应的数据,输出结果。 二,源程序 // Experiment1.cpp : 定义控制台应用程序的入口点。// #include “stdafx.h” #include “iostream” #include // 程序实现有各种方法,这里给出一个实例。 // 定义一个线性表 const int nMaxSize = 15;// 最大值 int nLen = 0; // 表中元素个数 int nLinearList[nMaxSize]; // 定义操作 void LSort();void LOut();void LInsert(int n);void LDelete(int n); int main(int argc,TCHAR*argv[]){ // 输入数据并放入线性表中 printf(“Please input datan”);// std::cout << “Please input datan”;int nIn = 0;for(int i = 1;i <= 10;i++){ scanf(“%d”,&nIn);// std::cin >> nIn; nLinearList[i] = nIn; nLen++; } LSort();// 排序线性表 LOut();// 输出结果 printf(“Please input a data to insert n”);scanf(“%d”,&nIn);LInsert(nIn);// 输入一个数字,并插入到线性表中 LOut(); printf(“Please input a data to delete n”);scanf(“%d”,&nIn);LDelete(nIn);// 输入一个数字,并从线性表中删除 LOut(); char chTmp;printf(“Please input a char to finish this program.”);chTmp = getch();return 0;} void LSort() // 冒泡排序,由大到小 { int j,F,k,M; F=nLen;while(F>0) {k=F-1;F=0;for(j=1;j<=k;j++){if(nLinearList[j] M=nLinearList[j];nLinearList[j]=nLinearList[j+1];nLinearList[j+1]=M;F=j; }}} } void LOut(){ printf(“n”);for(int i = 1;i <= nLen;i++){ printf(“%d, ”, nLinearList[i]);} printf(“n”);} void LInsert(int n){ int i,j;i=1;while(i 三 运行结果 实验2:栈与队列的应用 一. 实验内容 a)键盘输入算数表达式,并放入队列当中; b)应用栈的概念设计表达式求值算法; 输出表达式求值结果 二.源程序 // Experiment2.cpp : 定义控制台应用程序的入口点。 #include “stdio.h” #include // 程序实现有各种方法,这里给出一个实例。 const int MAX_LEN = 10;// 字符串的长度 const int MAX_SIZE = 30;// 栈或队的最大元素个数 // 定义一个队列的结构 struct QUEUE { int nMaxSize;// 最大值 int nCount;// 个数 int nFront;// 头 int nRear;// 尾 char szQueue[MAX_SIZE][MAX_LEN];}; //定义一个栈的结构 struct STACK { int nMaxSize;// 最大值 int nTop;// 栈顶 char szStack[MAX_SIZE][MAX_LEN];}; // 队列的操作 void InitQueue(QUEUE *q,int nMaxSize){ q->nMaxSize=nMaxSize;q->nCount=0;q->nFront=0;q->nRear=0;q->szQueue[MAX_SIZE][MAX_LEN]=0;} void InQueue(QUEUE *q, char *pItem){ if(q->nCount==q->nMaxSize){ printf(“The Queue is full!n”); return;} strcpy(q->szQueue[q->nRear],pItem);if(q->nRear++==MAX_SIZE)q->nRear=0;q->nCount++;} void OutQueue(QUEUE *q, char *pItem){ if(q->nCount==0){ printf(“The Queue is empty!n”); return;} strcpy(pItem,q->szQueue[q->nFront]);if(q->nFront++==MAX_SIZE)q->nFront=0;q->nCount--;} //栈的操作 void InitStack(STACK *s,int nMaxSize){ s->nMaxSize=nMaxSize; s->nTop=0; s->szStack[MAX_SIZE][MAX_LEN]=0;} void PushStack(STACK *s, char *pItem){ char *p;if(s->nTop p=s->szStack[s->nTop]; strcpy(p,pItem); s->nTop++;} else { printf(“The stack overflow!n”);return;} } void PopStack(STACK *s, char *pItem){ char *p;if(s->nTop==0){ printf(“stack is empty!n”); return;} else { p=s->szStack[--s->nTop]; strcpy(pItem,p);} } void GetTopStack(STACK *s, char *pItem){ char *p;char a[10]={0};if(s->nTop==0){ a[0]=';'; strcpy(pItem,a);} else { p=s->szStack[s->nTop-1]; strcpy(pItem,p);} } //字符判断 int isdigit(char x){ if(x>='0'&&x<='9')return 1;return 0;} int Priority(char *op);// 获得操作符的优先级 void Compute(char *num1, char *num2, char *op, char *chResult);//主函数 void main(){ // 计算表达式的值 char x[MAX_LEN]; // 扫描的表达式 char op[MAX_LEN]; // 栈顶运算符 char num1[MAX_LEN], num2[MAX_LEN]; // 两个操作数 char chResult[MAX_LEN]; // 运算结果 // ***声明一个队列 struct QUEUE q1; struct QUEUE *q;// ***声明OS栈和NS栈 struct STACK OS; struct STACK NS; struct STACK *o; struct STACK *n; int i=0; int j=0; int k=0;//****初始化 q=&q1; o=&OS; n=&NS; InitStack(o,20); InitStack(n,20); InitQueue(q,20); printf(“please input the expression end with //录入表达式 do { printf(”nextn“); scanf(”%s“,x); InQueue(q,x);} while(x[0]!=';');printf(”expression n“);while(true){ if(q->nCount!=0) { OutQueue(q, x); printf(”%s“,x); } ”;n“); if(isdigit(x[0])) PushStack(n,x); else { // 是数 // 认为是运算符,没有考虑空格等 GetTopStack(o,op);// 获得OS栈顶运算符 if(x[0] == ';' && op[0] == ';') // 扫描结束 { printf(”n result is “);break;} if(Priority(x)> Priority(op)){ PushStack(o,x);continue;} // 运算符的优先级〉栈顶运算符 while((Priority(x)<= Priority(op))&&Priority(op)) { PopStack(n,num1); PopStack(n,num2); PopStack(o,op); Compute(num2,num1,op,chResult); PushStack(n,chResult); GetTopStack(o,op); } PushStack(o,x); } } PopStack(n,chResult);printf(”%sn“,chResult);} int Priority(char *op){ int nPriority = 0; switch(op[0]){ case '^': nPriority = 3; break;case '*': case '/': nPriority = 2; break;case '+': // 不大于栈顶运算符 case '-': nPriority = 1; break;case ';': nPriority = 0;} return nPriority;} void Compute(char *num1, char *num2, char *op, char *chResult){ double fNum1,fNum2;double fResult = 0;fNum1 = atof(num1);fNum2 = atof(num2);switch(op[0]){ case '^': fResult = pow(fNum1,fNum2); break;case '*': fResult = fNum1*fNum2; break;case '/': fResult = fNum1/fNum2; break;case '+': fResult = fNum1+fNum2; break;case '-': fResult = fNum1-fNum2; break;} } sprintf(chResult,”%.4f",fResult);//把计算的结果转化为字符串 return;三.运行结果 实验三:关系数据语言的应用 一、实验内容 查询学生出生日期(Sno, Sname, BirthDay);按学号顺序查询一个班级的所有学生(Class, Sname);列出学生选择各门课程的成绩(Sname, Cname, Grade);列出有过不及格成绩的学生名单(Sno, Sname, Class);求学生的平均成绩和总成绩(Sname, PJCJ, ZCJ);查找各科成绩都 >= 85 分的学生(Sname, Class);将课程号为“01”的课程名称修改为“软件技术”;修改一名学生的姓名、性别、年龄;将成绩为55~59分的男生的成绩修改为60分;删除90年以后、80年以前出生的学生的所有信息(包括选课和成绩);删除一个班级的所有学生;删除所有数据表和数据库。 二 程序清单及结果: CREATE TABLE Stu(Sno CHAR(4)PRIMARY KEY, Sname CHAR(10), Sex CHAR(2), Age NUMERIC, BirthDay DATETIME, Class CHAR(10),);CREATE TABLE Course(Cno CHAR(2)PRIMARY KEY, Cname CHAR(10), Chour NUMERIC,);CREATE TABLE Score(Sno CHAR(4), Cno CHAR(2), PRIMARY KEY(Sno,Cno), Grade NUMERIC,)Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Class)values('3626','张小唯','女','18','1995-09-24','电科1202');Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Class)values('3628','王红','女','19','1994-06-27','电科1202');Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Class)values('3634','李雷','男','20','1992-11-30','电科1202');Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Class)values('3635','张明','男','18','1994-06-03','电科1202');Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Class)values('3641','赵小东','男','20','1993-03-15','电科1202'); Insert into Course(Cno,Cname,Chour)values('01','asdf','12');Insert into Course(Cno,Cname,Chour)values('02','qwer','23');Insert into Course(Cno,Cname,Chour)values('03','zxcv','34' Insert into Score(Sno,Cno,Grade)values('3570','01','97');Insert into Score(Sno,Cno,Grade)values('3580','01','54');Insert into Score(Sno,Cno,Grade)values('3584','01','56');Insert into Score(Sno,Cno,Grade)values('3583','01','88');Insert into Score(Sno,Cno,Grade)values('3574','02','87');Insert into Score(Sno,Cno,Grade)values('3575','03','79');Insert into Score(Sno,Cno,Grade)values('3576','02','68');Insert into Score(Sno,Cno,Grade)values('3577','03','58');Insert into Score(Sno,Cno,Grade)Values('3578','03','98');Insert into Score(Sno,Cno,Grade)values('3626','01','97');Insert into Score(Sno,Cno,Grade)values('3628','01','54');Insert into Score(Sno,Cno,Grade)values('3637','01','56');Insert into Score(Sno,Cno,Grade)values('3640','01','88');Insert into Score(Sno,Cno,Grade)values('3657','02','87');Insert into Score(Sno,Cno,Grade)values('3675','03','79');Insert into Score(Sno,Cno,Grade)values('3676','02','68');Insert into Score(Sno,Cno,Grade)values('3677','03','58');Insert into Score(Sno,Cno,Grade)Values('3678','03','98'); 1.查询学生出生日期(Sno, Sname, BirthDay); Select Sno,Sname,BirthDay from Stu; 2.按学号顺序查询一个班级的所有学生(Class, Sname); Select Class,Sname from Stu order by Sno; 3.列出学生选择各门课程的成绩(Sname, Cname, Grade); Select Sname,Cname,Grade from Stu,Course,Score where Stu.Sno=Score.Sno and Course.Cno=Score.Cno; 4.列出有过不及格成绩的学生名单(Sno, Sname, Class);Select distinct Stu.Sno,Sname,Class from Stu,Score where Stu.Sno=Score.Sno and Grade<60; 5.求学生的平均成绩和总成绩(Sname, PJCJ, ZCJ); Select Sname,avg(Grade)PJCJ,sum(Grade)ZCJ from Stu,Score where Score.Sno=Stu.Sno group by Stu.Sname; 6.查找各科成绩都 >= 85 分的学生(Sname, Class); Select Sname,Class from Stu where exists(Select * from Score where Stu.Sno=Score.Sno and Score.Cno='01' and Score.Grade>=85)and exists(Select * from Score where Stu.Sno=Score.Sno and Score.Cno='02' and Score.Grade>=85)and exists(Select * from Score where Stu.Sno=Score.Sno and Score.Cno='03' and Score.Grade>=85); 7.将课程号为“01”的课程名称修改为“软件技术” Update Course set Cname='软件技术' where Cno='01'; 8.修改一名学生的姓名、性别、年龄; Update Stu set Sname='aha',Sex='wm',age='10'where Sno='3626'; 9.将成绩为55~59分的男生的成绩修改为60分 Update Score set Grade=60 where Sno in(Select Sno from Stu where Sex='女')and Grade between 55 and 59; 10.删除90年以后、80年以前出生的学生的所有信息(包括选课和成绩)Delete Stu where Sno in(select Sno from Stu where BirthDay < '1980-01-01' or BirthDay>'1990-12-31') 11.删除一个班级的所有学生 Delete from Stu where Class='电科1202'; 12.删除所有数据表和数据库 Drop database MyDB; 南昌大学实验报告 学生姓名: 学 号: 专业班级: √ 综合 □ 设计 □ 创新 实验日期: 实验成绩: 实验类型:□ 验证 □一.实验名称 实验3 控制语句 二.实验目的 1.熟练掌握if、if…else、if……elseif语句和switch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。 2.熟练掌握while语句、do……while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3.掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 三.实验内容 1. 选择结构程序设计; 2. if语句的使用; 3. 使用switch语句实现多分支选择结构; 4. 三种循环语句的应用; 5. 循环结构的嵌套; 6. break和continue语句的使用。 三.实验环境 PC微机 DOS操作系统或 Windows 操作系统 Visual c++程序集成环境 四.实验内容和步骤 本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。学会单步调试和断点调试程序及变量跟踪方法。 1. 任意输入4个整数,要求按由小到大的顺序输出。 2.编程实现:输入一个整数,将其数值按照①小于10,②10~99,③100~999,④1000以上四个类别分类并显示。 要求:(1)将变量定义为整型。 (2)输入整数前,利用puts()/printf()给出提示信息。 (3)输出结果时要有必要的说明,例如:输入358时,显示358 is 100 to 999。(4)该程序利用if语句实现。 运行程序,分别输入9,21,321,4321数据检查输出信息的正确性。 3.编写程序:根据公式 261111......,输出 π的值。 122232n2要求: (1)变量π为单精度类型,n为整型; (2)计算当n的取值分别为20,50,100,200时的π值,说明什么问题? (3)修改程序,不给出n值,而改为求π值,直到最后一项的数值小于10-4 为止。 (4)对修改后的程序,输出π值以及总的项数n。输出格式为:π=值;n=值。 4.从键盘输入一个0~1000之间的任意整数,输出该整数的所有因子(例如:输入12,其因子为1,2,3,4,6,12)。 要求: (1)采用while循环语句实现。 (2)输出格式为:Input:12 Output:1,2,3,4,6,12 5.从键盘输入学生的考试成绩,利用计算机将学生的成绩划分等级并输出。学生的成绩可分成5个等级,90-100分为A级,80-89分为B级,70-79分为C级,60-69分为D级,0-59分为E级。要求在输入负数时,给出错误提示。 ① 事先编好程序,要求分别用if语句和switch语句实现。运行程序,并检查结果是否正确。 ② 再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级。修改程序,使之能正确处理任何数据。当输入数据大于100或小于0时,通知用户“输入数据错”,程序结束 6.某航空公司规定:在旅游旺季7~9月份,如果订票20张及其以上,优惠票价的10%,20张以下,优惠5%;在旅游淡季1~6月份,10~12月份,订票20张及其以上,优惠票价的20%,20张以下,优惠10%。编写一个C程序,根据月份和旅客订票张数决定优惠率。已知机票单价,请算出旅客的总付款。请使用不同的测试数据进行测试。7.计算并输出1000以内最大的10个素数以及它们的和。 要求: (1)在程序内部加必要的注释。 (2)由于偶数不是素数,可以不考虑对偶数的处理。 (3)虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 (4)输出形式为:素数1+素数2+素数+…+素数10 = 总和值。 五.实验数据及处理结果 /*写出实验内容的算法(用流程图表示)、完整的程序、结果并能对结果的正确性及上机时产生的问题进行分析,注意程序变量命名应见名知意、有适当的注释,程序书写规范*/ 【习题1】 【设计思路】 :输入a,b,c,d四个数,将四个数两两进行比较,如果前者大于后者,则将两数的值交换,否则不变。这样重复操作6次,最后输出a,b,c,d的值,则a,b,c,d从大到小排列。 【数据输入】输入整型变量 a,b,c,d 【数据输出】输出 a,b,c,d的值,使其从大到小排列。【源程序实现】 #include int a,b,c,d,t;printf(“please input four numbers(example:1 2 3 4):n”);scanf(“%d %d %d %d”,&a,&b,&c,&d);if(a>b){t=a;a=b;b=t;}/* 实现a,b的交换 */ if(a>c){t=a;a=c;c=t;}/* 实现a,c的交换 */ if(a>d) } {t=a;a=d;d=t;}/* 实现a,d的交换 */ if(b>c){t=b;b=c;c=t;}/* 实现b,c的交换 */ if(b>d){t=b;b=d;d=t;}/* 实现b,d的交换 */ if(c>d){t=c;c=d;d=t;}/* 实现c,d的交换 */ printf(“%d,%d,%d,%d”,a,b,c,d);【结果及截图】 答:输入64 3 5 23,运行结果为3,5,23,64,其截图如下: 输入格式的提示。 【修改后程序实现及结果】 /*习题2、4请添加此步*/ 【问题分析】 输入数据时,没有按正确格式输入,所以在输入数据之前,应该给出一个【习题2】 【设计思路】 【数据输入】 输入整型变量x。【数据输出】 输出x的范围。【源程序实现】 #include main() { int x; printf(“Please input a number:n”); scanf(“%d”,&x); printf(“%d is ”,x); if(x<10)printf(“less than 10n”); else if(x<100)printf(“10 to 99n”); else if(x<1000)printf(“100 to 999n”); else printf(“more than 1000n”); return 0; } 【结果及截图】 答:运行程序,分别输入9,21,321,4321,截图如下: 【习题3】 【源程序实现】 #include #include main() { int n,N; float pi,sum=0; printf(“Please input a number:nN=”); scanf(“%d”,&N); for(n=1;n<=N;n++) sum+=1.0/(n*n); pi=sqrt(6*sum); printf(“pi=%f”,pi); return 0;} 修改后的程序: #include int n=0; float pi,sum=0; do { n++; sum+=1.0/(n*n); }while(1.0/(n*n)>=1e-4); pi=sqrt(6*sum); printf(“pi=%f;n=%d”,pi,n); return 0;} 【结果i及截图】 答:计算当N的取值分别为20,50,100,200时,截图如下: 【结果ii及截图】 【习题4】 【源程序实现】 #include 【结果及截图】 答:输入30,得其因式为 1,2,3,5,6,10,15,30,截图如下: 【习题5】 【源程序实现】 If 语句 #include int num; printf(“Input:”); scanf(“%d”,&num); if(num<0||num>100)printf(“The number is wrong!”); else if(num<=59)printf(“E”); else if(num<=69)printf(“D”); else if(num<=79)printf(“C”); else if(num<=89)printf(“B”); else printf(“A”); return 0;} Switch 语句 #include int num,n; printf(“Input:”); scanf(“%d”,&num); n=num/10; switch(n) { case 0: case 1: case 2: case 3: case 4: case 5: printf(“E”);break; case 6: printf(“D”);break; case 7: printf(“C”);break; case 8: printf(“B”);break; case 9: case 10: printf(“A”);break; default: printf(“error!”); } return 0;} 【问题分析】 【习题6】 【源程序实现】 #include 【习题7】 【源程序实现】 #include 六.简答题 七、实验总结及体会 C语言程序设计(B) (2010-2011-2) 实验报告 教学班级: 学号: 姓名: 课程教师: 实验辅导教师: 江西理工大学 自由编辑的程序 一、实验前的源程序: //任意整数的叠加 #include 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名10.cpp:7: parse error before `for' [Error] D:Program FilesC-Free 4temp未命名10.cpp:7: parse error before `)' 构建中止 未命名10: 2 个错误, 0 个警告 实验后的源程序: //任意整数的叠加 #include int i,j,sum=0;printf(“please input a int numbern”);scanf(“%d”,&j);for(i=0;i<=j;i++)sum=sum+i;printf(“此数的叠加=%dn”,sum);} 二、实验前的源程序: /*小写字母转大写字母*/ #include 江西理工大学 } c2='s';c1=c1-32;c2=c2-32;printf(“%c,%cn”,c1,c); 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名11.cpp:9: `c' undeclared(first use this function)[Error] D:Program FilesC-Free 4temp未命名11.cpp:9:(Each undeclared identifier is reported only once [Error] D:Program FilesC-Free 4temp未命名11.cpp:9: for each function it appears in.)构建中止 未命名11: 3 个错误, 0 个警告 实验后的源程序: /*小写字母转大写字母*/ #include 三、实验前的源程序: /*查看某一年是否为闰年*/ #include { if(year%100==0) { if(year%400==0) i=1; else 江西理工大学 i=0; } else i=1; } else i=0;if(i) printf(“%d 是闰年n”,year);else printf(“%d 不是闰年n”,year);} 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名14.cpp:15: parse error before `else' [Error] D:Program FilesC-Free 4temp未命名14.cpp:25: parse error at end of input 构建中止 未命名14: 2 个错误, 0 个警告 实验后的源程序: /*查看某一年是否为闰年*/ #include { if(year%100==0) { if(year%400==0) i=1; else i=0; } else i=1; } else i=0;if(i) 江西理工大学 printf(“%d 是闰年n”,year);else printf(“%d 不是闰年n”,year);} 数据的输入和输出 四、程序改错题 改错前的源程序;#include #include 改错前的源程序;#include 江西理工大学 #include long x=7654123;x*=10;printf(“x=%7d”,x);} 改错前的源程序: #include #include 五、程序编写题:已知char ch’b’;int i=3 ,j=5;float x=22.354,y=435.6789;根据下面的输出结果编写程序。ch =’b’,ASCII=98 i=3□□□□□□j=5 x=22.35□□□y=435.68 实验前的源程序: #include 江西理工大学{ char ch='b';int i=3,j=5;float x=22.354,y=435.6789;printf(“ch='%c',ASCII=%dn”,ch,ch);printf(“i=%d j=%dn”,i,j);printf(“x=%.2f y=%.2fn”,x,y);} 实验错误报告:无 实验后的源程序: #include j=%dn”,i,j);printf(“x=%.2f y=%.2fn”,x,y);} 六、从键盘输入一行字符,统计其中小写字母、大写字母和其它字符的个数: 实验前的源程序: #include “stdio.h” void main(){ printf(“请任意输入一串字符:n”); char ch,sum1=0,sum2=0,other=0; ch=getchar(); while(c!='n') { if(c>='A'&&c<='Z')sum1++; else if(c>='a'&&c<='z')sum2++; else other++; c=getchar(); } printf(“大写字母的个数:%dn”,sum1);printf(“小写字母的个数:%dn”,sum2); 江西理工大学printf(“其他字符母个数:%dn”,other);} 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名7.cpp:7: `c' undeclared(first use this function)[Error] D:Program FilesC-Free 4temp未命名7.cpp:7:(Each undeclared identifier is reported only once [Error] D:Program FilesC-Free 4temp未命名7.cpp:7: for each function it appears in.)构建中止 未命名7: 3 个错误, 0 个警告 实验后的源程序: #include “stdio.h” void main(){ printf(“请任意输入一串字符:n”); char ch,sum1=0,sum2=0,other=0; ch=getchar(); while(ch!='n') { if(ch>='A'&&ch<='Z')sum1++; else if(ch>='a'&&ch<='z')sum2++; else other++; ch=getchar(); } printf(“大写字母的个数:%dn”,sum1);printf(“小写字母的个数:%dn”,sum2);printf(“其他字符母个数:%dn”,other);} 七、使用以下公式求∏的近似值,要求精确到最后一项的绝对值小于10e-4 ∏/4=1-1/3+1/5-1/7+…… 实验前的源程序: #include “stdio.h” #include “math.h” main(){ 江西理工大学 } float sum=0;int i,j;for(i=1;;i++){ j=2*i-1;if(1.0/j>0.0001){ sum+=pow(-1,i+1)*(1.o/j);continue;break;} printf(“∏=%fn”,sum*4.0); 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名9.cpp:13: nondigits in number and not hexadecimal [Error] D:Program FilesC-Free 4temp未命名9.cpp:19: parse error at end of input 构建中止 未命名9: 2 个错误, 0 个警告 实验后的源程序: #include “stdio.h” #include “math.h” main(){ float sum=0;int i,j;for(i=1;;i++){ j=2*i-1;if(1.0/j>0.0001){ sum+=pow(-1,i+1)*(1.0/j);continue;} break;} printf(“∏=%fn”,sum*4.0);} 八、用选择法对10个整数排序: 实验前的源程序: 江西理工大学#include scanf(“%d”,a[i]);} printf(“n”);for(i=0;i<10;i++)for(j=0;j<10-j;j++){ if(a[j]>a[j+1]) { k=a[j]; a[j]=a[j+1]; k=a[j+1];} printf(“这10个整数从小到大排列为:”);for(j=0;j<10;j++){ printf(“%d ”,a[j]);} printf(“n”);printf(“这10个整数从大到小排列为:”);for(j=9;j>=0;j--){ printf(“%d ”,a[j]);} 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名1.cpp:33: parse error at end of input 构建中止 未命名1: 1 个错误, 0 个警告 实验后的源程序: //用选择法对10个整数排序 #include 江西理工大学 int i,j,k;for(i=0;i<10;i++){ scanf(“%d”,a[i]);} printf(“n”);for(i=0;i<10;i++)for(j=0;j<10-j;j++){ if(a[j]>a[j+1]){ k=a[j]; a[j]=a[j+1]; k=a[j+1];} } printf(“这10个整数从小到大排列为:”);for(j=0;j<10;j++){ printf(“%d ”,a[j]);} printf(“n”);printf(“这10个整数从大到小排列为:”);for(j=9;j>=0;j--){ printf(“%d ”,a[j]);} } 九、求一个3*3的整数矩阵对角线元素之积: 实验前的源程序: #include scanf(“%d”,&a[i][j])} for(i=0;i<3;i++) 江西理工大学 { for(j=0;j<3;j++) { printf(“%d ”,a[i][j]); } printf(“n”); } printf(“n”); for(i=0;i<3;i++) { for(j=0;j<3;j++) if(i=j) ji*=a[i][j]; printf(“主对角线的积为:%dn”,ji); } } 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名4.cpp:11: parse error before `}' 构建中止 未命名4: 1 个错误, 0 个警告 实验后的源程序: #include scanf(“%d”,&a[i][j]);} for(i=0;i<3;i++){ for(j=0;j<3;j++) { printf(“%d ”,a[i][j]); } printf(“n”); } 江西理工大学 printf(“n”); for(i=0;i<3;i++) { for(j=0;j<3;j++) if(i=j) ji*=a[i][j]; printf(“主对角线的积为:%dn”,ji); } } 十、将一个数组中的值按你需从新存放。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。 实验前的源程序: #include scanf(“%d”,&a[i]);} for(i=0;i t=a[i]; a[i]=a[j-i-1]; t=a[j-i-1];} printf(“该数组逆序排列为:”); for(i=0;i printf(“%d ”,a[i]);printf(“n”);} 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名3.cpp:25: parse error at end of input 构建中止 未命名3: 1 个错误, 0 个警告 江西理工大学实验后的源程序: #include scanf(“%d”,&a[i]);} for(i=0;i t=a[i]; a[i]=a[j-i-1]; a[j-i-1]=t;} printf(“该数组逆序排列为:”); for(i=0;i printf(“%d ”,a[i]);} printf(“n”);} 江西理工大学第二篇:C程序实验报告
第三篇:c语言实验报告
第四篇:c语言实验报告
第五篇:C语言 实验报告