本题要求输出字符数组中下标为偶数的字符。 #include<stdio.h> int main(void) { 2 分 str = "abcdefghijk"; while (*str != '\0') { putchar(*str); 2 分 if ('\0' == *(str-1)) { break; } } return 0; }
时间: 2023-11-27 21:50:17 浏览: 286
这段代码存在问题,无法实现输出字符数组中下标为偶数的字符的功能。首先,没有声明字符数组 str 的类型和大小,其次,在 while 循环中,用 *str 代表当前字符,但是却没有对 str 进行自增操作,导致会一直输出第一个字符 a,最后陷入死循环。
正确的代码应该如下所示:
```c
#include <stdio.h>
int main(void) {
char str[] = "abcdefghijk";
int i = 0;
while (str[i] != '\0') {
if (i % 2 == 0) {
putchar(str[i]);
}
i++;
}
return 0;
}
```
这个程序声明了字符数组 str,使用循环遍历,按照下标的奇偶性判断并输出字符。
相关问题
本题要求输出字符数组中下标为偶数的字符。 #include<stdio.h> int main(void) { str = "abcdefghijk"; while (*str != '\0') { putchar(*str); if ('\0' == *(str-1)) { break; } } return 0; }
这个代码有一些问题,首先没有定义字符数组str,而是直接赋值一个字符串常量,这是不允许的,应该使用字符数组来存储字符串。其次,代码中使用了指针来遍历字符串,但是判断指针是否指向字符串结尾的条件有问题,应该是判断当前指针指向的字符是否为'\0',而不是判断前一个字符是否为'\0'。最后,题目要求输出下标为偶数的字符,但是代码中并没有实现这个功能,应该在遍历字符串时加上一个计数器,只输出下标为偶数的字符。
下面是修改后的代码:
```c
#include <stdio.h>
int main(void) {
char str[] = "abcdefghijk";
int i = 0;
while (str[i] != '\0') {
if (i % 2 == 0) {
putchar(str[i]);
}
i++;
}
return 0;
}
```
输出结果为: acegik
功能:把str1 数组中下标为偶数的元素中字符复制到str2 数组中。 -----------------------------------------------------*/ #include<stdio.h> #include<string.h> void main( ) { char str1[30],str2[20]; int i=0,j=0; printf("Please input str1: "); gets(str1); /**********FOUND**********/ while(str1[i]=0) { str2[j]=str1[i]; j++; /**********FOUND**********/ i=i+1; } str2[j]='\0'; printf("output str2:%s\n",str2); }
代码存在一些错误,应该是:
```
#include <stdio.h>
#include <string.h>
int main() {
char str1[30], str2[20];
int i = 0, j = 0;
printf("Please input str1: ");
gets(str1);
while(str1[i] != '\0') {
if(i % 2 == 0) {
str2[j] = str1[i];
j++;
}
i++;
}
str2[j] = '\0';
printf("output str2: %s\n", str2);
return 0;
}
```
修改点:
1. `main()` 函数缺失;
2. 初始化数组时应该为 `=` 而不是 `= 0`;
3. 判断字符串是否结束时应该是 `str1[i] != '\0'`;
4. 只复制下标为偶数的字符;
5. 缺少返回值。
阅读全文