C基础的练习集及测试答案(40-50)
40、(课堂)打印杨辉三角型前10行
#if 0
40、(课堂)打印杨辉三角型前10行
思路分析:
一。打印十行杨辉三角得第十行长度为十,所以建立一个长度为十的数组,作为每行的数据存储
二。按 0-9循环,代表行号,每次循环按行号递减遍历操作数组,
三。行号位元素置一,递减遍历 元素(n)=元素(n)+元素(n-1),首位不运算。
四。对一行操作完成可得到对应的杨慧三角值。输出。
错误分析:
没有将完整的杨慧三角记录。
#endif
#include<stdio.h>
#include<stdlib.h>
int main(){
int row;
int *yang=NULL;
int i=; printf("打印几行杨辉三角:\n");
scanf("%d",&row);
yang=(int *)malloc(sizeof(int)*row);
if(NULL==yang){
perror("cannot malloc");
return ;
}
for(i=;i<row;i++){
yang[i]=;
int j;
for(j=i-;j>;j--){
yang[j]+=yang[j-];
//printf("4444444444");
}
int k=;
for(k=;k<=i;k++){
printf("%d\t",yang[k]);
}
printf("\n"); } return ;
}

41、给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。
例如,我们从6767开始,将得到
7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174
... ...
现给定任意4位正整数,请编写程序演示到达黑洞的过程。
#if 0
、给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,
将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。
例如,我们从6767开始,将得到
- =
- =
- =
- =
- =
... ...
现给定任意4位正整数,请编写程序演示到达黑洞的过程。
思路分析:
一。利用循环结束条件为结果等于6174
二。接收数据,
三。对数据排序,得到递增递减两数的差值,判断是否为6174,否则继续循环。
#endif
#include<stdio.h>
void bubblesort(int a[],int len){
int i,j;
for(i=;i<len-;i++){
for(j=;j<len--i;j++){
if(a[j]>a[j+]){
a[j]^=a[j+];
a[j+]^=a[j];
a[j]^=a[j+];
}
}
} } int dijian(int danwei[],int len){
int sum=;
bubblesort(danwei,len);
int i=;
for(i=len-;i>=;i--){
sum=sum*;
sum+=danwei[i];
}
return sum;
}
int dizeng(int danwei[],int len){
int sum=;
bubblesort(danwei,len);
int i=;
for(i=;i<len;i++){
sum=sum*;
sum+=danwei[i];
}
return sum;
} int main(){ //获得一个数
int num=;
printf("请输入一个四位数:");
scanf("%d",&num);
while(num!=){
//分解数值 int danwei[];
danwei[]=num/;
danwei[]=(num%)/;
danwei[]=(num%)/;
danwei[]=num%;
//排序成两个新数据
int jian=dijian(danwei,);
int zeng=dizeng(danwei,);
//相减得到新数据
num=jian-zeng;
printf("%d-%d=%d\t",jian,zeng,num); }
return ;
}

42、(课堂)自定义2个字符数组,不使用系统提供的strcat()函数,实现strcat()函数功能。
43、(课堂)自定义2个字符数组,不使用系统提供的strcpy()函数,实现strcpy()函数功能。
44、(课堂)自定义2个字符数组,不使用系统提供的strcmp()函数,实现strcmp()函数功能。
45、(课堂)自定义1个字符数组,不使用系统提供的strlen()函数,实现strlen()函数功能。
46、输出以下图案。要求每行的字符数与每次偏移几个字符由用户输入。结束条件为最后一行开头与第一行末尾对齐或在其之后
**********
**********
**********
**********
**********
**********
//结束条件:最后一行开头与第一行末尾对齐或在其之后
#if 0
、输出以下图案。要求每行的字符数与每次偏移几个字符由用户输入。结束条件为最后一行开头与第一行末尾对齐或在其之后
**********
**********
**********
**********
**********
**********
思路分析:
一。分三种情况,偏移大于行数,偏移量和字符数等比且偏移量不为一,偏移量和字符数不等比;
偏移大于字符:第一行字符,第二行偏移空格加上字符;
偏移量和字符数等比且偏移量不为一;字符数除偏移量的值加二
偏移量和字符数不等比;
错误分析;
再次看代码感觉这样有问题写个新算法
#endif
#include<stdio.h>
int main(){
int zifu,pianyi;
printf("每行的字符数");
scanf("%d",&zifu);
printf("每次偏移几个字符");
scanf("%d",&pianyi);
int i=;
if(pianyi>zifu){
int i;
for(i=;i<zifu;i++){
printf("*");
}
printf("\n");
for(i=;i<pianyi;i++){
printf(" ");
}
for(i=;i<zifu;i++){
printf("*");
}
return ;
}
/*
if(zifu%pianyi==0)
i=0;
else i=-1;
*/
//if(zifu%pianyi!=0)zifu+=pianyi;
int num=zifu/pianyi;
if(zifu%pianyi!= && pianyi!=)num=num+;
for(i=;i<num;i++){
int k=;
for(k=;k<pianyi*i;k++){
printf(" ");
}
int j=;
for(j=;j<zifu;j++){
printf("*");
}
printf("\n");
}
return ;
}

改版一:
#if 0
、输出以下图案。要求每行的字符数与每次偏移几个字符由用户输入。结束条件为最后一行开头与第一行末尾对齐或在其之后
**********
**********
**********
**********
**********
********** 思路分析:
一。空格数=++kong * 偏移量
二。循环执行条件 空格数小于字符数 #endif #include<stdio.h> int main(){
int zifu,pianyi;
printf("每行的字符数");
scanf("%d",&zifu);
printf("每次偏移几个字符");
scanf("%d",&pianyi);
int kongge=;
int kong=;
while(kongge<zifu){
int k=;
kongge=kong*pianyi;
for(k=;k<kongge;k++){
printf(" ");
}
kong++; int j=;
for(j=;j<zifu;j++){
printf("*");
}
printf("\n"); }
return ;
}

47、按以下规律加密一段文字。
A->Z a->z
B->Y b->y
C->X c->x
……
Z->A z->a
其中不是字母的部分不加密。
#if 0
、按以下规律加密一段文字。
A->Z a->z
B->Y b->y
C->X c->x
……
Z->A z->a
其中不是字母的部分不加密。 解题思路:
一。利用字母对应的ASCII码表的数值进行运算,达到加密的目的。
二。B-A=Z-Y; C-A=Z-X ==》X=Z-(C-A)=Z-C+A
#endif #include<stdio.h> int main(){
int i=;
char encryption[]={'','A','a','','B','b','','Z','z','','','Q','q',''};
for(i=;i<;i++){
printf("%c",encryption[i]);
}
printf("\n加密结果:\n");
for(i=;i<;i++){
if((encryption[i]>='A')&&(encryption[i]<='Z')){
encryption[i]='Z'-encryption[i]+'A';
}
if((encryption[i]>='a')&&(encryption[i]<='z')){
encryption[i]='z'-encryption[i]+'a';
} }
for(i=;i<;i++){
printf("%c",encryption[i]);
}
return ;
}

48、规定一句话中以空格作为分词符。输入一句话,求一句话中最长单词的长度。例如:
I love China!
则最长单词是China!,最长单词长度是6
#if 0
、规定一句话中以空格作为分词符。输入一句话,求一句话中最长单词的长度。例如:
I love China!
则最长单词是China!,最长单词长度是6 解题思路:
一。因为不需要对数组本身进行修改,所以直接操作字符串常量
二。四个变量,
最高值 最高值单词首地址
每个单词的长度 单词首地址
三。输出最高值的结果。 错误分析:
如果以空格为判断标志则最后一个单词无法判断
解决在循环结束后再判断一次; 如果要用scanf()输入需要知道语句长度
scanf("%s",p);这样写并不是在代码区p的值使stdin的地址; #endif #include<stdio.h> void my_printf(char p[]){
while((*p!='\0'&&(*p!=' '))){
printf("%c",*p++);
}
} int main(){
char *p="I love China!";
int max=;
int len=; char *plen=p; //scanf("%s",p);||(*p!=' ') printf("%s\n",p); char *pmax=p;
while(*p!='\0'){
if(*p!=' '){
++len; }else{ if(len>max){
max=len;
pmax=plen; }
plen=p+;
len=;
} p++;
}
if(len>max){
max=len;
pmax=plen;
}
printf("最大长度:%d,单词:",max);
my_printf(pmax); //printf("最大长度:%s\n",pmax); //printf("最大长度:%p\n",plen);
//printf("最大长度:%p\n",p); return ;
}

49、读以下程序,猜想程序的运行结果,然后上机验证
#include<stdio.h>
int main()
{
int i;
int lh,rh,le,re,m;
char *lefthand[] = {"╮","o","<","~\\"};
char *righthand[]= {"╭","o",">","/~"};
char *lefteye[] = {"╯","^","-","=",">","@","⊙"};
char *righteye[]= {"╰","^","-","=","<","@","⊙"};
char *mouth[] = {"Д","▽","_","ε","^"};
printf("请选择左手:\n");
for(i=0;i<=3;i++)
{
printf("%d.[%s] ",i+1,lefthand[i]);
}
printf("\n");
scanf("%d",&lh);
lh--;
printf("请选择右手:\n");
printf("推荐:%d.[%s]\n其他:",lh+1,righthand[lh]);
for(i=0;i<=3;i++)
{
if(i==lh)
continue;
printf("%d.[%s] ",i+1,righthand[i]);
}
printf("\n");
scanf("%d",&rh);
rh--;
printf("请选择左眼:\n");
for(i=0;i<=6;i++)
{
printf("%d.[%s] ",i+1,lefteye[i]);
}
printf("\n");
scanf("%d",&le);
le--;
printf("请选择右眼:\n");
printf("推荐:%d.[%s]\n其他:",le+1,righteye[le]);
for(i=0;i<=6;i++)
{
if(i==le)
continue;
printf("%d.[%s] ",i+1,righteye[i]);
}
printf("\n");
scanf("%d",&re);
re--;
printf("请选择嘴:\n");
for(i=0;i<=4;i++)
{
printf("%d.[%s] ",i+1,mouth[i]);
}
printf("\n");
scanf("%d",&m);
m--;
printf("%s(%s%s%s)%s\n",lefthand[lh],lefteye[le],mouth[m],righteye[re],righthand[rh]);
return 0;
}
//49、读以下程序,猜想程序的运行结果,然后上机验证
#include<stdio.h>
int main()
{
int i;
int lh,rh,le,re,m;
char *lefthand[] = {"╮","o","<","~\\"};
char *righthand[]= {"╭","o",">","/~"};
char *lefteye[] = {"╯","^","-","=",">","@","⊙"};
char *righteye[]= {"╰","^","-","=","<","@","⊙"};
char *mouth[] = {"Д","▽","_","ε","^"};
printf("请选择左手:\n");
for(i=;i<=;i++)
{
printf("%d.[%s] ",i+,lefthand[i]);
}
printf("\n");
scanf("%d",&lh);
lh--;
printf("请选择右手:\n");
printf("推荐:%d.[%s]\n其他:",lh+,righthand[lh]);
for(i=;i<=;i++)
{
if(i==lh)
continue;
printf("%d.[%s] ",i+,righthand[i]);
}
printf("\n");
scanf("%d",&rh);
rh--;
printf("请选择左眼:\n");
for(i=;i<=;i++)
{
printf("%d.[%s] ",i+,lefteye[i]);
}
printf("\n");
scanf("%d",&le);
le--;
printf("请选择右眼:\n");
printf("推荐:%d.[%s]\n其他:",le+,righteye[le]);
for(i=;i<=;i++)
{
if(i==le)
continue;
printf("%d.[%s] ",i+,righteye[i]);
}
printf("\n");
scanf("%d",&re);
re--;
printf("请选择嘴:\n");
for(i=;i<=;i++)
{
printf("%d.[%s] ",i+,mouth[i]);
}
printf("\n");
scanf("%d",&m);
m--;
printf("%s(%s%s%s)%s\n",lefthand[lh],lefteye[le],mouth[m],righteye[re],righthand[rh]);
return ;
}

50、围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:“可以,但必须先找到我,我就藏身于这十个洞中的某个洞。你从1号洞找,下次隔1个洞(即3号洞)找,第三次隔2个洞(即6号洞)找,再隔3个…以后在这个圆圈中如此类推,次数不限。”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。
问:兔子可能藏身于哪(几)个洞中?
#if 0
、围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:“可以,但必须先找到我,我就藏身于这十个洞中的某个洞。
你从1号洞找,下次隔1个洞(即3号洞)找,第三次隔2个洞(即6号洞)找,再隔3个…以后在这个圆圈中如此类推,次数不限。
”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。
问:兔子可能藏身于哪(几)个洞中?
思路分析:
一。创建一个十一个元素数组,元素角标对应山洞。
二。
第几次寻找 对应的洞号 相应洞号的差值
1 1 1
2 3 2
3 6 3
三。根据洞号差来确定每次的洞号,山洞对应的元素自增;
四。输出每个元素的值为零即使没有找过的。
#endif
#include<stdio.h>
int main(){
int i=;
int sum=;
int fp[]={};
int j;
for(i=;i<=;i++){
sum+=i;
j=sum%;
if(j==)j=;
fp[j]++;
}
int k=;
for(k=;k<;k++){
printf("%d号洞被找%d次\n",k,fp[k]);
}
return ;
}

C基础的练习集及测试答案(40-50)的更多相关文章
- C基础的练习集及测试答案(提高题)
提高题:1.编写程序,随机生成一个1~10内的数,让对方猜3次.如果3次内能猜中则输出“恭喜你”:若3次内猜不中则输出正确答案.C语言中提供生成随机数的函数rand()用法:①所需头文件:#inclu ...
- C基础的练习集及测试答案(1-15)
练习题:注:标有(课堂)字样的为课上练习,其他为课下练习基础题(50题)1.(课堂)编写程序,输出“XXX欢迎来到动物园!”(XXX是自己的名字). //1.(课堂)编写程序,输出“XXX欢迎来到动物 ...
- C基础的练习集及测试答案(31-39)
31.读懂以下程序,说明程序的功能#include<stdio.h>int main(){ int m,n,r,m1,m2; printf("请输入2个正整数:"); ...
- C基础的练习集及测试答案(16-30)
16.(课堂)输入一个年份(正整数),判断这年是否是闰年.闰年判断标准:年份能被4整除:如若遇到100的倍数,则需判断年份能否被400整除.(逢4一闰,逢百不闰,逢400又闰) #if 0 .(课堂) ...
- ML基础 : 训练集,验证集,测试集关系及划分 Relation and Devision among training set, validation set and testing set
首先三个概念存在于 有监督学习的范畴 Training set: A set of examples used for learning, which is to fit the parameters ...
- Python sklearn拆分训练集、测试集及预测导出评分 决策树
机器学习入门 (注:无基础可快速入门,想提高准确率还得多下功夫,文中各名词不做过多解释) Python语言.pandas包.sklearn包 建议在Jupyter环境操作 操作步骤 1.panda ...
- zookeeper部署及集群测试
zookeeper部署及集群测试 环境 三台测试机 操作系统: centos7 ; hostname: c1 ; ip: 192.168.1.80 操作系统: centos7 ; hostname: ...
- hdu 1829 基础并查集,查同性恋
A Bug's Life Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
- Dubbo入门实例 本地伪集群测试Demo
1. 概述 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案 Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提 ...
随机推荐
- ubuntu下php7安装及配置
直接用apt-get 失败 在官网下安装包http://tw2.php.net/get/php-7.0.18.tar.bz2/from/a/mirror 进行make时 出现错误: libtool: ...
- VSS配置
http://www.cnblogs.com/FreeDong/articles/2193151.html
- Lxc的cgroup技术
你将学到什么 什么是cgroup 如何使用cgroup Cgroup简介 CGroup是Control Groups的缩写,是Linux内核提供的一种可以限制.记录.隔离进程组所使用的硬件资源的机制. ...
- P1168 中位数(对顶堆)
题意:维护一个序列,两种操作 1.插入一个数 2.输出中位数(若长度为偶数,输出中间两个较小的那个) 对顶堆 维护一个小根堆,一个大根堆,大根堆存1--mid,小根堆存mid+1---n 这样堆顶必有 ...
- 移动web 的viewport设置注意事项的详细解释 六一快乐=-_-_
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- iOS端实现节日换肤
本文是我在网上看到一篇不错的文章,因为之前没接触过,所以特意转过来,和大家一起分享下..以下正文: 一.问题的提出 不知道大家有没有发现, 元旦期间, 很多APP界面里的图标都换成了具有节日气氛的样式 ...
- ECharts 上手
一.获取 ECharts 你可以通过以下几种方式获取 ECharts. 从官网下载界面选择你需要的版本下载,根据开发者功能和体积上的需求,我们提供了不同打包的下载,如果你在体积上没有要求,可以直接下载 ...
- webpack安装及使用
npm run dev 第一次使用的时候用u盘将某些软件带过去. 所以要找到U盘 2.9.x的版本[推荐] 安装:npm install -g vue-cli 检测版本 vue -V/--versio ...
- rsyslog服务器同步其他服务器上面应用日志(如mysql审计日志 、nginx日志)
**环境说明**系统:ubuntu 14.04 (CentOS可以参考http://www.cnblogs.com/hanyifeng/p/5463338.html) rsyslog版本 :8.16. ...
- 配置文件中取值: spring配置文件中util:properties和context:property-placeholder
转载大神 https://blog.csdn.net/n447194252/article/details/77498916 util:properties和context:property-plac ...