c语言 帮忙调试程序 看看错在哪里

函数length返回字符串中字母A到字母Z所包含字符的长度。主程序输入一行字
符串,调用length函数输出该字符串中大写字母A到Z的子串长度。
#include <stdio.h>
int length( char *p )
{
char *q, *r;
for ( q=p; *q!='\0' || *q!='A'; q++ )
;
for ( r=q; *r!='\0' && *r!='Z'; r++ )
;
return r-q;
}
void main()
{
char str[81];
int n;
gets( str[0] );
n = length( str );
printf( "Length=%d\n", n );
}
顺便改正下

已改正:
#include <stdio.h>
int length( char *p )
{
char *q, *r;
for ( q=p; *q!='\0' && *q!='A'; q++ ); //这里如果用||会导致无限循环
for ( r=q; *r!='\0' && *r!='Z'; r++ );
return r-q-1;
}
void main()
{
char str[81];
int n;
gets(str); //如楼上所说
n = length(str);
printf( "Length=%d\n", n );
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-28
gets( str ); //这里的参数是字符串首地址

C语言 帮忙看看程序哪里错了???
if(n=0) printf("%d",n); \/\/语法错误。应该是 if(n == 0)} }

C语言简单程序,帮看看哪错了
错误点有3个:输入一个实数那行有个引号用了中文符,应该改为英文符;最后输出-a那段语句后面没有写“;”;定义变量a时为双精度浮点数,而输入时存为了单精度浮点数,存在溢出故障,会导致运行错误,见下图:应该改为如下 include<stdio.h> main(){ double a;printf("请输入一个实数:");scanf(...

关于括号匹配的C语言代码 调试不出来 谁给看看哪儿的错
1、在stack的操作函数中使用了数值结合的方法,导致在调用函数的时候实际上不能修改stack的内容,所以应该采用地址结合的方法;2、在判断循环结束的时候str[i][j]!='\/0'中的斜杠方向反了,应为'\\0'修改后程序可以实现基本的功能,程序如下:include<stdio.h> define MaxSize 40 typedef struct { c...

关于C语言编写程序的一个疑问 高手帮忙看看我的程序哪错了
看了你的代码觉得,你在C语言的语法规则上还有待提高啊,在此举出你所给出的代码的若干错误。首先,你的代码不完整。第9、11、13行要定义三个100行的二维字符数组,如果仅仅是类似char adj[100][12]={"开心的"}的定义;这样adj[1]到adj[99]这99个词都会是空值(ASCII码为0),若用printf()函...

大佬帮忙看看这个程序错在哪了,刚学C语言?
修改如下:int main(){int price=0; \/\/该处由‘,’改为‘;’printf("请输入金额(元) :") ;\/\/该处缺少分号scanf("%d",&price);int change=100-price;printf("找您%d元。\\n",change);return 0;} 运行结果如下:

C语言单片机程序 初学大家帮忙看看错在哪里了 #include <reg51.h...
程序百分百没问题,可能是编译的有问题,你 用的是keil编译的吗? 建议你多重新编译一下, 也有可能是你烧写程序的时候 数据传输的过程中出错了,校验出错 一般是传输过程中某个或者某些bit或者byte出错 建议你重新编译 重新下载烧写试试, 单片机这东西就是经常出些小问题,有时候我们买的开发板或者有...

C语言scanf 输入帮我看看错在哪里
主要就是输入的回车要处理一下,代码如下:include<stdio.h> int main(){ int a,b;float x,y;char c1,c2;scanf("a=%d b=%d",&a,&b);getchar(); \/\/ 读取回车 scanf("x=%f y=%f",&x,&y); \/\/ float用%f getchar(); \/\/ 读取回车 scanf("c1=%c c2=%c",&c1,&c2);printf...

C语言数组编程 帮我看看哪里错了
这是在你的基础上改写程序:include <iostream>\/\/cout的头文件是"iostream"include <stdio.h>\/\/scanf的头文件是"stdio.h"using namespace std;void main(){ int i,max,min,pos_max,pos_min,a[10];cout<<"请输入十个元素:"<<endl;for(i=0;i<10;i++)\/\/输入数组a的元素 scanf("%d",...

c语言 帮我看看错误在哪该怎么写, *MAX是一个返回指针值的函数_百度...
函数声明的方式不对 int *max(int (*p)[4]);应该写成 int* max(int *p);下面定义的时候也是这样 这里没问题了可能还是达不到你的预期效果,没太明白你的程序要干什么

请看看我的程序哪里出错了!C语言
(p-n+k)=min;\/\/这行及下一行进行交换,你这个地方不对。(p-n)=*(p-n+k);p=a;\/\/添了这行,重置指针p指向数组开头。你的程序的关键错误就在这地方 printer(p,10);return;} void printer(int *w,int n)\/\/输出新的 { int i;for(i=0;i<n;i++,w++)printf("%4d",*w);} ...

相似回答