C语言上机笔记.docx
- 文档编号:11410853
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:23
- 大小:702.41KB
C语言上机笔记.docx
《C语言上机笔记.docx》由会员分享,可在线阅读,更多相关《C语言上机笔记.docx(23页珍藏版)》请在冰豆网上搜索。
C语言上机笔记
【程序1】
题目:
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?
都是多少?
#include
voidmain()
{
inti,j,k,h=0;
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",i,j,k);
h++;
}
printf("\n共有%d个。
",h);
}
【程序2】
题目:
企业发放的奖金根据利润提成。
利润低于或等于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,求应发放奖金总数?
#include
voidmain()
{
longinti;
intbonus1,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;
elseif(i<=200000)
bonus=bonus1+(i-100000)*0.075;
elseif(i<=400000)
bonus=bonus2+(i-200000)*0.05;
elseif(i<=600000)
bonus=bonus4+(i-400000)*0.03;
elseif(i<=1000000)
bonus=bonus6+(i-600000)*0.015;
else
bonus=bonus10+(i-1000000)*0.01;
printf("bonus=%d",bonus);
}
【程序3】
题目:
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
#include
#include
voidmain()
{
longinti;
doublex,y;
for(i=1;i<100000;i++)
{
x=sqrt(double(i+100));
y=sqrt(double(i+168));
if(x*x==i+100&&y*y==i+168)
printf("%ld",i);
}
}
【程序4】
题目:
输入某年某月某日,判断这一天是这一年的第几天?
#include
voidmain()
{
inty,m,d;
ints=0;
printf("输入要求的年,月,日:
");
scanf("%d%d%d",&y,&m,&d);
switch(m-1)
{
case12:
s=s+31;
case11:
s=s+30;
case10:
s=s+31;
case9:
s=s+30;
case8:
s=s+31;
case7:
s=s+31;
case6:
s=s+30;
case5:
s=s+31;
case4:
s=s+30;
case3:
s=s+31;
case2:
s=s+28;
case1:
s=s+31;
}
s=s+d;
if(y%400==0||(y%4==0&&y%100!
=0)&&m>2)
s++;
printf("这是%d年的第%d天",y,s);
}
【程序5】
题目:
输入三个整数x,y,z,请把这三个数由小到大输出。
#include
voidmain()
{
intx,y,z,t;
printf("输入要排序的三个数:
");
scanf("%d%d%d",&x,&y,&z);
if(x>y)
{t=x;x=y;y=t;}
if(x>z)
{t=z;z=x;x=t;}
if(y>z)
{t=y;y=z;z=t;}
printf("从小到大的顺序是:
%d,%d,%d",x,y,z);
}
【程序6】
题目:
用*号输出字母C的图案。
#include
voidmain()
{
printf("这是个C,好看不?
!
\n");
printf("****\n");
printf("*\n");
printf("*\n");
printf("****\n");
}
【程序7】
题目:
输出9*9口诀。
#include
voidmain()
{
inti,j=1,m=1;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
printf("%d*%d=%d",i,j,i*j);
}
printf("\n");
}
}
【程序8】
题目:
古典问题:
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
#include
voidmain()
{
longf1,f2;
inti;
f1=f2=1;
for(i=1;i<=10;i++)
{
printf("%12ld%12ld",f1,f2);
if(i%2==0)printf("\n");/*控制输出,每行四个*/
f1=f1+f2;/*前两个月加起来赋值给第三个月*/
f2=f1+f2;/*前两个月加起来赋值给第三个月*/
}
}
【程序9】
题目:
判断101-200之间有多少个素数,并输出所有素数。
程序分析:
判断素数的方法:
用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
#include
#include
voidmain()
{
inti,j,k=1;
for(i=101;i<=200;i++)
{
for(j=2;j if(i%j==0){k=0;break;} if(k) printf("%d",i); k=1; } } 【程序10】 题目: 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。 例如: 153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 #include voidmain() { inti,a,b,c; printf("三位数的水仙数是: "); for(i=100;i<1000;i++) { a=i/100; b=i/10%10; c=i%10; if(a*a*a+b*b*b+c*c*c==i) printf("%d",i); } } 【程序11】 题目: 将一个正整数分解质因数。 例如: 输入90,打印出90=2*3*3*5。 程序分析: 对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 #include voidmain() { intn,i; printf("请输入一个数字: "); scanf("%d",&n); printf("%d=",n); for(i=2;i<=n;i++) { while(n! =i) { if(n%i==0) { printf("%d*",i); n=n/i; } else break; } } printf("%d",n); } 【程序12】 题目: 利用条件运算符的嵌套来完成此题: 学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 #include voidmain() { intscore; chargrade; printf("输入分数: "); scanf("%d",&score); grade=score>=90? 'A': (score>=60? 'B': 'C'); printf("\n"); printf("%d等级是%c",score,grade); } 【程序13】 题目: 输入两个正整数m和n,求其最大公约数和最小公倍数。 #include voidmain() { intm,n,t,p; printf("输入个数: "); scanf("%d%d",&m,&n); p=m*n; if(m { t=m; m=n; n=t; } while(m-n! =0) { m=m-n; if(m { t=m; m=n; n=t; } } printf("最大公约数是: %d\n",m); printf("最小公倍数是: %d",p/m); } 【程序14】 题目: 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 #include voidmain() { intspace=0,letter=0,number=0,other=0; charc; while((c=getchar())! ='\n') { if((c>'A'&&c<'Z')||(c>'a'&&c<'z'))letter++; elseif(c=='')space++; elseif(c>'0'&&c<'9')number++; elseother++; } printf("共有%d个字母,%d个数字,%d个空格,%d个其他格式的字符",letter,number,space,other); } 【程序15】 题目: 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 #include voidmain() { inta,n,count=1; longintsn=0,tn=0; printf("输入要求的n和a(a是要求的个数,n是数字): \n"); scanf("%d,%d",&a,&n); while(count<=n) { tn=tn+a; sn=sn+tn; a=a*10; ++count; } printf("a+aa+...=%ld\n",sn); } 【程序16】 题目: 一个数如果恰好等于它的因子之和,这个数就称为“完数”。 例如6=1+2+3.编程 找出1000以内的所有完数。 【程序17】 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米? 第10次反弹多高? #include voidmain() { floatsn=100.0,hn=sn/2; intn; for(n=2;n<=10;n++) { sn=sn+2*hn; hn=hn/2; } printf("总共的高度是%f\n",sn); printf("第十次反高%f米\n",hn); } 【程序18】 猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想再吃时,见只剩下一个桃子了。 求第一天共摘了多少。 #include voidmain() { intday,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2; x2=x1; day--; } printf("桃子数是%d\n",x1); } 【程序19】 打印出如下图案(菱形) * *** ****** ******** ****** *** * #include voidmain() { inti,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"); } } 【程序20】 有一分数序列: 2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 #include voidmain() { intn,t,number=20; floata=2,b=1,s=0; for(n=1;n<=number;n++) { s=s+a/b; t=a; a=a+b; b=t; } printf("和是%9.6f\n",s); } 【程序21】 求1+2! +3! +...+20! 的和 #include voidmain() { floatn,s=0,t=1; for(n=1;n<=20;n++) { t*=n; s+=t; } printf("1+2! +3! ...+20! =%e\n",s); } 【程序22】 利用递归方法求5! #include intfun(intn) { intsum; if(n==0) { sum=1; } else sum=n*fun(n-1); returnsum; } voidmain() { inti=5,n; n=fun(i); printf("%d",n); } 【程序23】 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 #include voidpalin(intn) { charnext; if(n<=1) { next=getchar(); printf("\n\0: "); putchar(next); } else { next=getchar(); palin(n-1); putchar(next); } } voidmain() { palin(9); printf("\n"); } 【程序24】 有5个人坐在一起,问第五个人多少岁? 他说比第4个人大2岁。 问第4个人岁数,他说比第3个人大2岁。 问第三个人,又说比第2人大两岁。 问第2个人,说比第一个人大两岁。 最后问第一个人,他说是10岁。 请问第五个人多大? #include intage(intn) { intc; if(n==1)c=10; elsec=age(n-1)+2; return(c); } voidmain() { printf("%d",age(5)); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 笔记