-
2020常见编程题
2020-08-26 13:25:58 -
最新JAVA编程题全集 50题及答案
2014-10-11 19:17:28最新JAVA编程题全集 50题及答案 -
面试编程题
2019-06-06 23:37:24记录面试的编程题 二叉查找树的插入和查找 一个数二进制有多少个1 0-n二进制一共有多少个1文章目录
记录面试的编程题
1. 二叉查找树的插入和查找
//二叉树定义 class TreeNode { int val; TreeNode left = null; TreeNode right = null; TreeNode() { } TreeNode(int val) { this.val = val; } } public class FindAndInsertTree01 { TreeNode root = null; //插入 public void insert(TreeNode node) { if(root==null) { root=node; }else { TreeNode current = root; TreeNode parent = current; while(true) { parent=current; if(current.val<node.val) { current=current.left; if(current==null) { parent.left=node; return; } }else { current=current.left; if(current==null) { parent.right=node; return; } } } } } //查找 public TreeNode find(int value) { TreeNode current=root; while(current.val!=value) { if(current.val<value) { current=current.right; }else if(current.val>value){ current=current.left; }else { return current; } if(current==null)return null; } return null; } }
2. 一个数二进制有多少个1
public int NumberOf1(int n) { int count=0; if(n<0) { count++; n=n&0x7FFFFFFF; } while(n!=0) { if(n%2!=0)count++; n=n/2; } return count; }
3. 0-n二进制一共有多少个1
4. 二分查找
//非递归 public int binSearch(int arr[],int k) { int low=0; int high=arr.length-1; while(low<high) { int middle=(low+high)/2; if(arr[middle]==k)return middle+1; if(arr[middle]>k)high=middle-1; else low=middle+1; } return -1; } //递归 public int binSearch(int arr[],int k,int low,int high) { if(low<high) { int middle=(low+high)/2; if(arr[middle]==k)return middle+1; else if(arr[middle]>k)binSearch(arr,k,low,middle-1); else binSearch(arr,k,middle+1,high); } return -1; }
5. 快速排序
public int[] quickSort(int arr[],int low,int high) { if(low<high) { int middle=getMiddle(arr,low,high); quickSort(arr,0,middle-1); quickSort(arr,middle+1,high); } return arr; } private int getMiddle(int[] arr, int low, int high) { int temp=arr[low]; while(low<high) { while(low<high&&arr[high]>=temp) { high--; } arr[low]=arr[high]; while(low<high&&arr[low]<=temp) { low++; } arr[high]=temp; } return low; }
6. 反转链表
public ListNode ReverseList(ListNode head) { ListNode next=null; ListNode pre=null; while(head!=null){ next=head.next; head.next=pre; pre=head; head=next; } return pre; }
7. 二叉树前序遍历
//递归 public List<Integer> postorder(TreeNode root) { List<Integer> result=new ArrayList<>(); postorder(root,result); return result; } private void postorder(TreeNode root, List<Integer> result) { if(root==null)return; result.add(root.val); postorder(root.left,result); postorder(root.right,result); } //非递归 public List<Integer> postorderF(TreeNode root) { List<Integer> result=new ArrayList<>(); Stack<TreeNode> s=new Stack<>(); Stack<TreeNode> temp=new Stack<>(); TreeNode cur=root; while(!s.isEmpty()) { cur=s.pop(); temp.add(cur); if(cur.left!=null)s.push(cur.left); if(cur.right!=null)s.push(cur.right); } while (!temp.isEmpty()) { cur = temp.pop(); result.add(cur.val); } return result; }
8. 二叉树中序遍历
//递归 public List<Integer> inorder(TreeNode root) { List<Integer> result=new ArrayList<>(); inorder(root,result); return result; } private void inorder(TreeNode root, List<Integer> result) { if(root==null)return; inorder(root.left,result); result.add(root.val); inorder(root.right,result); } //非递归 public List<Integer> inorderF(TreeNode root) { List<Integer> result=new ArrayList<>(); Stack<TreeNode> s=new Stack<>(); s.push(root); TreeNode cur=root; while(cur != null ||!s.isEmpty()) { while(cur!=null) { s.push(cur.left);//添加根节点 cur=cur.left;//添加左子节点 } cur=s.pop();// 当前栈顶已经是最底层的左节点了,取出栈顶元素,访问该节点 result.add(cur.val); cur=cur.right;// 添加右节点 } return result; }
9. 二叉树后序遍历
//递归 public List<Integer> postorder(TreeNode root) { List<Integer> result=new ArrayList<>(); postorder(root,result); return result; } private void postorder(TreeNode root, List<Integer> result) { if(root==null)return; postorder(root.left,result); postorder(root.right,result); result.add(root.val); } //非递归 public List<Integer> postorderF(TreeNode root) { List<Integer> result=new ArrayList<>(); Stack<TreeNode> s=new Stack<>(); Stack<TreeNode> temp=new Stack<>(); TreeNode cur=root; while(!s.isEmpty()) { cur=s.pop(); temp.add(cur); if(cur.left!=null)s.push(cur.left); if(cur.right!=null)s.push(cur.right); } while (!temp.isEmpty()) { cur = temp.pop(); result.add(cur.val); } return result; }
二叉树的遍历 https://segmentfault.com/a/1190000016674584#articleHeader10
10. 合并排序的链表
public ListNode Merge(ListNode list1,ListNode list2) { ListNode node=null; ListNode head=node; if(list1==null)return list2; if(list2==null)return list1; while(list1!=null&&list2!=null) { if(list1.val<=list2.val) { if(head==null) { head=node=list1; }else { node.next=list1; node=node.next; } list1=list1.next; }else { if(head==null) { head=node=list2; }else { node.next=list2; node=node.next; } list2=list2.next; } } if(list1==null) { node.next=list2; }else if(list2==null){ node.next=list1; } return head; }
11.给一个数组和目标值,求数组中和为目标值的所有组合
public int[] twoSum(int[] nums, int target) { Map<Integer,Integer> map=new HashMap<>(); for(int i=0;i<nums.length;i++){ map.put(nums[i], i); } for(int i=0;i<nums.length;i++){ int value=target-nums[i]; if(map.containsKey(value)&&map.get(value)!=i){ return new int[]{i,map.get(value)}; } } return null; }
12.堆排序(最小K个数)
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer> list=new ArrayList<>(); if(input.length<k||k==0)return list; sort(input); for(int i=0;i<k;i++) { list.add(input[i]); } return list; } public static void sort(int arr[]) { int N=arr.length-1; for(int i=N/2;i>=0;i--) { sink(arr,i,N); } while(N>0) { swap(arr,0,N--); sink(arr,0,N); } } private static void sink(int[] arr, int i, int N) { while(2*i+1<=N) { int k=i*2+1;//左子树 if(k<N&&arr[k]<arr[k+1]) { k++;//找到左右子树中较大的一个 } if(arr[i]>arr[k])break; swap(arr,i,k); i=k; } } private static void swap(int[] arr, int i, int k) { int temp=arr[i]; arr[i]=arr[k]; arr[k]=temp; }
13.最长公共子串
14.二叉树的深度
-
100+Python编程题给你练(附答案)
2019-03-31 16:28:08大家如果能坚持独立思考完成以下题目,一定可以帮大家轻松 get Python 的编程技能。目前,这个项目已经获得了 3994 Stars,2952 Forks。 Github 地址:Python-programming-exercises 首先,这 100+ 练习题根据难易...大家如果能坚持独立思考完成以下题目,一定可以帮大家轻松 get Python 的编程技能。目前,这个项目已经获得了 3994 Stars,2952 Forks。
Github 地址:Python-programming-exercises
首先,这 100+ 练习题根据难易程度分为三个等级:Level 1、2 和 3。下面对如何定义这三个 Level 进行了说明,大家可以结合自身的学习能力和实践经验进行选择。
其次,本编程题是基于Python3,每题都有问题描述、提示和解决方案。大家一定要先独立完成,然后再看参考答案哈~
前 25 题中,Q1~5、22~25 都是 Level 1 的难度,Q6~17 为 Level 2,Q18~22 为 Level 3。大家正好利用这五道题学习、巩固一下基础,然后就开始准备挑战自己吧!
1. 等级描述
Level 1:初级。是指刚刚通过Python入门课程的人。他可以用1或2个Python类或函数来解决一些问题。通常,答案可以直接在教科书中找到。
Level 2:中级。是指刚刚学习了Python,但是已经有了较强的编程背景的人。他应该能够解决可能涉及3或3个Python类或函数的问题。答案不能直接在课本上找到。
Level 3:高级。。他应该使用Python来解决更复杂的问题,使用更丰富的库函数、数据结构和算法。他应该使用几个Python标准包和高级技术来解决这个问题。
2. 问题的模板
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
问题
提示
解决方案
3.问题前 25 题中,Q1~5、22~25 都是 Level 1 的难度,Q6~17 为 Level 2,Q18~22 为 Level 3。
100+Python编程题
题1
1级
问题:编写一个程序,它将找到所有这些数字,可被7整除,但不是5的倍数,2000年至3200年(包括在内)。得到的数字应按逗号分隔的顺序打印在一行上。
提示:考虑使用range(#begin, #end)方法解决方案:
l=[] for i in range(2000, 3201): if (i%7==0) and (i%5!=0): l.append(str(i)) print (','.join(l))
题2
1级
问题:编写一个可以计算给定数的阶乘的程序。结果应该以逗号分隔的顺序打印在一行上。假设向程序提供以下输入:8
则输出为:40320
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。
解决方案:def fact(x): if x == 0: return 1 return x * fact(x - 1) print('请输入一个数字:') x=int(input()) print (fact(x))
题3
1级
问题:使用给定的整数n,编写一个程序生成一个包含(i, i*i)的字典,该字典包含1到n之间的整数(两者都包含)。然后程序应该打印字典。
假设向程序提供以下输入:8
则输出为:
{1:1,2:4,3:9,4:16,5:25,6:36,,7:49,8:64}
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。考虑使用dict类型()
解决方案:print('请输入一个数字:') n=int(input()) d=dict() for i in range(1,n+1): d[i]=i*i print(d)
题4
1级
问题:编写一个程序,该程序接受控制台以逗号分隔的数字序列,并生成包含每个数字的列表和元组。假设向程序提供以下输入:
34岁,67年,55岁,33岁,12日,98年
则输出为:['34', '67', '55', '33', '12', '98']
('34', '67', '55', '33', '12', '98')
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。方法可以将列表转换为元组
解决方案:import re print('请输入一组数字:') values=input() l=values.split(",") k=re.findall(r'[0-9]+',values) t=tuple(k) print (k) print (t)
题5
1级
问题:定义一个至少有两个方法的类: getString:从控制台输入获取字符串 printString::打印大写母的字符串。
还请包含简单的测试函数来测试类方法。
提示:使用_init__方法构造一些参数
解决方案:class InputOutString(object): def __init__(self): self.s = "" def getString(self): print('请输入字符串:') self.s = input() def printString(self): print (self.s.upper()) strObj = InputOutString() strObj.getString() strObj.printString()
题6
2级
问题:
编写一个程序,根据给定的公式计算并打印值:。以下是C和H的固定值:C是50。H是30。D是一个变量,它的值应该以逗号分隔的序列输入到程序中。
例子假设程序的输入序列是逗号分隔的:100,150,180,
程序输出为:18,22,24
提示:如果接收到的输出是小数,则应四舍五入到其最近的值(例如,如果接收到的输出是26.0,则应打印为26)。在为问题提供输入数据的情况下,应该假设它是控制台输入。
解决方案:#!/usr/bin/env python import math c=50 h=30 value = [] print('请输入一组数字:') items=[x for x in input().split(',')] for d in items: value.append(str(int(round(math.sqrt(2*c*float(d)/h))))) print (','.join(value))
题7
2级
问题:编写一个程序,以2位数字,X,Y作为输入,生成一个二维数组。数组的第i行和第j列中的元素值应该是i*j。
注意:i= 0,1 . .,X - 1; j = 0, 1,Y-1。
例子假设程序有以下输入:3、5
则程序输出为:[[0,0,0,0,0],[0,1,2,3,4],[0,2,4,6,8]]
提示:注意:如果要为问题提供输入数据,应该假设它是一个控制台输入,以逗号分隔。
解决方案:print('请输入两个数字:') input_str = input() dimensions=[int(x) for x in input_str.split(',')] rowNum=dimensions[0] colNum=dimensions[1] multilist = [[0 for col in range(colNum)] for row in range(rowNum)] for row in range(rowNum): for col in range(colNum): multilist[row][col]= row*col print (multilist)
题8
2级
问题:编写一个程序,接受逗号分隔的单词序列作为输入,按字母顺序排序后按逗号分隔的序列打印单词。假设向程序提供以下输入:
without,hello,bag,world
则输出为:
bag,hello,without,world
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。
解决方案:items=[x for x in input().split(',')] items.sort() print (','.join(items))
题9
2级
问题:编写一个程序,接受一行序列作为输入,并在将句子中的所有字符大写后打印行。
假设向程序提供以下输入:
Hello world
Practice makes perfect
则输出为:
HELLO WORLD
PRACTICE MAKES PERFECT
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。
解决方案:lines = [] while True: s = input() if s: lines.append(s.upper()) else: break; for sentence in lines: print(sentence)
题10
2级
问题:编写一个程序,接受一系列空格分隔的单词作为输入,并在删除所有重复的单词并按字母数字排序后打印这些单词。
假设向程序提供以下输入:
hello world and practice makes perfect and hello world again
则输出为:
again and hello makes perfect practice world
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。
我们使用set容器自动删除重复的数据,然后使用sort()对数据进行排序。
解决方案:print('请输入一组字符串:') s = input() words = [word for word in s.split(" ")] print (" ".join(sorted(list(set(words)))))
题11
2级问题:编写一个程序,接受一系列逗号分隔的4位二进制数作为输入,然后检查它们是否可被5整除。 可被5整除的数字将以逗号分隔的顺序打印。
例:
0100,0011,1010,1001
那么输出应该是:
1010
注意:假设数据由控制台输入。提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
解:
value = [] print('请输入逗号分隔的4位二进制数:') items=[x for x in input().split(',')] for p in items: intp = int(p, 2) # print(intp) if not intp%5: value.append(p) print (','.join(value))
题12
2级题:编写一个程序,它将找到1000到3000之间的所有这些数字(均包括在内),这样数字的每个数字都是偶数。
获得的数字应以逗号分隔的顺序打印在一行上。提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
解:values = [] for i in range(1000, 3001): s = str(i) if (int(s[0])%2==0) and (int(s[1])%2==0) and (int(s[2])%2==0) and (int(s[3])%2==0): values.append(s) print (",".join(values))
题13
2级题:编写一个接受句子并计算字母和数字的程序。假设为程序提供了以下输入:
Hello world! 123
然后,输出应该是:
字母10
数字3提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
解:
print('请输入:') s = input() d={"DIGITS":0, "LETTERS":0} for c in s: if c.isdigit(): d["DIGITS"]+=1 elif c.isalpha(): d["LETTERS"]+=1 else: pass print ("LETTERS", d["LETTERS"]) print ("DIGITS", d["DIGITS"])
题14
2级题:编写一个接受句子的程序,并计算大写字母和小写字母的数量。
假设为程序提供了以下输入:
Hello world!
然后,输出应该是:
大写实例 1
小写实例 9提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
解:
print('请输入:') s = input() d={"UPPER CASE":0, "LOWER CASE":0} for c in s: if c.isupper(): d["UPPER CASE"]+=1 elif c.islower(): d["LOWER CASE"]+=1 else: pass print ("UPPER CASE", d["UPPER CASE"]) print ("LOWER CASE", d["LOWER CASE"])
题15
2级题:编写一个程序,计算a + aa + aaa + aaaa的值,给定的数字作为a的值。假设为程序提供了以下输入:
9 然后,输出应该是: 11106提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
解:
print('请输入一个数字:') a = input() n1 = int( "%s" % a ) n2 = int( "%s%s" % (a,a) ) n3 = int( "%s%s%s" % (a,a,a) ) n4 = int( "%s%s%s%s" % (a,a,a,a) ) print (n1+n2+n3+n4)
题16
2级题:使用列表推导来对列表中的每个奇数。 该列表由一系列逗号分隔的数字输入。
假设为程序提供了以下输入:
1,2,3,4,5,6,7,8,9
然后,输出应该是:
1,3,5,7,9解:
print("输入:") values = input() numbers = [x for x in values.split(",") if int(x)%2!=0] print (",".join(numbers))
题17
2级题:编写一个程序,根据控制台输入的事务日志计算银行帐户的净金额。 事务日志格式如下所示:
D 100
W 200D表示存款,而W表示提款。
假设为程序提供了以下输入:
D 300
D 300
W 200
D 100
然后,输出应该是:
500提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
解:
netAmount = 0 while True: print("请输入:") s = input() if not s: break values = s.split(" ") operation = values[0] amount = int(values[1]) if operation=="D": netAmount+=amount elif operation=="W": netAmount-=amount else: pass print (netAmount)
题18
3级题:网站要求用户输入用户名和密码进行注册。编写程序以检查用户输入的密码的有效性。
以下是检查密码的标准:
1. [a-z]之间至少有1个字母
2. [0-9]之间至少有1个数字
1. [A-Z]之间至少有一个字母
3. [$#@]中至少有1个字符
4.最短交易密码长度:6
5.交易密码的最大长度:12
您的程序应接受一系列逗号分隔的密码,并将根据上述标准进行检查。将打印符合条件的密码,每个密码用逗号分隔。
例:如果以下密码作为程序的输入:ABd1234@1,a F1#,2w3E*,2We3345
然后,程序的输出应该是:ABd1234 @ 1
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
解:
import re value = [] print("请输入:") items=[x for x in input().split(',')] for p in items: if len(p)<6 or len(p)>12: continue else: pass if not re.search("[a-z]",p): continue elif not re.search("[0-9]",p): continue elif not re.search("[A-Z]",p): continue elif not re.search("[$#@]",p): continue elif re.search("\s",p): continue else: pass value.append(p) print (",".join(value))
题19
3级题:您需要编写一个程序,按升序对(名称,年龄,高度)元组进行排序,其中name是字符串,age和height是数字。 元组由控制台输入。 排序标准是:
1:根据名称排序;
2:然后根据年龄排序;
3:然后按分数排序。
优先级是name> age>得分。
如果给出以下元组作为程序的输入:
Tom,19,80
John,20,90
Jony,17,91
Jony,17,93
Json,21,85
然后,程序的输出应该是:
[('John','20','90'),('Jony','17','91'),('Jony','17','93'),('Json','21 ','85'),('Tom','19','80')]提示:如果输入数据被提供给问题,则应该假定它是控制台输入。我们使用itemgetter来启用多个排序键。
解:
from operator import itemgetter, attrgetter l = [] print("请输入:") while True: s = input() if not s: break l.append(tuple(s.split(","))) print (sorted(l, key=itemgetter(0,1,2)))
题20
3级题:使用生成器定义一个类,该生成器可以在给定范围0和n之间迭代可被7整除的数字。
提示:考虑使用yield。
解:
def putNumbers(n): i = 0 while i<n: j=i i=i+1 if j%7==0: yield j for i in putNumbers(100): print (i)
题21
3级
机器人从原点(0,0)开始在平面中移动。 机器人可以通过给定的步骤向上,向下,向左和向右移动。 机器人运动的痕迹如下所示:
UP 5
DOWN 3
LETF 3
RIGHT 2
方向之后的数字是步骤。 请编写一个程序来计算一系列运动和原点之后距当前位置的距离。如果距离是浮点数,则只打印最接近的整数。
例:如果给出以下元组作为程序的输入:
UP 5
DOWN 3
LETF 3
RIGHT 2
然后,程序的输出应该是:2
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。import math pos = [0,0] print("请输入:") while True: s = input() if not s: break movement = s.split(" ") direction = movement[0] steps = int(movement[1]) if direction=="UP": pos[0]+=steps elif direction=="DOWN": pos[0]-=steps elif direction=="LEFT": pos[1]-=steps elif direction=="RIGHT": pos[1]+=steps else: pass print (int(round(math.sqrt(pos[1]**2+pos[0]**2))))
题22
3级题:编写一个程序来计算输入中单词的频率。 按字母顺序对键进行排序后输出。
假设为程序提供了以下输入:New to Python or choosing between Python 2 and Python 3? Read Python 2 or Python 3.
然后,输出应该是:
2:2
3.:1
3?:1
New:1
Python:5
Read:1
and:1
between:1
choosing:1
or:2
to:1提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
freq = {} # frequency of words in text print("请输入:") line = input() for word in line.split(): freq[word] = freq.get(word,0)+1 words = sorted(freq.keys()) #按key值对字典排序 for w in words: print ("%s:%d" % (w,freq[w]))
题23
1级题:写一个可以计算数字平方值的方法
提示: 使用**运算符
def square(num): return num ** 2 print (square(2)) print (square(3))
题24
1级题:Python有许多内置函数,如果您不知道如何使用它,您可以在线阅读文档或查找一些书籍。 但是Python为每个内置函数都有一个内置的文档函数。
请编写一个程序来打印一些Python内置函数文档,例如abs(),int(),raw_input()
并为您自己的功能添加文档
提示:内置文档方法是__doc__print(abs.__doc__) print(int.__doc__) print(input.__doc__) def square(num): '''Return the square value of the input number. The input number must be integer. ''' return num ** 2 print(square(2)) print(square.__doc__)
题25
1级题:定义一个类,它具有类参数并具有相同的实例参数。
提示:定义一个实例参数,需要在__init__方法中添加它。您可以使用构造参数初始化对象,也可以稍后设置该值
class Person: # Define the class parameter "name" name = "Person" def __init__(self, name=None): # self.name is the instance parameter self.name = name jeffrey = Person("Jeffrey") print("%s name is %s" % (Person.name, jeffrey.name)) nico = Person() nico.name = "Nico" print("%s name is %s" % (Person.name, nico.name))
Python入门、提高学习网站链接:https://github.com/jackfrued/Python-100-Days?utm_source=wechat_session&utm_medium=social&utm_oi=931473721877651456
刷Leetcode网站力扣:https://leetcode-cn.com/problemset/all/
Python进阶:https://docs.pythontab.com/interpy/
菜鸟教程:https://www.runoob.com/python/python-100-examples.html
未完待续……
-
Python123 C编程题答案解析
2020-11-29 21:57:41Python123编程题答案解析 大学计算机Python123编程题答案解析C(python123)顺序结构选择结构循环结构循环进阶 C(python123) 顺序结构 选择结构 循环结构Python123 C编程题答案解析(不定期更新) 不要直接复制,请尝试理解,不懂可以问,发评论区也行,看完点个赞呗
- C(python123)
- 1、顺序结构
- 2、选择结构
- 1、判断是否3的倍数
- 2、几位数
- 3、大写转小写
- 4、求三角形面积 (加判断)
- 5、空气质量状况判定
- 6、大小写转换
- 7、编程输入年份和月份,输出每个月的天数
- 8、5位的回文数
- 9、字符类型判断
- 10、求一元二次方程的根
- 11、输入三个整数,排序后输出
- 12、求解简单的四则运算(switch)
- 13、简单的猜数游戏
- 14、温度自动转换
- 15、第几天
- 16、中英文数字
- 3、简单循环结构
- 1、几位数
- 2-1、输出n位整数的后n-1位数
- 2-2、输出n位整数的后n-1位数
- 3、判断[a,b]间有多少个闰年
- 4、求出1到1000之内能被7或者11整除、但不能同时被7和11整除的所 有整数的个数
- 5、输出三位数中所有的水仙花数
- 6、鸡兔同笼问题
- 7、猴子吃桃
- 8、求Sn=1!+2!+3!+4!+5!+…+n!的值
- 9、组合数的问题
- 10、计算自然常数e的近似值
- 11、 用格雷格列公式求pi的近似值
- 12、输出Fibonacci数列小于等于n的项
- 13、累加求和 a+aa+aaa+aa…a
- 14、0.5次方累加和问题
- 15、麦穗问题
- 16、统计字符的个数
- 17、学生的成绩,统计并输出优秀
- 18、体操比赛打分
- 19、计算并输出多项式的值
- 20、累加和倒数之和
- 21、求一个正整数的因子和
- 22、求最大公约数,最小公倍数
- 4、循环进阶
请自行先按https://blog.csdn.net/weixin_43593986/article/details/110384759排除错误
避免遇到错误就手足无措的情况C(python123)
1、顺序结构
1、求三角形面积
描述
假设三角形的三条边长为a,b和c,从键盘输入三条边的边长(要求在一条scanf()中输入3个值,中间用逗号分隔),求三角形的面积area,
输出保留两位小数
#include <stdio.h> #include<math.h> int main() { float a, b, c,s,area; scanf("%f,%f,%f", &a, &b, &c); s = 0.5*(a + b + c); area = sqrt(s*(s - a)*(s - b)*(s - c)); printf("area=%.2f", area); return 0; }
2、计算球的体积
根据输入的半径值,计算球的体积。
描述
通过键盘输入球的半径,计算球体积,结果保留3位小数;
球体积计算公式:
其中,定义PI=3.1415;#include <stdio.h> int main() { float v, r, pi=3.1415; scanf("%f", &r); v = (4 * pi*r*r*r) / 3; //注意4/3=1,所以不能先写4/3 printf("%.3f", v); return 0; }
3、计算圆的周长和面积
描述
输入圆1和圆2的半径(实数类型),按指定格式输出圆1和圆2的周长与面积。
公式中圆周率取3.141592
d1后面两个空格is后面3个空格,其余雷同#include <stdio.h> int main() { float r1, r2,d1,d2,s1,s2,pi=3.141592; scanf("%f%f", &r1, &r2); d1 = pi * 2 * r1; d2 = pi * 2 * r2; s1 = pi * r1 * r1; s2 = pi * r2 * r2; printf("d1 is %f\n",d1); //题目要求空格前2后3 printf("d2 is %f\n",d2); printf("s1 is %f\n", s1); printf("s2 is %f", s2); return 0; }
4、整数拆解组合
问题描述:
编程实现通过键盘输入两个两位数的正整数放入变量a和变量b中,拆解量a和变量b中的数,然后合并形成一个新的整数放在变量c中。合并的方式是:将变量a中数的十位和个位数依次放在变量c中数的千位和十位上,变量b中数的十位和个位数依次放在变量c数的个位和百位上。例如,当a中是45,b中是12,那么c中是4251。#include<stdio.h> int main() { char a,b,c,d; //定义4个变量表示两个数的十位和个位 a=getchar(); b=getchar(); getchar(); //getchar吃掉中间的空格 c=getchar(); d=getchar(); printf("c is %c%c%c%c",a,d,b,c); //按要求顺序输出 return 0; }
2、选择结构
1、判断是否3的倍数
问题描述:编程实现,若输入的整数是3的倍数,则显示 “OK!”(其中OK为大写字母,且双引号不输出);
若输入的整数不是3的倍数,则没有任何结果显示。#include <stdio.h> int main() { int a; scanf("%d", &a); a % 3 == 0 ? printf("OK!") : a; return 0; }
2、几位数
描述
编写一个程序,输入一个整数(0-9999之间),请输出它的位数#include<stdio.h> #include<string.h> int main() { char a[10] = { '\0' }; gets(a); printf("%d", strlen(a)); return 0; }
3、大写转小写
描述
输入一个大写字母,输出相应的小写字母提示:字符型输入输出使用格式控制字符:%c
#include<stdio.h> int main() { char ch; ch=getchar(); ch = ch + 32; printf("%c", ch); return 0; }
4、求三角形面积 (加判断)
描述
假设三角形的三条边长为a,b和c,从键盘输入三条边的边长(要求在一条scanf()中输入3个值,输入时用空格分隔),先判断这三条边是否能构成三角形,如果能则求三角形的面积area并输出,保留两位小数,否则输出 Error!。
#include <stdio.h> #include<math.h> int main() { float a, b, c,s,area; scanf("%f %f %f", &a, &b, &c); if(a+b>c && b+c>a && a+c>b) { s = 0.5*(a + b + c); area = sqrt(s*(s - a)*(s - b)*(s - c)); printf("%.2f", area); } else { printf("Error!"); } return 0; }
5、空气质量状况判定
描述
下表是我国空气质量分级表,请编写程序,由用户输入空气污染指数API值,输出相应的空气质量状况
#include<stdio.h> int main() { int API = 0; scanf("%d", &API); if (API >= 0 && API <= 50) { printf("优"); return 0; } else if (API >= 51 && API <= 100) { printf("良"); return 0; } else if (API >= 11 && API <= 150) { printf("轻微污染"); return 0; } else if (API >=151 && API <=200) { printf("轻度污染"); return 0; } else if (API >=201 && API <= 250) { printf("中度污染"); return 0; } else if (API >= 250 && API <=300) { printf("中度重污染"); return 0; } else if(API >=301) { printf("重污染"); return 0; } else { printf("输入错误"); return 0; } }
6、大小写转换
描述
输入一个字母,先进行判断,如果是小写则转换成大写,反之则转换成小写,并输出提示:字符型输入输出使用格式控制字符:%c,或者用getchar()和putchar()函数
#include<stdio.h> int main() { char c; c=getchar(); if(c<'a') { c+=32; } else { c-=32; } putchar(c); return 0; }
7、编程输入年份和月份,输出每个月的天数
编程输入年份和月份,输出每个月的天数(其中闰年二月就输出29天,平年二月输出28天)。如果输入的月份超出12,就输出 Input error!
#include <stdio.h> int main() { int year, a,month; scanf("%d%d", &year,&month); if (year % 400 == 0) a = 1; else { if (year % 4 == 0 && year % 100 != 0) a = 1; else a = 0; } switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("31"); break; case 4: case 6: case 9: case 11: printf("30"); break; case 2: if (a == 1) { printf("29"); } else { printf("28"); } break; default: printf("Input error!"); break; } return 0; }
8、5位的回文数
#0035003500360033003000311606745210169
回文数输入一个5位数,判断它是不是回文数。
输入12321 输出YES
输入12345输出NO
#include <stdio.h> int main() { char a[6] = { '\0' }; gets(a); (a[0] == a[4] && a[1] == a[3]) ? printf("YES") : printf("NO"); return 0; }
9、字符类型判断
描述
题目内容: 从键盘键入任意一个字符,判断该字符是英文字母(不区分大、小写)、数字字符还是其它字符。
若键入字母,则屏幕显示 It is an English character.;若键入数字则屏幕显示It is a digit character. ;若输入其它字符,则屏幕显示:It is other character.
#include <stdio.h> int main() { char c; c = getchar(); if (c >= 'A' && c <= 'z') { printf("It is an English character."); } else if (c >= '0' && c <= '9') { printf("It is a digit character."); } else { printf("It is other character."); } return 0; }
10、求一元二次方程的根
描述
注意:a、b、c三个变量由一条输入语句输入,中间用逗号分隔,先判断是否有实根,如果有则计算并输出,否则输出:No Real Root!
#include <stdio.h> #include<math.h> int main() { float a, b, c,x1,x2; scanf("%f,%f,%f", &a, &b, &c); if (b*b > 4 * a *c) { x1 = (-b + sqrt(b*b - 4 * a *c))/(2*a); x2 = (-b - sqrt(b*b - 4 * a *c)) / (2 * a); printf("x1=%.2f\nx2=%.2f", x1, x2); } else if (b*b == 4 * a *c) { x1 = -b / (2 * a); x2 = x1; printf("x1=%.2f\nx2=%.2f", x1, x2); } else { printf("No Real Root!"); } return 0; }
11、输入三个整数,排序后输出
要求:
通过键盘输入三个整数(在键盘上输入这三个数时用空格间隔),利用简单形式if语句设计算法,将这三个数按照从小到大顺序排序后输出。(输出时,这三个数中间用空格间隔)
#include<stdio.h> int main() { int a, b, c,t,max,min,middle=0; scanf("%d%d%d", &a, &b, &c); max = a; min = a; if (max < b) max = b; if (max < c) max = c; if (min > b) min = b; if (min > c) min = c; if (a > min && a < max) middle = a; if (b > min && b < max) middle = b; if (c > min && c < max) middle = c; printf("%d %d %d", min,middle, max); return 0; }
12、求解简单的四则运算(switch)
[问题描述]利用switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入表达式包括:两个操作数(double类型)和一个运算符;然后依据指定运算符包括加(+)、减(-)、乘(*)、除(/),计算四则运算的结果。
说明:1、可以包含+、-、*和/四种运算,如果用户输入其它运算符,输出:“DataError!”,当用户输入除法算式时,先判断除数是否为零,不为零输出计算结果,为零输出“DataError!”
#include <stdio.h> #include<math.h> int main() { double a, b, result; char c; scanf("%lf%c%lf",&a,&c,&b); switch (c) { case '+': result = a + b; break; case '-': result = a - b; break; case '*': result = a * b; break; case '/': if (b !=0) { result = a / b; } else { printf("DataError!"); return 0; } break; default: printf("DataError!"); return 0; } printf("%.2lf", result); return 0; }
13、简单的猜数游戏
描述
事先由计算机指定一个正整数,computer_num=65,然后让用户猜,如果用户输入等于此数,输出“Right”,如果大于此数,输出“Big”,小于输出“Small”#include <stdio.h> #include<math.h> int main() { int n; scanf("%d", &n); if (n > 65) { printf("Big"); } else if(n == 65) { printf("Right"); } else { printf("Small"); } return 0; }
14、温度自动转换
输入一个温度,用C或者F结尾,如果是C结尾,则将温度转换为华氏温度,如果是F结尾,则将温度转换为摄氏温度,结果保留2为小数,如果结尾是其他字符,输入“Error!”。
华氏温度转摄氏温度 公式为 C=5(F-32)/9
摄氏温度转华氏温度 公式为 F=C*1.8+32
#include<stdio.h> int main() { char ch; float C=0, F=0,t=0; scanf("%f%c", &t, &ch); if (ch == 'C') { F = t * 1.8 + 32; printf("%.2fF", F); } else if(ch == 'F') { C = 5*(t - 32) / 9; printf("%.2fC", C); } else { printf("Error!"); } return 0; }
15、第几天
编写一道程序,输入三个正整数,表示某年某月某日,判断这一天是这一年的第几天?
输入2013 7 12 输出193
输入2012 5 15 输出136#include <stdio.h> int getdays(int year, int month); int main() { int sum=0, day, year, month,i; scanf("%d %d %d", &year, &month, &day); for (i = 1; i < month; i++) //循环到前一个月 { sum = sum + getdays(year, i); } sum = sum + day; //加上本月天数 printf("%d", sum); return 0; } int getdays(int year, int month) //根据年月返回对应天数 { int a,day; if (year % 400 == 0) a = 1; else { if (year % 4 == 0 && year % 100 != 0) a = 1; else a = 0; } switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31; break; case 4: case 6: case 9: case 11: day = 30; break; case 2: if (a == 1) { day = 29; } else { day = 28; } break; default: printf("Input error!"); break; } return day; }
16、中英文数字
描述
输入一个两位数,输出该数的英文单词
#include<stdio.h> int main() { int num = 0,a,b; scanf("%d", &num); if (num >= 10 && num <=19) { switch (num) { case 10: printf("ten"); break; case 11: printf("eleven"); break; case 12: printf("twelve"); break; case 13: printf("thirteen"); break; case 14: printf("fourteen"); break; case 15: printf("fifteen"); break; case 16: printf("sixteen"); break; case 17: printf("seventeen"); break; case 18: printf("eightteen"); break; case 19: printf("nineteen"); break; } } else { a = num / 10; b = num - a*10; switch (a) { case 2: printf("twenty"); break; case 3: printf("thirty"); break; case 4: printf("forty"); break; case 5: printf("fifty"); break; case 6: printf("sixty"); break; case 7: printf("seventy"); break; case 8: printf("eighty"); break; case 9: printf("ninety"); break; } switch (b) { case 0: break; case 1: printf("-one"); break; case 2: printf("-two"); break; case 3: printf("-three"); break; case 4: printf("-four"); break; case 5: printf("-five"); break; case 6: printf("-six"); break; case 7: printf("-seven"); break; case 8: printf("-eight"); break; case 9: printf("-nine"); break; } } return 0; }
3、简单循环结构
1、几位数
[问题描述]输入一个整数,判断是几位数?
#include <stdio.h> int main() { int count = 0; //计数,必须初始化为0 int num = 0; //输入的数 scanf("%d", &num); //不能漏掉& while (num != 0) //循环整除10直到为0 { //每次整除10后原数位数会减一 num /= 10; //1位数整除10=0 count++; //通过整除次数可知原数位数 } printf("%d", count); return 0; }
2-1、输出n位整数的后n-1位数
方法一
#include<stdio.h> #include<math.h> int main() { unsigned int w; int count = 0; //count计数 int w1,high; //w1作为w的副本,high表示w最高位的数字 scanf("%d", &w); w1 = w; while (w1 != 0) //判断位数 { //原理每次整除10位数会减一 w1 /= 10; //判断整除次数即可判断位数 count++; } high = w / (pow(10.0, 1.0*count - 1)); //w整除10的(位数-1)次方即是最高位数字 w = w - high * (pow(10.0, 1.0*count-1)); //w减去(最高位数字乘10的(位数-1)次方)就是剩下的数 printf("%d", w); return 0; }
2-2、输出n位整数的后n-1位数
[问题]
w是一个大于10的无符号整数,若w是n(n≥2)位的整数,输出w的后n-1位的数。例如w 值为5923,则输出923;w的值为923,则输出23。无符号整型变量w定义为:unsigned int w; 无符号整型变量对应的格式符为%u 。
方法二#include<stdio.h> int main() { unsigned int w; char c; scanf("%c%u",&c,&w); //通过%c取出第一位,其余位作为整数赋值给w printf("%u",w); return 0; }
3、判断[a,b]间有多少个闰年
描述
请判断【a,b】年之间(含a年,含b年),共包含多少个闰年,要求输出闰年的个数。闰年的判断条件:
能被4整除但不能被100整除,或者能被400整除。
#include <stdio.h> int main() { int a, b,i,count=0; scanf("%d,%d", &a, &b); for ( i = a; i <= b; i++) { if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) { count++; } } printf("%d", count); return 0; }
4、求出1到1000之内能被7或者11整除、但不能同时被7和11整除的所 有整数的个数
#include<stdio.h> int main() { int i,count=0; for(i=7;i<=994;i++) { if((i%7==0 ||i%11==0) && !(i %7==0 && i % 11==0)) count++; } printf("%d",count); return 0; }
5、输出三位数中所有的水仙花数
描述
题目内容:请输出【a,b】之间(含a,含b)所有水仙花数,水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)。#include<stdio.h> #include<math.h> int main() { int num,gw,sw,bw,result; //bw表示百位.... int a,b; scanf("%d,%d",&a,&b); for (num = a; num <= b; num++) { bw = num / 100; sw = (num - bw * 100) / 10; gw = num % 10; result = pow(bw, 3) + pow(sw, 3) + pow(gw, 3); if(result==num) printf("%d\n", num); } return 0; }
6、鸡兔同笼问题
见循环进阶部分
7、猴子吃桃
[问题描述]
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
#include<stdio.h> int main() { int n,num=1,i; scanf("%d", &n); for (i = 1; i < n; i++) { num = (num + 1) * 2; } printf("%d", num); return 0; }
8、求Sn=1!+2!+3!+4!+5!+…+n!的值
#include<stdio.h> long int jiecheng(int i); int main() { int n,i; float sum = 0; scanf("%d", &n); for (i = 1; i <= n; i++) { sum = sum + jiecheng(i); } printf("%f", sum); return 0; } long int jiecheng(int i) { int sum=1; for (i; i >= 1; i--) { sum = sum * i; } return sum; }
9、组合数的问题
[问题]
根据以下公式求P的值。m与n为两个正数且要求m>n。例如:m=12,n=8时,运行结果为495.000000。
#include<stdio.h> int jiecheng(int i); int main() { int n,i,m; float p; scanf("%d%d", &m,&n); p = 1.0*jiecheng(m) / (jiecheng(n)*jiecheng(m-n)); printf("%f", p); return 0; } int jiecheng(int i) { int sum=1; for (i; i >= 1; i--) { sum = sum * i; } return sum; }
10、计算自然常数e的近似值
编写程序,用e≈1+1/1!+1/2!+1/3!+……+1/n!,求e的近似值,n由用户输入。 输出e的值,保留10位小数。 由于int类型的最大值有限,建议使用long int,更准确表示13以上的阶乘数。
#include<stdio.h> long int jiecheng(int i); int main() { int n,i,m; double e=1; scanf("%d", &n); for (i = 1; i <= n; i++) { e = e + (1.0/jiecheng(i)); } printf("%.10lf", e); return 0; } long int jiecheng(int i) { long int sum=1; for (i; i >= 1; i--) { sum = sum * i; } return sum; }
11、 用格雷格列公式求pi的近似值
用格雷格里公式求pi的近似值,当某一项的绝对值小于10的-6次方时停止
#include<stdio.h> #include<math.h> int main() { int i=1,j=1; double x,pi=0; do { x = 1.0 / i; if (j % 2 == 0) { x = -x; } pi = pi + x; i += 2; j++; } while (fabs(x) >= 1e-6); //fabs为取绝对值 pi = pi - x; pi *= 4; printf("%lf", pi); return 0; }
12、输出Fibonacci数列小于等于n的项
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)
编程序输出Fibonacci(斐波那契)数列小于等于n的项,n由用户指定
#include<stdio.h> int main() { int a, b, c=0, d,n; scanf("%d", &n); a = 1; b = 1; printf("1 1"); for (;;) { c = a + b; d = b + c; a = c; b = d; if (a <= n) printf(" %d", a); if (b <= n) printf(" %d", b); if (a > n || b > n) break; } printf(" "); return 0; }
13、累加求和 a+aa+aaa+aa…a
[试题描述]
下面程序的功能是求a+aa+aaa+aa…a(n个a)之和,a和n从键盘输入。例如输入2和3,则计算2+22+222,输出246。[输入说明] a和n的值,类型可以选择 整型或 浮点型;
[输出说明] 累加求和输出的结果建议定义为double类型(结果保留 0位小数);#include<stdio.h> #include<math.h> int main() { int n, a,i,b,sum=0; scanf("%d%d", &a, &n); b = a; for (i = 1; i < n; i++) { a = a + b * (pow(10, i)); sum += a; } printf("%d", sum+b); return 0; }
14、0.5次方累加和问题
[描述]计算并输出以下公式的结果。
例如:从键盘给n输入20后,则输出为s=534.188884。注意:n的值要求大于1但不大于100。#include<stdio.h> #include<math.h> double x(int n); int main() { int i,n; double sum = 0; scanf("%d", &n); for (i = 1; i <= n; i++) { sum = sum + x(i); } printf("%lf", sum); return 0; } double x(int n) { int i; double result=0; for (i = 1; i <= n; i++) { result = result + pow(i, 0.5); } return result; }
15、麦穗问题
[问题描述] 达伊尔麦穗问题:64个棋格,第一个1粒麦穗,第二个2粒麦穗,第三个4粒麦穗,后一个棋格放前一个棋格2倍的麦穗,问共有多少粒麦穗?
[要求] 输出结果用 指数形式(%.4e 或 %.4le ) ,小数部分的小数位 保留 4 位。#include<stdio.h> int main() { double x=1; double sum = 0; //2^64次方极大 int i; for (i = 1; i <= 64; i++) { sum = sum + x; x = x * 2; } printf("%.4le", sum); return 0; }
16、统计字符的个数
输入一行字符,分别统计出其中的英文字母、数字、空格和其他字符的个数。
提示:空格就是ASCII表里面的SP字符,ASCII码值为32。
#include<stdio.h> int main() { char c; int english = 0, number = 0, space = 0, other = 0; while (1) { c = getchar(); if (c == '\n') { break; } else if (c >= 'A' & c <= 'Z' || c >= 'a' & c <= 'z') { english++; } else if (c >= '0' && c <='9') { number++; } else if(c==' ') { space++; } else { other++; } } printf("%d %d %d %d", english, number, space, other); return 0; }
17、学生的成绩,统计并输出优秀
编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、通过(60~84)和不及格(小于60)的学生人数。
#include<stdio.h> #include<string.h> int main() { int score[1000] = { -1 }; int great = 0, pass = 0, fail = 0; int i=0; do { scanf("%d", &score[i]); if (score[i] > 85) { great++; } else if (score[i] >= 60 && score[i] <= 84) { pass++; } else if (score[i] > 0 && score[i] <= 59) { fail++; } else { break; } } while (1); printf(">=85:%d\n60-84:%d\n<60:%d", great, pass, fail); return 0; }
18、体操比赛打分
假定某一大型比赛中有10名裁判同时为一名体操运动员打分,编写一个程序,输入这10名裁判的打分,输出去掉一个最高分和一个最低分后该运动员的平均得分。
#include<stdio.h> int main() { float score[10] = { 0 }; float max=0,min=0,sum=0; float average = 0; int i=0; scanf("%f", &score[i]); sum = score[0]; max = score[0]; min = score[0]; for (i = 1; i <10; i++) { scanf("%f", &score[i]); if (score[i] > max) { max = score[i]; } if (score[i] < min) { min = score[i]; } sum = sum + score[i]; } sum = sum - max - min; average = sum / 8; printf("%.3f %.3f %.3f", max, min, average); return 0; }
19、计算并输出多项式的值
[问题]
计算并输出下列多项式的值!例如:若从键盘给n输入8后,则输出0.662872。
#include<stdio.h> #include<math.h> int main() { int n,i; float sum = 0; scanf("%d", &n); for (i = 1; i <= 2*n; i++) { sum = sum + pow(-1.0,i+1) / i; } printf("%f", sum); return 0; }
20、累加和倒数之和
[问题描述]根据以下公式计算sum,n的值通过键盘输入。
#include<stdio.h> int sum(int i); int main() { int n,i; float result = 0; scanf("%d", &n); for (i = 1; i <= n; i++) { result = result + 1.0/sum(i); } printf("%f", result); return 0; } int sum(int n) { int i,sum=0; for (i = 1; i <= n; i++) { sum += i; } return sum; }
21、求一个正整数的因子和
从键盘输入一个正整数,求它的所有因子的和,例如输入6,它的因子有1、2和3,所有因子的和为6
#include<stdio.h> int main() { int n,i; int sum = 0; scanf("%d", &n); for (i = 1; i < n; i++) { if (n%i == 0) { sum += i; } } printf("%d", sum); return 0; }
22、求最大公约数,最小公倍数
输入两个正整数m和n,求其最大公约数和最小公倍数。
#include<stdio.h> int main() { int m,n,t,max,min=0,i,s; scanf("%d%d", &m, &n); if (m > n) { t = m; m = n; n = t; } for (i = 1; i <= m*n; i++) { if (m % i == 0 && n % i == 0) { max = i; } if (i % m == 0 && i % n == 0 && min==0) { min = i; } } printf("%d %d", max, min); return 0; }
4、循环进阶
1、换硬币问题
将一笔零钱(大于8分,小于1元,精确到分)换成5分、2分和1分的硬币,要求每种硬币至少有一枚。输入金额,问有几种换法?
注意:1分后面没有等号!!!!!
#include<stdio.h> int main() { float amount = 0; int coin_5, coin_2, coin_1; //顾名思义 scanf("%f", &amount); for (coin_5 = 1; coin_5 <= 19; coin_5++) //因为每种至少一个且总数小于100分,所以coin_5最多19个 { //因为先输出5分1个,所以放外循环 for (coin_2 = 1; coin_2 <= 47; coin_2++) //2分最多47个 { for (coin_1 = 1; coin_1 <= 94; coin_1++) //1分最多94个 { if (coin_1 * 1 + coin_2 * 2 + coin_5 * 5 == amount * 100) //amount*100将元转化为分 { printf("5分=%d个,2分=%d个,1分%d个\n", coin_5, coin_2, coin_1); } } } } return 0; }
2、鸡兔同笼问题
大约在1500年前,《孙子算经》中记载了这个有趣的问题:
今有鸡兔同笼,上有35个头,下有94只足,请问鸡和兔各有几只?
请编程序计算,将结果输出。
#include<stdio.h> int main() { int x, y,n; //设鸡x只,兔子y只,共n只 n=35; y = 1; //一个从1开始++ x = n - y; //另一个从n-1开始-- while (1) //穷举法 { if (2 * x + 4 * y == 94) { printf("鸡=%d只,兔=%d只",x,y); break; } else { x--; y++; } } return 0; }
3、九九乘法表
利用双重循环输出九九乘法表,如下图所示,两列之间用转义字符’\t’对齐:
#include<stdio.h> int main() { int i, j; for (i = 1; i <= 9; i++) { for (j = 1; j <= i; j++) { printf("%d*%d=%d\t", j,i,i*j); } printf("\n"); } return 0; }
4、输出素数
描述
输出1~n之间的所有素数,每行输出5个,用转义字符‘\t’对齐#include<stdio.h> int isprime(int x); int main() { int i, n,count=0,sign; scanf("%d", &n); for (i = 2; i <= n; i++) { sign = isprime(i); //判断是否素数,是返回1,否返回0 if (sign) { printf("%d\t", i); count++; if (count % 5 == 0) //每五个数输出换行符 { printf("\n"); } } } return 0; } int isprime(int x) { int i; for (i = 2; i < x; i++) { if (x%i == 0) { return 0; } } return 1; }
5、累加求和
[试题描述]
请编写程序计算并输出下列多项式的值,(建议利用双重循环;如果利用一重循环,累加时就要加条件)
long int fac(int i) //涉及阶乘最好long int { long int sum=1; for (i; i >= 1; i--) { sum = sum * i; } return sum; } int main() { int n,i; double sum=0; scanf("%d",&n); for(i=1;i<=n;i+=2) { sum+= 1.0/fac(i); //fac返回值为整数,所以用1.0/ } printf("%lf",sum); return 0; }
6、输出图形
[问题描述] 输出图形
[要求] 每一行仅仅输出星号左侧的空格,不要输出星号右侧的空格;#include<stdio.h> int main() { int i, j,k=1; for (i = 1; i <= 5; i++) { for (j = 4; j >= i; j--) { printf(" "); } for (k = 1; k <= 2*(i-1)+1; k++) { printf("*"); } printf("\n"); } return 0; }
7、找出N之内的所有完数
一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子:
#include<stdio.h> int jisuan(int x); int main() { int i, j,n; scanf("%d", &n); for (i = 1; i <= n; i++) { if (jisuan(i) == i) { printf("%d its factors are ",i); for (j = 1; j < i; j++) //不包括本身,所以用<而不是<= { if (i % j == 0) { printf("%d ", j); } } printf("\n"); } } return 0; } int jisuan(int x) //计算因数和 { int i, sum=0; for (i = 1; i < x; i++) { if (x%i == 0) { sum += i; } } return sum; }
8、输出小于n的素数个数
[问题描述] x为任意输入的整数,统计小于x的所有素数,输出所求素数的个数。
#include<stdio.h> int isprime(int x); int main() { int i, n, count = 0, sign; scanf("%d", &n); for (i = 2; i < n; i++) //从2开始,到n-1结束 { sign = isprime(i); if (sign) { count++; } } printf("%d",count); return 0; } int isprime(int x) { int i; for (i = 2; i < x; i++) { if (x%i == 0) { return 0; } } return 1; }
9、输出紧靠m的k个素数
[问题描述] 将大于整数m 且紧靠m的k个素数输出。例如,若输入17 5回车, 则应输出:19 23 29 31 37。
[要求] 输出数据占4个宽度,输出格式为%4d 。#include<stdio.h> int isprime(int x); int main() { int m, k,i,sign,count=0; scanf("%d%d", &m, &k); for (i = m+1;count<k; i++) { sign = isprime(i); if (sign) { count++; printf("%4d",i); } } return 0; } int isprime(int x) { int i; for (i = 2; i < x; i++) { if (x%i == 0) { return 0; } } return 1; }
10、打印图形2
#include<stdio.h> int main() { int i, j,k=1; for (i = 1; i <= 4; i++) { for (j = 3; j >= i; j--) { printf(" "); } for (k = 1; k <= 2*(i-1)+1; k++) { printf("*"); } printf("\n"); } return 0; }
-
HUAWEI在线编程题库180题
2017-07-20 20:04:59华为在线编程题库180题 写这个单纯就是一个记笔记的作用,还有就是可以总结一些新奇的思路。 题库链接华为机试 在线训练 -
java面试编程题
2019-06-06 18:43:11面试编程题 https://blog.csdn.net/njnu_zhoubo/article/details/4663866 -
360笔试编程题之第一题
2016-03-28 22:31:58今晚做了360的在线笔试题,感觉题量还是挺大的,因为两个小时,有40道选择题,2道编程题,对我来说时间还是挺紧的。闲话不多说,我们聊聊这次编程题中的第一道。 (1) 题目数值游戏 Time Limit: 2000/1000 MS (Java/... -
Android之算法编程题
2016-10-11 12:14:41Android面试之编程题 -
python程序设计题库-python编程题库
2020-10-30 22:57:11广告关闭2017年12月,云+社区对外发布,从最开始的...上期题目链接:1000道python题库系列分享十二(9道编程题)上期题目答案:? 本期题目:?...热烈庆祝2018年2月董付国老师《python程序设计(第2版)》出版18个月... -
C语言课后编程题
2018-11-06 22:22:49第1章课后编程题就一两句 所以就不整理笔记了 第2章 课后无编程题 故从第三章开始 1.编写一个程序,读入一个字母,输出与之对应的ASCLL码值。 我们可以得知: d,i 用来输入有符号的十进制整数; u 用来输入无... -
面试时遇到上机编程题
2019-01-11 00:28:52面试的时候,Interviewer 有时候会让Candidate 做一道上机编程题,大部分情况下,这类编程题都比较简单。试想一下,Interviewer给出一个需要几个小时才能完成的编程题,那么这一环节占用时间也太长了。但是,编程题... -
汇编语言编程题
2018-06-27 22:06:30编程题:编程实现: S=1+2+3+……+100 ,要求计算后的结果存放在变量S里[试题解析] 循环控制可以分为:计数循环和条件循环。作为计数循环,一般是指循环次数是已知的情况,在程序设计的的循环时,先应将循环次数... -
浙大PTA-Python题库 编程题第四章(4-1~4-30)题解
2020-06-30 13:25:26其他各章题解链接如下 浙大PTA-Python题库 编程题第一章(1-1~1-3)题解 https://blog.csdn.net/zimuzi2019/article/details/107020657 浙大PTA-Python题库编程题 第二章(2.1~2.14)题解 ...浙大PTA-Python题库 编程题第三... -
js数组经典面试编程题
2019-03-08 21:50:20春招,秋招甚至是实习,多多少少会面临一些基础的编程题,这些编程题除了一些数据结构的典型情景,但是不能忽略,小看的也有一些基础编程题,如最简单的数组结构就有一些经典的编程题,这里进行简要的总结。... -
阿里巴巴在线笔试编程题2题
2018-05-14 15:48:36前言:上周五参加了阿里巴巴的在线笔试,包含半小时10条选择题和一小时2条编程题。题目1:有两个非负数a和b,求两者的和。注意a和b可能是小数,输出结果不包含多于的0。输入:12.3 5输出:17.5参考代码:#include&... -
浙大PTA-Python题库 编程题第三章(3-1~3-22)题解
2020-06-30 13:24:50其他各章题解链接如下 浙大PTA-Python题库 编程题第一章(1-1~1-3)题解 https://blog.csdn.net/zimuzi2019/article/details/107020657 浙大PTA-Python题库编程题 第二章(2.1~2.14)题解 ...浙大PTA-Python题库 编程题第三... -
阿里校招在线编程题
2017-04-10 17:11:542017校招阿里的在线编程题,全程30分钟。 -
OJ编程题教训
2016-09-06 15:05:52如果某些编程题的所有数据都只做在一个.in和一个.out中,这样就会变成多组测试了,所以需要提交的代码中循环处理。 2、处理方法:其实这个问题可以避免,就是编程题后台每个样例做一组对应的.in和. -
面向对象编程题汇总
2018-06-06 21:08:21在授课面向对象这一章节的时候,发现找一些比较贴近的编程题还是比较难的,从网上整理了一下,希望对需要的朋友有帮助。很多是从网上找的,如果侵犯版权请联系我! 一、类和对象 1.定义一个类Demo,其中定义一个求... -
c++经典编程题汇总
2017-07-24 20:18:02《c++》编程题试卷 第三章 1.编写一个求方程ax2 + bx + c = 0的根 的程序,用3个函数分别求当b2-4ac大于零、等于零、和小于零时的方程的根。要求从主函数输入a,b,c的值并输出结果。 #include #include void... -
华为2018提前批笔试题编程题 java
2018-08-08 21:32:40华为2018提前批笔试题编程题 第一题 题目描述 输入任意个字符串,将其中的小写字母变为大写,大写字母变为小写,其他字符不用处理; 输入描述: 任意字符串:abcd12#%XYZ 输出描述: 输出字符串:ABCD12#%... -
2020阿里笔试编程题
2019-09-17 10:57:28选择题很难做,阿里的秋招貌似非常难,大部分岗位都留给了实习生,但是两道编程题不怎么难。 第一题 有一个n*n的地图,一只兔子想要穿过这个地图,给出的地图是一个二维数组map[i][j],数值表示该位置的毒雾持续时间... -
华为2020校招笔试编程题
2019-09-30 03:47:48华为2020校招笔试编程题 刚做完华为的笔试题,简要描述一下三道编程题的解决方法以及python代码实现 第一题大致描述: 给定两个已经升序排序好的的序列A={a1,a2,a3,...an} 和B={b1,b2,b3...bn} ,一个数R,... -
《Linux环境编程》编程题答案
2018-02-02 15:40:19(含有全部课后编程题答案以及以下五个实验报告) 1.实验一 2.实验二 3.实验三 4.实验四 5.实验五 免责申明:上传资料仅供学习交流使用,禁止一切不正当使用行为,如有事故本人概不负责 -
2020 华为机试 三道编程题
2019-09-25 21:28:00投的网络安全岗位,三道编程题。其实不难.... 测试用例都过了。但是.... 第一题,不太熟悉newcode输入输出,python用 for line in sys.stdin 读一行数据有问题,导致花了半个小时调试。 第二题由于多了一个print... -
深信服2018春季招聘-研发卷编程题 - 题解
2018-03-15 21:00:10深信服还是一如既往的“懒”,2018秋招的5个编程题在本次春招出现了三道,然后添加了一道新的编程题,且选择题和填空题基本与秋招的雷同,看来之前没看深信服2018校园招聘C++工程师编程题 - 题解的同学有点亏啊。... -
上台阶编程题
2017-04-07 14:48:38京东编程题:上台阶 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法。 给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n... -
PTA作业6数组编程题
2020-03-29 21:07:03PTA作业6数组编程题 7-1 【C0170】在键盘上输入N个整数,编写一个程序用选择排序算法实现从小到大排列 (10分) 在键盘上输入n(0<n<100)个整数,编写一个程序使该数组中的数按照从小到大的次序排列,用选择... -
奇虎360_2017校园招聘笔试编程题第一题
2016-09-20 20:55:58今晚做了360的校招笔试题,编程题难度适中,在这里跟大家分享一下编程题的第一题。1、 题目 2、 输入输出及样例 3、 我的思路 这题应该看题目理解一下就有思路,最简单粗暴的就是创建一个二维数组input[][],模拟...
-
bfs和dfs
-
Excel高级图表技巧
-
String面试题
-
【2021】UI自动化测试框架(Selenium3)
-
Kotlin协程极简入门与解密
-
李宏毅2020春季作业hw2的所需数据(免费)
-
商业的本质——杰克·韦尔奇著
-
智能温度检测控制系统设计.zip
-
EndNote20 for Mac 与MacBook ProM1 macOS Big Sur不兼容的解决方案
-
flutter插件调用APP页面、使用原生aar,framework库
-
基于51单片机的智能计算器.zip
-
小米平板3维修PCB位置图(PDF格式)
-
【剑指offer】算法题03.数组中重复的数字(C++)
-
mpi4py 基本函数学习
-
Python的输入与输出
-
shinkansen_east_bound210228.pdf
-
练习2-15 求简单交错序列前N项和
-
小米Play维修原理图PCB位置图(PDF格式)
-
hadoop自动化运维工具Ambari应用实践
-
Qt项目实战之基于Redis的网络聊天室