#include <stdio.h> void fun (char s[]) { /***********ERROR***********/ int i,upper=0,lower=0; while (s[i]) {if (s[i]>='A'&& s[i]<='Z') /***********ERROR***********/ upper+1; if (s[i]>='a'&& s[i]<='z') /***********ERROR***********/ lower+1; i++;} printf("\n 大写字母 个数= %d 小写字母个数 = %d\n", upper, lower); } main() { char s[100]; printf("\n请输入一个字符串: "); gets(s); puts(s); fun(s); }改错
时间: 2023-07-05 09:27:47 浏览: 43
代码中的错误有:
1.在 `fun` 函数中,变量 `i` 没有初始化,应该赋初值为0。
2.在 `fun` 函数中,计数变量 `upper` 和 `lower` 的自增操作写成了 `+1`,应该改为 `++` 或者 `+= 1`。
3.在 `fun` 函数中,判断大写字母和小写字母的条件语句中,应该使用 `<=` 而不是 `<`,否则会漏掉字母 'Z' 和 'z'。
修改后的代码如下:
```c
#include <stdio.h>
void fun(char s[]) {
int i = 0, upper = 0, lower = 0;
while (s[i]) {
if (s[i] >= 'A' && s[i] <= 'Z') {
upper++;
}
if (s[i] >= 'a' && s[i] <= 'z') {
lower++;
}
i++;
}
printf("\n 大写字母个数 = %d 小写字母个数 = %d\n", upper, lower);
}
int main() {
char s[100];
printf("\n请输入一个字符串: ");
gets(s);
puts(s);
fun(s);
return 0;
}
```
相关问题
#include<stdio.h> #include<string.h> void fun(char a[]); main() { char a[80]; gets(a); fun(a); puts(a); } void fun(char a[]) { /**********ERROR**********/ int i=0,j; /**********ERROR**********/ while(a[i]!='*')i++; /**********ERROR**********/ while(a[i]=='\0') a[j++]=a[i++]; a[j]='\0'; }改错
下面是改正后的代码:
```c
#include<stdio.h>
#include<string.h>
void fun(char a[]);
int main() {
char a[80];
gets(a);
fun(a);
puts(a);
return 0;
}
void fun(char a[]) {
int i=0, j=0; // 初始化变量j
while(a[i]!='*')i++;
i++; // 跳过“*”
while(a[i]!='\0') {
a[j++]=a[i++];
}
a[j]='\0'; // 添加字符串结束符
}
```
修改的细节如下:
1. 在 `main` 函数中添加 `return 0;` 语句,确保程序正常结束。
2. 在 `fun` 函数中初始化变量 `j`。
3. 在第二个 `while` 循环中,添加条件 `a[i]!='\0'`,确保不会读取到字符串结束符。
4. 在循环结束后,添加字符串结束符 `\0`。
#include<conio.h>#include<stdio.h>#include<string.h> void fun(char s[],char t[]) I int i,k; k=strlen(s); /**********ERROR**********/ for(i=5;i<k;i++) t[i]=s[i]; for(i=5;i<k;i++) /**********ERROR****美*美*美*/ t[k+i]=s[k-i]; /**********ERROR**********/ t[k]='\0'; main(){ char s[150],t[156]; printf("\nPlease enter string s:");scanf("%s",s);/**********ERROR**********/ fun(s,t); printf("The result is:%s\n",t);
这段代码存在三处错误。第一处错误是函数fun没有正确的定义,应该为void fun(char s[], char t[])。第二处错误是在第7行的for循环中,应该使用i作为下标,而不是5。第三处错误是在第8行的for循环中,应该使用k-i-1作为下标,而不是k-i。改正后的代码如下:
```
#include <stdio.h>
#include <string.h>
void fun(char s[], char t[]) {
int i, k;
k = strlen(s);
for (i = 0; i < k; i++) {
if (i < 5) {
t[i] = s[i];
} else {
t[i] = s[k - i - 1];
}
}
t[k] = '\0';
}
int main() {
char s[150], t[156];
printf("\nPlease enter string s:");
scanf("%s", s);
fun(s, t);
printf("The result is:%s\n", t);
return 0;
}
```