题目
以下程序删除字符串中指定位置pos处的字符,[填空1]应填 ( )。 #include<stdio.h> int main(void) { int i,pos; char a[80]; gets(a); scanf("%d",&pos); for(i=pos+1;a[i]!='0';i++) [填空1]; [填空2]; puts(a); return 0; } A.a[i]=a[i-1] B.a[i]=a[i+1] C.a[i+1]=a[i] D.a[i-1]=a[i]
以下程序删除字符串中指定位置pos处的字符,[填空1]应填 ( )。
#include<stdio.h>
int main(void)
{
int i,pos;
char a[80];
gets(a);
scanf("%d",&pos);
for(i=pos+1;a[i]!='\0';i++)
[填空1];
[填空2];
puts(a);
return 0;
}
A.a[i]=a[i-1]
B.a[i]=a[i+1]
C.a[i+1]=a[i]
D.a[i-1]=a[i]
题目解答
答案
正确的代码是:
for(i=pos;a[i]!='\0';i++)
a[i]=a[i+1];
a[i-1]='\0';
因此,[填空1] 应该填:
a[i]=a[i+1];
这一行代码表示将字符串中下一个字符(即位置为pos+1的字符)向前移动一个位置覆盖当前位置上的字符。
[填空2] 应该填:
a[i-1]='\0';
这一行代码表示将最后一个字符设置为字符串结束符 \0,以便在使用puts输出字符串时正常结束。需要注意的是,在使用数组操作字符串时,必须确保数组足够大,以防止内存溢出。
综上,答案为:B.
解析
步骤 1:理解程序逻辑
程序的目的是删除字符串中指定位置pos处的字符。程序首先读取一个字符串和一个整数pos,然后使用for循环将pos之后的字符向前移动一个位置,覆盖掉pos处的字符。
步骤 2:分析for循环
for循环从pos+1开始,直到字符串结束符'\0'。在循环中,需要将当前位置的字符向前移动一个位置,覆盖掉pos处的字符。因此,需要将a[i]的值赋给a[i-1]。
步骤 3:处理字符串结束符
在for循环结束后,需要将最后一个字符设置为字符串结束符'\0',以便在使用puts输出字符串时正常结束。因此,需要将a[i-1]设置为'\0'。
程序的目的是删除字符串中指定位置pos处的字符。程序首先读取一个字符串和一个整数pos,然后使用for循环将pos之后的字符向前移动一个位置,覆盖掉pos处的字符。
步骤 2:分析for循环
for循环从pos+1开始,直到字符串结束符'\0'。在循环中,需要将当前位置的字符向前移动一个位置,覆盖掉pos处的字符。因此,需要将a[i]的值赋给a[i-1]。
步骤 3:处理字符串结束符
在for循环结束后,需要将最后一个字符设置为字符串结束符'\0',以便在使用puts输出字符串时正常结束。因此,需要将a[i-1]设置为'\0'。