c语言高手救命啊

作者&投稿:丘袁 (若有异议请与网页底部的电邮联系)
c语言高手救命~

//使用的vc6.0调度“//”后面为注释
#include
using namespace std;

struct STU
{
char name[10];
int num;
float TotalScore;
};
void f(struct STU *p)
{
struct STU s[2]={{"SunDan",20044,550},{"Penghua",20045,537}}, *q=s;//q指向s[0]
++p;//指针下移
++q;//到这里,p, q 分别指向主函数s[1],和f中的s[1]
*p=*q; //将f中的s[1]赋给主函数s[1]
}
void main()
{
struct STU s[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};
f(s);//传递的是数组名,即指针,指针可以改变形参
printf("%s %d %3.0f
", s[1].name, s[1].num, s[1].TotalScore);
}
///////////////////////////////////////第2题
struct STU
{
int num;
float TotalScore;
};

void f(struct STU p)
{
struct STU s[2]={{20044,550},{20045,537}};
p.num = s[1].num;
p.TotalScore = s[1].TotalScore;
}

main()
{
struct STU s[2]={{20041,703},{20042,580}};
f(s[0]);//传送的变量名,无法改变形参,不多说了
printf("%d %3.0f
", s[0].num, s[0].TotalScore);
}
///////////////////////////////////////////////////////////////第3题//////

struct STU
{
char name[10];
int num;
};

void f(char *name, int num)
{
struct STU s[2]={{"SunDan",20044},{"Penghua",20045}};
num = s[0].num;
strcpy(name, s[0].name);
}

void main()
{
struct STU s[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;
p=&s[1];
f(p->name, p->num);//name为指针(数组名),num不是,所以只改变name(输出SunDan)
printf("%s %d
", p->name, p->num);
}

//main函数改成这样结果一样
void main()
{
struct STU s[2]={{"YangSan",20041},{"LiSiGuo",20042}},p;
p=s[1];
f(p.name, p.num);//name为指针(数组名),num不是,所以只改变name(输出SunDan)
printf("%s %d
", p.name, p.num);
}
///////////////////////////////////////////////////////////////////第4题

/*函数名: rewind
功 能: 将文件指针重新指向一个流的开头
用 法: int rewind(FILE *stream);
程序例:

*/
void main()
{
FILE *fp; int i, k, n;
fp=fopen("data.dat", "w+"); //创建一个名为data.dat的文件
for(i=1; i<6; i++) //输入1,2,3,4,5
{
fprintf(fp,"%d ",i);
if(i%3==0) fprintf(fp,"
"); //为3是换行
}
rewind(fp);
fscanf(fp, "%d%d", &k, &n); printf("%d %d
", k, n);//从头开始读文件,读两数当然是1 ,2了
fclose(fp);
}

///////////////////////////////////////////////////////////////////////////第5题
int a=2;//全局变量

int f(int n)
{
static int a=3;
int t=0;
if(n%2){ static int a=4; t += a++; } //这里的a只有块作用域
else { static int a=5; t += a++; }
return t+a++; //使用的是函数和一行的a,++在后时,先用后加
}
void main()
{
int s=a, i;//这里a为全局变量,故s为2
for( i=0; i<3; i++)
s+=f(i);
printf("%d
", s);
}
/*
还是分析一遍吧:
注意f里面的a都是静态的只赋值一次,下次作用时值不变。
先算f(0): 0%2为零 执行 esle,自增运算“++”在后,先加后自增,所以t为5;随后a为6,return 时else里的a无效,
这里的a为函数第一行为3的a,返回5+3,a自增为4;
f(1): 执行if t ==4 a为5(下次不用它,不管它也行)return时,因上次a自增为4为,所以返回 4+4,这时a自增为5
f(2):执行else 此时else中a为6了(执行f(0)时自增的)t = 6;return时加上第一行的a(5) 返回11
2+8+8+11 == 29没错吧!
*/

建议 你买 谭浩强的 第三版

我们学的就是那个 所有老师都说很好

本人用的感觉也很好~ 首先就是信心 没什么了不起
当初我也觉得很难 但现在学完了 也没什么啊~! 我现在已经开始学 C++ 和 JAVA了 ~

你要多看书! 一定得多看! 多做书上的例题! 要体会每个 例子的含义!
如果 有时间 买本C语言的 练习册 多练些题! 其实就是练出来的~

如果可能 有什么问题 可以问我 如果我能帮你 一定 义不容辞!
虽然 学的 不是特别好~ 但也不错了~ 不过有一点 我能帮你 基础的东西! 至于高级的 那要另请师傅了~ 因为我们学校 C就是基础
我们重点学的是 C++ 和JAVA

k-- 和 k=k-1 的执行效果是一样的,都是把 k 减少一个
但是 k-- 和 k=k-1 这两个表达式的值是不一样的

k-- 是先返回值,再减去1
比如现在k已经是0了,那么k--仍然返回0,while退出,这时候--才会生效,k变成-1

而k=k-1是先计算完,再返回

运行完了是一样,但是在这里是不一样的
因为while(k--)
--在后面是用完了,在运算
这样说你明白吗
前面都一样,就是最后
当到k=1的时候
while(k--) 这个时候是while(1)还是运行一次循环的,到循环体中,k就成为0了
但是
while(k=k-1)就不是了,这个时候是 while(0)就不运行循环体了
所有,上面那个可以打印出0来,但是下面是不打印0的

k--并不等价与k=k-1 。。。
但在此题中,它们的等价只是个巧合,因为你并没有在运算的式子中使用,所以你当然一是不到它们之间的却别。。
这里,k=k-1也可以说是k-=1,它的意思表示:将k-1的值赋值给k。。
而k--表示先将k(这个是前面的k)的值赋值给k(这个是后面的k)。。然后让后面的k进行减1的工作,但不赋值给前面的k。。如果是:k=10,;k--;printf("k=%d\n",k); 那输出的k的值就是10
但是,如果是:k=10;x=k+k--;printf("k=%d\n",k); 那这样输出的值就是19

这里你记个口诀:
1.k++或者k--:先赋值后计算,如果没有运算式的话,就只输出k的值。
2.++k或者--k:先计算后赋值,如果没有运算式的话,就只输出k+1后的值。。

希望我的回答令你满意。。。谢谢。。。

k-- 返回值是k,先返回 然后再执行k=k-1
可以用
int i;
while(i=k--){
printf(“i= %d\n”, i);
printf("k=%d\n", k);
}
验证

不等价,k--的运算顺序是先使用k的值,也就是先判断k是否等于0,然后在-1,而k=k-1是先计算表达式的值,然后在拿计算后的结果来判断是否等于0,这里等价于--k

不一样,k--是先判断k是否为真,然后再给k减1,而k=k-1是先减1,在判断结果是否为真。
如果把前面的k-- 改为--k就一样了

C语言 递归调用 求高手帮忙啊 救命啊!!!
答:当n<4时,只有一头牛,一直没有新牛,所以cownum()为1;当n>=4时,第n年牛的数量cownum(n)为前一年的牛的数量cownum(n-1)加上新生下来的牛的数量。因为每头牛每年生育一头小牛,所以新出生的小牛的数量等于之前可以生育的牛的数量。而可以生育的牛的数量为年龄大于等于3周岁的牛的数量,即...

求大神,c语言程序设计,图书信息管理系统。救命啊。。
答:2016-06-13 C语言考试各位大神来看看啊救命啊 四、 编程题(共40分)1... 2011-06-07 C语言高手快来救命啊!高分 3 2013-03-04 c语言,求从桌面(desktop)上读入文件的操作的程序,救... 2007-05-17 做一个RSA的算法,C语言实现的~!编程高手进啊~!救命啊~... 28 2010-01-11 C语言高手救命啊!!?

c语言高手来!分析这3个程序的执行过程~有分啊!~~还有什么实验体会啊...
答:题一:include <stdio.h> int main(){ int n,result=1;printf("Please input a number:"); //输出提示 scanf("%d",&n); //读入整数n for(int i=1;i<=n;i++) //求n!result*=i; //i每次加一然后乘到原来的积上 printf("%d /n",result); //输出结果 return 0;} 题二:i...

C语言考卷。救命的啊!大家谁帮帮忙啊!
答:(C) 数组每一个元素的地址 (D) 数组每个元素中的值 10、以下函数调用语句中,含有的实参个数是 d 。Fun(a+b,(y=10,y),fun(n,k,d));(A) 3 (B) 4 (C) 5 (D) 6 11、某个C程序中有4个函数t、u、v、w,执行时t调用了u和v,u调用了t和w,v调用了w,w调...

大学生C语言
答:1.自己写个函数判断是输入字符串的长度 int mystrlen(const char *str){ assert(str);const char *p = str;while((*p++)!='\0');return p - str - 1;} 2.include<iostream> include<string> using namespace std;void main(){ int i,j;char a[...

C语言编程,求a的n次方,请大家帮忙补充我的程序 救命啊
答:float mypow(float a,int n) //递归求法{ if (n==1) return a; return a*mypow(a,n-1);}

关于C语言的重大问题,救命啊
答:其实我也遇到了这个问题 到百度知道搜了一下答案,发现大家都说是路径的问题,可是路径改了之后发现还是不好使!又有朋友说是没有这个文件,可是我到LIB文件夹里看发现有这个文件,于是就把它拷了出来,放在了与TC.EXE同级的目录下,再次运行,结果上面的问题就没有了。但遗憾的是有先是找不到其他的...

真的,再问一个c语言调用程序的问题,救命啊
答:看您的函数设计及主程序设计很不好.请您在学程序语言的时候一定要注意,学语言要学语法,要学算法,还要学函数包装程序结构等,最后是良好的编程习惯.这4个方面一个都不能缺,职业程序员通常第1条没问题的,但最难的是优秀的程序结构,其次是算法.所以学C也号,C++,JAVA也好,都要注意程序结构设计的问题....

C语言高手速度IN!!!~~救命~~~
答:第三个:AdjMGraph.h include"SeqList.h"typedef struct { SeqList Vertices;int edge[MaxVertices][MaxVertices];int numOfEdges;}AdjMGraph;void Initiate(AdjMGraph *G,int n){ int i,j;for(i=0;i<n;i++)for(j=0;j<n;j++){ if(i==j)G->edge[i][j]=0;else G->edge[i][...

C语言,我从VC6换到VC2010。VC6能正常运行的2010就莫名出错。请大神救...
答:你要先确定你的 vc2010 是OK 的。方法是新建一个空的工程,然后尝试编译一下;将你之前的代码放在新工程里面运行