求100—200内所有素数
- 格式:doc
- 大小:13.00 KB
- 文档页数:1
C语言实验题1.买糖果题目描述:小瑜是个爱吃糖果的馋鬼,天天嚷着要爸爸买糖果,可是爸爸很忙,哪有时间啊,于是就让小瑜自己去了,糖果3角钱一块,爸爸给小瑜n 元钱,请你告诉小瑜最多能买几块糖,还剩几角钱?输入:输入爸爸给小瑜的钱n元,n为整数。
输出:小瑜最多能买回的糖块数以及剩下的钱(单位为:角),用空格分隔。
样例输入2样例输出6 2代码:int main(){int n,a,b;scanf("%d",&n);a=10*n/3;b=10*n%3;printf("%d %d",a,b);return 0;}温度转换题目描述:输入一个华氏温度,输出摄氏温度,其转换公式为:C=5(F-32)/9输入:输入数据只有一个实数,即华氏温度。
输出:输出数据只有一个,即摄氏温度,保留2位小数。
样例输入:32.0样例输出:0.00代码:int main(){float f,c;scanf("%f",&f);c=5*(f-32)/9;printf("%.2f",c);return 0;}三角形面积题目描述:已知三角形的边长a、b和c,求其面积。
输入:输入三边a、b、c输出:输出面积,保留3位小数。
样例输入:1 2 2.5样例输出:0.950代码:int main(){float f,c;scanf("%f",&f);c=5*(f-32)/9;printf("%.2f",c);return 0;}一元二次方程题目描述:解一元二次方程ax2+bx+c=0的解。
输入:a,b,c的值。
输出:两个根X1和X2,其中X1>=X2。
结果保留两位小数。
样例输入:1 5 -2样例输出:0.37 -5.37代码:# include<math.h>int main(){float a,b,c,disc,p,q,x1,x2;scanf("%f %f %f",&a,&b,&c);disc=b*b-4*a*c;p=-b/2*a;q=sqrt(disc)/2*a;x1=p+q;x2=p-q;printf("%.2f %.2f",x1,x2);return 0;}圆柱体计算题目描述:已知圆柱体的底面半径r和高h,计算圆柱体底面周长和面积、圆柱体侧面积以及圆柱体体积。
选择结构13、读入三个整数,从小到大输出。
14、从键盘输入一个数,判断它的奇偶性,如果是奇数则输出yes,否则输出no。
15、从键盘读入一个数,判断它的正负。
是正数,则输出"+",是负数,则输出"-"。
16、从键盘输入一个数,如果是两位数那么输入yes否则输入no。
17、输入两个数a,b,输出较大数的平方值。
18、铁路托运行李规定:行李重不超过50公斤的,托运费按每公斤0.15元计费;如超50公斤,超过部分每公斤加收0.10元。
编一程序完成自动计费工作。
19、某超市为了促销,规定:购物不足60元的按原价付款,超过60不足200的按九折付款,超过200元的,超过部分按八折付款。
编一程序完成超市的自动计费的工作。
20、打印某年某月有多少天。
(提示:A、闰年的计算方法:年数能被4整除,并且不能被100整除;或者能被400整除的整数年份。
B、利用MOD运算可以判断一个数能否被另一个数整除)。
21、编写一个程序,功能是从键盘输入一个整数,判断它是否二位数,如果是,就打印它,然后结束程序,22、编写一个程序,功能是从键盘输入三个整数,打印出其中最大的一个值。
23、当前小学生的成绩单由以前的百分制改为优秀、良好、合格、不合格四个等级的等级制。
编一程序完成分数的自动转换工作。
转换规则如下:60分以下的为不合格;60到69分为合格;70到89分为良好;90分以上的为优秀。
(提示:可以利用DIV运算来使程序更简明)循环结构分别用repeat,while循环做以下习题。
24、计算1—1000之间能同时被3和5整除的整数的和。
25、求所有的三位数中十位数能被个位数和百位数之和整除的数。
26、求水仙花数。
所谓水仙花数,是指一个三位数abc,如果满足a^3+b^3+c^3=abc,则abc是水仙花数。
27、求所有满足条件的四位数: (1)这四位数是11的倍数; (2)b+c=a;28、计算下列式子的值:28a (1)1+3+……+99 28b (2)1+2+4+8+…+102429、输入一个整数,计算它各位上数字的和。
例6、用筛法求出100以内的全部素数,并按每行五个数显示。
【问题分析】⑴把2到100的自然数放入a[2]到a[100]中(所放入的数与下标号相同);⑵在数组元素中,以下标为序,按顺序找到未曾找过的最小素数minp,和它的位置p(即下标号);⑶从p+1开始,把凡是能被minp整除的各元素值从a数组中划去(筛掉),也就是给该元素值置0;⑷让p=p+1,重复执行第②、③步骤,直到minp>Trunc(sqrt(N)) 为止;⑸打印输出a数组中留下来、未被筛掉的各元素值,并按每行五个数显示。
用筛法求素数的过程示意如下(图中用下划线作删去标志):① 2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {置数}② 2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {筛去被2整除的数}③ 2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {筛去被3整除的数}……2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {筛去被整除的数}Program Exam53;const N=100;type xx=1 .. N; {自定义子界类型xx(类型名)}Var a: array[xx] of boolean; i,j: integer;BeginFillchar(a,sizeof(a),true);a[1] := False;for i:=2 to Trunc(sqrt(N)) doif a[I] thenfor j := 2 to N div I doa[I*j]:= False;t:=0;for i:=2 to N doif a[i] thenBeginwrite(a[ i ]:5); inc(t);if t mod 5=0 then writelnend;End.【例3】输入十个正整数,把这十个数按由大到小的顺序排列(将数据按一定顺序排列称为排序,排序的算法有很多,其中选择排序中的“简单选择排序”是一种较简单的方法)分析:要把十个数按从大到小顺序排列,则排完后,第一个数最大,第二个数次大,……;因此,我们第一步可将第一个数与其后的各个数依次比较,若发现,比它大的,则与之交换,比较结束后,则第一个数已是最大的数。
求100以内的素数(质数)算法梳理质数定理:1、从2开始到⾃⾝的-1的数中找到⼀个能整除的(从2开始到⾃⾝开平⽅的数中找到⼀个能整除的)。
2、⼀个合数⼀定可以分解成⼏个质数的乘积,也就是说,⼀个数如果能被⼀个质数整除就是合数。
(使⽤列表保存质数)使⽤定理1的基本写法:(1)n = 100for i in range(2, n):for j in range(2, i):if i % j == 0:breakelse:print(i, end='')这种基本写法效率不⾼,有2点可以改进的地⽅:1、第⼀层循环的i取值时,因为偶数确定不是质数,所以排除偶数,使⽤range()函数排除偶数,range(3, n, 2)这样就减少了⼀半的数。
2、第⼆层循环j取值时,考虑从2开始到i开平⽅取值,同时也把偶数排除range(3, int(i**0.5)+1, 2)这样也可减少⼀半的数。
2就是质数,单独打印。
(2)改进(1)n = 100print(2)for i in range(3, n, 2):for j in range(3, int(i**0.5)+1, 2):if i % j == 0:breakelse:print(i, end='')(3)再(2)的基础上还有优化的点,发现第⼀层循环i取值时,当i>10时,5的倍数也可排除n = 100print(2)for i in range(3, n, 2):if i > 10 and i % 5 == 0:continuefor j in range(3, int(i**0.5)+1, 2):if i % j == 0:breakelse:print(i, end='')(4)利⽤定理2,⽤列表保存上⼀次的运算结果n = 100L = [2]for i in range(3, n, 2):for j in L:if i % j == 0:breakelse:L.append(i)print(L)此种写法的效率不⾼,第⼀层循环的i没必要与列表中的每⼀个元素取余,与从2开始到i的开平⽅处之间的数取余即可。
太原理工大学现代科技学院C语言程序设计课程实验报告专业班级学号姓名指导教师焦雄5.#include <stdio.h> void main(){int a=10,n=5;a+=a;printf("%d\n",a);a=10,a-=2;printf("%d\n",a);a=10,a*=2+3;printf("%d\n",a);a=10,a/=a+a;printf("%d\n",a);a=10,a%=(n%=2);printf("%d\n",a);a=10,a+=a-=a*=a;printf("%d\n",a); }遇到的问题和解决方法心得体会实验三简单程序、分支程序和循环程序设计实验名称实验目的和要求1.理解C语言程序的基本结构和实现基本结构的语句;2.熟练应用赋值、输入和输出语句;3.理解并掌握关系运算符、逻辑运算符及其表达式的使用;4.熟练掌握if语句、switch语句、while语句、do—while语句和for语句的用法;实验内容1.输入并运行第3章例3-3、例3-6中的程序,通过输出结果理解对应的格式说明。
2.输入并运行第3章例3-8、例3-10中的程序,注意输入数据的格式。
3.已知圆柱半径r=1.5,圆柱高h=3,编程求圆周长,圆面积和圆柱体积。
4.输入一百分制成绩,输出成绩等级A、B、C、D、E。
90分以上为A,80~89为B,70~79分为C,60~69分为D,60分以下为E。
要求程序能处理错误的输入数据。
5.利用公式:π/4=1-1/3+1/5-1/7+……,求π的近似值,直到最后一项的绝对值小于10-6为止。
(fabs(t)表示t的绝对值,1e-6=1*10-6)。
6.求100-200间所有素数。
7.输出三角形的九九乘法口诀表。
8.打印水仙花数。
水仙花数是指一个3位数,其各位数字立方和等于该数本身。
一、初级编程入门题顺序结构1、请编写一个程序,求一个正方的周长。
2、请编写一个程序,求一个长方形的周长。
3、请编写一个程序,求一个三角形的周长。
4、请编写一个程序,从键盘输入两个整数,要求求和然后输出和。
例如:输入1 4输出55、要求从键盘输入一个三位数,要求百位变十位,十位变个位,个位变百位:例如:输入123输出3126、输入一个四位数要求按如下交换输出:例如:输入1234输出43217、输入一个四位数要求输入各位数字的和。
例如:输入4567输出228、编一程序,键盘输入整数A,B的值,然后打印A除以B的商的整数部分及余数。
9、输入一个时、分、秒,把它转换为一个秒数。
例如输入2 3 4 代表2小时3分钟4秒输出7384 代表一共有7384 秒10、求三角形面积:给出三角形的三个边长为a ,b ,c ,求三角形的面积。
提示:根据海伦公式来计算三角形的面积:S =2cb a ++;Area =))()((c S b S a S S ---11、编一程序,从键盘输入整数A ,B 的值,然后把A ,B 的值交换后输出。
从键盘输入两个整数,打印出更小的那个数。
12、设X ,Y ,Z 的值分别是FALSE ,TRUE ,FLASE 。
写出下列逻辑表达式的值:not x and not y;true and x or y;(x and z) or (z and y);x or z and y;(4>5) and (7<8)(8>9) or ( 9<10)2 and ((3=3) or (3<7))选择结构13、读入三个整数,从小到大输出。
14、从键盘输入一个数,判断它的奇偶性,如果是奇数则输出yes,否则输出no 。
15、从键盘读入一个数,判断它的正负。
是正数,则输出"+",是负数,则输出"-"。
16、从键盘输入一个数,如果是两位数那么输入yes 否则输入no 。
c++⽤筛法求100之内素数。
1、⽤筛法求100之内素数。
相关知识:⽤筛法求素数的基本思想是:把从1开始的、某⼀范围内的正整数从⼩到⼤顺序排列, 1不是素数,⾸先把它筛掉。
剩下的数中选择最⼩的数是素数,然后去掉它的倍数。
依次类推,直到筛⼦为空时结束。
如有:1234567891011121314151617181920212223242526272829301不是素数,去掉。
剩下的数中2最⼩,是素数,去掉2的倍数,余下的数是:357911131517192123252729剩下的数中3最⼩,是素数,去掉3的倍数,如此下去直到所有的数都被筛完编程要求:根据提⽰,在右侧编辑器补充代码,输出100以内所有素数。
预期输出:2357111317192329313741434753596167717379838997程序源码:#include <iostream>#include <iomanip>using namespace std;#include <math.h>int main(){// 请在此添加代码/********** Begin *********/int count=0,susu=1;for(int i=2;i<100;i++){for(int j=2;j<=i/2;j++) //只需要循环到原本数的⼀半即可{if(i%j==0){susu=0;break;}}if(susu){printf("%5d ",i);count++;if(count==10) //输出10个数就换⾏{count=0;printf("\n");}}susu=1;}/********** End **********/return0;}。
东北大学C语言考试题库及答案————————————————————————————————作者:————————————————————————————————日期:题目:根据下面的函数关系,对输入的每个x值,计算出相应的y值并输出结果。
5 题目:输入一个整数,当为65时显示A,66时显示B,68时显示C,其他值时显示END.(可选用switch 语句编写)6 题目:编写程序将用户输入的字母进行大小写转换。
7 题目:编程判断输入的正整数是否即是5的倍数又是7的倍数.若是则输出该数;否则输出—1。
8 题目:输入一个整数,判断它是奇数还是偶数并输出。
9 题目:从键盘输入二个整数a、b,将其按大到小排列.10 题目:找出不超过1000的十位数字为1,个位数字为3或7的所有数。
例如:13、17、113、317等。
11 题目:输入一个整数,判断该数是否能被3,5,7整除,并输出以下信息之一:(1)能同时被3,5,7整除;(2)能被其中两数(要指出哪两个)整除;(3)被其中一个数(要指出哪一个)整除;(4)不能被3,5,7任一个整除.12 题目:输入一个5位的正整数,判定该正整数是否为一个回文数。
(所谓回文素数是指正读和反读都相同的数,例如12321)。
13 题目:假设变量a、b、c为整数,从键盘读入a、b、c的值,当a为1时显示b与c之和,a为2时显示b与c之差,a为3时显示b与c之积,a为4时显示b/c之商,其他数值不做任何操作.14 题目:输入一个整数,将其数值按小于10,10~99,100~999,1000以上分类并显示(例如:输入358时,显示358 is 100 to 999)。
15 题目:从键盘读入三角形三边,判断能否组成三角形,若可以组成三角形,输出三角形的面积。
16 题目:从键盘读入三角形三边,判断能否组成三角形,若可以组成三角形,输出三角形的类型(等边、等腰、直角、一般)。
17 题目:计算二次方程的根。
求100——200内所有素数
①要判断一个数是不是素数,首先要知道什么是素数。
回忆一下数学里的知识,什么是素数?只能被自身和1整除的正整数是素数。
1既不是素数,也不是合数;2是最小的素数,也是唯一一个是偶数的素数。
②判断一个正整数m是否为素数有多种方法。
方法1:让m依次被2,3,…,m-1除,如果m不能被2~m-1中的任何一个整数整除,则m是素数。
方法2:让m依次被2,3,…,m/2除,如果m不能被2~m/2中的任何一个整数整除,则m是素数。
方法3:让m依次被2,3,…,sqrt(m)除,如果m不能被2~sqrt(m)中的任意一个整数整除,则m为素数。
sqrt(m)为m的平方根。
其中最后一种方法判断速度最快,因此这里采用最后一种方法。
③判断一个整数是不是素数,由于需要一次一次地做除法,所以要使用循环。
程序如下:
#include "math.h"
main( )
{ int m,i,k,n=0;
for(m=101; m<=200; m+=2)
{ k=sqrt(m);
for (i=2;i<=k;i++)
if (m%i==0) break;
if (i>k)
{printf("%5d",m);
n=n+1;
if (n%10==0) printf("\n");
}
}
}
运行结果为:
101 103 107 109 113 127 131 137 139 149
151 157 163 167 173 179 181 191 193 197
199
<br />本文来自【C语言中文网】:<a href="/cpp/html/664.html" target="_blank">/cpp/html/664.html</a>。