请改正程序中的错误,使它能得出正确的结果。
#includemain() { 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.6fn", sum); }
答案
很简单 s1,s2都是int类型,int类型的除法是整除得到还是int类型我们只需要使用强转即可
#include2 奥运参赛国出场次序:main() { int i, s1 = 2, s2 = 1; float x, sum = 0; for (i = 1; i <= 20; i++) { sum += (float)s1 / s2; //错误1 x = s1; s1 += s2; s2 = x; } printf("sum = %9.6fn", sum); }
输入奥运会参赛国国名,并按照字典序对其进行排序。
要求:参赛国数量不超过150个,每个国家的名字不超过9个字符。
提示:‘ ’占一个字符。
要求:请找出下面程序的错误并改正。
#include#include #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 namesn"); for(i=0;i 答案
一开始以为错是 数组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]) 正确后面是字符串对比上面出了问题,不能简单的相减比较
#include3 下面程序的功能是将数组元素逆序输出 ,找出其中的错误并改正之。#include #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 namesn"); for(i=0;i 0) //错误 字符串比较 { strcpy(temp,str[i]); strcpy(str[i],str[j]); strcpy(str[j],temp); } } } } #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"
#include4 下面程序的功能是删除字符串中第一次出现的a字符。//错误3 #define M 5 int main() { int a[M] = {1, 2, 3, 4, 5}; int i; for (i = M - 1; i >= 0; i--) //错误1 printf("%d ", *(a + i)); //错误2 return 0; } 其中有两处错误,请改正并使程序正确执行。
#include#include void fun(char *s,int n,int *t) { int i,k=0; s[n]='a'; s[n+1]=' '; while(s[k]!='a') k++; if(k==n){*t=0;} else { for(i=k;i


