1 求2/1,3/2,5/3,8/5,13/8,21/13,…前20项之和。

请改正程序中的错误,使它能得出正确的结果。

#include <stdio.h>main()
{int i, s1 = 2, s2 = 1;float x, sum = 0;for (i = 1; i <= 20; i++){sum += s1 / s2;x = s1;s1 += s2;s2 = x;}printf("sum = %9.6f\n", sum);
}

答案

  • 很简单 s1,s2都是int类型,int类型的除法是整除得到还是int类型
  • 我们只需要使用强转即可
#include <stdio.h>main()
{int i, s1 = 2, s2 = 1;float x, sum = 0;for (i = 1; i <= 20; i++){sum += (float)s1 / s2;   //错误1x = s1;s1 += s2;s2 = x;}printf("sum = %9.6f\n", sum);
}

2 奥运参赛国出场次序:

输入奥运会参赛国国名,并按照字典序对其进行排序。
要求:参赛国数量不超过150个,每个国家的名字不超过9个字符。
提示:‘\0’占一个字符。
要求:请找出下面程序的错误并改正。

#include <string.h>
#include <stdio.h>#define N 150
#define MAX_LEN 10
void SortString(char str[][MAX_LEN], int n);int main()
{int i, n;char name[N][MAX_LEN]; printf("How many countries?");scanf("%d",&n);     getchar();printf("Input their names\n");for(i=0;i<n;i++)gets(name[i]);      void SortString(name[N][MAX_LEN], n);   printf("Sorted results:\n");for(i=0;i<n;i++){puts(name[i]);      }return 0;}void SortString(char str[][MAX_LEN], int n)
{int i,j;char temp[MAX_LEN];for(i=0;i<n;i++){for(j=i+1;j<n;j++){if(str[j]<str[i])        {strcpy(temp,str[i]);strcpy(str[i],str[j]);strcpy(str[j],temp);}}}
}

答案

  • 一开始以为错是 数组char str[][MAX_LEN] ,但其实并不是

https://blog.csdn.net/jeffscott/article/details/79017571
可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,但不可以省略第二位或更高维如:
void Func(int array[ ][ ]) 错误
void Func(int array[3][10]) 正确
void Func(int array[][10]) 正确

  • 后面是字符串对比上面出了问题,不能简单的相减比较
#include <string.h>
#include <stdio.h>#define N 150
#define MAX_LEN 10
void SortString(char str[][MAX_LEN], int n);int main()
{int i, n;char name[N][MAX_LEN]; printf("How many countries?");scanf("%d",&n);     getchar();printf("Input their names\n");for(i=0;i<n;i++)gets(name[i] );      SortString(name, n);   printf("Sorted results:\n");for(i=0;i<n;i++){puts(name[i]);      }return 0;}void SortString(char str[][MAX_LEN], int n)
{int i,j;char temp[MAX_LEN];for(i=0;i<n;i++){for(j=i+1;j<n;j++){if(strcmp(str[i],str[j]) > 0)        //错误 字符串比较{strcpy(temp,str[i]);strcpy(str[i],str[j]);strcpy(str[j],temp);}}}
}

3 下面程序的功能是将数组元素逆序输出 ,找出其中的错误并改正之。

#include "stdio.h"
#define M 5
int main()
{   int a[M]={1,2,3,4,5};int i;for(i=M;i>=1;i--)printf("%d ",(a+i));return 0;
}

答案

  • 三处地方
  • 一、循环部分发生了越界
  • 二、数组a[M]里面,a 表示数组a地址,a+i 代表a[i]的地址,我们要输出a[i],就得在地址前面加 *访问地址得到数据
  • 三、差点漏了#include "stdio.h"
#include <stdio.h>                 //错误3
#define M 5
int main()
{int a[M] = {1, 2, 3, 4, 5};int i;for (i = M - 1; i >= 0; i--)  //错误1printf("%d ", *(a + i));   //错误2return 0;
}

4 下面程序的功能是删除字符串中第一次出现的a字符。

其中有两处错误,请改正并使程序正确执行。

#include <stdio.h>
#include <string.h>
void fun(char *s,int n,int *t)
{int i,k=0;s[n]='a';s[n+1]='\0';while(s[k]!='a') k++;if(k==n){*t=0;}else{for(i=k;i<n;i++)s[i]=s[i+1];s[i]='\0';}
}
main()
{char s[20];int len,t;printf("Input a string:");gets(s);len=strlen(s);fun(s,len,t);if(t==0) printf("Not exist!\n");else    printf("Result is:%s\n",s);
}

答案

  • 一、看函数void fun(char *s,int n,int *t) 注意参数t是指针,我们需要把int类型的数据的地址传给指针
  • 二、循环越界问题,长度为n的字符串经过函数有可能变成长度为n-1的字符串,所以要注意越界的问题
#include <stdio.h>
#include <string.h>
void fun(char *s,int n,int *t)
{int i,k=0;s[n]='a';s[n+1]='\0';while(s[k]!='a') k++;if(k==n){*t=0;}else{for(i=k;i<n-1;i++)//错误2s[i]=s[i+1];   s[i]='\0';}
}
main()
{char s[20];int len,t;printf("Input a string:");gets(s);len=strlen(s);fun(s,len,&t);       //错误1if(t==0) printf("Not exist!\n");else    printf("Result is:%s\n",s);
}

5 判断输入的三个数是否相等。

算法如下,请改正程序中的错误,使它能得出正确的结果。

#include <stdio.h>main()
{int a, b, c;scanf("%d,%d,%d", a, b, c);if (a = = b = = c)printf("The three number is equal!!!");elseprintf("The three number isn't equal!!!");
}

答案

  • 一、scanf注意后面参数是赋给地址
  • 二、不存在三元符 == ==,需要分开 利用上逻辑符号&&
#include <stdio.h>main()
{int a, b, c;scanf("%d,%d,%d", &a, &b, &c);   //错误1if (a == b &&  b == c)  //错误2printf("The three number is equal!!!");elseprintf("The three number isn't equal!!!");
}

C语言改错题系列整理-非常容易0x1相关推荐

  1. c语言分支编程改错题,二级C语言改错 二级C语言编程题 汇总整理篇.doc

    二级C语言改错 二级C语言编程题 汇总整理篇 360教育在线 宇创IT培训07年9月内部资料 内部资料,请勿公开传播 二.改错题 考试做题要求: 1.在/**********found******** ...

  2. C语言字母升序排列,C语言改错题,题目:实现n个字符串的升序排列

    C语言改错题,题目:实现n个字符串的升序排列 #include #include #define ROW 5 #define COL 30 void fun(char s[][COL],int n) ...

  3. c二级语言程序编程题,二级C语言编程题 汇总整理篇.doc

    二级C语言编程题 汇总整理篇 360教育在线 宇创IT培训07年9月内部资料 内部资料,请勿公开传播 三.编程题 考试做题要求: 1.按题目要求编写部分代码,不要改动已经有的代码. 2.在运行时如果遇 ...

  4. c语言求解一元二次方程的两相等实根,c语言改错题 有关求一元二次方程ax2+bx+c=0的两个实根...

    c语言改错题 有关求一元二次方程ax2+bx+c=0的两个实根0 麻烦帮忙看看下面三个程序的区别~~谢谢啦 下列是用于求一元二次方程ax2+bx+c=0的两个实根的三个c程序,分别采用不同的方法或使用 ...

  5. c语言改错题字符串a放在b后面,C语言程序改错题汇总.doc

    程序改错题汇总 1.用"起泡法"对连续输入的十个字符排序后按从小到大的次序输出.分别统计字符串中大写字母和小写字母的个数.求1到10的阶乘的和判断m是否为素数,若是返回1,否则返回 ...

  6. 国二c语言改错题答案,c语言国二考试编程题答案

    <c语言国二考试编程题答案>由会员分享,可在线阅读,更多相关<c语言国二考试编程题答案(65页珍藏版)>请在人人文库网上搜索. 1.1m个人的成绩存放在score数组中,请编写 ...

  7. c语言刷题系列(一)

    本系列随着我的C语言系列而更新,我会讲解我在学习中碰到的问题,都是基础,都是干货.非常适用于新手,还请各位看官支持一下吧! 1.判断一个数是否为奇数 int main() {int n = 0;sca ...

  8. C语言刷题系列——14.(结构)计算两个复数之积15.按等级统计学生成绩16.根据成绩高低将学生记录排序

    几个与结构体相关的题 14.计算两个复数之积

  9. c语言程序的改错题答案,C语言改错题以及参考答案..doc

    改错参考答案: (3)将字符串yy在屏幕上输出 #include void main() { /*********Found************/ char yy[100] = "ok? ...

最新文章

  1. idea提交git差件_多人合作使用git,推送代码、和并分支
  2. windows ftp服务器_ftp客户端软件,推荐6个流行的FTP客户端软件
  3. Ubuntu18.04安装常用软件
  4. javascript --- 属性描述符
  5. pb 打印html页面,用PB开发WEB应用
  6. mysql 查询语句属性值_MySQL学习——SQL查询语句(一)
  7. CSS基础——盒子模型【学习笔记】
  8. 从0开始写一个基于Flutter的开源中国客户端(7)——App网络请求和数据存储
  9. 小度独立融资,百度上演“大象跳舞”
  10. poodle attack
  11. 语音识别论文:Comparing the Benefit of Synthetic Training Data for Various Automatic Speech Recognition Arc
  12. 漂亮,这张 动态可视化 交互大屏图,也是用Python实现的!
  13. RHEL 7安装的步骤
  14. Direct3D中的纹理映射
  15. Hbase葱岭探秘--JavaApi实践
  16. IDEA跳至行首行末快捷键
  17. 适合大学生浏览的网站
  18. 广州工商学院计算机答辩,电子信息工程系2019届毕业生论文答辩新闻稿
  19. 敏捷开发大家谈(三)--敏捷开发技术在电子商务软件中的应用(2)
  20. 离散余弦变换(C++实现)

热门文章

  1. Git分支 查看branch 创建 切换checkout 合并merge(先切回主分支) 删除branch -d 推送push
  2. Java培训出来什么水平?
  3. element-ui中tree组件双击事件的实现
  4. debian基本设置以及配置XManager远程登录桌面、命令行设置、Xftp上传下载文件
  5. oracle vba 数组_vba 数据库目录
  6. 如何判断是否适合学编程?
  7. linux系统命令打不出字,常用的命令 linux
  8. docker创建容器相关命令【详细版】
  9. GT性能测试Android版使用说明
  10. 2022图灵奖出炉!以太网之父鲍勃·梅特卡夫获奖,76岁进入新领域再出发