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)的更多相关文章

  1. C基础的练习集及测试答案(提高题)

    提高题:1.编写程序,随机生成一个1~10内的数,让对方猜3次.如果3次内能猜中则输出“恭喜你”:若3次内猜不中则输出正确答案.C语言中提供生成随机数的函数rand()用法:①所需头文件:#inclu ...

  2. C基础的练习集及测试答案(1-15)

    练习题:注:标有(课堂)字样的为课上练习,其他为课下练习基础题(50题)1.(课堂)编写程序,输出“XXX欢迎来到动物园!”(XXX是自己的名字). //1.(课堂)编写程序,输出“XXX欢迎来到动物 ...

  3. C基础的练习集及测试答案(31-39)

    31.读懂以下程序,说明程序的功能#include<stdio.h>int main(){ int m,n,r,m1,m2; printf("请输入2个正整数:"); ...

  4. C基础的练习集及测试答案(16-30)

    16.(课堂)输入一个年份(正整数),判断这年是否是闰年.闰年判断标准:年份能被4整除:如若遇到100的倍数,则需判断年份能否被400整除.(逢4一闰,逢百不闰,逢400又闰) #if 0 .(课堂) ...

  5. 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 ...

  6. Python sklearn拆分训练集、测试集及预测导出评分 决策树

    机器学习入门 (注:无基础可快速入门,想提高准确率还得多下功夫,文中各名词不做过多解释) Python语言.pandas包.sklearn包   建议在Jupyter环境操作 操作步骤 1.panda ...

  7. zookeeper部署及集群测试

    zookeeper部署及集群测试 环境 三台测试机 操作系统: centos7 ; hostname: c1 ; ip: 192.168.1.80 操作系统: centos7 ; hostname: ...

  8. hdu 1829 基础并查集,查同性恋

    A Bug's Life Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  9. Dubbo入门实例 本地伪集群测试Demo

    1.   概述 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案 Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提 ...

随机推荐

  1. 对各种lca算法的理解

    1.RMQ+ST 首先注意这个算法的要素:结点编号,dfs序,结点深度. 首先dfs,求出dfs序,同时求出每个结点的深度.然后st算法,维护深度最小的结点编号(dfs序也可以,因为他们俩可以互相转换 ...

  2. Gradle用户使用指南

    转载请事先沟通,未经允许,谢绝转载. 1. 新工具介绍(Introduction) 能够复用代码和资源能够构建几种不同版本参数的应用能够配置.扩展.自定义构建过程1.1 为什么选择Gradle(Why ...

  3. web综合案例04

    web综合案例02 web综合案例02 web综合案例04 待补充 ... ...

  4. 1、kubernetes系统基础190622

    1.容器编排工具 docker编排工具三剑客:docker compose, docker swarm, docker machine IDC的操作系统:mesos 提供容器编排框架:marathon ...

  5. ie-"此更新不适应于此电脑"

    cmd-dos命令 expand –F:* C:\update\Windows6.1-KB2533623-x64.msu C:\update\ dism.exe /online /Add-Packag ...

  6. 策略模式(Strategy

    Strategy 无论什么程序,其目的都是解决问题.而为了解决问题,我们又需要编写特定的算法.使用Strategy模式可以整体地替换算法的实现部分.能够整体地替换算法,能让我们轻松地以不同的算法去解决 ...

  7. DSL与GPL

    一.DSL 与 GPL DSL(Domain-Specified Language 领域特定语言),而与 DSL 相对的就是 GPL,最常见的 DSL 包括 Regex 以及 HTML & C ...

  8. Sharepoint JSCOM 列表操作

    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', retrieveListItemsInclude); //确保js文件加载,再执行方法 function ...

  9. python入门之os模块

    import os os.getcwd() 同Linux的pwd os.chdir("/opt") 同Linux的cd os.curdir 返回当前目录 os.pardir 获取上 ...

  10. JadClipse

    JadClipse 介绍:JadClipse是一个Eclipse插件,无缝地集成了Jad(快速Java反编译器)与Eclipse.通常,当打开一个类文件,类文件查看器将显示一个简短的API类的轮廓.如 ...