C语言求1到1000所有的完数
C语言经典算法题目及答案
C语言经典算法题目及答案题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf("\n");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);}}====================================== ========================【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}====================================== ========================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
C语言数组编程题及解答
C语言数组编程题及解答【程序1】用筛选法求100之内的素数筛选法又称筛法,是求不超过自然数N(N>1)的所有质数的一种方法。
据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。
具体做法是:先把N个自然数按次序排列起来。
1不是质数,也不是合数,要划去。
第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。
2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。
3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。
这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。
因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。
#include <stdio.h>#include <math.h>void main(){int i,j;int a[100];for(i=0;i<100;i++)a[i]=i+1;for(i=1;i<100;i++){if(a[i]==0)continue;for(j=i+1;j<100;j++)if(a[j]%a[i]==0)a[j]=0;}for(j=1;j<100;j++) //j从1开始,去除a[0](其值为1),因为1既不是质数,也不是合数if(a[j]!=0)printf("%d,",a[j]);printf("\n");}【程序2】题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如6=1+2+3.编程找出1000以内的所有完数。
程序源代码:#include <stdio.h>int main(){int k[10];int i,j,n,s;for(j=2;j<1000;j++){n=-1;s=j;for(i=1;i<j;i++){if ((j%i)==0){n++;s=s-i;k[n]=i;}}if(s==0) //说明是完数{printf("%d is a wanshu:",j);for(i=0;i<=n;i++)printf("%d ",k[i]);printf("\n");}}return 1;}【程序3】题目:用选择法对10个数进行从大到小排序1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。
C语言求完数(完全数)
C语言求完数(完全数)问题描述求某一范围内完数的个数。
如果一个数等于它的因子之和,则称该数为“完数”(或“完全数”)。
例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。
问题分析根据完数的定义,解决本题的关键是计算出所选取的整数i(i的取值范围不固定)的因子(因子就是所有可以整除这个数的数),将各因子累加到变量s (记录所有因子之和),若s等于i,则可确认i为完数,反之则不是完数。
算法设计对于这类求某一范围(由于本题范围不固定,在编程过程中采用键盘输入的方式)内满足条件的数时,一般釆用遍历的方式,对给定范围内的数值一个一个地去判断是否满足条件,这一过程可利用循环来实现。
本题的关键是求出选取数值i的因子,即从1到i-1范围内能整除i的数,看某一个数j是否为i的因子,可利用语句if(i%j==0)进行判断,求某一个数的所有因子,需要在1到i-1范围内进行遍历,同样釆用循环实现。
因此,本题从整体上看可利用两层循环来实现。
外层循环控制该数的范围2〜n;内层循环j控制除数的范围为1〜i,通过i对j取余,是否等于0,找到该数的各个因子。
另外应注意每次判断下一个选定数之前,必须将变量s的值重新置为0,编程过程中一定要注意变量s重新置0的位置。
程序流程图:下面是完整的代码:1.#include<stdio.h>2.int main()3.{4.int i, j, s, n;/*变量i控制选定数范围,j控制除数范围,s记录累加因子之和*/5.printf("请输入所选范围上限:");6.scanf("%d",&n);/* n的值由键盘输入*/7.for( i=2; i<=n; i++)8.{9. s=0;/*保证每次循环时s的初值为0*/10.for( j=1; j<i; j++)11.{12.if(i%j ==0)/*判断j是否为i的因子*/13. s += j;14.}15.if(s == i)/*判断因子这和是否和原数相等*/16.printf("It's a perfect number:%d\n", i);17.}18.return0;19.}运行结果:请输入所选范围上限:10000↙︎It's a perfect number:6It's a perfect number:28It's a perfect number:496It's a perfect number:8128知识点补充上述程序中求某数的因子时,釆用从1到i-1范围内进行遍历的方法,一个数一个数地去试。
c语言 编程及答案
1、输入一个字符,判断它是否是大写字母,如果是,将它转换成小写字母;如果不是,不转换。
然后输出最后得到的字符。
#include<stdio.h>int main(){char c1;printf("input a latter:\n");scanf("%c",&c1);if(c1>='A'&&c1<='Z')c1=c1+32;printf("%c",c1);return 0;}2、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include<stdio.h>int main(){char c;int letters=0,space=0,digit=0,other=0;printf("Please input letters:\n");while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letters++;else if(c>='0'&&c<='9')digit++;else if(c==' ')space++;elseother++;}printf("字母数:%d\n数字数:%d\n空格数:%d\n其他字母数:%d\n",letters,digit,space,other);return 0;}3、编写一个函数,求数列1+1/2+1/3+1/4+1/5+...1/n,利用主函数调用这个函数并输出结果。
#include<stdio.h>int main(){int n;float c;float sum(int n);scanf("%d",&n);c=sum(n);printf("%f\n",c);float sum(int n){int i;float sum=0.0;for(i=1;i<=n;i++)sum=sum+1.0/i;return sum;}4、输入一个字符,判断它是否是小写字母,如果是,将它转换成大写字母;如果不是,不转换。
2011年计算机二级C语言编写程序题及答案解析精选1
2011年计算机二级C语言编写程序题及答案解析精选【4.1】已知银行整存整取存款不同期限的月息利率分别为:0.315%期限一年0.330%期限二年月息利率=0.345%期限三年0.375%期限五年0.420%期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。
【4.2】输入年份year和月month,求该月有多少天。
判断是否为闰年,可用如下C语言表达式:year%4==0&&year0!=0||year@0==0。
若表达式成立(即表达式值为1),则year 为闰年;否则,表达式不成立(即值为0),year为平年。
【4.3】编写一个简单计算器程序,输入格式为:data1op data2。
其中data1和data2是参加运算的两个数,op为运算符,它的取值只能是+、-、*、/。
【4.4】输入n值,输出如图所示矩形。
【4.5】输入n值,输出如图所示平行四边形。
【4.6】输入n值,输出如图所示高为n的等腰三角形。
【4.7】输入n值,输出如图所示高为n的等腰三角形。
【4.8】输入n值,输出如图所示高和上底均为n的等腰梯形。
【4.9】输入n值,输出如图所示高和上底均为n的等腰空心梯形。
【4.10】输入n值,输出如图所示边长为n的空心正六边型。
【4.11】输入n值,输出如图所示图形。
【4.12】输入n值,输出如图所示图形。
【4.13】输入n值,输出如图所示图形。
【4.14】输入n值,输出如图所示图形。
【4.15】输入n值,输出如图所示图形。
【4.16】输入n值,输出如图所示图形。
(例为n=6时)【4.17】编写程序,输出如图所示sin(x)函数0到2π的图形。
【4.18】编写程序,在屏幕上输出一个由*号围成的空心圆。
【4.19】编写程序,在屏幕上绘制如图余弦曲线和直线。
若屏幕的横向为x轴,纵向为y 轴,在屏幕上显示0~360度的cos(x)曲线与直线x=f(y)=45*(y-1)+31的迭加图形。
《C语言程序设计教程》习题参考答案
《C语言程序设计教程》习题参考答案默认分类2007-09-10 12:38:44 阅读6618 评论13 字号:大中小订阅【习题1】一、简答题(在课本中寻找答案,略)1.1 C程序的基本结构包括哪些内容?1.2 如何定义标识符?1.3 输入格式、输出格式的组成包括哪些内容?1.4 C语言函数分为哪两类?1.5 计算表达式的值应该考虑哪些方面?1.6 上机调试程序的步骤如何?二、判断并改错1.7 C程序执行的入口是main()函数,所以main函数必须放在程序的开头。
错误:main函数可以放在程序的任何位置。
并不限定在程序的开头。
1.8 定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。
错误:不可以交叉出现,数据说明部分在执行语句部分的前面。
1.9 编辑与编译不是一回事。
错误:不是一回事。
编辑完成源程序的输入和修改;编译是对源程序进行语法检查,如果无语法错误,则生成目标程序。
1.10 scanf("%d,%d",&x,&y);的正确输入格式:3,4<回车>。
正确1.11 注释内容太多会影响程序的执行效率。
错误:不会影响程序的执行效率。
因为在编译时,编译系统将注释内容删除或用空格代替,所以注释内容不会编译到目标程序中。
1.12 所有的数学公式可以直接出现在源程序中。
错误:数学公式需要转换成C语言能够接受的公式才能出现在源程序中。
三、编程题1.13 在屏幕上输出自己名字的拼音。
提示:中文名字叫“张三”,对应的拼音为“Zhang San”,输出用printf()函数。
1.14 输入圆的半径,求圆的周长,并将结果保留两位小数输出到屏幕上。
提示:定义圆的半径r,圆的周长:2*3.14*r,输出结果保留2位小数可以用%.2f1.15 输入两个整数,输出其中最大者。
提示:模仿例1.31.16 输入三个整数,输出其中最小者。
提示: min(min(a,b),c);【习题2】一、简答题(在课本中寻找答案,略)2.1 常量与变量的区别?2.2 C语言中的标识符的定义规则?2.3 变量为什么要“先定义,后使用”?2.4 字符常量'a'与字符串常量"a"有何区别?2.5 大小写字母转换的规则是什么?2.6 变量的具有哪三种属性?二、单项选择题2.7C语言中,int型数据在内存中的存储形式是(D)。
C语言编程题
四、编写程序题及参考答案导读:虽然题目基本按照教材章节顺序排列的,但是把同类题目尽量排在一起,便于读者学习掌握编程方法和思路,提高自己的编程能力。
【】已知银行整存整取存款不同期限的月息利率分别为:% 期限一年% 期限二年月息利率= % 期限三年% 期限五年% 期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。
【】输入年份year和月month,求该月有多少天。
判断是否为闰年,可用如下C语言表达式:year%4==0 && year%100!=0 || year%400==0。
若表达式成立(即表达式值为1),则year为闰年;否则,表达式不成立(即值为0),year为平年。
【】编写一个简单计算器程序,输入格式为:data1 op data2。
其中data1和data2是参加运算的两个数,op为运算符,它的取值只能是+、-、*、/。
【】输入n值,输出如图所示矩形。
【】输入n值,输出如图所示平行四边形。
【】输入n值,输出如图所示高为n的等腰三角形。
【】输入n值,输出如图所示高为n的等腰三角形。
【】输入n值,输出如图所示高和上底均为n的等腰梯形。
【】输入n值,输出如图所示高和上底均为n的等腰空心梯形。
【】输入n值,输出如图所示边长为n的空心正六边型。
【】输入n值,输出如图所示图形。
【】输入n值,输出如图所示图形。
【】输入n值,输出如图所示图形。
【】输入n值,输出如图所示图形。
【】输入n值,输出如图所示图形。
上一页下一页【】输入n值,输出如图所示图形。
(例为n=6时)【】编写程序,输出如图所示sin(x) 函数0到2π的图形。
【】编写程序,在屏幕上输出一个由*号围成的空心圆。
【】编写程序,在屏幕上绘制如图余弦曲线和直线。
若屏幕的横向为x轴,纵向为y轴,在屏幕上显示0~360度的cos(x)曲线与直线x=f(y)=45*(y-1)+31的迭加图形。
其中cos图形用"*"表示,f(y)用"+"表示,在两个图形的交点处则用f(y)图形的符号。
C语言程序开发经典实例
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");}}==============================================================【程序24】题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
1.程序分析:请抓住分子与分母的变化规律。
2.程序源代码:main(){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;/*这部分是程序的关键,请读者猜猜t的作用*/}printf("sum is %9.6f\n",s);for(i=0;i<5;i++)printf("\40:%d!=%d\n",i,fact(i));}int fact(j)int j;{int sum;if(j==0)sum=1;elsesum=j*fact(j-1);return sum;}==============================================================【程序27】题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
1000以内的完数求解
1000以内的完数求解一个数如果恰好等于它的因子之和,这个数就称为“完数”,例如6的因子为1、2、3,而6=1+2+3,因此6是“完数”。
编程找出1000以内的所有完数,并按下面格式输出其因子:6its factors are 1,2,3,分析:对于本题来说,只能要依次找出它的因子,就很容易做了,这里可以采用循环的方式,从1开始到n/2就可以了,(设想一下,比方这个数是6,在n/2的范围内就会有1,2,3这三个因子,如果再到4以上去试,它的最小因子i应该从2开始,但是i>n/2,必然会有2*i>n,也就是不会它的因子存在了。
)C语言代码:#include <stdio.h>/**CopyRight@fantasy0707*/#define N 1000 //完数求解范围main(){int i,j,sum; //sum用来存放因子之和for(i=1;i<N;i++) //对1到1000以内的数依次尝试{sum=0; //给sum赋值,同时也是对上一次的值清空for(j=1;j<=i/2;j++) //查找因子{if(i%j==0) // 如果是因子{sum+=j; //把当前的因子累加到sum中}}if(sum==i) //判断是不是完数,即因子之和等于自身{printf("%-5d its factors are: ",i); //是完数,输出for(j=1;j<=i/2;j++) //再次找出这个完数的因子 {if(i%j==0) //输出各个因子printf("%d,",j);}printf("\n");}}}java 代码:public class Test {/*** by: fantasy0707*/public static void main(String[] args) {int i,j,sum; //sum用来存放因子之和for(i=1;i<1000;i++) //对1到1000以内的数依次尝试{sum = 0; //给sum赋值,同时也是对上一次的值清空for(j=1;j<=i/2;j++) //查找因子{if(i%j==0) // 如果是因子{sum+=j; //把当前的因子累加到sum中}}if(sum==i) //判断是不是完数,即因子之和等于自身{System.out.print(i+" its factors are: "); //是完数,输出 for(j=1;j<=i/2;j++) //再次找出这个完数的因子{if(i%j==0) //输出各个因子System.out.print(j+", ");}System.out.println();}}}}程序运行结果:6 its factors are: 1,2,3,28 its factors are: 1,2,4,7,14,496 its factors are: 1,2,4,8,16,31,62,124,248,。
C语言模拟习题
7.程序段如下
int k=0;
while(k++<=2); printf("last=%d\n",k);
则执行结果是last= 。
printf(“%d”,a[i]);
}
四、写出下面程序的执行结果(本大题24分,每小题4分)
1.#include<stdio.h>
main( )
{ char c=‘A’+‘10’-‘5’;
printf(“c=%c\n”,c); }
2.#include<stdio.h>
printf(“\n”);
for (j=1;j<=9;j++)
for(i=1; _(1)_____)
{t=a[i]; a[i]=a[i+1]; __(3)__ ;}
printf(“the sorted numbers: \n”);
for ( i=1; i<11; i++)
if(__(3)___) printf(“%d\n”, m); } }
2.. 用起泡法对十个数由大到小排序。
main( )
{ int a[11], i, j, t;
printf(“input 10 numbers: \n”);
for(i=1;i<11;i++)
scanf(“%d”,&a[i]);
A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)
C语言入门经典案例及源代码.
循环控制输出图案【程序1】题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
2.程序源代码:#include "stdio.h"main(){int i,j,result;printf("\n");for (i=1;i<10;i++){ for(j=1;j<10;j++){result=i*j;printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/}printf("\n");/*每一行后换行*/}}【程序2】题目:要求输出国际象棋棋盘。
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
2.程序源代码:#include "stdio.h"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");}}============================================================== 【程序3】题目:打印楼梯,同时在楼梯上方打印两个笑脸。
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
2.程序源代码:#include "stdio.h"main(){int i,j;printf("\1\1\n");/*输出两个笑脸*/for(i=1;i<11;i++){for(j=1;j<=i;j++)printf("%c%c",219,219);printf("\n");}}【程序4】题目:打印出如下图案(菱形)****************************1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
C语言模拟测试题一及答案
模拟题一一、选择题1.下列说法正确的是()。
A)main函数必须放在C程序的开头B)main函数必须放在C程序的最后C)main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的D)main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的2.C语言中不能用来表示整常数的进制是()。
A)十进制B)十六进制C)八进制D)二进制3.在下面几组数据类型中, 全为最常用的基本数据类型的是哪一组:()。
A)整型实型字符型B)整型数组指针C)数组结构体共用体D)指针逻辑型空类型4.C语言规定标识符由()等字符组成。
A)字母数字下划线B)中划线字母数字C)字母数字逗号D)字母下划线中划线5.若有说明语句:char c= ‘\64’ ; 则变量C包含()。
A)1个字符B)2个字符C)3个字符D)说明不合法,C值不确定6.若有如下定义:int a=2,b=3; float x=3.5,y=2.5; 则表达式:(float)(a+b)/2+(int)x%(int)y的值是()。
A)2.500000 B)3.500000 C)4.500000 D)5.0000007.设有如下定义和执行语句,其输出结果为()。
int a=3,b=3;a = --b + 1; printf(“%d %d”,a,b);A)3 2 B)4 2 C)2 2 D)2 38.以下表达式: 2+’a’+i*f, 其中i为整型变量,f为float型变量,则表达式的最终数据类型为()。
A)int B)float C)char D)double9.C语言中,运算对象必须是整型数的运算符是()。
A)%B)\C)% 和\D)**10.有如下语句:printf(“%s,%5.3s\n”,“COMPUTER”,“COMPUTER”);执行语句后的最终结果为()。
A)COMPUTER ,CMP . B)COMPUTER, CMP.C)COMPU, CMP. D)COMPU, CMP .11.能正确表示x的取值范围在[0,100]和[-10,-5]内的表达式是()。
C语言程序设计部分习题及例题参考程序
C语言程序设计部分习题及例题参考程序《C语言程序设计》部分例题及课后习题参考程序1.编程计算如下分段函数:y={2x+3x≥10 4x0≤x<10 5x?6x<0[参考程序]#include <>int main(){float x,y;printf("input x:"); scanf("%f",&x);if(x>=10)y=2*x+3;else if(x>=0)y=4*x;elsey=5*x-6;printf("y=%.2f\n",y);}2.编程将从键盘输入的百分制成绩转换为等级分,转换方法如下:90以上(大于或等于90,下同)为A,80分以上为B,70分以上为C,60分以上为D,60分以下,即低于60分为E。
[参考程序]#include <>int main(){float score;char rank;printf("input a score:");scanf("%f",&score);if(score>100||score<0){printf("invalid score input\n");exit(-1);}switch((int)score/10){case 10:case 9:rank='A';break;case 8:rank='B';break;case 7:rank='C';break;case 6:rank='D';break;default:rank='E';}printf("%.2f:%c\n",score,rank);return 0;}3.编程判断以从键盘输入的三个数为边长,是否能构成三角形。
东北大学C语言考试题库及答案
东北大学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 题目:计算二次方程的根。
c语言课后习题答案
int main()
{
long i,sum;
printf("请输入利润I:");
scanf("%ld",&i);
if(i<100000)
sum=i*0.1;
else if(i<200000)
sum=10000+(i-100000)*0.075;
else if(i<400000)
#include <stdio.h>
int main()
{
int i,j;
/*枚举法(穷举法)*/
for(i=0;i<=30;i++)
{
j=30-i;
if(2*i+4*i==90)
printf("鸡:%d\n兔:%d\n",i,j);
}
return 0;
}
习题5.4
编写一个程序,求
s=1+(1+2)+(1+2+3)+ …… +(1+2+3+4+ …… +n)
{
int a,b,c,d;
int t; /*临时变量*/
printf(“请输入a,b,c,d:”);
scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);
if(a>b) {t=a;a=b;b=t;} /*数据交换方法*/
if(a>c) {t=a;a=c;c=t;}
if(a>d) {t=a;a=d;d=t;}
if(b>c) {t=b;b=c;c=t;}
C语言题库
C语言题库1. 输入一个整数,判断它是几位数?(*)2. 编制一函数,得到一个整数的某一位的数字。
(*)3. 求出所有的水仙花数。
水仙花数是一个三位数,其各位数字的立方和等于该数。
例如153=1^3+5^3+3^3。
(**)4、编写函数fun求1000以内所有7的倍数之和。
(*)int fun(int m){ }5、将一个数组中的元素按逆序存放。
(*)6、输入三个整数x,y,z,请把这三个数由小到大输出。
(*)7、递归调用计算阶乘, 输入n,求n的阶乘(*)8、删除字符串中的数字字符。
例如:输入字符串:48CTYP9E6,则输出:CTYPE。
(**)9、计算并输出500以内最大的10个能被13或17整除的自然数之和。
(*)10、统计一个字符串中的字母、数字、空格和其它字符的个数。
(*)11、不用第三个变量,实现两个数的对调操作。
(**)12、求1!+3!+5!+……+n!的和。
(**)13、求一批数中最大值和最小值的差。
(*)14、编写函数fun,函数的功能是:求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。
每一分数的分母是前两项的分母之和;每一分数的分子是前两项的分子之和。
例如:求前20项之和的值为32.660259。
(**)15、打印出如下图(菱形)(**)*************************16、用冒泡法对数组a进行由小到大的排序。
(*)17、求出二维数组中的最大元素值(*)18、输入一个字符串,对字符串逆序输出(*)19、已知一个数列,它的头两项分别是0和1,从第三项开始以后的每项都是其前两项之和。
编程打印此数,直到某项的值超过200为止。
(***)20、计算平均成绩并统计90分以上人数。
(*)21、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?(***)22、判断101-200之间有多少个素数,并输出所有素数。
c语言编程题解答
六、编程题参考答案1.编程,统计在所输入的50个实数中有多少个正数、多少个负数、多少个零。
#include "stdio.h"#define N 50void main(){ float x; unsigned int s1,s2,s3,i;s1=s2=s3=0;for(i=1;i<=N;i++) {scanf("%f",&x);if(x<0) s1++; else if(x==0) s2++; else s3++;}printf("负数%u个,零%u个,正数%u个\n",s1,s2,s3);}2. 编程,计算并输出方程 X2+Y2=1989 的所有整数解。
#include "stdio.h"void main(){ int x,y;for(x=-45;x<=45;x++) {y=-45;while(y<=45) {if(x*x+y*y==1989)printf("%d*%d+%d*%d=%d\n",x,x,y,y,1989); y++;}}}3.编程,输入一个10进制正整数,然后输出它所对应的八进制、十六进制数。
#include "stdio.h"void main(){ unsigned int x;printf("请输入一个十进制正整数:");scanf("%u",&x);printf("%d=八进制数 %o=十六进制数%x\n",x,x,x);}4.编程,找出1000以内的所有完数,并输出其因子。
#include "stdio.h"void main(){ int i,j,s=1;for(i=1;i<=1000;i++,s=1) {for(j=2;j<=i/2;j++) if(i%j==0) s+=j; // 求 i的因子和if(s==i) {printf("%d=1",i); // 如果i 是完数则输出其各因子for(j=2;j<=i/2;j++)if(i%j==0) printf("+%d",j);printf("\n");}}}5. 输入一个正整数,输出它的所有质数因子。
C语言程序详解110
if (m==1) f=0 ;
k=(int)sqrt(m); for (i=2; i<=k;i++)
if (m%i==0) f=0 ;
return f ; }
void main() {
int a,b,n=0; for(a=1;a<6744/2;a=a+2) if(prime(a)) {b=6744-a; if(prime(b)) n++; } printf("%d\n",n);
sum++; } printf("%d",sum); }
3、自然数对是指两个自然数的和与差都是平方数,如 8 和 17 的和 8+17=25 与其 差 17-8=9 都是平方数,则称 8 和 17 是自然数对(8,17)。假定(A,B)与 ( B , A ) 是 同 一 个 自 然 数 对 且 假 定 A>=B , 求 所 有 小 于 或 等 于 100 ( 即 : A<=100,B<=100)的自然数对中 A 之和。 1669 #include"math.h" main(){ int a,b,i,j,k,sum=0; for(a=1;a<=100;a++) for(b=1;b<a;b++) {i=a+b; j=a-b; if((sqrt(i)-(int)sqrt(i))==0 && (sqrt(j)-(int)sqrt(j))==0) {printf("(%d,%d)\n",a,b); sum=sum+j; } } printf("%d",sum); } 方法二 #include"stdio.h" #include"math.h" int f(int i) { int flag; if(sqrt(i)-(int)sqrt(i)==0) flag=1; else flag=0; return flag; } main(){ int a,b,i,j,k,sum=0; for(a=1;a<=100;a++) for(b=1;b<a;b++) if(f(a+b)&&f(a-b)) {printf("(%d,%d)\n",a,b); sum=sum+(a-b);} printf("%d",sum); }