复试C语言常考趣味程序设计
C语言趣味程序百例
C语言趣味程序百例(1):绘制余弦曲线public class test1{public static void main(String args[]){double y;double x, m;for (y=1;y>-1;y-=0.1) {m= Math.acos(y) * 10;for (x = 1; x < m; x++)System.out.print(" ");System.out.print("*");for (; x < 62 - m; x++)System.out.print(" ");System.out.println("*");}}}C语言趣味程序百例(3):绘制圆public class test3{public static void main(String args[]) {double y;double x, m;for(y=10;y>=-10;y--){m=2*Math.sqrt(100-y*y);for(x=1;x<30-m;x++)System.out.print(" ");System.out.print("*");for(;x<30+m;x++)System.out.print(" ");System.out.println("*");}}}import java.util.*;public class test4{public static void main(String args[]){int max=0;int min=100;double sum=0;for(int i=1;i<=10;i++){System.out.printf("请输入第"+i+"个分数:\n");Scanner reader=new Scanner(System.in);int x=reader.nextInt();sum+=x;if(x> max) max=x;if(x< min) min=x;}System.out.println("无效的最高分和最低分:"+max+" , "+min);System.out.println("最后选手的得分是:"+(sum-max-min)/8.0);}}public class test5{public static void main(String args[]){for (int i=999;i>99;i--) {if (555555%i==0) {System.out.println("最大约数="+i);return;}}}}C语言趣味程序百例(12):抓交通肇事犯public class test12{public static void main(String args[]){int k;for(int i=1;i<=9;i++){for(int j=0;j<=9;j++){if(i!=j){k=i*1000+i*100+j*10+j;for(int c=31;c< 100;c++){if(c*c==k)System.out.println("肇事车牌号是"+k);}}}}}}public class test38{public static void main(String args[]){int count = 0;for (int i = 0; i <= 100; i++)for (int j = 0; j <= 50; j++)for (int k = 0; k <= 20; k++) {if (i + j * 2 + k * 5 == 100) {System.out.println(count++ + ":" + i + "-" + j + "-" + k);}}}}public class test40{public static void main(String args[]){for (int i = 0; i <= 3; i++)for (int j = 0; j <= 3; j++) {if (8 - i - j <= 6)System.out.println("Res=" + i + " White=" + j + " Black="+ (8 - i - j));}}}C语言趣味程序百例(54):博士的难题2public class test54{public static void main(String args[]){for (int a = 1; a <= 3; a++)for (int b = 1; b <= 3; b++)for (int c = 1; c <= 3; c++)if ((a != b && b != c && a != c)&& (a == 1 && b == 1 || a == 2 && b != 1 || a == 3)&& (b == 1 && b == 3 || b == 2 && b != 3 || b == 3)&& (c == 1 && b == 2 || c == 2 && b != 2 || c == 3)) {System.out.println("1表示诚实族,2表示说谎族,3表示两面族");System.out.println("a=" + a);System.out.println("b=" + b);System.out.println("c=" + c);}}}C语言趣味程序百例(62):奇特立方体public class test62{public static void main(String args[]){int x[]=new int[8];for(int i=0;i<8;i++){x[i]=Integer.parseInt(args[i]);}new test62().cube62(x);}public void cube62(int x[]) {int n = 8;boolean success=false;for (int a = 0; a < n; a++)for (int b = 0; b < n; b++)for (int c = 0; c < n; c++)for (int d =0; d < n; d++)for (int e = 0; e < n; e++)for (int f = 0; f < n; f++)for (int g = 0; g < n; g++)for (int h =0; h < n; h++) {if (notEquls(new int[] { x[a],x[b], x[c],x[d],x[e],x[f],x[g],x[h]})) {if(cube62(x[a],x[b], x[c], x[d], x[e], x[f], x[g], x[h])) return;}}if(success!=true) System.out.println("不能构成奇妙立方体");;}public boolean cube62(int a, int b, int c, int d, int e, int f, int g, int h) {boolean success=false;int s = a + b + c + d;if (s == e + f + g + h)if (s == a + b + e + f)if (s == c + d + g + h)if (s == a + c + e + g)if (s == b + d + f + h) {System.out.println("能构成奇特立方体");System.out.print(" a=" + a);System.out.print(" b=" + b);System.out.print(" c=" + c);System.out.print(" d=" + d);System.out.print(" e=" + e);System.out.print(" f=" + f);System.out.print(" g=" + g);System.out.println(" h=" + h);System.out.println("构成的奇特立方体如下图:");System.out.println(" e/----------/f");System.out.println(" a/----------/b|");System.out.println(" | | | |");System.out.println(" | | | |");System.out.println(" | | | |");System.out.println(" |g/--------|-/h");System.out.println(" c/----------/d");return true;}return success;}public boolean notEquls(int[] a) {if (a == null || a.length == 0 || a.length == 1)return true;for (int i = 0; i < a.length; i++) {for (int j = 0; j < a.length; j++) {if (a[i] == a[j] && i != j) {return false;}}}return true;}}public class test49{public static void main(String args[]){for (int a = 0; a <= 1; a++)for (int b = 0; b <= 1; b++)for (int c = 0; c <= 1; c++)for (int d = 0; d <= 1; d++)for (int e = 0; e <= 1; e++)for (int f = 0; f <= 1; f++) {if (a + b >= 1&& a + d <= 1&& a + e + f == 2&& (b + c == 0 || b + c == 2)&& (c + d == 1)&& ((d == 0 && e == 0) || (d == 1 ))) {System.out.println("0是不去,1是去");System.out.println("a="+a);System.out.println("b="+b);System.out.println("c="+c);System.out.println("d="+d);System.out.println("e="+e);System.out.println("f="+f);}}}}import java.io.*;public class test10{public static void main(String[] args) throws IOException{BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("input int:");String s=br.readLine();int val=Integer.parseInt(s);System.out.println(getBits(val));}public static String getBits(int value){int displayMask=1<<31;StringBuffer buf=new StringBuffer(35);for(int c=1;c<=32;c++){buf.append((value & displayMask)==0? '0':'1');value<<=1;if(c%8==0)buf.append(' ');}return buf.toString();}}public class test9{public static void main(String args[]){int n=Integer.parseInt(args[0]);System.out.println("N="+n);for(int i=0;i<=n;i++){for(int j=0;j< 12-i;j++) System.out.printf(" ");for(int j=1;j< i+2;j++) System.out.printf("%6d",c(i,j));System.out.println();}}public static int c(int x,int y){int z;if((y==1)||(y==x+1)) return 1;z=c(x-1,y-1)+c(x-1,y);return z;}}C语言趣味程序百例(79):随机数求圆周率public class test79{public static void main(String args[]){double all=10000000;double l=1000000;double pai=0;double in=0;double x=0,y=0;for (int i=0;i<all;i++) {x=(Math.random()*l);y=(Math.random()*l);if(x*x+y*y<l*l)in++;}pai=(in/all*4);System.out.println("Times/All="+in+"/"+all+" "+"π~="+pai);}}。
CC语言趣味程序设计编程百例精解
C-C++语言趣味程序设计编程百例精解()?81.角谷猜想日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。
猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。
请编程验证。
*问题分析与算法设计本题是一个沿未获得一般证明的猜想,但屡试不爽,可以用程序验证。
题目中给出的处理过程很清楚,算法不需特殊设计,可按照题目的叙述直接进行证。
*程序说明与注释#include<stdio.h>int main(){int n,count=0;printf("Please enter number:");scanf("%d",&n); /*输入任一整数*/do{if(n%2)n=n*3+1; /*若为奇数,n乘3加1*/printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n);}else{n/=2; /*若为偶数n除以2*/printf("[%d]: %d/2=%d\n",++count,2*n,n);}}while(n!=1); /*n不等于1则继续以上过程*/}82.四方定理数论中著名的“四方定理”讲的是:所有自然数至多只要用四个数的平方和就可以表示。
请编程证此定理。
*问题分析与算法设计本题是一个定理,我们不去证明它而是编程序验证。
对四个变量采用试探的方法进行计算,满足要求时输出计算结果。
*程序说明与注释#include<stdio.h>#include<stdlib.h>int main()int number,i,j,k,l;printf("Please enter a number=");scanf("%d",&number); /*输入整数*/for(i=1;i<number/2;i++) /*试探法。
c语言笔试面试 编程题目
c语言笔试面试编程题目
以下是一些常见的 C 语言笔试和面试编程题目:
1. 编写一个程序,将两个整数相加并输出结果。
2. 编写一个程序,将两个字符串相加并输出结果。
3. 编写一个程序,将一个整数数组中的所有元素相加并输出结果。
4. 编写一个程序,将一个字符串数组中的所有元素相加并输出结果。
5. 编写一个程序,将两个整数相乘并输出结果。
6. 编写一个程序,将两个字符串相乘并输出结果。
7. 编写一个程序,将一个整数数组中的所有元素相乘并输出结果。
8. 编写一个程序,将一个字符串数组中的所有元素相乘并输出结果。
9. 编写一个程序,判断一个整数是否为素数。
10. 编写一个程序,判断一个字符串是否为回文字符串。
11. 编写一个程序,实现冒泡排序算法。
12. 编写一个程序,实现插入排序算法。
13. 编写一个程序,实现快速排序算法。
14. 编写一个程序,实现归并排序算法。
15. 编写一个程序,实现二分查找算法。
16. 编写一个程序,实现链表的基本操作(插入、删除、查找等)。
17. 编写一个程序,实现队列的基本操作(入队、出队等)。
18. 编写一个程序,实现栈的基本操作(压栈、弹栈等)。
CC++语经典、实用、趣味程序设计编程百例精解(3)
C/C++语言经典、实用、趣味程序设计编程百例精解(3)21.4位反序数设N是一个四位数,它的9倍恰好是其反序数,求N。
反序数就是将整数的数字倒过来形成的整数。
例如:1234的反序数是4321。
*问题分析与算法设计可设整数N的千、百、十、个位为i、j、k、l,其取值均为0~9,则满足关系式:(i*103+j*102+10*k+l)*9=(l*103+k*102+10*j+i)的i、j、k、l即构成N。
*程序说明与注释#include<stdio.h>int main(){int i;for(i=1002;i<1111;i++) /*穷举四位数可能的值*/if(i%10*1000+i/10%10*100+i/100%10*10+i/1000==i*9)/*判断反序数是否是原整数的9倍*/printf("The number satisfied stats condition is: %d\n",i);/*若是则输出*/}*运行结果The number satisfied states condition is:108922.求车速一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。
两小时后里程表上出现了一个新的对称数。
问该车的速度是多少?新的对称数是多少?*问题分析与算法设计根据题意,设所求对称数为i,其初值为95589,对其依次递增取值,将i值的每一位分解后与其对称位置上的数进行比较,若每个对称位置上的数皆相等,则可判定i即为所求的对称数。
*程序说明与注释#include<stdio.h>int main(){int t,a[5]; /*数组a存放分解的数字位*/long int k,i;for(i=95860;;i++) /*以95860为初值,循环试探*/{for(t=0,k=100000;k>=10;t++) /*从高到低分解所取i值的每位数*/{ /* 字,依次存放于a[0]~a[5]中*/a[t]=(i%k)/(k/10);k/=10;}if((a[0]==a[4])&&(a[1]==a[3])){printf("The new symmetrical number kelometers is:%d%d%d%d%d\n",a[0],a[1],a[2],a[3],a[4]);printf("The velocity of the car is: %.2f\n",(i-95859)/2.0);break;}}}*运行结果The new symmetrical number kelometers is:95959.The velocity of the car is:50.00*思考题将一个数的数码倒过来所得到的新数叫原数的反序数。
c语言趣味编程例题
c语言趣味编程例题
以下是一些有趣的C语言编程例题,供您参考:
1. 猜数字游戏
编写一个猜数字的小游戏,让用户从0到100之间随机生成一个数字,用户可以多次猜测,每次猜测后程序会提示用户猜大还是猜小,直到猜中为止。
2. 反转字符串
编写一个函数,接受两个参数,分别为字符串和字符串长度,返回一个新的字符串,该字符串是原字符串的反转。
3. 计算阶乘
编写一个函数,接受一个整数n作为参数,返回n的阶乘。
4. 编写一个简单的计算器
编写一个简单的计算器,可以进行加、减、乘、除四则运算,支持整数和浮点数运算。
5. 编写一个简单的图形界面应用程序
使用C语言编写一个简单的图形界面应用程序,实现一个窗口,其中
包含一个按钮和一个标签。
当用户点击按钮时,标签的文本将更改为“Hello, World!”。
6. 编写一个简单的文本编辑器
编写一个简单的文本编辑器,支持打开、保存和删除文件,并能够在文本中进行插入、删除和替换操作。
7. 编写一个简单的游戏
编写一个简单的游戏,例如俄罗斯方块、扫雷或贪吃蛇等,可以使用C语言编写游戏引擎,然后使用图形库来创建游戏界面。
这些例题可以帮助您练习C语言编程技能,并提高您的编程能力。
C-C++语言趣味程序设计编程百例精解(6)
{
printf("A is a %s.\n",a?"honest":"lier"); /*输出判断结果*/
printf("B is a %s.\n",b?"honest":"lier");
printf("C is a %s.\n",c?"honest":"lier");
甲说:”乙没有偷,是丁偷的。” B+D=1
乙说:“我没有偷,是丙偷有。” B+C=1
丙说:“甲没有偷,是乙偷的。” A+B=1
丁说:“我没有偷。” A+B+C+D=1
其中丁只说了一句话,无法判定其真假,表达式反映了四人中仅有一名是窃贼的条件。
*程序说明与注释
#include<stdio.h>
printf("C is pasted a piece of %s paper on his forehead.\n",
c?"white":"black");
printf("D is pasted a piece of %s paper on his forehead.\n",
d?"white":"black");
51.谁是窃贼
公安人员审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎的。在回答公安人员的问题中:
C语言趣味编程100例
/*保证每次循环时 s 的初值为 0*/ /*判断 j 是否为 i 的因子*/
3.2 亲 密 数
1.问题描述
如果整数 A 的全部因子(包括 1,不包括 A 本身)之和等于 B;且整数 B 的全部因子 (包括 1,不包括 B 本身)之和等于 A,则将整数 A 和 B 称为亲密数。求 3000 以内的全部
注意:C 语言中的整数问题,经常涉及判断两数是否相等或某变量(或表达式)是否 满足某一条件的情况,对于这类问题,初学者经常会存在对赋值符号“=”与等于号“==” 混淆的问题。
赋值符号“=”:基本的赋值运算符是“=”。它的优先级别低于其他的运算符,所以对 该运算符往往最后读取。它的作用是将一个表达式的值赋给一个(左值)变量,左值必须 能够被修改,不能是常量。如 while(i=10)……此表达式的作用是将右值“10”赋给左值 i, 每次判断 i 的值都为 10,所以表达式的值为非 0,即判定条件为真,导致程序进入死循环。
第 3 章 “各种”趣味整数
整数通常是程序设计语言的一种基础形态,例如 Java 及 C 编程语言的 int 类型。整数 问题是实际应用中遇到的一类问题。整型数据从所占内存大小可分为基本整型(int)、长 整型(long int)和短整型(short int),根据数据满足的某些性质又可将其分为“完全数”、 “水仙花数”、“亲密数”等。整数问题中经常用到的是对数据的拆分、组合,初学者一定要 从实例中总结方法并掌握。本章主要通过对各类整数问题的算法进行讲解,以培养读者的 编程思维方式与编程技巧。本章主要内容如下:
4.求某给定数的位数
求一个数的位数可以借助最高位的权值来计算,对于十进制来说,个位的权值为 100, 十位的权值为 101,百位的权值为 102 ,……,一个存储三位数的变量 n=123,每次除以 10,将得到的值再赋给 n 直到 n 的值为 0,最多可以除 3 次;若变量 n 中存储的是四位数, 用同样的方法去除以 10,最多可以除 4 次。可以发现,直到变量变为 0,除以 10 的次数即 为当前给定数的位数。程序如下:
有趣的c语言代码例子
有趣的c语言代码例子
1.猜数字游戏:编写程序生成一个介于1到100之间的随机数,用户输入猜测的数字直到猜对为止,程序会给出猜测数字相对于答案的大小关系提示(例如“猜测数字太大”或“猜测数字太小”)。
2. 打地鼠游戏:在屏幕上生成随机的地鼠图案,用户用鼠标点击击打地鼠以获得分数,随着时间的推移地鼠速度逐渐加快。
3. 贪吃蛇游戏:编写程序生成一个贪吃蛇,蛇头可以用键盘控制移动,当蛇吃到食物时身体长度增加,当蛇头碰到墙壁或自己的身体时游戏结束。
4. 数独游戏:生成一个数独谜题,用户通过键盘输入数字来填充空白格子,当谜题填写完整且符合数独规则时游戏结束。
5. 神经网络:使用C语言实现一个简单的神经网络,可以用来识别手写数字或其他模式识别任务。
6. 数据结构:实现一个栈或队列数据结构,可以用来解决各种实际问题。
7. 图像处理:使用C语言读取图像文件并进行简单的处理,例如灰度化、边缘检测或图像滤波等。
8. 加密解密:实现一个简单的加密解密算法,例如Caesar密码或RSA加密算法。
9. 排序算法:实现常见的排序算法,例如冒泡排序、插入排序或快速排序等。
10. 计算机模拟:使用C语言模拟各种实际问题,例如天气预报、
股票交易或人口统计等。
几十道有趣c程序设计方案题
几十道有趣的c程序设计题题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....2.程序源代码:main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf("%12ld %12ld",f1,f2);if(i%2==0) printf("\n");/*控制输出,每行四个*/f1=f1+f2; /*前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第三个月*/}}=========================================================== ===【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
2.程序源代码:#i nclude "math.h"main(){int m,i,k,h=0,leap=1;printf("\n");for(m=101;m<=200;m++){ k=sqrt(m+1);for(i=2;i<=k;i++)if(m%i==0){leap=0;break;}if(leap) {printf("%-4d",m);h++;if(h%10==0)printf("\n");}leap=1;}printf("\nThe total is %d",h);}=========================================================== ===【程序3】题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
C语言趣味程序设计——题目百例
Contest - 2011级C语言课程大作业Start Time: 2012-02-19 16:25:00 End Time: 2012-03-01 22:00:00 Current Time: 2012-2-23 15:51:18 Status:Running Public写在最前:本文档中的题目;在不不同的编译器中可能会有提示错误,呵呵,小小的动动手改下变量的定义就可以运行了………………..由于能力不足..有题目未解决的…或者有错误的我会…认真听取大家的..意见的….呵呵……..有一两个….偷了下懒哦………提供原题目还有本人自己的解答的源代码。
感谢大家的。
建议…………….问题A: 趣味程序设计_狼追兔子时间限制: 1 Sec 内存限制: 128 MB提交: 341 解决: 63[提交][状态][讨论版]题目描述一只兔子躲进了n个环形分布的洞的某一个中。
狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。
以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?输入有多组测试数据,读取到文件结尾符为止。
每组测试数据输入n(2≤n≤100),即洞穴个数。
输入到文件结尾符为止。
输出兔子可能藏匿的洞。
如果不止一个,按从小到大的顺序输出。
如果不存在,输出空行。
样例输入10815样例输出2 4 7 92 4 5 7 8 9 11 12 14提示用一个数组a[10],对应的元素a[0],a[1],a[2]……a[9]对应表示10个洞,初值均置1。
通过一个循环用“穷举法”找兔子,第n次查找对应第(n-1)%10个洞,如果在第(n-1)%10个洞中没有找到兔子,因此将数组元素a[(n-1)%10]置0值。
循环完成后,检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。
#include<stdio.h>#include<string.h>int ok[110];int main(){int n,s,i,find;while(scanf("%d",&n)!=EOF){memset(ok,0,sizeof(ok));for(i=1;i<=200;i++)if(!ok[find=(i*(i+1)/2)%n])if(find==0)ok[n]=1;elseok[find]=1;for(s=0,i=1;i<=n;i++)s+=ok[i];for(i=1,find=0;i<=n;i++)if(!ok[i]){if(find!=(n-s-1)){printf("%d ",i);find++;}elseprintf("%d",i);}printf("\n");}return 0;}问题B: 趣味程序设计_巧夺偶数时间限制: 1 Sec 内存限制: 128 MB提交: 174 解决: 73[提交][状态][讨论版]题目描述桌子上有25颗棋子。
计算机专业研究生复试-C语言程序设计面试简答题
C语言程序设计1.简述C语⾔采取了哪些措施提⾔执⾔效率●使⽤指针:有些程序⽤其他语⽤也可以实现,但C能够更有效地实现;有些程序⽤法⽤其它语⽤实现,如直接访问硬件,但C却可以。
正因为指针可以拥有类似于汇编的寻址⽤式,所以可以使程序更⽤效。
●使⽤宏函数:宏函数仅仅作为预先写好的代码嵌⽤到当前程序,不会产⽤函数调⽤,所以仅仅是占⽤了空间,⽤使程序可以⽤效运⽤。
在频繁调⽤同⽤个宏函数的时候,该现象尤其突出。
函数和宏函数的区别就在于,宏函数占⽤了⽤量的空间,⽤函数占⽤了时间。
●使⽤位操作:位操作可以减少除法和取模的运算。
在计算机程序中数据的位是可以操作的最⽤数据单位,理论上可以⽤"位运算"来完成所有的运算和操作。
灵活的位操作可以有效地提⽤程序运⽤的效率。
●将汇编指令嵌⽤到C 语⽤程序中,汇编语⽤是效率最⽤的计算机语⽤,因此在C语⽤程序中嵌⽤汇编,从⽤充分利⽤⽤级语⽤和汇编语⽤各⽤的特点。
●系统调用:在C语⽤程序中可以调⽤操作系统级的API,从⽤提⽤程序的运⽤效率。
●条件编译:C语⽤源程序中加上条件编译,让编译器只对满⽤条件的代码进⽤编译,将不满⽤条件的代码舍弃,可以减少编译及执行程序代码量。
●循环嵌套中将较长循环设为内置循环,较短循环设为外置循环,以减少cpu跨切循环层的次数,提⽤程序的运⽤效率。
(操作系统页⽤置换相关,减少页⽤置换次数)●其它诸如寄存器变量、联合体、编译器优化等手段提⽤执⽤效率。
2.if…else和switch区别总结:都是条件选中语句。
但switch语句只能取代if语句的一部分功能。
●比较的范围不同:if 语句可做各种关系比较(只要是boolean 表达式都可以用if 判断)switch语句只能做等式比较,即只能对基本类型进行数值比较。
(switch只能做几个数据类型的等式比较,实现非等式效率低,)switch之后括号内的表达式只能是整型(byte、short、char和int)、枚举型或字符型表达式,不能是长整型或其他任何类型。
好玩的c语言代码
好玩的c语言代码C语言是一种结构化的程序设计语言,其灵活性和易学性使其成为许多程序员的首选语言。
在C语言中,有许多有趣的代码可以让我们了解其应用及变量使用等基本操作。
以下是几个有趣的C语言代码:1. 猜数字游戏这个程序将生成随机数字并要求用户猜测该数字。
程序将提供有关猜测数字是否大于或小于所产生的数字的信息,最终猜到数字的用户将获胜。
示例代码:#include <stdio.h>#include <stdlib.h>#include <time.h>int main() {int num, guess, count = 0;srand(time(0));num = rand() % 100 + 1; // 生成1~100的随机数printf("猜数字游戏\n");do {printf("请输入你要猜测的数字(1~100):");count++;if (guess > num) {printf("你猜的数字太大了\n\n");} else if (guess < num) {printf("你猜的数字太小了\n\n");} else {printf("恭喜你!你猜对了!\n");printf("你猜了%d次\n", count);}} while (guess != num);}2. 简单计算器这个程序将要求用户输入两个数字和一个操作符,并对这两个数字执行所选操作。
示例代码:#include<stdio.h>int main(){char operator;double firstNumber,secondNumber;printf("请输入操作符(+,-,*,/):");printf("\n请输入两个数字:");scanf("%lf %lf",&firstNumber,&secondNumber);switch(operator){case '+':printf("%.1lf + %.1lf = %.1lf",firstNumber, secondNumber, firstNumber + secondNumber);break;case '-':printf("%.1lf - %.1lf = %.1lf",firstNumber, secondNumber, firstNumber - secondNumber);break;case '*':printf("%.1lf * %.1lf = %.1lf",firstNumber, secondNumber, firstNumber * secondNumber);break;case '/':printf("%.1lf / %.1lf = %.1lf",firstNumber, secondNumber, firstNumber / secondNumber);break;default:printf("输入的操作符无效!请输入有效的操作符。
C-C 语言趣味程序设计编程百例精解(7)
C-C++语言趣味程序设计编程百例精解(7).txt蜜蜂整日忙碌,受到赞扬;蚊子不停奔波,人见人打。
多么忙不重要,为什么忙才重要。
61.1~9组成三个3位的平方数将1、2、3、4、5、6、7、8、9九个数字分成三组,每个数字只能用一次,即每组三个数不允许有重复数字,也不许同其它组的三个数字重复,要求每组中的三位数都组成一个平方数。
*问题分析与算法设计本问题的思路很多,这里介绍一种简单快速的算法。
首先求出三位数中不包含0且是某个整数平方的三位数,这样的三位数是不多的。
然后将满足条件的三位数进行组合,使得所选出的3个三位数的9个数字没有重复。
程序中可以将寻找足条件的三位数的过程和对该三位数进行数字分解的过程结合起来。
*程序说明与注释#include<stdio.h>int main(){int a[20],num[20][3],b[10]; /*a:存放满足条件的三位数*//*若不是10 的倍数,则分解三位数*//*分解该三位数中的每一个数字*/int i,j,k,m,n,t,flag;printf("The 3 squares with 3 different digits each are:\n");for(j=0,i=11;i<=31;i++) /*求出是平方数的三位数*/if(i%10!=0) /*若不是10的倍数,则分解三位数*/{k=i*i; /*分解该三位数中的每一个数字*/num[j+1][0]=k/100; /*百位*/num[j+1][1]=k/10%10; /*十位*/num[j+1][2]=k%10; /*个位*/if(!(num[j+1][0]==num[j+1][1]||num[j+1][0]==num[j+1][2]||num[j+1][1]==num[j+1][2])) /*若分解的三位数字均不相等*/a[++j]=k; /*j:计数器,统计已找到的满足要求的三位数*/}for(i=1;i<=j-2;++i) /*从满足条件的三位数中选出三个进行组合*/{b[1]=num[i][0];b[2]=num[i][1];b[3]=num[i][2];for(t=i+1;t<=j-1;++t){b[4]=num[t][0]; /*取第t个数的三位数字*/b[5]=num[t][1];b[6]=num[t][2];for(flag=0,m=1;!flag&&m<=3;m++) /*flag:出现数字重复的标记*/for(n=4;!flag&&n<=6;n++) /*判断两个数的数字是否有重复*/if(b[m]==b[n])flag=1; /*flag=1:数字有重复*/if(!flag)for(k=t+1;k<=j;k++){b[7]=num[k][0]; /*取第k个数的三位数字*/b[8]=num[k][1];b[9]=num[k][2];for(flag=0,m=1;!flag&&m<=6;m++) /*判断前两个数字是否*/for(n=7;!flag&&n<=9;n++) /*与第三个数的数字重复*/if(b[m]==b[n])flag=1;if(!flag) /*若均不重复则打印结果*/printf("%d,%d,%d\n",a[i],a[t],a[k]);}}}}*运行结果The 3 squares with 3 different digits each are:361,529,784*思考题将1、2、3、4、5、6、7、8、9九个数字分成二组,每个数字只能用一次,一组形成一个5位数,另一组形成一个4位数,使得前者为后者的n倍。
c语言有趣的代码
c语言有趣的代码C语言是一种强大的编程语言,是许多程序员都必须要掌握的语言之一。
对于那些想要深入学习和掌握C语言的人来说,掌握一些有趣的代码可以是很有帮助的。
本文将介绍一些有趣的C语言代码,这些代码涉及到各种程序设计的领域,从简单的算术操作到复杂的图形和游戏。
1. 打印正弦函数要在C语言中打印正弦函数可以使用数学库函数sin()。
以下是一个简单示例,它将打印出正弦函数的值:#include <stdio.h> #include <math.h>int main() { double angle; double result;// Loop through the angle 0 to 360 degrees, in increments of 10 for (angle = 0.0; angle <= 360.0; angle += 10.0) { result =sin(angle * M_PI / 180.0); // Convert angle to radiansprintf("sin(%f) = %f\n", angle, result); }return 0; }在这个示例中,我们循环从0°到360°,每次以10°的步长递增,并使用sin()函数计算相应角度的正弦。
我们将角度从度数转换为弧度以便计算,然后打印出结果。
2. 凯撒密码凯撒密码是一种简单的置换密码,它将明文中的每个字母替换为一个固定的、用于加密的字母。
这个加密算法可以使用C语言非常容易地实现。
以下是一个示例,它将使用凯撒密码加密输入的字符串:#include <stdio.h>int main() { char str[100]; int key;printf("Enter a string to encrypt: ");gets(str);printf("Enter a key: "); scanf("%d",&key);for (int i = 0; str[i] != '\0'; i++){ if (str[i] >= 'a' && str[i] <= 'z') str[i] = (str[i] - 'a' + key) % 26 + 'a';else if (str[i] >= 'A' && str[i] <= 'Z')str[i] = (str[i] - 'A' + key) % 26 + 'A'; }printf("Encrypted string: %s\n", str);return 0; }在这个示例中,我们首先要求用户提供要加密的字符串和一个密钥。
趣味c语言编程100例
趣味c语言编程100例趣味 c 语言编程100 例【程序 1】题目:有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) /* 确保 i 、 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;。
趣味C程序设计集锦
趣味C程序设计集锦C语言是一种古老而强大的编程语言,它以其高效性和灵活性广泛应用于系统编程、嵌入式开发、操作系统等领域。
然而,C语言的学习过程可能会显得枯燥,特别是对于初学者来说。
为了使C语言的学习过程更加有趣,本文将介绍一些趣味C程序设计的例子,旨在激发学习者的兴趣和创造力。
1. 猜数字游戏猜数字游戏是一个经典的编程练习,可以锻炼初学者的逻辑和循环控制能力。
程序随机生成一个数字,用户需要在有限的尝试次数内猜出这个数字。
```c#include <stdio.h>#include <stdlib.h>#include <time.h>int main() {int secretNumber, guess, attempts = 0;srand(time(NULL)); // 用当前时间初始化随机数生成器secretNumber = rand() % 100 + 1; // 生成一个1到100的随机数printf("猜一个1到100之间的数字。
\n");do {printf("请输入你的猜测:");scanf("%d", &guess);attempts++;if (guess > secretNumber) {printf("太高了!\n");} else if (guess < secretNumber) {printf("太低了!\n");}} while (guess != secretNumber);printf("恭喜你,猜对了!你总共猜了%d次。
\n", attempts); return 0;}```2. 石头剪刀布游戏石头剪刀布是一个简单的决策游戏,可以教会初学者条件判断和字符处理。
```c#include <stdio.h>int main() {char playerChoice, computerChoice;int result;printf("石头(scissors), 剪刀(paper), 布(rock): ");scanf("%s", &playerChoice);computerChoice = (rand() % 3) + 'a';if (computerChoice == 'a') {computerChoice = 's';} else if (computerChoice == 'b') {computerChoice = 'p';} else {computerChoice = 'r';}printf("你选择了 %c, 电脑选择了 %c.\n", playerChoice, computerChoice);if (playerChoice == computerChoice) {result = 0;} else if ((playerChoice == 's' && computerChoice == 'r') ||(playerChoice == 'p' && computerChoice == 's') ||(playerChoice == 'r' && computerChoice == 'p')) {result = 1;} else {result = -1;}if (result == 0) {printf("平局!\n");} else if (result == 1) {printf("你赢了!\n");} else {printf("电脑赢了!\n");}return 0;}```3. 字符串反转字符串反转是一个常见的编程练习,可以帮助初学者理解字符串和数组的概念。
C-C 语言趣味程序设计编程百例精解(2)
假设银行整存整取存款不同期限的月息利率分别为��?
0.63% 期限=1��?
0.66% 期限=2��?
0.69% 期限=3��?
0.75% 期限=5��?
0.84% 期限=8��?
利息=本金*月息利率*12*存款年限��?
现在某人手中��?000元钱,请通过计算选择一种存钱方案,使得钱存入银��?0年后得到的利息最��?假定银行对超过存款期限的那一部分时间不付利息)��?
3)根据余数判断他是在“打鱼”还是在“晒网”;
��?余数��?��?��?,则他是在“打鱼��?
否则 是在“晒网��?
在这三步中,关键是第一步。求��?990��?��?日至指定日期有多少天,要判断经历年份中是否有闰年,二月为29天,平年��?8天。闰年的方法可以用伪语句描述如下��?
如果 ((年能��?除尽 ��?不能��?00除尽)��?能被400除尽)
made fixed deposit for 8 year: 0times
made fixed deposit for 5 year: 4times
made fixed deposit for 3 year: 0times
made fixed deposit for 2 year: 0times
printf(" made fixed deposit for 1 year: %d times\n",n1);
printf(" Toal: %.2f\n",max);
/*输出存款方式*/
}
*运行结果
For maxinum profit,he should so save his money in a bank:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
狼追兔子 1巧夺偶数 2五猴分桃 3高次方数 4借书方案 5过桥问题 6数制转换7打渔晒网8喝酒问题9 哥德巴赫猜想10 打印日历11 抓交通肇事逃逸犯12 反序数13新郎新娘14称重砝码15求车速16谁是窃贼17出售金鱼18百钱百鸡19谜语博士20 猜牌术(-)21 舍罕王的失算22 怎样存钱利最大23 猜牌术(二)24 爱因斯坦的数学题25 取火柴游戏26平分鱼和筐27可逆素数28三色球问题29抢n游戏30问题A: 趣味程序设计_狼追兔子时间限制: 1 Sec 内存限制: 128 MB提交: 341 解决: 63[提交][状态][讨论版]题目描述一只兔子躲进了n个环形分布的洞的某一个中。
狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。
以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?输入有多组测试数据,读取到文件结尾符为止。
每组测试数据输入n(2≤n≤100),即洞穴个数。
输入到文件结尾符为止。
输出兔子可能藏匿的洞。
如果不止一个,按从小到大的顺序输出。
如果不存在,输出空行。
样例输入10815样例输出2 4 7 92 4 5 7 8 9 11 12 14提示用一个数组a[10],对应的元素a[0],a[1],a[2]……a[9]对应表示10个洞,初值均置1。
通过一个循环用“穷举法”找兔子,第n次查找对应第(n-1)%10个洞,如果在第(n-1)%10个洞中没有找到兔子,因此将数组元素a[(n-1)%10]置0值。
循环完成后,检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。
#include<stdio.h>#include<string.h>int ok[110];int main(){int n,s,i,find;while(scanf("%d",&n)!=EOF){memset(ok,0,sizeof(ok));for(i=1;i<=200;i++)if(!ok[find=(i*(i+1)/2)%n])if(find==0)ok[n]=1;elseok[find]=1;for(s=0,i=1;i<=n;i++)s+=ok[i];for(i=1,find=0;i<=n;i++)if(!ok[i]){if(find!=(n-s-1)){printf("%d ",i);find++;}elseprintf("%d",i);}printf("\n");}return 0;}问题B: 趣味程序设计_巧夺偶数时间限制: 1 Sec 内存限制: 128 MB提交: 174 解决: 73[提交][状态][讨论版]题目描述桌子上有25颗棋子。
游戏双方轮流取子,每人每次最少取走一颗棋子,最多可取走3颗棋子。
双方照这样取下去,直到取光所有的棋子。
于是双方手中必然一方为偶数,一方为奇数,偶数方为胜者。
请编程实现人机游戏。
人先走,计算机后走。
若游戏结束,则输出“Game over!”。
输入输入人取走棋子的个数。
输入一次,按一次回车。
游戏不止一轮。
按下文件结尾符,退出游戏。
必须在完成一轮后退出游戏。
不得中途退出游戏。
输出输出计算机取走的个数,每次输出最优解。
样例输入11111112132131样例输出333333Game over!231231Game over!#include<stdio.h>int main(){int n,sum=25;loop:while(scanf("%d",&n)!=EOF){sum-=n;if(sum==1){printf("1\nGame over!\n");sum=25;goto loop;if(sum==3||sum==2){printf("1\n");sum--;}}else{if(sum<=0){printf("Game over!\n");sum=25;goto loop;}else{printf("%d\n",4-n); if(n==1)sum-=3;if(n==2)sum-=2;if(n==3)sum-=1;}}}return 0;}问题C: 趣味程序设计_五猴分桃时间限制: 1 Sec 内存限制: 128 MB提交: 186 解决: 102[提交][状态][讨论版]题目描述5只猴子一起摘了1堆桃子。
因为太累了,它们商量决定,先睡一觉再分。
过了不知多久,1只猴子来了。
它见别的猴子没来,便将这1堆桃子平均分成5份,结果多了1个,就将多的这个吃了,拿走其中的1堆。
又过了不知多久,第2只猴子来了。
它不知道有1个同伴已经来过,还以为自己是第1个到的呢。
于是将地上的桃子堆起来,平均分成5份,发现也多了1个,同样吃了这1个,拿走其中的1堆。
第3只、第4只、第5只猴子都是这样……问这5只猴子至少摘了多少个桃子?第5个猴子走后还剩下多少个桃子?输入无输出输出5只猴子至少摘了多少个桃子,第5个猴子走后还剩下多少个桃子。
中间用空格隔开。
样例输入样例输出3121 1020提示思路一:“分”——假设至少摘了first_num个桃子,则令first_num=6,7,8,9,10,……这样不断的试,如果那个数能按规则(first_num=(first_num-1)/5*4)被5只猴子顺利的吃1个并分5组,则为所求。
思路二:“凑”——假设最后剩下last_num个桃子,则令last_num=4,5,6,7,8,9,10,……这样不断的试,如果那个数能按规则(last_num%4==0则last_num = last_num / 4 * 5 + 1)凑5次,则为所求。
#include<stdio.h>#include<time.h>int main(){int first,i,t;for(i=1;i<5000;i+=5){first=i;for(t=1;t<=5;t++){if(first%5==1){first=(first-1)/5*4;if(t==5)printf("%d %d\n",i,first);}elsebreak;}}// printf("time:%.2lf\n",(double)clock() / CLOCKS_PER_SEC);return 0;}问题D: 趣味程序设计_高次方数时间限制: 1 Sec 内存限制: 128 MB提交: 559 解决: 80[提交][状态][讨论版]题目描述求13的n次方(12<n≤130000000000)的最后三位数。
例如:13的13次方的最后三位数是253,13的20次方的最后三位数是801。
输入有多组测试数据,每组测试数据一行,即整数n。
以文件结尾符结束。
输出输出13的n次方的最后三位数样例输入1320样例输出253801提示64位整型用 long long 表示,格式串为"%lld"#include<stdio.h>int fun(long long n){int k=13,t=1;while(n>0){if(n%2==1)t=t*k%1000;k=k*k%1000;n>>=1;}return t;}int main(){long long n;while(scanf("%lld",&n)!=EOF)printf("%03d\n",fun(n));return 0;}问题E: 趣味程序设计_借书方案时间限制: 1 Sec 内存限制: 128 MB提交: 429 解决: 154[提交][状态][讨论版]题目描述小明有n本新书,要借给A、B、C三位小朋友。
只借一次。
若每人每次只能借一本,则可以有多少种不同的借法?输入有多组测试数据,输入整数n (5≤n≤1000),输入到文件结尾符为止。
输出借法总数。
样例输入5678样例输出60120210336#include<stdio.h>int main(){long long n;while(scanf("%lld",&n)!=EOF)printf("%lld\n",n*(n-1)*(n-2));return 0;}问题F: 趣味程序设计_过桥问题时间限制: 1 Sec 内存限制: 128 MB提交: 102 解决: 19[提交][状态][讨论版]题目描述过桥问题。
有N(N≥2)个人在晚上需要从X地到达Y地,中间要过一座桥,过桥需要手电筒(而他们只有1个手电筒),每次最多两个人一起过桥(否则桥会垮)。
N个人的过桥时间依次存入数组t[N]中,分别为:t[0], t[1], ……, t[N-1]。
过桥的速度以慢的人为准!注意:手电筒不能丢过桥!问题是:编程求这N个人过桥所花的最短时间。
输入有多组测试数据,每组数据先输入一个人数N,然后输入这N个人过桥所花的时间。
输出输出对应的最短时间。
样例输入4 1 25 104 5 2 10 1样例输出1717#include<stdio.h>void fun(int *a,int n){int i,j,t,k;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++){if(a[j]<a[k])k=j;}if(i!=k){t=a[i];a[i]=a[k];a[k]=t;}}}int main(){int a[100],i,n,time,k;while(scanf("%d",&n)!=EOF) {time=0;for(i=0;i<n;i++)scanf("%d",&a[i]); fun(a,n);k=n-1;while(1){if(k<=2){if(k==0)time+=a[0];if(k==1)time+=a[1];if(k==2)time+=(a[0]+a[1]+a[2]);printf("%d\n",time);break;}else{if(2*a[1]>=a[0]+a[k])time+=(2*a[0]+a[k-1]+a[k]);if(2*a[1]<a[0]+a[k])time+=(a[0]+2*a[1]+a[k]);k-=2;}}}return 0;}问题G: 趣味程序设计_数制转换时间限制: 1 Sec 内存限制: 128 MB提交: 265 解决: 110[提交][状态][讨论版]题目描述将任一整数转换为二进制数形式并输出。