C语言问题 急救!!!

作者&投稿:蔽诞 (若有异议请与网页底部的电邮联系)
C语言的问题 急救 谢谢!!~

程序都没有,怎么运行?

//---------------------------------------------------------------------------

#include
#include
typedef struct LNode{
int number;
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList end;
void CreateList_L(LinkList &L,int n);
int main()
{
int n,m,i,j;
LinkList p,q,r,L; //LinkList p,q; LNode *p,*q;
printf("please input the number of the student:");
scanf("%d",&n);
printf("please input the original number of m:");
scanf("%d",&m);
CreateList_L(L,n);
printf("the result is:
");
/*p=L;
q=end; //存储尾指针
for(i=0;i<n-1;i++)
{
for(j=2;j<=m;j++)
{
p=p->next;
if(j==m-1)
q=p;
}
printf("%d",p->number);
// printf(" %d
",p->data);
q->next=p->next;
r=p;
m=p->data;
p=p->next;
free(r);
}
printf("%d",p->number);*/

p = L;
q = end;
while(p->next != p) //只有一个结点的时候情况出现 , 链表自已测试自已的情况
{
for(int i = m; i > 1; i -- ) //做 M一1 次移动,上P指向要出列的结点
{
p = p->next;
q = q->next;
}
q->next = p->next; //结点 出列
p->next = NULL; // 独立要删除的结点,并获取相应的数据
printf("%d ", p->number);
m = p->data; //新的M值

free(p);
p = q->next; //P 重新开始 ,就像什么也没有发生过一样
}
printf("%d " , p->number); //处理最后一个结点,用你以前的代码
free(p);
system("pause");
return 0;
}

void CreateList_L(LinkList &L,int n) //建立循环链表
{
int i;
LinkList p,q; //LNode *p,*q;
L=(LinkList)malloc(sizeof(LNode));
p=L;
p->number=1;
printf("please input the code of the 1th student:");
scanf("%d",&p->data);
for(i=2;i<=n;i++)
{
q=(LinkList)malloc(sizeof(LNode));
q->number=i;
printf("please input the code of the %dth student:",i);
scanf("%d",&q->data);
p->next=q;
p=q;
}
end=p;
p->next=L;
}

楼主在C语言中字符是可以当成整形来参与运算的,其原因是因为字符在计算机的内部是按ASCII 码来存储的,‘A’是65,‘B’是66,‘0’是48,因此该赋值语句可看成B=66-65+48,这样B就是49,若B直接按%d输出,则显示49,若按%c输出,则49对应的字符是‘1’所以输出的是1。当然字符在屏幕上输出的时候是不带‘’的,所以可能让你误以为这个1不是字符。

"1"也是一个字符啊,不要把数字和字符搞混了哈。

printf("%d\n", a); 你在代码中加入这么一行,就会发现输入字符1对应的数值(49)

这里的1就是字符
a=a-'A'+'0'; a 的值是 B(ASCII代码就是66) a-'A'结果就是1 再加上'0'
所得的就是字符1

你可以去查查这里
http://baike.baidu.com/view/15482.htm

字符'1'对应的数是49

主要原因是 ‘0’ 并不是0, 而是48


民丰县13462073782: C语言帮编程~~~急救 -
呼环金天: ,&n);if(a[1]>a[2]){int tag=1;9;//n",a[i]);判断第一次n大于a[i]输出nfor(i=0;i&lt#include<stdio.h>%d\n&quot,a[i]);n",n);printf("%d\/加\n}}else{int tag=1;for(i=0;i<i++){if(n<,n);/去\n,加&scanf("/改为continue}else printf("a[i]&&...

民丰县13462073782: C语言 问题 急救
呼环金天: #include <stdio.h> #include <string.h> #include <stdlib.h> int main() {char str[255],str2[255];FILE *fp=fopen("data.dat","r");if (!fp){fp=fopen("data.dat","w");fprintf(fp,"123456");fclose(fp);fp=fopen("data.dat","r");}fscanf(fp...

民丰县13462073782: 急救:关于C语言的问题
呼环金天: 这是个根据主函数中子函数调用形式判断子函数参数定义的问题: 1.先看主函数: main() { … int a〔50〕,n; … fun(n, &amp;a〔9〕); … } (1),int a〔50〕,n;定义了整型数n和数组a[50]. (2),fun(n,&amp;a[9])第一个参数传递的是整型数n,那么...

民丰县13462073782: c语言题目急救
呼环金天: 这是我写的. #include <stdio.h> int main( void ) { int number; scanf( "%d", &number ); printf( "%c\n", ( number > 90 ) ? 'A' : number >= 60 && number < 89 ? 'B' : 'C' ); return 0; } 若number 大于 90.者执行'A'.否则执行number >= 60 && number ...

民丰县13462073782: C语言问题,急救 -
呼环金天: 3题 #include int sum(int j) { int isum; if(j==0) isum=0; else isum=j+sum(j-1); return isum; } void main() { int i,m; printf("请输入一个数:"); scanf("%d",&i); for(int j=0;j

民丰县13462073782: c语言问题,急急急
呼环金天: 首先,输入格式错误: %f因为定义的为int变量,故要用%d.否则,可以输入,但数值会是其他数值,因为保存格式不同另外,在输入时,除格式字符外的字符必须全部同时输入,如: 1,2,3,4 (','必须输入)其次,计算表达式错误:2(b*c-a*d)/(d*d*c-c*c*d);我猜想,你原本的意思应该是:2*(b*c-a*d)/(d*d*c-c*c*d) 或其他建议,输出格式尽量与其数据类型相同,以避免不必要的错误还有,此处计算结果建议用浮点数表示

民丰县13462073782: c语言急救懂的来
呼环金天:#include "stdio.h" /*头文件,不用说了吧*/ void main() /*主函数*/ { unsigned a,b,c,d; /*定义四个无符号的变量,实际上是无符号的整型变量,int省略了*/ scanf("%d",&a); /*输入一个十进制数,假如输入16.*/ b=a>>4; /*把a的值转化为...

民丰县13462073782: C语言的简单问题,紧急
呼环金天: 没问题描述不清楚,是警告还是错误?是语法错误还是逻辑错误? 可能的警告:fun函数里的i赋值了但没使用,把int i=0;删了就行. 可能的语法错误:严格的编译器会提示main函数必须返回一个值,最后加一句return 0;就行.

民丰县13462073782: 急救 C语言问题 写出详细步骤 还有static的作用 -
呼环金天: 你所与的那程序这么理解 首先定义两静态变量 m=0,i=2; 第一次调用fun()函数,把j=4,m=1传过去 则fun()内计算结果为 i+=m+1; //结果为i=3 m=i+x+y; //结果为m=8 所以第一次输出为K+8;第二次调用fun() i,m为静态变量,所以没有随第一次fun函数的结束而释放内存,所以i结果变成了3,m=8;i+=m+1; //结果为i=12; m=i+x+y; //m=12+4+1=17 所以第二次输出为17

民丰县13462073782: C语言问题~~急 -
呼环金天: #include#include struct Link { int data; struct Link *next; } ; void InsertList(struct Link *H,int n) {struct Link *p,*q,*s; s=(struct Link *) malloc(sizeof(struct Link)); s->data=n; q=H;p=H->next; while(p!=NULL) //当p不为NULL时,才能读取p的数据 { if(n>p-...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网