第一个问题,几乎所有C语言新手都要犯的错误,就是判断相等要用判断等号==而不是赋值等号=,把 if (n=1) 改成 if (n==1) 就解决了。
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、成都网站设计、成都外贸网站建设、玉龙网络推广、微信小程序开发、玉龙网络营销、玉龙企业策划、玉龙品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供玉龙建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
第二个问题,严谨应该是没什么问题,只要结果不超过 int 类型的上限,都是对的,不过程序可以更简洁一点, if (n==1) ... else ... 这个条件完全可以不要,只要那个 for 循环就够了。
int n,i,j;
printf("请输入阶数n:\n");
scanf("%d",n);
int a[n][n];这里可能有问题,具体看编译器,有些编译器数据类型的定义必须放在函数的一开始,中间不能插入其他语句,还有数组的维数只能是常量,要么固定,要么用宏定义确定
有 else 是
只有 n == 0 return jcjg;返回jcjg 否则不确定返回何值(实际返回 eax 寄存器的最后一次值)
没有 else 任何时候 return jcjg;总是会返回jcjg。
不过没见过这样用递归的,
像这种简单计算,正常都是用迭代处理,不用递归的;
只有像树一类的复杂的数据结构,和排序或更复杂的算法,才用递归实现.
int jc(int n)
{
if(n != 0)
{
printf("%d-%d\n",jcjg,n);
jcjg = jcjg * n;
//jc(n - 1);改成
return jc(n - 1);看行不行;
}
else
{
return jcjg;
}
}
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
typedef struct work
{
char num[10];
char name[10];
char sex[10];
char age[10];
}STU;
int main()
{
STU stu={"1001","12","45","19"};
STU stu1,stu2;
int x;
char ch1[10];
//原代码char *ch=ch1;
//原代码FILE *f=fopen("D:\letter.txt","w+");
FILE *f=fopen("D:\\letter.txt","w+"); //要加双斜杠"\\"
if(f==NULL)
{
printf("\n打开文件出错.\n");
exit(1);
}
fwrite(stu,sizeof(struct work),1,f);
rewind(f); //将文件指针重新指向开头
fread(stu1,sizeof(struct work),1,f);
x=atoi(stu1.num); //字符串转换为数字
//原代码ch=(char)(++x);
x++; //数字由1001变为1002
itoa(x,ch1, 10); //数字转换为字符串
strcpy(stu1.num,ch1);
rewind(f); //将文件指针重新指向开头
fwrite(stu1,sizeof(struct work),1,f);
printf("%s\t%s\t%s\t%s\t",stu1.num,stu1.name,stu1.sex,stu1.age);
fclose(f); //最后要关闭文件
return 0;
}
j=t*100
while(j--)
这里的while语句和for语句各起什么作用?
{
是指循环
j*i
次吗?
for(i=8505;i;i--);
}
}
//============================================
空跑,也就是延时的作用,
for(i=8505;i;i--);一次全循环应该是1ms,void
delay(float
t)应该是延时t*100ms
try换掉, 是关键字,还有break 也不能在乱用。
楼主应该多看看编程例题,这样写很乱,可读性比较差。如果在开始就养成良好代码写作习惯,成为一个优秀的程序员不是问题,还有记得写注释,很重要。