c语言程序设计.docx
- 文档编号:7693969
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:16
- 大小:64.47KB
c语言程序设计.docx
《c语言程序设计.docx》由会员分享,可在线阅读,更多相关《c语言程序设计.docx(16页珍藏版)》请在冰豆网上搜索。
c语言程序设计
A+B问题
计算两个10以内的两个整数的和。
#include
intmain()
{
inta,b,c=0;
scanf("%d%d",&a,&b);
if((a>=0&&a<=10)&&(b>=0&&b<=10))
{
c=a+b;
printf("%d\n",c);}
elseprintf("error\n");
return0;
}
求平均年龄
班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。
Input第一行有一个整数n(1≤n≤100),表示学生的人数。
其后n行每行有1个整数,取值为15到25。
Output
输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。
Source
#include
voidmain()
{intn,i,sum,age;doubleanswer;
scanf("%d",&n);
for(i=0,sum=0;i { scanf("%d",&age); sum+=age;} answer=(double)sum/n; printf("%.2lf\n",answer); } 数字求和 给定一个正整数a,以及另外的5个正整数,问题是: 这5个整数中,小于a的整数的和是多少? Input输入一行,只包括6个小于100的正整数,其中第一个正整数就是a。 Output输出一行,给出一个正整数,是5个数中小于a的数的和。 Source #include intmain() {inti,a,sum=0,j[6]; for(i=0;i<6;i++) { scanf("%d",&j[i]);} a=j[0]; for(i=0;i<6;i++) { if(a>j[i]) sum=sum+j[i];} printf("%d",sum); getchar(); getchar(); } 陶陶摘苹果 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。 苹果成熟的时候,陶陶就会跑去摘苹果。 陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。 现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。 假设她碰到苹果,苹果就会掉下来。 Input输入包括两行数据。 第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。 第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。 Output输出文件包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。 Source #include intmain() {inta[10],i,sum=0,j; for(i=0;i<10;i++) scanf("%d",&a[i]); scanf("%d",&j); for(i=0;i<10;i++) if(a[i]<=j+30) sum++; printf("%d\n",sum); return0; } 奖金发放 企业每个月发放的奖金根据当月利润进行提成。 利润I低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元(100000<I≤200000)时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;200000<I≤400000时,低于20万元的部分仍按上述办法提成(下同)。 高于20万的部分按5%提成;400000<I≤600000时,高于40万元的部分按3%提成;600000<I≤1000000时,高于60万元的部分按1.5%提成;I>1000000时,超过100万元的部分按1%提成。 现在请你编写一段程序,读取一年中每个月的利润,计算并输出这一年内的应发奖金总额。 Input 输入数据一共有12行,每一行都是一个正整数,其中第i(1≤i≤12)行的整数表示第i个月的利润(以元为单位)。 每个整数都不超过2000000。 Output 输出只有一行,即该企业在这一年内应该发放的奖金总额(以元为单位),要求精确到小数点后两位。 Source #include intmain() { inta[13],i,j; doubleb,sum=0; a[0]=0; for(i=1;i<13;i++) scanf("%d",&a[i]); for(j=1;j<13;j++) { if(a[j]<=100000) b=0.1*a[j]; if(a[j]>100000&&a[j]<=200000) b=0.1*100000+0.075*(a[j]-100000); if(a[j]>200000&&a[j]<=4000000) b=0.1*100000+0.075*100000+0.05*(a[j]-200000); if(a[j]>400000&&a[j]<=600000) b=0.1*100000+0.075*100000+0.05*200000+0.03*(a[j]-400000); if(a[j]>600000&&a[j]<=1000000) b=0.1*100000+0.075*100000+0.05*200000+0.03*200000+0.015*(a[j]-600000); if(a[j]>1000000) b=0.1*100000+0.075*100000+0.05*200000+0.03*200000+0.015*400000+0.01*(a[j]-1000000); sum=sum+b; } printf("%.2f\n",sum); return0; } 鸡兔同笼I 一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。 已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物? Input 第1行是测试数据的组数n,后面跟着n行输入。 每组测试数据占1行,每行一个正整数a(a<32768)。 Output 输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开。 如果没有满足要求的答案,则输出两个0。 Source #include voidmain() { inta,n,i; scanf("%d\n",&n); for(i=1;i<=n;i++) {scanf("%d",&a); if(a%2! =0||a<4)printf("00\n"); elseif(a%4==0)printf("%d%d\n",a/4,a/2); elseprintf("%d%d\n",a/4+1,a/2); } } 成绩评定 现在有若干个同学的期末考试成绩,我们需要根据下面的规则根据每个同学考试成绩所在的分数段对其成绩进行评定,请编写程序完成这个任务。 成绩评定规则如下: 若成绩在100分和90分(含100分和90分)之间,则判定为“A”; 若成绩在90分和80分(含80分)之间,则判定为“B”; 若成绩在80分和60分(含60分)之间,则判定为“C”; 若成绩在60分以下0分以上(含0分),则判定为“D”; 否则无法判定,给出错误提示。 Input 第一行是一个整数n,表示需要评定的成绩的个数。 接下来有n行输入,每行都是一个浮点数,表示某个同学的成绩。 Output 对应于每个同学的成绩,输出一行表示判定结果,对于无法判定的成绩,输出一行“Invalid”。 Source #include #defineN1000 voidmain() {intn,x; floata[N]; inti=0; scanf("%d",&n); for(;i scanf("%f",&a[i]); for(i=0;i { if(! (a[i]>=0&&a[i]<=100)) {printf("Invalid\n"); continue;} x=(int)a[i]; x=x/10; switch(x) { case10: case9: printf("A\n"); break;case8: printf("B\n"); break;case7: case6: printf("C\n"); break;default: printf("D\n"); break;} } } 鸡兔同笼II 笼子中有若干只鸡和若干只兔子,现在只知道笼子中总共有a个头和b只脚(a和b都是非负整数),请你编写一个程序计算笼子中分别有多少只鸡和多少只兔。 笼子中鸡的数量和兔的数量都必须是一个非负整数,否则就是无效答案。 Input 输入只有一行,包括两个非负整数,分别表示笼中头的数量a和脚的数量b。 Output 输出也只有一行,包括用空格分开的两个整数,分别表示笼中鸡的数量和兔的数量。 若为无效答案则输出一行“Error”。 Source #include voidmain() { inta,b; scanf("%d%d",&a,&b); if(b<2*a||b>4*a)printf("Error\n"); elseif(b%2! =0)printf("Error\n"); elseprintf("%d%d\n",a-(b-2*a)/2,(b-2*a)/2); } 求分数序列和 有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13,……,求这个分数序列的前n项之和。 Input 输入有一行: 正整数n(0≤n≤500)。 Output 输出有一行: 分数序列中前n项的和,要求精确到小数点后4位。 Source #include voidmain() { intn,i; doublea=1,b=2,c,sum=0; scanf("%d",&n); for(i=0;i { sum=sum+b/a; c=b; b=a+b; a=c; } printf("%.4f\n",sum); } 质数判定 质数被定义为一个不能除了1和它本身整除的正整数。 你的任务就是要编写一个程序,判定任意一个大于等于2的正整数是否是质数。 Input 输入只有一行,即要判定的这个正整数a(2≤a≤200)。 Output 输出只有一行,若a是质数,输出“Y”,否则输出“N”。 Source #include voidmain() { intn,i; scanf("%d",&n); for(i=2;i {if(n%i! =0)i++; elsebreak; } if(i>=n/2)printf("Y\n"); elseprintf("N"); } 棋盘上的距离 国际象棋的棋盘是黑白相间的8*8的方格,棋子放在格子中间。 如下图所示: 王、后、车、象的走子规则如下: 王: 横、直、斜都可以走,但每步限走一格。 后: 横、直、斜都可以走,每步格数不受限制。 车: 横、竖均可以走,不能斜走,格数不限。 象: 只能斜走,格数不限。 写一个程序,给定起始位置和目标位置,计算王、后、车、象从起始位置走到目标位置所需的最少步数。 Input 第一行是测试数据的组数t(0≤t≤20)。 以下每行是一组测试数据,每组包括棋盘上的两个位置,第一个是起始位置,第二个是目标位置。 位置用“字母-数字”的形式表示,字母从“a”到“h”,数字从“1”到“8”。 Output 对输入的每组测试数据,输出王、后、车、象所需的最少步数。 如果无法到达,就输出“Inf”。 计算书费 下面是一个图书的单价表: 给定每种图书购买的数量,编程计算应付的总费用。 Input 输入第一行包含一个正整数k(0<k<100),表示有k组测试数据;接下来k行,每行包含一组测试数据。 每组测试数据包含10个整数(大于等于0,小于等于100),分别表示购买的《计算概论》、《数据结构与算法》、《数字逻辑》、《C++程序设计教程》、《人工智能》、《计算机体系结构》、《编译原理》、《操作系统》、《计算机网络》、《JAVA程序设计》的数量(以本为单位)。 每两个整数用一个空格分开。 Output 对于每组测试数据,输出一行。 该行包含一个浮点数f,表示应付的总费用。 精确到小数点后两位。 Source #include voidmain() { inta[10],j,i,k; floatsum; scanf("%d",&k); for(j=0;j { for(i=0;i<10;i++) scanf("%d",&a[i]); sum=a[0]*28.9+a[1]*32.7+a[2]*45.6+a[3]*78+a[4]*35+a[5]*86.2+a[6]*27.8+a[7]*43+a[8]*56+a[9]*65; printf("%.2f\n",sum); } } 打印极值点下标 在一个整数数组中,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。 Input 有2×n+1行输入: 第一行是要处理的数组的个数n;对其余2×n行,第一行是此数组的元素个数k(3≤k≤80),第二行是k个整数,每两个整数之间用空格分隔。 Output 输出为n行: 每行对应于相应数组的所有极值点下标值,下标值之间用空格分隔。 Source #include voidmain() { intn,k,i,j,a[80]; scanf("%d",&n); for(j=0;j { scanf("%d",&k); for(i=0;i scanf("%d",&a[i]); for(i=0;i {if(i==0) if(a[i]a[i+1])printf("0"); else; elseif(i>0&&i<(k-1)) if((a[i]>a[i+1]&&a[i]>a[i-1])||(a[i] else; elseif(a[k-1]a[k-2])printf("%d",k-1); else;} printf("\n"); } } 肿瘤检测 一张CT扫描的灰度图像可以用一个N*N(0<N<100)的矩阵描述,矩阵上的每个点对应一个灰度值(整数),其取值范围是0-255。 我们假设给定的图像中有且只有一个肿瘤。 在图上监测肿瘤的方法如下: 如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。 我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。 任何在肿瘤上的点,如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,则该点称为肿瘤的边界点。 肿瘤的边界点的个数称为肿瘤的周长。 现在给定一个图像,要求计算其中的肿瘤的面积和周长。 Input 输入第一行包含一个正整数N(0<N<100),表示图像的大小;接下来N行,每行包含图像的一行。 图像的一行用N个整数表示(所有整数大于等于0,小于等于255),两个整数之间用一个空格隔开。 Output 输出只有一行,该行包含两个正整数,分别为给定图像中肿瘤的面积和周长,用一个空格分开。 Source #include voidmain() { inti,j,n,a[100][100],s=0,c=0; scanf("%d",&n); for(i=0;i for(j=0;j {scanf("%d",&a[i][j]); if(a[i][j]<51)s=s+1;} printf("%d",s); for(i=0;i if(a[i][0]<51)c=c+1; if(a[i][n-1]<51)c=c+1;} for(j=0;j if(a[0][j]<51)c=c+1; if(a[n-1][j]<51)c=c+1;} if(a[0][0]<51)c=c-1; if(a[0][n-1]<51)c=c-1; if(a[n-1][0]<51)c=c-1; if(a[n-1][n-1]<51)c=c-1; for(i=1;i for(j=1;j if(a[i][j]<51&&(a[i][j+1]>50||a[i][j-1]>50||a[i-1][j]>50||a[i+1][j]>50))c=c+1; printf("%d\n",c); } 肿瘤面积 在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片中用0表示。 其它肿瘤内和肿瘤外的点都用255表示。 现在要求你编写一个程序,计算肿瘤内部的像素点的个数(不包括肿瘤边缘上的点)。 已知肿瘤的边缘平行于图像的边缘。 Input 只有一个测试样例。 第一行有一个整数n,表示正方形图像的边长。 其后n行每行有n个整数,取值为0或255。 整数之间用一个空格隔开。 已知n不大于100。 Output 输出一行,该行包含一个整数,为要求的肿瘤内的像素点的个数。 Source #include voidmain() { intn,i,j,h=0,m=0,s=0; scanf("%d",&n); inta[100][100]; for(i=0;i for(j=0;j scanf("%d",&a[i][j]); for(i=0;i for(j=0;j if(a[i][j]==255)h=h+1; elsebreak; if(j =255)break;} for(i=n-1;i>-1;i--){ for(j=n-1;j>-1;j--) if(a[i][j]==255)m=m+1; elsebreak; if(j>-1&&a[i][j]! =255)break;} s=(n-2-h/n-m/n)*(n-2-h%n-m%n); printf("%d\n",s); } 两倍 给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足: 数对中一个数是另一个数的两倍。 比如给定1432971822,得到的答案是3,因为2是1的两倍,4是2个两倍,18是9的两倍。 Input 输入包括多组测试数据。 每组数据包括一行,给出2到15个两两不同且小于100的正整数。 每一行最后一个数是0,表示这一行的结束,这个数不属于那2到15个给定的正整数。 输入的最后一行只包括一个整数-1,这行表示输入数据的结束,不用进行处理。 Output 对每组输入数据,输出一行,给出有多少个数对满足其中一个数是另一个数的两倍 Source #include #defineN-1 voidmain() { inta[16],j,i,k,h; for(;;) { h=0; for(j=0;;j++) { scanf("%d",&a[j]); if(a[0]==N)break; if(a[j]==0)break; } if(a[0]==N)break; for(i=0;i<=j;i++) for(k=i+1;k if(a[i]==2*a[k]||2*a[i]==a[k])h=h+1; printf("%d\n",h); } } 星号三角形 编写一个程序输出一个由n行星号“*”构成的三角形。 Input 输入只有一行,即由星号构成的三角形的行数n。 Output 输出由星号构成的n行三角形,同一行中每两个星号之间用空格分开,形状如输出示例所示 Source #include voidmain() { intn,i,j; scanf("%d",&n); for(i=0;i for(j=0;j<(2*n-2*i-2);j++) printf(""); for(j=0;j printf("*"); printf("\n");} }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计