C语言上机试题精选完整版

上传人:大米 文档编号:494341492 上传时间:2023-12-11 格式:DOC 页数:22 大小:50.50KB
返回 下载 相关 举报
C语言上机试题精选完整版_第1页
第1页 / 共22页
C语言上机试题精选完整版_第2页
第2页 / 共22页
C语言上机试题精选完整版_第3页
第3页 / 共22页
C语言上机试题精选完整版_第4页
第4页 / 共22页
C语言上机试题精选完整版_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《C语言上机试题精选完整版》由会员分享,可在线阅读,更多相关《C语言上机试题精选完整版(22页珍藏版)》请在金锄头文库上搜索。

1、【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。2.程序源代码:#include main()int i,j,k;printf(n);for(i=1;i5;i+) for(j=1;j5;j+) for(k=1;k5;k+) if(i!=k)&(i!=j)&(j!=k)printf(%d%d%dn,i,j,k);【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将

2、该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:2.程序源代码:#include #include main()long int i,x,y;for(i=1;iy则将x与y的值进行交换,然后再用x与z进行比较,如果xz则将x与z的值进行交换,这样能使x最小。2.程序源代码:#include main()int x,y,z,t;scanf(%d%d%d,&x,&y,&z);if(xy)t=x;x=y;y=t;if(xz)t=z;x=z;x=t;if(yz)t=z;y=z;z=t;printf(small to big :%d %d %dn

3、,x,y,z);【程序6】题目:用*号输出字母C的图案。1.程序分析:可先用*号在纸上写出字母C,再分行输出。2.程序源代码:#include main()printf(Hello C-world!n);printf( *n);printf(*n);printf(*n);printf( *n);【程序8】题目:输出9*9口诀。1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。2.程序源代码:#include main()int i,j,result;for(i=1;i10;i+)for(j=1;j10;j+)result=i*j;printf(%d*%d=%-3d,i,j,resul

4、t);printf(n);【程序12】题目:判断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。2.程序源代码:#include #include main()int m,i,k,h=0,leap=1; printf(n);for(m=101;m200;m+)k=sqrt(m+1);for(i=2;ik;i+)if(m%i=0)leap=0;break;if(leap)printf(%-4d,m);h+;if(h%10=0)printf(n);leap=1;printf(nThe

5、 total is %dn,h);【程序13】题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方5的三次方3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。2.程序源代码:#include main()int i,j,k,n;printf(Water flower number is:);for(n=100;n1000;n+)i=n/100;j=n%100/10;k=n%10;if(i*100+j*10+k=i*i*i*i+j*j*j+k*k*k)pri

6、ntf(%-5d,n);printf(n);【程序14】题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。2.程序源代码:#include main()int n,i;printf(Please input a number:n);scanf(%d,&n);p

7、rintf(%d=,n);for(i=2;i=n;i+)while(n!=i)if(n%i=0)printf(%d*,i);n=n/i;elsebreak;printf(%dn,n);【程序16】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。1.程序分析:利用辗除法。2.程序源代码(原理不清楚 只知道确实是可行的 背出来得了)#include main()int a,b,num1,num2,temp;printf(Please input two numbers:n);scanf(%d%d,&num1,&num2); if(num1num2)temp=num1;num1=num2;n

8、um2=temp;a=num1;b=num2;while(b!=0)temp=a%b;a=b;b=temp;printf(最大公约数为:%dn,a);printf(最小公倍数为:%dn,num1*num2/a);【程序17】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。1.程序分析:利用while语句,条件为输入的字符不为n.2.程序源代码:#include main()char c;int letters=0,space=0,digit=0,others=0;printf(Please input some charactersn);while(c=getchar(

9、)!=n)if(c=a&c=A&c0&c9) digit+;else others+;printf(all in all:char=%d space=%d digit=%d others=%dn,letters,space,digit,others);【程序19】题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=123.编程找出1000以内的所有完数。1.程序分析:请参照程序-上页程序14.2.程序源代码:#include main()int k100;int i,j,n,s,t;for(j=2;j1000;j+)n=-1;s=j;t=j;for(i=1;i=j;i+)whi

10、le(j!=i) if(j%i=0) n+; s=s-i; kn=i; j=j/i;elsebreak;if(s=0)printf(%d=,t);/for(i=0;in;i+)/printf(%d,ki);n=-1;解答你的补充问题:首先你要搞清楚n的作用,它是用标记能被j整除的数组k的下标,因此每检验1个数字n都要复原到原来的值-1. 假如放在int i,j,n,s; 这样的话它在程序中只运行一次(由于在for循环体外面,for循环体里边的要运行997次,即要检验1000以内数的数)#include stdio.h void main() static int k10;/ (这句是啥意思) 这句话申明k10是1个静态数组, int i,j,n,s; /(n= -1;为何不能加在这) 由于每回检验1个数字是不是完数先要把n=-1 for(j=2;j1000;j+) n=-1; /(为何能加在这) s=j; for(i=1;ij;i+) if(j%i)=0) n+; s=s-i; kn=i; if(s=0) printf(%d is a wanshu,j); for(i=0;in;i+) printf(%d,ki); printf(%dn,kn); /j=6时,i=1,2,3的时候能被6除尽,因此s=j=6 要减去1,2,3这样最后s=0 则输出他是个完数 /请用例子说明一下程

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号