北京理工大学网络教室C语言学习知识编程汇总题库及其规范标准答案(绝对经典编辑).doc

举报
资源描述
-! 1. Hello world. 输入:无 输出:Hello world. 程序: #include int main() { printf("Hello world.\n"); return 0; } 2. Welcome to Beijing. 程序: #include int main() { printf("Welcome\n"); printf("to\n"); printf("Beijing.\n"); return 0; } 3. 求A+B 输入:整数1 整数2 输出:整数1+整数2=和 程序: #include int main() { int a,b; scanf("%d",&a); scanf("%d",&b); printf("%d+%d=%d\n",a,b,a+b); return 0; } 4. 求 x 的 3次方 输入:一个整数。 输出:该整数的 3 次方值。 程序: #include int main() { int x; scanf("%d",&x); printf("%d\n",x*x*x); return 0; } 5. 学习打印你的第一个图形 编写一个小程序,要求输出的是 4 行由*号组成的等腰三角形。 程序: #include int main() { printf(" *\n"); printf(" ***\n"); printf(" *****\n"); printf("*******\n"); return 0; } 6. 一年级的算术题 输入: 接受两个整数,每个整数之间使用空格分隔。例如输入格式为:123 444 输出:分别输出按照整型数据进行 +、-、*、/、* 之后的运行结果。 程序: #include int main() { int a,b; scanf("%d %d",&a,&b); printf("%d+%d=%d\n",a,b,a+b); printf("%d-%d=%d\n",a,b,a-b); printf("%d*%d=%d\n",a,b,a*b); printf("%d/%d=%d\n",a,b,a/b); printf("%d%%%d=%d\n",a,b,a%b); return 0; } 7. 求两个变量的最小值 输入:两个整型数 输出:两个整型值中的最小值 程序: #include int main() { int a,b; scanf("%d%d",&a,&b); printf("min=%d\n",a int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) { if (a==b&&b==c&&a==c) printf("equilateral triangle.\n"); else if(a==b||a==c||b==c) printf("isoceles triangle.\n"); else printf("triangle.\n"); } else printf("non-triangle.\n"); return 0; } 9. 计算圆柱的侧面积及体积 输入 :第一行输入圆柱的底面半径 r 第二行输入圆柱的高 h 输出:s=< 圆柱的侧面积 >,v=< 圆柱的体积 > 要求 1. 所有变量都定义为双精度类型 2. 结果精确到小数点后两位 程序: #include #define PI 3.1415926 int main() { double r,h,s,v; scanf("%lf",&r); scanf("%lf",&h); s=2*PI*r*h; v=PI*r*r*h; printf("s=%.2f,v=%.2f\n",s,v); return 0; } 10. 计算时钟的夹角 背景: 钟面上的时针和分针之间的夹角总是在 0 ~180之间 ( 包括 0 和180 ) 。举例来说,在十二点的时候两针之间的夹角为 0 ,而在六点的时候夹角为180 ,在三点的时候为90 。本题要解决的是计算 12:00 到 11:59 之间任意一个时间的夹角。 输入: 每组测试数据包含两个数字:第一个数字代表小时 ( 大于 0 小于等于 12) ,第二个数字代表分 ( 在区间 [0, 59] 上 ) 。 输出: 对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。输出格式如下所示。 程序: #include #include int main() { int h,m; float d1,d2,d; scanf("%d%d",&h,&m); d1=30*(h+m/60.0); d2=m*360/60.0; d=fabs(d1-d2); if(d>180) d=360-d; printf("At %d:%d the angle is %.1f degrees.\n",h,m,d); return 0; } 11. 找出最大素数 素数是指一个只能被1和它本身整除的数,在数论中占有重要的研究地位,在当代密码学中也被广泛应用。 输入:取值范围 输出:该范围内的最大素数 程序: #include int main() { int n,i,j; scanf("%d",&n); for(i=n;i>=1;i--) { for(j=2;j int main() { long int s=1; int a,n,i=1,t=1; scanf("%d%d",&a,&n); if(n==0) printf("The last 3 numbers is 1.\n"); else { for(i=1;i<=n;i++) { s=(s*a)%1000; } t=s%1000; if(t>=0&&t<10) printf("The last 3 numbers is 00%d.\n",t); if(t>=10&&t<100) printf("The last 3 numbers is 0%d.\n",t); if(t>=100&&t<1000) printf("The last 3 numbers is %d.\n",t); } return 0; } 13. 贪吃的猴子 有一只猴子,第一天摘了若干个桃子 ,当即吃了一半,但还觉得不过瘾 ,就又多吃了一个。第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后每天早上都吃了前一天剩下的一半加天数个(例如,第5天吃了前一天剩下的一般加5个)。到第n天早上再想吃的时候,就只剩下一个桃子了。 输入:天数n 输出:第一天的桃子个数 程序: #include int main() { int i,n,amount=1; scanf("%d",&n); for(i=n-1;i>=1;i--) amount=2*(amount+i); printf("The monkey got %d peachs in first day.\n",amount); } 14. 黑色星期五 在西方,星期五和数字13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的十三日又恰逢星期五就叫“黑色星期五”。 输入:年份 输出:判断该年是否包含黑色星期五,如包含,给出具体日期 程序: #include int main() { int i,n=0,year,month[12]={0}; int a[13]={0,13,44,73,104,134,165,195,226,257,287,318,348}; int b[13]={0,13,44,72,103,133,164,194,225,256,286,317,347}; scanf("%d",&year); for(i=1;i<13;i++) { if ((year%4==0 && year%100!=0)||year%400==0) { if((year-1+((year-1)/4)-((year-1)/100)+((year-1)/400)+a[i])%7==5) { n++; month[n]=i; } } else if((year-1+((year-1)/4)-((year-1)/100)+((year-1)/400)+b[i])%7==5) { n++; month[n]=i; } } if(n==1) { printf("There is %d Black Friday in year %d.\n",n,year); printf("It is:\n"); printf("%d/%d/13\n",year,month[1]); } else { printf("There are %d Black Fridays in year %d.\n",n,year); printf("They are:\n"); for (i=1;i<=n;i++) { printf("%d/%d/13\n",year,month[i]); } } return 0; } 15.你会输出一行星号? 我们才开始上机,现在需要我们用最简单得办法,在一行中输出N个星号。 输入:N值 输出:一行中N个星号。 程序: #include int main() { int i,n; scanf("%d",&n); for(i=1;i<=n;i++) printf("*"); printf("\n"); } 16. 计算SUM的值 已知公式:SUM = 1 + 1/2 + 1/3 + 1/4 + ... + 1/n 输入: n 输出: 表达式 sum 的值。结果保留 6 位小数。 程序: #include int main() { int i,n; double sum=0; scanf("%d",&n); for (i=1;i<=n;i++) sum+=1.0/i; printf("sum=%.6lf\n",sum); return 0; } 17. 寻找特殊整数 请编写一个程序寻找一种特殊整数:一个 n 位的正整数等于其各位数字的n次方之和。例如:407=444+000+777。所以407就是一个特殊数。 输入:正整数的位数n(n<=6)。 输出: 所有此n位特殊数。每个数占一行。若不存在符合条件的特殊数,则输出提示:“No output.”;若存在,则从小到大进行输出。 说明: 假设输入为4,在4位整数中,有3个4位的特殊数,则输出格式为(输出中的1111、2222和9999并不是4位特殊数,只是格式样例): 1111 2222 9999 程序: #include #include int main() { int n,i,j,num,t,s=0,t1,flag=0; scanf("%d",&n); t=pow(10,n-1); for (i=t;i= 0)。 输出:打印相应的空心倒三角形。图样参见测试用例。 程序: #include #include int main() { int i,j,h; scanf("%d",&h); for (i=1;i<=h;i++) { for(j=1;j #include int main() { int i,j,h; char ch; scanf("%c%d",&ch,&h); for (i=1;i<=h;i++) { for(j=1;j<=h-i;j++) printf(" "); printf("%c",ch+i-1); for(j=1;j<=2*i-3;j++) printf(" "); if(i==1) { printf("\n"); continue; } printf("%c\n",ch+i-1); } for (i=h+1;i<=2*h-1;i++) { for(j=1;j<=i-h;j++) printf(" "); printf("%c",ch+(2*h-1)-i); for(j=1;j<=(2*h-1-i)*2-1;j++) printf(" "); if(i==2*h-1) { printf("\n"); continue; } printf("%c\n",ch+(2*h-1)-i); } return 0; } 20. 空心梯形 输入行数 n 和首数字字符,在屏幕上输出由数字围起的高和下底宽度均 n 的空心梯形。 要求:输出的数字是循环的,即输出数字 9 后再输出的数字是 0。 输入:行数n 和首字符 输出:空心梯形 程序: #include #include int main() { int i,j,n,f,t=0; scanf("%d%d",&n,&f); t=f; for(j=1;j<=3*n-2;j++) { if(j==3*n-2) printf("%d",t); else printf("%d ",t); if(j<(3*n-1)/2) { if(t==9) t=0; else t++; } else if(j==(3*n-1)/2&&n%2==0) continue; else { if(t==0) t=9; else t--; } } printf("\n"); t=f; for (i=2;i<=n;i++) { for (j=1;j<=2*(i-1);j++) printf(" "); if(i==n) { for (j=1;j<=(n+1)/2;j++) { if(t==9) { t=0; printf("%d ",t); } else printf("%d ",++t); } for (j=1;j<=n/2;j++) { if(t==0&&n%2!=0) t=9; else if(j==1&&n%2==0) { if(j==n/2) printf("%d\n",t); else printf("%d ",t); continue; } else t--; if(j==n/2) printf("%d\n",t); else printf("%d ",t); } } else { if(t==9) { printf("0"); for(j=1;j<=6*n-4*i-3;j++) printf(" "); printf("0\n"); t=0; } else { t++; printf("%d",t); for(j=1;j<=6*n-4*i-3;j++) printf(" "); printf("%d\n",t); } } } return 0; } H1:计算通用产品代码(UPC)的校验位(选作) 下面是一种计算校验位的方法:首先把第一位、第三位、第五位、第七位、第九位和第十一位数字相加。然后把第二位、第四位、第六位、第八位和第十位数字相加。接着把第一次加法结果乘以3后再加上第二次加法的结果。随后,再把上述结果减去1。减法后的结果除以10取余数。最后,用9减去上一步骤中得到的余数。现在以Morton碘盐为例,第一组数字的加法是0+4+0+0+0+3=7,而第二组数字的加法是2+6+0+1+0=9。把第一组加法值乘以3后再加上第二组加法值得到的结果是30。再减去1,结果变为29。再把这个值除以10取余数为9。9在减去余数结果9,最终值为0。 输入:每次输入三行数据,第一行是UPC的第一位数字,第二行是UPC的第一组五位数字,第三行是UPC的第二组五位数字。 输出:UPC的校验位 程序: #include #include int main() { int i,j,s1=0,s2=0,t; int a[11]; char b[6],c[6]; scanf("%d",&a[0]); scanf("%s",b); scanf("%s",c); for (i=0,j=1;i<5;i++,j++) a[j]=b[i]-48; for (i=0,j=6;i<5;i++,j++) a[j]=c[i]-48; for (i=0;i<11;i++) { if(i%2==0) s1+=a[i]; else s2+=a[i]; } t=9-(s1*3+s2-1)%10; printf("%d\n",t); return 0; } H2:数制转换(选作) 这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。譬如 12 和 5 ,在十进制下它们是不等的,但若 12 使用 3 进制而 5 使用六进制或十进制时,它们的值就是相等的。因此只要选择合适的进制, 12 和 5 就可以是相等的。 程序的输入是两个数字 M 和 N( 其十进制的值不超过 1000000000) ,它们的进制在 2~36 之间。对于十以下的数字,用 0~9 表示,而十以上的数字,则使用大写的 A~Z 表示。 求出分别在 2~36 哪种进制下 M 和 N 相等。若相等则输出相应的进制,若不等则输出错误信息。当然了,对于多种可能成立的情况,找出符合要求的进制最小的一组就行了。信息的格式见测试用例。 程序: #include int main() { long int pm=0,pn=0,s=0,t=0,w=1,e=1,p=0,q=0; int a[30],b[30]; char m[30],n[30]; int i,j,g,k,max1=0,max2=0,flag=0; scanf("%s%s",m,n); for(i=0;m[i]!=\0;i++) { if(m[i]>=A&&m[i]<=Z) a[i]=m[i]-55; if(m[i]>=0&&m[i]<=9) a[i]=m[i]-48; max1=max1<(a[i]+1)?(a[i]+1):max1; max1=max1<2?2:max1; } pm=i; for(j=0;n[j]!=0;j++) { if(n[j]>=A&&n[j]<=Z) b[j]=n[j]-55; if(n[j]>=0&&n[j]<=9) b[j]=n[j]-48; max2=max2<(b[j]+1)?(b[j]+1):max2; max2=max2<2?2:max2; } pn=j; for(i=max1,j=max2;i<=36&&j<=36; ) { p=0; q=0; w=1; e=1; for(g=pm-1;g>=0;g--) { p+=a[g]*w; w=w*i; } for(k=pn-1;k>=0;k--) { q+=b[k]*e; e=e*j; } if(pq) j++; else { flag=1; printf("%s (base %d) = %s (base %d)\n",m,i,n,j); break; } } if(flag==0) printf("%s is not equal to %s in any base 2..36\n",m,n); return 0; } 21. 零钱换整钱 小明手中有一堆硬币,小红手中有若干张10元的整钱。已知 1 角的硬币厚度为 1.8mm,5 角的硬币厚 1.5mm, 1 元的硬币为 2.0mm 。小明和小红一起玩游戏,小红拿出若干张10元的纸币,小明要将 1 角的硬币放成一摞,将 5 角的硬币硬币放成一摞,将 1 元的硬币放成一摞,如果 3 摞硬币一样高,并且金额能够正好小红要求的面值,则双方可以进行交换,否则没有办法交换。 输入:小红希望交换几张10元的纸币 输出:1 角的数量,5 角的数量,1元的数量 程序:三种硬币厚度公倍数:18mm(1角10个共1元,5角12个共6元,1元9个共9元,要想3摞硬币一样高总钱数必须是16元(1+6+9)的公倍数) #include int main() { int n,t,x,y,z; scanf("%d",&n); t=n*10; if(t%16!=0) printf("No change.\n"); else { t=t/16; x=t*10; y=t*12; z=t*9; printf("%d,%d,%d\n",x,y,z); } return 0; } 22. 买东西. 某商品有A、B、C三种品牌,各品牌的价格各不相同,其中A品牌的价格为每个5元, B品牌为每个3元,而C品牌为每3个1元。如果要用 M 元钱买 N 个该商品,要求每个商品至少买一个,编程求各种品牌各能买多少个。 输入: 先后输入M(钱数)及N(商品个数)的实际数值 输出: 所有可能情况下可以购买的3种商品的个数,按A、B、C品牌的顺序输出,用逗号分隔。例如:2,30,68;表示A品牌商品2个、B品牌商品30个、C品牌商品68个。 要求:因为有多个结果,结果的排序按照A品牌的个数从少到多的顺序输出。 程序: #include int main() { int i,j,k; float m,n; scanf("%f%f",&m,&n); for(i=1;i int main() { int i,s[10]={0},max=0; for(i=0;i<10;i++) { scanf("%d",&s[i]); if(max #include main() { int i,j,k,a,b,c,d,m=0,e; for(e=0;e>=0;e++) {scanf("%d%d",&i,&j); if((i==0)||(j==0)) break; else if((i>9999||i<1000)||(j>9999||j<1000)) printf("Error\n"); else {for(k=i;k<=j;k++) {if (k%2==1) continue; a=k/1000;b=(k%1000)/100;c=(k%100)/10;d=k%10; if((((a==b)||(b==c))||(c==d)) ||((d==a)||((a==c)||(d==b)))) continue; printf("%d ",k);m+=1;} printf("\ncounter=%d\n",m); m=0;}} } 25.输出字母围起的正方形 输入N*N图形正方形的边长N,图形左上角的字母,输出由字母围成的空心正方形。输出的字母是顺时针连续的,且是循环的,即输出字母Z后输出字母"A"。注意在两个字母之间有一个空格。 程序: #include int main() { int n,i,j,t; char m; scanf("%d %c",&n,&m); for(i=0;i90)||(m>96&&t>122)) t=t-26; if(j==n-1) printf("%c\n",t); else printf("%c ",t); } } else if(i==n-1) { for(j=0;j90)||(m>96&&t>122)) t=t-26; if(j==n-1) printf("%c\n",t); else printf("%c ",t); } } else { for(j=0;j<2*n-1;j++) { if(j==0) { t=m+4*n-4-i; if((m<=90&&t>90)||(m>96&&t>122)) t=t-26; printf("%c",t); } else if(j==2*n-2) { t=m+n-1+i; if((m<=90&&t>90)||(m>96&&t>122)) t=t-26; printf("%c\n",t); } else printf(" "); } } } return 0; } H3:猜数字(选作) 有如下一组数字,其中每个数字都在 1 ~ 63 之间, 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 2 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 34 35 38 39 42 43 46 47 50 51 54 55 58 59 62 63 4 5 6 7 12 13 14 15 20 21 22 23 28 29 30 31 36 37 38 39 44 45 46 47 52 53 54 55 60 61 62 63 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 40 41 42 43 44 45 46 47 56 57 58 59 60 61 62 63 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 现在需要编写一个程序,当从键盘输入某数字在且仅在哪几行出现了,该程序可以“猜”出这个数字是几。 输入: 程序的输入是一串以空白符分开的数字,当输入 0 时表示输入结束。 输出: 输出猜到的数字。 程序: #include int ma
展开阅读全文
温馨提示:
得力文库 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关搜索

当前位置:首页 > 教育专区 > 教案示例


本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com