C语言经典21-30题

                  21.猴子吃桃问题

22.两个乒乓球队进行比赛,各出三人 

23.打印出如下图案(菱形)

24.:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和

 25.求1+2!+3!+...+20!的和

26.利用递归方法求5!

27.利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来

28.有5个人坐在一起,问第五个人多少岁? 

 29.给n位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字

 30.回文数

21.猴子吃桃问题

 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。22.两个乒乓球队进行比赛,各出三人

#include <stdio.h>
double diGui(int n);

int main(){
	int n=1;
	printf("第一天共摘了%f",diGui(n));
	
	return 0;
}
//写一个递归函数
double diGui(int n){
	double sum;
	if(n==10)
		sum=1;
	else
		sum = ((diGui(n+1)+1)*2);	
		
	return sum;
}

结果:
    第一天共摘了1534.000000

22.两个乒乓球队进行比赛,各出三人 

 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定
比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出
三队赛手的名单。 
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 

#include <stdio.h>

int main(){
	char i,j,k;
	
	for(i='x'; i<='z';i++)
		for(j='x'; j<='z'; j++)
			for(k='x'; k<='z';k++)
				if(i!=j && i!=k && j!=k)
					if(i!='x'&& k!='x' && k!='z')
						printf("a--%c,b--%c--,c--%c",i,j,k);
	
	return 0;					
}

结果:
    a--z,b--x--,c--y

23.打印出如下图案(菱形)

#include <stdio.h>

int main(){
	
	int n=9,i,j,k;
	
	for(i=1;i<=n;i++){  //这个i表示有多少行
		if(i<(n-1)/2+1){
			for(j=1;j<=(n-1)/2-i;j++)
				printf(" ");
			for(k=1;k<=2*i-1;k++)
				printf("*");				
		}else{
			for(j=0;j<=(i-(((n-1)/2+1)));j++)
				printf(" ");
			for(k=1;k<=((n-1)/2+1)-(i-((n-1)/2+1))*2;k++)
				printf("*");
		}
		
	printf("\n");	
	}
}

   *
  ***
 *****
*******
 *****
  ***
   *

24.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和

#include <stdio.h>

double sum(int n);

int main(){
	int n;
	printf("求这个数列第n项,n=");
	scanf("%d",&n);
	
	printf("2/1+3/2+......=%lf",sum(n));
	
	return 0;
}
double sum(int n){
	int  temp,i;
	double fenzi=2, fenmu=1, sum=0;
	for(i=0; i<n; i++){
		sum += fenzi/fenmu;
		temp = fenzi;
		fenzi = fenzi+fenmu;
		fenmu = temp;
	}
	
	return sum;
}

结果:
    求这个数列第n项,n=20
    2/1+3/2+......=32.660261

 25.求1+2!+3!+...+20!的和

程序分析:此程序只是把累加变成了累乘。

#include <stdio.h>
long factorial(int n);

int main(){
	int n;
	printf("求多大的阶乘n=");
	scanf("%d",&n);
	
	printf("1+2!+3!+..=%ld",factorial(n));
	
	return 0;
}

//阶乘
long factorial(int n){
	int i, sum=1;
	long  sums=0;
	for(i=1;i<=n;i++){
		sum *= i;  //最巧妙的地方!!!!
		sums += sum;	
	}
	return sums;	
}

结果:
       求多大的阶乘n=3
       1+2!+3!+..=9

26.利用递归方法求5!

#include <stdio.h>

int diGui(int n);
int main(){
	int n;
	printf("请输入你想要的递归数n=");
	scanf("%d",&n);
	
	printf("1!+2!+...%d!=%d",n,diGui(n));
	
	return 0;
}
//递归函数
int diGui(int n){
	int sum;
	if(n==1)
		sum=1;
	else
		sum=n*diGui(n-1); 
	
	return sum;	
}

结果:
    请输入你想要的递归数n=5
    1!+2!+...5!=120

27.利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来

#include <stdio.h>

int isNumber(int n);
int niNumber(int n);

int main(){
	int number;
	printf("请输入数字number=");
	scanf("%d",&number);
	printf("输入的数字是%d位数\n",isNumber(number));
	printf("逆序打印出的数字为%d",niNumber(number));
	
	return 0;	
}

//求它是几位数
int isNumber(int n){
	int count=0;
	while(n!=0){
		n/=10;
		count++;
	}
	return count;
}

//逆序打印数字
int niNumber(int n){
	int m, sum=0;
	while(n!=0){
		m = n%10;
		sum = sum*10 + m;
		n /= 10;
	}
	return sum;
}

结果:
    请输入5个字符 : abcde
    相反顺序输出结果 : edcba

28.有5个人坐在一起,问第五个人多少岁? 

题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。

#include <stdio.h>
int yearRecursion(int n);
//recursion:递归

int main(){
	int n;
	printf("有多少个人这样说n=");
	scanf("%d",&n);
	
	printf("第%d个人的岁数是%d",n,yearRecursion(n));
	
	return 0;
}
//设置一个递归函数
int yearRecursion(int n){
	int age;
	if(n==1)
		age=10;
	else
		age=yearRecursion(n-1)+2;	
	
	return age;
}

结果:
    有多少个人这样说n=5
    第5个人的岁数是18

 29.给n位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字

#include <stdio.h>

int isNumber(int n);
int niNumber(int n);

int main(){
	int number;
	printf("请输入数字number=");
	scanf("%d",&number);
	printf("输入的数字是%d位数\n",isNumber(number));
	printf("逆序打印出的数字为%d",niNumber(number));
	
	return 0;	
}

//求它是几位数
int isNumber(int n){
	int count=0;
	while(n!=0){
		n/=10;
		count++;
	}
	return count;
}

//逆序打印数字
int niNumber(int n){
	int m, sum=0;
	while(n!=0){
		m = n%10;
		sum = sum*10 + m;
		n /= 10;
	}
	return sum;
}

结果:
    请输入数字number=123456
    输入的数字是6位数
    逆序打印出的数字为654321

 30.回文数

题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

程序分析:学会分解出每一位数。

#include <stdio.h>

void isPalindromeNumber(int n);

int main(){
	int n;
	printf("请输入一个数判断是否文回文数n=");
	scanf("%d",&n);
	
	isPalindromeNumber(n);
	
	return 0;
}

//设置一个回文数函数
//palindrome:回文
void isPalindromeNumber(int n){
	int number=n, newnumber=0;
	while(number>0){
		newnumber = newnumber*10 + number%10;
		number /= 10;
	}
	if(n==newnumber)
		printf("%d是回文数",n);
	else
		printf("%d不是回文数",n);	
}

结果:
    请输入一个数判断是否文回文数n=123456
    123456不是回文数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
浙江大学C语言上机练习&答案 第2周(M2) 2 20011求华氏温度100°F对应的摄氏温度。 2 20012 求华氏温度 150°F 对应的摄氏温度。 3 20013求摄氏温度26°C对应的华氏温度。 3 20015当n为152时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。 3 20026 输入2个整数 num1 和 num2,计算并输出它们的和、差、积、商与余数。 4 第3周(M3) 5 20031 求1+2+3+......+100(调试示例error02_5) 5 20032 求m+(m+1)+(m+2)+......+100 5 20033 求1/m+1/(m+1)+1/(m+2)+......+1/n 6 20034 求1 + 1/3 + 1/5 + ......的前n项和 7 20035 求1-1/4+1/7-1/10+……的前n项之和 7 20036 输出华氏-摄氏温度转换表(改错error02_6) 8 20038 求x的n次幂 9 20041 生成 3 的乘方表 10 20044 求100^0.5+101^0.5+……+1000^0.5 10 20053 计算物体自由下落的距离 11 20056 计算分段函数 11 20061 阶梯电价 12 20062 求m*m+1/m+(m+1)*(m+1)+1/(m+1)+(m+2)*(m+2)+1/(m+2)+......+n*n+1/n 13 20063 求1-2/3+3/5-4/7+5/9-6/11+…… 14 20064 求2^1+2^2+2^3+……+2^n 15 第4周(M4) 15 10007 显示图案 (复习printf()的字符串输出) 15 20042 生成阶乘表 16 20043 使用函数求 n! /(m!* (n-m)!) 16 20054 求平均值 17 20057 求1+1/2+1/3+......+1/n 18 20065 求0!+1!+2!+……+n! 18 40015 求最小值 19 40018 求a+aa+aaa+aa…a 20 第5周(M5) 21 30001 求一元二次方程的根 21 30002 求分段函数的值 23 30003 分类统计字符 23 30004 显示五级记分制成绩所对应的百分制成绩区间(使用switch) 24 30005 显示水果的价格(使用switch) 25 30007 求三角形的面积和周长 27 30008 计算个人所得税 28 30051 判断闰年 29 30052 统计学生平均成绩与及格人数 30 30053 分段计算水费(使用嵌套的if-else语句) 31 第6周(M6) 32 40011 求最小公倍数和最大公约数(调试示例error04_1) 32 40012 求1-1/4+1/7-1/10+1/13-1/16+…… 33 40014 求整数的位数 34 40023 换硬币 35 40024 找出各位数字的立方和等于它本身的数 36 40025 找完数(改错error04_2) 38 40027 从高位开始逐位输出一个整数的各位数字(选作) 39 40052 判断素数 40 40053 逆序输出整数 41 40054 输出斐波那契序列 42 第7周(M7) 42 50002 使用函数判断数的符号 42 50003 使用函数求奇数和 43 50005 使用函数统计素数并求和 44 50006 使用函数统计一个整数中数字的个数 45 50007 使用函数找水仙花数 46 50009 使用函数求余弦函数的近似值 48 50052 使用函数找最大值 49 50062 使用函数输出指定范围内的 Fibonacci 数 50 50063 使用函数找出指定范围内的完数 51 第8周(M8) 52 40013 求奇数和 52 40062 求x+x*x/2!+x*x*x/3!+x*x*x*x/4!+……的值 53 50004 使用函数计算两点间的距离 54 50061 使用函数求a+aa+aaa+aa…a 55 60002 整数的十进制、八进制和十六进制表现形式 56 60003 分类统计字符 57 60006 验证歌德巴赫猜想 58 60007 使用函数输出整数的逆序数 59 60009 统计单词 60 60062 简单计算器 61 夏1周 2 70011 简化的插入排序 2 70012 求平均值 5 70013 将数组中的数逆序存放 6 70014 求最大值及其下标 7 70015 交换最小值和最大值 8 70016 选择法排序 9 70017 在数组中查找指定的元素 10 70021 求矩阵各行元素之和 11 70022 矩阵运算 12 70023 九九乘法表 13 夏2周 14 70024 判断上三角矩阵 14 70025 算算看,这是第几天? 15 70026 找鞍点(选作) 16 70031 将字符串逆序存放 17 70032 查找字符 18 70033 统计大写辅音字母 19 70034 字符串替换 20 70035 将十六进制字符串转换为十进制整数 21 70036 将十进制字符串转换为十进制整数 22 70052 统计字符出现次数 23 夏3周 24 10008 求1~100中能被6整除的所有整数的和 24 20014 计算三门课程的平均成绩 25 20016 计算x的平方 25 20021 计算分段函数的值 25 20022 计算摄氏温度 26 70051 找最大值并交换 27 80011 循环移动 28 80012 在数组中查找指定元素 29 80013 使用函数的选择法排序 30 80014 报数 32 夏4周 35 10012 函数程序设计 35 10024 计算最长的字符串长度 36 10025 字符串的连接 37 40017 求2/1+3/2+5/3+8/5+... 38 80021 找最大的字符串 39 80022 找最长字符串 40 80023 使用函数删除字符串中的字符 41 80024 使用函数实现字符串复制 42 80025 判断回文字符串 43 80026 分类统计字符个数 44 夏5周 45 10014 计算函数P(n,x) 45 10016 十进制转换二进制 46 10017 递归函数程序设计求Fabonacci数列 48 10019 改错error10_1.cpp 49 10022 编程 50 10026 指定位置输出字符串 50 10027 藏尾诗 51 10028 改错error11_2.cpp 52 40065 分解质因数 53 40067 打印图案 54 夏6周 56 30062 输出21世纪所有闰年 56 90001 调试示例error09_1.cpp 56 90002 时间换算 57 90003 计算平均成绩 58 90004 计算两个复数之积 59 90005 查找书籍 60 90006 通讯录排序 61 90007 算算看,这是第几天? 62 90008 使用函数实现时间换算 63 90009 找出总分最高的学生 64 其它练习 65 20027计算旅途时间。 65 20028数字加密 66 教材习3-4 (上机练习30009,统计学生成绩) 66 30061 出租车计费 67 教材习4-12(p77) 68 教材习4-14(p77) 69 50051 数字金字塔(此与40067打印图案的思路相似) 69
好的,下面是c语言笔试面试100: 1. C语言中有哪些数据类型? 2. 如何声明一个整型变量? 3. 如何声明一个字符型变量? 4. 如何声明一个浮点型变量? 5. 如何声明一个双精度型变量? 6. 如何声明一个布尔型变量? 7. 如何声明一个指针变量? 8. 如何定义一个常量? 9. 如何定义一个宏? 10. 什么是变量作用域? 11. 什么是局部变量? 12. 什么是全局变量? 13. 如何定义一个函数? 14. 如何调用一个函数? 15. 什么是指针? 16. 如何定义一个指针? 17. 如何使用指针访问变量? 18. 如何使用指针访问数组元素? 19. 如何使用指针访问结构体成员? 20. 如何使用指针作为函数参数? 21. 如何使用指针返回函数值? 22. 什么是动态内存分配? 23. 如何使用malloc函数分配内存? 24. 如何使用free函数释放内存? 25. 什么是数组? 26. 如何定义一个数组? 27. 如何访问数组元素? 28. 如何使用数组作为函数参数? 29. 如何使用数组作为函数返回值? 30. 什么是字符串? 31. 如何定义一个字符串? 32. 如何初始化一个字符串? 33. 如何比较两个字符串? 34. 如何连接两个字符串? 35. 如何复制一个字符串? 36. 什么是结构体? 37. 如何定义一个结构体? 38. 如何访问结构体成员? 39. 如何使用结构体作为函数参数? 40. 如何使用结构体作为函数返回值? 41. 什么是联合体? 42. 如何定义一个联合体? 43. 如何访问联合体成员? 44. 什么是枚举? 45. 如何定义一个枚举? 46. 如何使用枚举? 47. 什么是位运算? 48. 如何使用位运算? 49. 什么是条件语句? 50. 如何使用if语句? 51. 如何使用switch语句? 52. 什么是循环语句? 53. 如何使用while循环? 54. 如何使用do-while循环? 55. 如何使用for循环? 56. 如何使用break语句? 57. 如何使用continue语句? 58. 什么是函数指针? 59. 如何定义一个函数指针? 60. 如何使用函数指针调用函数? 61. 什么是文件操作? 62. 如何打开一个文件? 63. 如何关闭一个文件? 64. 如何读取一个文件? 65. 如何写入一个文件? 66. 如何复制一个文件? 67. 什么是数据结构? 68. 什么是链表? 69. 如何定义一个链表? 70. 如何遍历一个链表? 71. 如何插入一个节点到链表中? 72. 如何删除一个节点从链表中? 73. 什么是栈? 74. 如何定义一个栈? 75. 如何入栈? 76. 如何出栈? 77. 什么是队列? 78. 如何定义一个队列? 79. 如何入队? 80. 如何出队? 81. 什么是递归? 82. 如何使用递归? 83. 什么是排序? 84. 什么是冒泡排序? 85. 什么是选择排序? 86. 什么是插入排序? 87. 什么是快速排序? 88. 什么是归并排序? 89. 什么是堆排序? 90. 什么是查找? 91. 什么是线性查找? 92. 什么是二分查找? 93. 什么是哈希查找? 94. 什么是图? 95. 什么是有向图? 96. 什么是无向图? 97. 什么是拓扑排序? 98. 什么是最短路径? 99. 什么是最小生成树? 100. 什么是动态规划? 希望这些目能够帮助你更好地准备C语言的笔试和面试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值