十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
只要没启动看门狗,正常编程就行了,然后就在被调用函数里等待按键,但是不能用死循环,那就出不来了,可以用while语句,判断按键是否按下,按下带返回值返回,没有按键继续检测按键。
创新互联技术团队10余年来致力于为客户提供成都网站制作、成都做网站、外贸营销网站建设、品牌网站制作、成都营销网站建设、搜索引擎SEO优化等服务。经过多年发展,公司拥有经验丰富的技术团队,先后服务、推广了成百上千网站,包括各类中小企业、企事单位、高校等机构单位。
在main函数中,
fun(a, b, 4);
第一个参数a是字符串常量,其内容是不能修改的
而在函数fun函数中,
while(a[n] != '\0')
{
for(i = n; a[i] != '\0'; i++)
a[i+1] = a[i]; //该语句修改了字符串a的内容
}
修改了第一个字符串指针指向的内容,因此运行时会出错
另外fun函数这么写可以实现你想要的功能
void fun(const char *a, char *b, int n){
int i, j;
for(i = 0, j = 0; a[i]; i++){
if(i == n) continue;
b[j++] = a[i];
}
b[j] = 0;
}
这段C语言代码有三个错误:
一、switch单词拼写错误少了c;
二、if(k = 'V')判断是双等于号==;
三、main函数最好没有返回值,这不是大错。
因为前面输入数字时,最后总要按下回车键,这就输入了一个回车符,而后面的getchar()会读取这个字符,而不等待从键盘输入(因为缓冲区不为空),修改如下:
#include stdio.h
#include stdlib.h
int main()
{
int data[7000]={1,1,0},num,digit=1,i,j,k;
FILE *fp;
char fname[50];
printf("\t阶乘计算器\n\t请输入:");
scanf("%d",num);
for(i=1;i=num;i++)
{
if(i%20==0)
{
printf("\n\t当前计算到%10d 的阶乘!!!........\n",i);
}
for(j=1;j=digit;j++)
{
data[j]*=i;
}
for(j=1;j=digit;j++)
{
if(data[j]9)
{
for(k=1;k=digit;k++)
{
if(data[digit]9)
{
digit++;
}
data[k+1]+=data[k]/10;
data[k]%=10;
}
}
}
}
printf("\n\n\n\t%d!=\n",num);
for(j=digit;j0;j--)
{
printf("%d",data[j]);
}
printf("\n\n\t%d!共有%d位......\n\n\n",num,digit);
printf("是否保存文件?(y\\n)");
fflush(stdin);/************注意这里,刷新缓冲区,避免前面输入数字时遗留的回车符影响这里的读取******/
if(tolower(getchar())=='y')
{
printf("请输入文件名:");
gets(fname);
if((fp=fopen(fname,"w"))==NULL)
{
printf("打开文件%s失败",fname);
exit(0);
}
fprintf(fp,"\t%d!=\n",num);
for(j=digit;j0;j--)
{
fprintf(fp,"%d",data[j]);
}
fprintf(fp,"\n%d!有%d位......\n\n\n",num,digit);
fclose(fp);
}
return 0;
}