请高手做下这两道C语言题目,答案好追加100分!

请高手帮忙做下这两道程序调试题,答案正确且清晰的话最多追加100分!
调试要求:下列各程序有3处错误,请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。
第一题:
功能说明:以下程序计算并输出等差数列的累加和,数列的首项为a0,公差为d,项数为n。
如输入:-3 5 4
则输出:sumx=18
例示说明:-3为首项,5为公差,4为项数,前4项之和为18
原程序:
#include <stdio.h>
int sumx( int a0, d, n ) {
int i, k, s=0;
k = a0;
for ( i=0; i<n; i++ )
s += k;
k += d;
return s;
}
main() {
int a0, d, n;
scanf( "%d%d%d", &a0, &d, &n );
printf( "sumx=%d\n", sumx(a0,d,n) );
getch();
}
第二题
功能说明:以下函数length返回字符串中字母A到字母Z所包含字符的长度。主程序输入一行字符串,调用length函数输出该字符串中大写字母A到Z的子串长度。
如输入:Z2009-AShanghaiZ
则输出:Length=8
例示说明:从A到Z的子串为Shanghai,其长度为8
原程序:
#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;
}
main() {
char str[81];
int n;
gets( str[0] );
n = length( str );
printf( "Length=%c\n", n );
getch();
}
最新回答
白裙红衣

2024-11-24 03:33:12

第一题

int sumx( int a0, int d,int n ) {/*参数要指明类型*/
int i, k, s=0;
k = a0;
for ( i=0; i<n; i++ )
{s += k; /*加上左大括号*/
s += i*d;}/*改正算术错误,并加上右大括号*/
return s;
}
main() {
int a0, d, n;
scanf( "%d %d %d", &a0, &d, &n );/*scanf的%d格式,%d之间必须有空格*/
printf( "sumx=%d\n", sumx(a0,d,n) );
getch();
}

第二题:

#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; /*要再减1*/
}
main() {
char str[81];
int n;
gets( str); /*gets的参数应该是字符指针而不是字符*/
n = length( str );
printf( "Length=%d\n", n );/*n是整数应该用%d输出*/
getch();
}
冬瑾凉桉

2024-11-24 04:20:53

第一个改后是
#include <stdio.h>
int sumx( int a0,int d,int n ) {/*d ,n 前应该加数据类型*/
int i, k, s=0;
k = a0;
for ( i=0; i<n; i++ )/*循环的是下面的s += k;k += d; ,应该加大括弧括起来*/

{ s += k;
k += d; }
return s;
}
main() {
int a0, d, n;
scanf( "%d%d%d", &a0, &d, &n );
printf( "sumx=%d\n", sumx(a0,d,n) );
getch();
}
紫珺婳浅

2024-11-24 06:44:00

#include <stdio.h>
int sumx( int a0,int d, int n ) {
int i, k, s=0;
k = a0;
for ( i=0; i<n; i++ )
{s += k;
k += d;}
return s;
}
main() {
int a0, d, n;
scanf( "%d%d%d", &a0, &d, &n );
printf( "sumx=%d\n", sumx(a0,d,n) );
//getch();
}
危險人物

2024-11-24 04:27:29

1

int sumx( int a0, int d,int n ) int i, k, s=0;
k = a;
for ( i=0; i<n; i++ )

s += i*d; return s;
}
main() {
int a0, d, n;
scanf( "%d %d %d", &a0, &d, &n ; printf( "sumx=%d\n", sumx(a0,d,n) );
getch();
}

2

#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;}
main() {
char str[81];
int n;
gets( str); n = length( str );
printf( "Length=%d\n", n );
getch();
清几何

2024-11-24 04:34:49

第二题中单纯减一不行吧,万一数组中没有满足要求的字符(比方输入:ascd)输出就是-1了,应该需要些逻辑判断