【程序改错】 功能:以下程序把两个数按由大到小的顺序输出来. #include stdio.h /****=*****ERROR*===* void swap(int *p1*p2) int p; p=*p1;*p1=*p2;*p2=p;
时间: 2023-07-23 15:31:13 浏览: 104
【程序改错】
功能:以下程序把两个数按由大到小的顺序输出来.
1. 缺少了头文件的尖括号 "<>"。
2. swap函数的参数中,指针类型的声明缺少了逗号。
3. swap函数中,变量p没有声明类型。
4. swap函数中,变量p的赋值语句缺少了分号。
5. swap函数中,指针变量*p1和*p2所指向的值应该互换。
改正后的程序如下:
```c
#include <stdio.h>
void swap(int *p1, int *p2);
int main(void) {
int a, b;
scanf("%d%d", &a, &b);
if (a < b) {
swap(&a, &b);
}
printf("%d %d\n", a, b);
return 0;
}
void swap(int *p1, int *p2) {
int p = *p1;
*p1 = *p2;
*p2 = p;
}
```
相关问题
【程序改错】 功能:以下程序把两个数按由大到小的顺序输出来. # include " stdio . h " /*********** ERROR ***********/ void swap ( int *p1,*p2 int p ; p =*p1;*p1=*p2;*p2= p ; main () int a , b ,* p ,* q ; printf (" input a , b :'"); /*********** ERROR ***********/ Scanf (''% d % d '', a , b ); p =& a ; q =& b ; if ( a < b ) swap ( p , q ); printf ('' a =% d , b =% d \ n '", a , b ); /*********** ERROR ***********/ printf ('' max =% d , min =% d \ n '', p , q );
以下是修改后的程序,请仔细核对:
```c
#include <stdio.h>
void swap(int *p1, int *p2);
int main() {
int a, b, *p, *q;
printf("input a, b:");
scanf("%d %d", &a, &b);
p = &a;
q = &b;
if (a < b) {
swap(p, q);
}
printf("a = %d, b = %d\n", a, b);
printf("max = %d, min = %d\n", *p, *q);
return 0;
}
void swap(int *p1, int *p2) {
int p;
p = *p1;
*p1 = *p2;
*p2 = p;
}
```
我修改了三处错误:
1. 在函数 `swap` 的第一行中,在第二个参数 `p2` 后添加了逗号。
2. 在 `scanf` 函数调用时,将格式字符串改为 `"%d %d"`,并将变量 `a` 和 `b` 的地址传递给它。
3. 在 `printf` 函数调用时,将变量 `p` 和 `q` 改为 `*p` 和 `*q`,以输出它们所指向的值。
注意,这个程序仍存在一个潜在问题,就是如果输入的两个数相等,它将不会输出任何信息。如果你需要处理这种情况,可以在程序中添加一个判断。
程序改错: #include <string.h> #include <stdio.h> void fun(char p[ ]) {char max; int i=0,t=0; max=p[i]; /***********ERROR***********/ while(p[i]!='\n') { /***********ERROR***********/ if(max>p[i]) {max=p[i]; t=i;} i++;} printf("ASCII最大的字符:%c,位于:%d\n",max,t); } main() {char str[80]; printf("给数组元素赋值:\n"); /***********ERROR***********/ gets(str[i]); printf("\n输出数组: \n"); puts(str); /***********ERROR***********/ fun(str) }
程序改错:
```c
#include <string.h>
#include <stdio.h>
void fun(char p[]) {
char max;
int i=0,t=0;
max=p[i];
while(p[i]!='\0') {
if(max<p[i]) {
max=p[i];
t=i;
}
i++;
}
printf("ASCII最大的字符:%c,位于:%d\n",max,t);
}
int main() {
char str[80];
printf("给数组元素赋值:\n");
gets(str);
printf("\n输出数组: \n");
puts(str);
fun(str); // 添加分号
return 0;
}
```
代码说明:
该程序定义了一个函数 `fun`,它的作用是查找字符串中 ASCII 码最大的字符,并输出该字符及其位置。该函数的参数是一个字符数组,表示要查找的字符串。函数中使用两个变量 `max` 和 `t`,分别表示当前找到的最大字符和其位置。在遍历字符串时,如果当前字符比 `max` 大,则更新 `max` 和 `t` 的值。最后输出找到的最大字符及其位置。
在 `main` 函数中,首先定义一个长度为 80 的字符数组 `str`,并使用 `gets` 函数从标准输入中读入一个字符串。接着输出该字符串,并调用 `fun` 函数对其进行处理。注意在调用 `fun` 函数前需要加上分号。最后返回值 0,表示程序正常结束。该程序的错误包括:
1. `while` 循环中的终止条件应为 `\0` 而非 `\n`;
2. `gets` 函数应该直接读入字符串,而不是读入字符;
3. 在调用 `fun` 函数前需要加上分号。
阅读全文