为什么字符串和字符都从键盘输入会导致无法正常进行,如果给定其中某一个会正常进行
是不是程序某个地方逻辑需要改进。正常删除,应该是没有什么问题的。下面是一个简单的实现,供参考。
代码如下:
#include <stdio.h>
#include <string.h>
int main(void){
char str[100]; // 存放输入的字符串的字符数组
char temp[100]; //备用字符数组
char ch; // 存放要删除的字符的字符变量
printf("请输入一个字符串:");
gets(str); // 把输入的字符串存入字符数组str中
// while(getchar()!='\n'){
// continue;
// }
printf("请输入要删除的字符:");
scanf("%c",&ch); // 从输入获取一个字符存放到字符变量ch中
int i=0,j=0;
strcpy(temp,str); // 把输入的字符串复制到字符数组temp中
while(str[i]!='\0'){ // 遍历整个输入的字符串,如果遇到指定字符则跳过,其他字符复制到备份数组temp中
if(ch==str[i]){ // 遇到指定字符,跳过
i++;
continue;
}else{ // 其他字符正常复制
temp[j]=str[i];
i++;
j++;
}
}
temp[j]='\0'; // 循环结束,在输入的最后一个字符后添加一个空字符'\0',以便形成一个字符串
strcpy(str,temp); // 把删除指定字符的字符串复制到 字符数组str中
// 打印结果
printf("删除指定字符后的字符串为:%s\n",str);
return 0;
}
#include <stdio.h>
double calc_pow(double x, int n);
int main()
{
double x;
int n;
scanf("%lf %d", &x, &n);
printf("%.0f\n", calc_pow(x, n));
return 0;
}
int i=1;
double calc_pow(double x, int n)
{
printf("%f %d\n", x, n);
//if(n==1) return x; //如果用这个判断的话,会少一个,如果n是0就不可以了
if (n == 0)
return 1;
if (n % 2 == 0)
{
//printf("%f %d\n", x, n);
return calc_pow(x * x, n / 2);
}
else
{
//printf("%f %d\n", x, n);
return calc_pow(x * x, n / 2) * x; //记住函数最终是返回当前函数的值,返回完之后会继续执行下面的语句,直到执行本次函数之后才会返回上层函数
}
}