-
printf("letter:%d,digit:%d,space:%d,others:%d",letter,digit,space,others);
这句话后面应该有一个 return 语句。
else if (strcmp(str[i],''==0)也有故障。你把它和书比较,你写错了吗?
-
strcmp() 函数可以采用以下形式使用:
int strcmp(const char* str1, const char* str2);
把else if (strcmp(str[i],'')==0)
更改为 else if (str[i]==' ') 来执行此操作。
程序如下:包括""
#include
int letter,digit,space,others;
int main()
int count(char str)
char text[80];
gets(text);
letter=0,digit=0,space=0,others=0;
count(text);
printf("letter:%d,digit:%d,space:%d,others:%d",letter,digit,space,others);
int count(char str)
int i;
for(i=0;str[i]!='\0';i++)
if((str[i]>='a'&&str[i]<='z')||str[i]>='a'&&str[i]<='z'))
letter++;
else if (str[i]>='0'&&str[i]<='9')
digit++;
else if (str[i]==' ')
space++;
else others++;
-
首先,让我们用这种 C 语言回答错误的原因:
第一个 gets 是未定义的:
出现此错误通常是因为未包含相应的头文件,或者库没有此功能。 这里不应该有这样的功能。 gets(char *dest) 是一个旧的库函数,使用这个函数存在安全风险。
它只有一个参数,如果输入的字符数超过dext内存空间中的字符数,程序可能会失败,或者黑客可能会利用此漏洞进行异常操作。 你可以改用 fgets(char *dest, int size, file *fp),这可以通过使用第二个参数设置最大输入来解决上述问题。
后三个 strcat 参数 2 类型不匹配:
strcat 的第二个参数在语言 char * 中,调用时 jiji[i] 是 char,可以写成 &jiji[i],改语法后没有问题,逻辑要自己评估。
第四个返回局部变量 re:
rE 是 LAI 函数内部的一个数组,在堆栈中,当函数执行时,它会释放资源。 堆栈中的空间可能会在其他地方使用,并且内容可能会被更改。 建议不要返回局部变量。
这就是这个语法错误的答案。
添加附加
总体来说,这个****比较长,for循环比较多,后面会优化一下。 先实现功能,再优化。 这是您可以参考的**。
-
您的编译器版本是新的,在 C11 中删除了 gets 函数,并且不再有此函数。
jiji[i] 的类型是 char,strcat 的第二个参数应该是 const char*,当然不是。
-
我已经为你完成了对你的C语言程序的修改,所以看看吧(有很多变化,所以你自己和原来的程序比较一下)。
#include
#include
#define n 100
#define s 101
#define z 26
char lai(int i),k,j,ch;
char s[s][n]=,r[s][n]=,b[2]=;
scanf("%d",&n);
for(i=0;iscanf("%s",s[i]);
for(i=0;ifor(k=0;s[i][k]!=0';k++)else if(ji[j][i]==1){
b[0]=lai(i);
strcat(r[j],b);
for(i=0;iprintf("%s",r[i]);
return 0;
-
求三角形每个角的度数的公式缺少分母的括号,其余的都是正确的。
完整的 C 程序<>如下(注意公式中分母中的括号)。
-
nan 是的"not a number",即计算结果不是数字。
Ind 是 Indedefinite 的缩写,即无法确定它是什么。
诸如负数的平方、负数的对数、除以、乘以无穷大、除以无穷大等错误都会得到它。
-
你是一个数学问题,而不是一个编程问题
余弦公式为
cosa=(b*b+c*c+a*a)/(2*b*c)
-
十进制溢出无法表示,所以让我们先看一下 cosa,b,c 的输出。
-
【错误】ld returned 1 退出状态是放在 main 函数之外的函数声明,声明是 FAC 函数,但是使用时写成 F,所以结果不正确。
可能原因:1 黑匣子在运行吗?
2 main有问题吗?
解决方法:1、如果背景中已经有黑框再运行,则结束黑框;
2.如果没有黑眼圈,可能是main函数有问题,可以检查函数的定义是否写入main函数中。
#include
float count(int a, int b, int c, float x);
int main(void)
int a = 0, b=0, c = 0;
float x = 0, y =0;
printf("请按顺序输入三元方程的系数 a、b 和 c x; 系数和 x 用空格键分隔:");
printf("%f", count(a, b, c, x));
*以下函数定义写入 main 函数,并报错信息:[error] ld returned 1 exit status*
float count(int a, int b, int c, float x)
float y = 0;
y = a*x*x*x+b*x*x+c;
return y;
return 0;
-
1.您定义的数组的大小仅为 10 个数字。
如果找不到 x,则将 x 添加到数组中,这将导致数组越界。
2。在加法的过程中,你直接给指针p赋值x,这是不对的,p只接收地址,不接收值。
它只是将数组 w 的第一个地址传递给 p,而不是将整个数组传递给 p。
4。不要在循环中使用 printf 语句,因为它很容易导致循环一次打印语句。
这不是想要的结果,你可以在循环中,在if语句中标记它。
然后将 print 语句写在循环之外。
#include
#definesize
定义了较大的数组,以便稍后添加的数字不容易越线。
voidmain(),p,x,flag=0,count=0,n=10;
printf("请输入您要查找的号码:")
scanf("%d",&x);
for(p=w;p 使用指针作为循环条件,n 是初始化数组的数量。
if(flag==0)
这里是判断是否找到,1是找到的,0是没有找到的。
elseprintf("%d 出现在数组中的 %d 位置。 ",x,count);
PE 格式错误。
RE运行错误一般是运行过程中的内存溢出,数值超过上下限,时间到期,算法需要优化。 >>>More
这是一个只读变量,根本不是常量,输出只是因为 consult 声明的变量是由编译器宏定义的。 你可以用 gcc 来查看编译生成的编译**,结果很明显。