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. Unix Tutorial Eight

    1.UNIX 变量 变量是在运行时将信息从shell传递到程序的一种方式.程序在特定的变量中查找“在环境中”,如果发现它们将使用存储的值.有些是由系统设置的,另一些是由你设置的,还有一些是由shell ...

  2. eros --- Windows Android真机调试

    1.下载并安装JDK 2.下载并安装Android Studio 上面两项不管用weex还是eros都是前置条件,度娘有大量教程. 开始eros 手脚架安装: $ npm i -g eros-cli ...

  3. 51nod1119(除法取模/费马小定理求组合数)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1119 题意:中文题诶- 思路:这题数据比较大直接暴力肯定是不 ...

  4. hdu 4388 Stone Game II

    Stone Game II HDU - 4388 题目大意: 给出n堆物品,每堆物品都有若干件,现在A和B进行游戏,每人每轮操作一次,按照如下规则: 1. 任意选择一个堆,假设该堆有x个物品,从中选择 ...

  5. jmeter-逻辑控制器之 交替控制器(实现2个请求每次只执行其中一个)

    交替控制器: 案例:两个请求每次只能执行其中一个,可使用交替控制器. 1.线程组->添加->逻辑控制器->交替控制器 2.在控制下添加两个http请求.运行的时候第一次循环执行第一个 ...

  6. 分层图最短路【bzoj2834】: 回家的路

    分层图最短路[bzoj2834]: 回家的路 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2834 这道题难在建边. 自己写的时候想到了 ...

  7. PAT天梯赛L3-005 垃圾箱分布

    题目链接:点击打开链接 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁都不愿意守着垃圾箱住.所以垃圾箱的位置必须选在到所有居民点的最短距离最长的地方,同时还要保证每个居民点都在距离它一个不太远的 ...

  8. Ubuntu16.04安装Nvidia显卡驱动+Cuda8.0+Cudnn6.0

    一.安装Nvidia显卡驱动(gtx1050ti) 参考链接:Ubuntu16.04.2 LTS 64bit系统装机记录中的显卡驱动安装部分. 二.安装Cuda8.0 1.确定自己的系统信息,以Ubu ...

  9. 再谈布局,栅栏式自适应布局的学习和实现(calc自适应布局)

    布局真的很重要.一个不好的布局后期会有很多很多的bug,就像是建房子的地基一样. 首先,再一次地圣杯布局的学习,来源于该教程: http://www.jianshu.com/p/f9bcddb0e8b ...

  10. 从select机制谈到epoll机制

    目录 为什么要用select机制 等待队列 唤醒操作 什么是select机制 关于fd_set select使用 poll函数 为什么select效率较低 什么是epoll epoll机制实现思路 e ...