




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前言实验一 C程序的运行环境实验二 数据类型、运算符和表达式1、实验目的通过本次实验要求学生掌握以下知识:(1)熟悉数据和运算符的基本概念(2)掌握数据类型、常量、变量的概念,以及常量、变量的定义方法(3)熟练地应用常量、变量和运算符构成表达式,对数据进行处理2、实验步骤(1)分析下列程序的结果,思考输出结果的原因#includevoid main() char a,b,c; a=a;b=b;c=c; a=a+1;b=b-1;c=c-32; printf(%c,%c,%cn,a,b,c); int a1,b1,c1; a1=a-1;b1=b+1;c1=c+32; printf(%d,%c,%dn,a1,b1,c1);#includevoid main() int a,b,p,q; a=1;b=2; p=a+; q=+b; printf(%d,%d,%d,%dn,a,b,p,q); int c,d,e,f;c=d=e=f=2; c*=2+3;d+=d-=d*=d; e=(e+,+e,e%=2); f=(f+) + (+f); printf(%d,%d,%d,%dn,c,d,e,f);(2)编写程序实现以下问题1、求任意两个数的加法、减法、乘法、除法2、编写一个程序将“I love you”这个字符串进行加密,密码规律自定义。(可参照恺撒密码的方式)实验三 顺序程序设计1、实验目的通过本次实验要求学生掌握以下知识:(1)能读懂简单的程序,并对顺序程序设计有初步的认识(2)可以编写简单的顺序程序(3)通过上机调试,了解顺序程序设计中常见的错误,掌握基本的调试技术(逐步分析程序)。2、实验步骤(1) 已知摄氏温度与华氏温度的换算公式 C=5/9(F-32) 编写一个程序求华氏温度为30,70,100。 #includevoid main() float f; float c; scanf(%f,&f); c=(f-32)*5/9; printf(%fn,c);(2) 已知地球半径为6371.0km,编写一个程序计算地球表面积的近似值,并打印输出地球的半径、的近似值、地球的表面积。 void main()float r=6371,s;float pi=3.14;s=pi*r*r;printf(地球的半径是:%.2fn,r);printf(pi的值为:%.2fn,pi);printf(地球的表面积为:%en,s);(3) 已知三角形的三条边a,b,c,求三角形面积的公式为: 编写一个程序读入a,b,c的值,计算出面积F,并输出三条边及面积的值。(开平方根函数为sqrt,在math.h文件中)#include #include void main() float a,b,c,s,F; scanf(%f,%f,%f,&a,&b,&c); s=1.0/2*(a+b+c); F=sqrt(s*(s-a)*(s-b)*(s-c); print(三角形的面积为:%f,F);(4)设圆半径r=2,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆柱体积。编写程序,用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。编写程序实现。输出结果如右图所示:#define PI 3.14#includevoid main()float r,h,l,s,ss,v;printf(请输入圆半径:);scanf(%f,&r);printf(请输入圆柱高:);scanf(%f,&h);l=2*PI*r;s=PI*r*r;ss=4*s;v=PI*r*r*h; printf(圆的面积为:%.2fn,s);printf(圆的周长为:%.2fn,l);printf(圆球的表面积为:%.2fn,ss);printf(圆柱的体积为:%.2fn,v); (5)分析下列程序的结果,并看懂程序。#includevoid main() char c1; printf(请输入一个字符:); c1=getchar(); if(c1=a&c1=A&c1=1&c1=9) printf(你输入的是数字:); putchar(c1); else printf(你输入的是其它东东:); putchar(c1); 实验四 选择结构程序设计(一)实验内容1、实验目的通过本次实验要求学生掌握以下知识:(1)清楚的掌握if语句、switch语句的各种使用方法,并灵活运用(2)能读懂if语句、switch语句的流程走向(3)通过上机调试,了解选择程序设计中常见的错误,掌握基本的调试技术(逐步分析程序)。2、实验步骤(1)编程求:void main()int x,y;scanf(%d,&x);if(x!=0)y=x*x-5;elsey=3*x+2;printf(x=%d,y=%dn,x,y);(2)编写一个按月收入额计个人收入调节税的应用程序。记税公式如下: 0 pay=1000或离退休 (pay-1000)*0.05 1000pay=1500 (pay-1500)*0.1+25 1500pay=2000 (pay-2000)*0.15+75 2000pay=2500Tax= (pay-2500)*0.2+150 2500pay=3000 (pay-3000)*0.25+250 3000pay=3500 (pay-3500)*0.3+375 3500pay=4000 (pay-4000)*0.35+525 4000pay=4500 其中:pay 为纳税人的月收入#includevoid main()float tax,pay;scanf(%f,&pay);if(pay=1000)tax=0;else if(pay=1500)tax=(pay-1000)*0.05;else if(pay=2000)tax=(pay-1500)*0.1+25;else if(pay=2500)tax=(pay-2000)*0.15+75;else if(pay=3000)tax=(pay-2500)*0.2+150;else if(pay=3500)tax=(pay-3000)*0.25+250;else if(pay=4000)tax=(pay-3500)*0.3+375;else if(pay 30中度肥胖 : 体重指数 35重度肥胖 : 体重指数 40void main()float weight,height,t;printf(请输入体重(公斤));scanf(%f,&weight);printf(请输入身高(米));scanf(%f,&height);t=weight/(height*height);printf(%fn,t);if(t18)printf(偏瘦); else if(t=25)printf(正常体重);else if(t=30)printf(超重);else if(t=35)printf(轻度肥胖);else if(t=40)printf(中度肥胖);elseprintf(中度肥胖);(4)任意输入3个数,将之从大到小排序并输出void main() int a,b,c,min,mid,max; printf(请输入三个整数:); scanf(%d%d%d,&a,&b,&c); min=a;max=a;mid=a; if(a=b&a=c) min=a; if(b=c) mid=b; max=c; else mid=c; max=b; else if(c=a&c=b) min=c; if(a=b) mid=a; max=b; else mid=b; max=a; else min=b; if(a9999)place=5;else if(num999)place=4;else if(num99)place=3;else if(num9)place=2;else place=1;printf(place=%dn,place);printf(每位数字是:);ten_thousand=num/10000;thousand=(num-ten_thousand*10000)/1000;hundred=(num-ten_thousand*10000-thousand*1000)/100;ten=(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=num-ten_thousand*10000-thousand*1000-hundred*100-ten*10;switch(place) case 5:printf(%d,%d,%d,%d,%dn,indiv,ten,hundred,thousand,ten_thousand);break;case 4:printf(%d,%d,%d,%dn,indiv,ten,hundred,thousand);break;case 3:printf(%d,%d,%dn,indiv,ten,hundred);break;case 2:printf(%d,%dn,indiv,ten);break;case 1:printf(%dn,indiv);(6)输入数字1,则鸣叫一声,输入数字2,则鸣叫两声,如果是15之外的数,则没有叫声。(提示:程序中定义了一个宏BEEP,当程序中遇到BEEP,便用printf(a);替换,方法如下:)#define BEEP printf(a);/使用switch case 语句实现#define BEEP printf(a);void main()int a;scanf(%d,&a);switch(a)case 1:BEEP break;case 2:BEEP BEEP break;case 3:BEEP BEEP BEEP break;case 4:BEEP BEEP BEEP BEEP break;case 5:BEEP BEEP BEEP BEEP BEEP break;default:printf(errorn);(7)编写整数加减乘除计算器。(比如:你依次输入1+2,计算机会自动进行判别,运算出结果。)/使用switch case 语句实现参考程序如下,请完善后执行。void main()char c;int num1,num2,jg;switch(c) case +:jg=num1+num2;break; case -:jg=num1-num2;break; case *: case : #includevoid main()int a,b;char op;printf(n 输入操作数1,运算符,操作数2: );scanf(%d,%c,%d,&a,&op,&b);switch(op) case +: printf(n %d+%d=%dn,a,b,a+b); break; case -: printf(n %d-%d=%dn,a,b,a-b); break; case *: printf(n %d%d=%dn,a,b,a*b); break; case /: printf(n %d/%d=%dn,a,b,a/b); break; default: printf(n 运算符错误!); 实验五 循环控制程序设计1、实验目的通过本次实验要求学生掌握以下知识:(1)熟悉掌握用while语句、do-while语句和for语句实现循环的方法。(2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)(3)进一步学习调试程序。2、实验步骤(1)For 循环基础专项练习,从下列实例中体会For循环的用法.求110这十个数的累加void main()int i,sum=0;for(i=1;i=10;i+)sum=sum+i;printf(sum=%dn,sum);.求110这十个数的累乘void main() int i,multi=1;for(i=1;i=10;i+)multi=multi*i;printf(multi=%dn,multi);.求1100中偶数之和void main()int i,sum=0;for(i=1;i=100;i+)if(i%2!=0)continue;sum=sum+i;printf(sum=%dn,sum);.求1100中奇数之积void main()int i;double multi=1;for(i=1;i=100;i+)if(i%2=0)continue;multi=multi*i;printf(multi=%en,multi);.求1+1/2+1/3+1/4+1/10void main()float i,sum=0;for(i=1;i=10;i+)sum=sum+1/i;printf(sum=%fn,sum);.求1-1/2+1/3-1/4+-1/10void main()float i,sum=1,s=1;for(i=2;i=10;i+)s=s*(-1);sum=sum+s/i;printf(sum=%fn,sum);.利用循环输出”a“z”void main()char c=a;while(c=z)printf(%c ,c);c+;.求110这十个数的阶乘之和void main()float i,j,multi=1,sum=0;for(i=1;i=10;i+)for(j=1;j=i;j+)multi=multi*j;sum=sum+multi;multi=1;printf(sum=%en,sum);void main()float i,j,multi=1,sum=0;for(i=1;i=10;i+)for(j=1;j=i;j+)multi=multi*j;sum=sum+multi;multi=1;printf(sum=%en,sum);(2)我国现有人口13亿,按人口年增长率0.8%计算,多少年后我国人口超过26亿。 计算公式 26=13(1+0.008)n (提示:可以使用while 语句,如果使用FOR语句会有问题么?)#includevoid main()int n=0;float people=13;dopeople=people*1.008; n+;while(people=26);printf(n=%dn,n);#includevoid main()int n;float people=13;for(n=0;people=26;n+)people=people*1.008;printf(n=%dn,n);(3)统计你输入的十个两位正整数中偶数与奇数的个数,并求出偶数与奇数各自的总和(提示:要清楚的知道我们判断一个数是基数或是偶数的方法:%,再者对于辅助变量的用法要学会:i+)。void main()int i,num1=0,num2=0,sum1=0,sum2=0,t;for(i=1;i=10;i+)scanf(%d,&t);if(t%2=0)num1+;sum1=sum1+t;elsenum2+;sum2=sum2+t;printf(num1=%d, sum1=%dn,num1,sum1);printf(num2=%d, sum2=%dn,num2,sum2);(4)从键盘上输入一个正整数,找出大于或等于该数的第一个素数(提示:素数就是质数,对于此题目首先要知道如何判断一个数是素数)。#includevoid main()int a,k,i,p=0;printf(请输入一个正整数:);scanf(%d,&a);while(p=0)k=sqrt(a);for(i=2;ik)p=1;else a+;printf(第一个素数是:%dn,a);#include/*void main()/方法考虑使用双层循环,外循环保证运算是在非素数的情况下计算,内循环用来计算素数,一旦找到因子肯定不是素数,直接跳出循环int number,k,i,p=0;/p为逻辑值,如果是素数p!=0printf(请输入一个正整数:);scanf(%d,&number);while(p=0)k=sqrt(number);for(i=2;ik)p=1;else number+;printf(第一个素数是:%dn,number);*/解法2 不使用BREAK void main()/方法考虑使用双层循环,外循环保证运算是在非素数的情况下计算,内循环用来计算素数,一旦找到因子肯定不是素数,直接跳出循环int number,i,j=0,k;printf(请输入一个正整数:);scanf(%d,&number); k=sqrt(number); for(i=number;j=k;i+)k=sqrt(i);for(j=2;j=k&i%j!=0;j+); /重要,求素数的基本算法printf(第一个素数是:%dn,i-1);#includevoid main()int a,k,i,p;printf(请输入一个正整数:);scanf(%d,&a);for(p=a+1;p+)k=sqrt(p);for(i=2;ik)break;printf(第一个素数是:%dn,p);(5)可以选择性的打印出:矩形、等腰三角形、直角三角形、梯形(提示:switch语句与for语句的结合使用,switch语句用于判断选择的图形,for循环用于图形的实现)。void main()int i,j,k;scanf(%d,&i);switch(i)case 1:for(k=0;k5;k+) for(j=0;j8;j+) printf(*); printf(n); break;case 2:for(k=1;k6;k+) for(j=1;j=k;j+) printf(* ); printf(n); break;case 3:for(k=0;k=3;k+) for(j=0;j=2-k;j+) printf( ); for(j=0;j=2*k;j+) printf(*); printf(n); break;case 4:for(k=0;k=3;k+) for(j=0;j=2-k;j+) printf( ); for(j=0;j=2*k+2;j+) printf(*); printf(n); break;(6)打印九九乘法表。void main()int i,j;for(i=1;i=9;i+)for(j=1;j=9;j+)printf(%d*%d=%d ,i,j,i*j);printf(n);(7)统计语句中某个字符的个数。比如:输入:this is an apple,a;则系统输出:a在此句中出现了2次void main()char s30,c;int num=0,k=0;printf(请输入字符串:);while(c=getchar()!=n) sk+=c;sk=0;printf(请输入要查找的字符:);scanf(%c,&c);for(k=0;sk!=0;k+)if(sk=c)num+;printf(%c总共出现了%d次n,c,num);oid main()char s30,c;int num=0,k=0;printf(请输入字符串:);gets(s);printf(请输入要查找的字符:);scanf(%c,&c);for(k=0;sk!=0;k+)if(sk=c)num+;printf(%c总共出现了%d次n,c,num);(8)求水仙花数。比如:135=13+33+53(提示:此题的关键是,如何将数的个位数、十位数、百位数从数中分离出来)#includevoid main()int i,j,k,n;printf(水仙花数是:);for(n=100;n=999;n+)i=n/100;j=(n-100*i)/10;k=n-100*i-10*j;if(n=pow(i,3)+pow(j,3)+pow(k,3)printf(%d ,n);printf(n);(9)任给一个自然数,将其分解为各个因子的乘积,并按规定的格式显示。例如:输入24,输出应为:24=1*2*2*2*3。void main()int n,t,i,a10=1,k=1;scanf(%d,&n);t=n;for(i=2;i=n;i+)if(t%i=0)t=t/i;ak=i;k+;i-;for(i=0;ik;i+)printf( %d,ai);printf(n);/*void main()int number,temp,i,a10=1,k=1;scanf(%d,&number);temp=number;for(i=2;i=number;i+)if(temp%i=0)temp=temp/i;ak=i;k+;i-;for(i=0;ik;i+)printf( %d,ai);printf(n);*/求质因子,主要思想和求素数一致,将其中的约数给求出来,注意,因子是可以相同的,整个过程相当于因子分解/基本思想,从2到数本身反复尝试因子。void main()int number,temp,i;scanf(%d,&number);temp=number;printf(number=1); /1是真因子,是连成式的前导部分for(i=2;i=number;)if(temp%i=0)printf(*%d,i);/temp/=i;/下一次循环,循环变量不变,因为当前值仍然可能为因子,在这种情况下TEMP值在减少/即终值在减少,自然循环逼近结束elsei+;/循环变量增加的条件是当前循环变量不是因子,自然尝试下一个printf(n);(10)用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。#includevoid main()float x,x0,f,f1;x=1.5;dox0=x;f=(2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x=x0-f/f1;while(fabs(x-x0)=1e-5);printf(方程根%6.2fn,x);(11)一个孤岛上,有一只猴子和一堆桃子,这只猴子每天吃桃子的一半多一个,第十天,只剩下一个,问共有多少个桃子。void main()int i,total=1;for(i=2;i=10;i+)total=(total+1)*2;printf(总共有%d个桃子n,total);*(12)两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X、Y、Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单。A说他不和X比,C说他不和X、Z比。请编程找出3对赛手的名单。void main()char i,j,k;for(i=x;i=z;i+)for(j=x;j=z;j+)if(i!=j)for(k=x;k=z;k+)if(i!=k&j!=k)if(i!=x&k!=x&k!=z)printf(a-%c,b-%c,c-%cn,i,j,k); 实验六 数组(一)实验内容1、实验目的通过本次实验要求学生掌握以下知识:(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法(2)掌握字符数组合字符串函数的使用;(3)掌握与数组有关的算法(特别是排序算法)。2、实验步骤(1)分析下列程序的结果,并思考产生结果的原因:#includevoid main() char a6=xuhai; int b33=1,2,3,4,5,i; for(i=5;i=0;i-) printf(%c,ai); printf(%d,b01+b11+b22);#includevoid main()char a6=xuhai;int b33=1,2,3,4,5,i;for(i=5;i=0;i-)printf(%c,ai);printf(%d,b01+b11+b22);(2)计算,保存和输出 的值 (提示:sin(x)函数在math.h文件中,定义数组x10存储由键盘输入的10个数(for循环实现),再用for循环依次计算出这10个数相应的y的值,并存储到数组y中,最后打印数组y)。#includevoid main()double a10;int i;double b10;for(i=0;i10;i+)scanf(%lf,&ai);for(i=0;i10;i+)bi=2*sin(ai)*sin(ai)+5*sin(ai*ai);for(i=0;i10;i+)printf(%.2f ,bi);printf(n);(3)用筛选法求100之内的素数。(提示:定义一个整型数组n用来表示1到100数中,哪些是素数,哪些不是,如果i是素数,则ni=1,否则ni=0。初始化时可以将每个数组值都赋值为1)#include#includevoid main()int m,k,i,n=0;for(m=1;m=100;m+)k=sqrt(m);for(i=2;i=k+1)printf(%d ,m);n=n+1;printf(n);(4)a、用冒泡排序法对10个数据进行排序后输出 b、从键盘输入一个数,要求按排序好的顺序将它插入到a题数组的合适位置c、从键盘输入一个数,要求在b题中的数组中找到该数据的位置并将其删除。#includevoid main()int a11,i,j,temp,t,n=0;for(i=0;i10;i+)scanf(%d,&ai);for(i=0;i9;i+)for(j=0;jaj+1)temp=aj;aj=aj+1;aj+1=temp;for(i=0;i10;i+)printf(%d ,ai);printf(n);printf(请输入要插入的数字:);scanf(%d,&t);if(t=0;i-)ai+1=ai;a0=t;elsefor(i=9;i=0;i-)if(ait)ai+1=ai;else break;ai+1=t;for(i=0;i11;i+)printf(%d ,ai);printf(n);printf(请输入要删除的数字:);scanf(%d,&t);for(i=0;it)break;for(j=i;j11;j+)aj-n=aj;for(i=0;i11-n;i+)printf(%d ,ai);printf(n);*(5)给定两个一维数组a和b,每个数组由相异的整数元素组成。将公共的元素存入数组c中;数组a的特有元素存入数组d中,数组b中的特有元素存入数组e中。最后把结果输出。(提示:定义整型变量b_has,a_has作为标准位,分别表示某个数是否在b或a中。当在处理数组ai时,当b_has=1,表示这个数也在数组b中,将ai赋给数组d中;当b_has=0,则表示数组b中没有该数,那么将ai赋给c中。bi处理和ai类似)void main()int a5,b5,c5,d5,e5,i,j,k=0,m=0,n=0;printf(请输入数组a:n);for(i=0;i5;i+)scanf(%d,&ai);printf(请输入数组b:n);for(j=0;j5;j+)scanf(%d,&bj);/for(i=0;i5;i+)/ei=bi;for(i=0;i5;i+)for(j=0;j5;j+)if(ai=bj)ck=ai;k+;break;if(j=5)dm=ai;m+;for(i=0;i5;i+)for(j=0;jk;j+)if(bi=cj)break;if(j=k)en=bi;n+;printf(数组c里面的元素为:n);for(i=0;ik;i+)printf(%d ,ci);printf(n);printf(数组d里面的元素为:n);for(i=0;im;i+)printf(%d ,di);printf(n);printf(数组e里面的元素为:n);for(i=0;in;i+)printf(%d ,ei);printf(n);(6)设计一个程序。a、形成矩阵a= b、计算两条对角线元素的和与成绩;c、计算方阵中所有不靠边元素之和d、计算方阵中所有靠边元素之和e、将a的非对角线上的元素清零,并打印输出。(提示:画图,并很清楚的看懂aij中下标的变化规律)void main()int a55,i,j,t,sum=0;for(i=0;i5;i+)t=2;for(j=0;j=i;j+)aij=1;for(j=i+1;j5;j+)aij=t;t+;for(i=0;i5;i+)for(j=0;j5;j+)printf(%d ,aij);printf(n);for(i=0;i5;i+)sum=sum+aii;printf(主对角线上的元素和为:%dn,sum);sum=0;for(i=0;i5;i+)sum=sum+ai4-i;printf(次对角线上的元素和为:%dn,sum);su
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 橱柜订购合同协议书
- 2025年海洋生态修复工程投资风险与政策支持分析报告
- 2025年电动汽车电池热管理技术产业链创新与市场前景研究报告
- 2025年虚拟现实在房地产营销中的应用商业计划书
- 粉店学徒合同协议书
- 养老金制度改革2025年对金融市场风险控制策略研究报告
- 2023年2024年演出经纪人之演出经纪实务考试题库含答案(达标题)
- 英语试题改编思路及答案
- 飙车扰民面试题及答案
- 通州区冷藏配送合同协议
- 玉石代理销售合同协议
- (二模)2025年汕头市高三普通高考第二次模拟考试英语试卷(含答案)
- 山东2025年山东省公共卫生临床中心招聘博士人才60笔试历年参考题库附带答案详解
- 2024年台州市委统战部下属事业单位选聘笔试真题
- 山西太原事业单位考试《行测》模拟题带答案2024年
- 2025年中考英语第一次模拟考试(苏州卷)(原卷版)
- 湖北省武汉市2025届高中毕业生四月调研考试地理试题及答案(武汉四调)
- 海南琼海市旅游健康文化发展有限公司招聘笔试题库2025
- 福州一号线盾构法地铁工程整体施工组织设计
- 2025-2030中国具身智能行业研发创新策略与未来前景展望研究报告
- 公务员考试-经济基础知识模拟题-计量经济学-协整与误差修正模型
评论
0/150
提交评论