c语言源代码题出现以下代码,是哪里出错了。

C语言面试题︱C语言面试题目 - 职友集(发现中国好公司)
C语言面试题
C语言面试题库 共 208 条
69.请编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:
F(0)=0,F(1)=1
IT公司面试手册
#define MAX_SIZE
int H[4] = {0, 1, 0, -1};
int V[4] = {-1, 0, 1, 0};
IT公司面试手册
40.请编写函数fun,该函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+l到最后的字符移到字符串的前部。
例如,字符串中原有的内容为A...
IT公司面试手册
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*'移到串的前部分,前面的非’*'字符后移,但不能改变非’*&#039...
IT公司面试手册
华为C语言经典面试题。每道题都附有详细解答和讲解,很有参考价值的C语言面试题。
怎么判断链表中是否有环?
bool CircleInList(Link* pHead)
if(pHead...
总体上必须清楚的:
1)程序结构是三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch)
2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到...
IT公司面试手册
75.请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。
例如,若二维数组中的数据为:,则一维数组中的内容应是:33
IT公司面试手册
读文件file1.txt的内容(例如):
输出到file2.txt:
2)输出和为一个给定整数的所有组合
5=1+4;5=2+3(...
IT公司面试手册
1、———————————————————–
“匈牙利命名法”有什么优缺点?(2分)
2、———————————————————–
下面x, y, *p的值是多少,有什么问题?(...
IT公司面试手册
13.请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数...
IT公司面试手册
本程序的功能是对中国导航的数据中的部分道路情况数据进行整理,分析,查询,排序。
原始数据存储在一个GTBL.dat的二进制文件中,具体的文件格式请参照ReveseTableFormat.xl...
IT公司面试手册
① 引用必须被初始化,指针不必;
② 引用初始化后不能改变,指针可以改变所指的对象;
③ 不存在指向空值的引用,但是存在指向空值的指针。
IT公司面试手册
如果需要大数值(大于32, 767 或小于?32, 767), 使用long 型。否则, 如果空间很重要(如有大数组或很多结构), 使用short 型。除此之外, 就使用int 型。如果严格定义的溢出...
IT公司面试手册
46.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。
注意:部分源程序给出如下。
IT公司面试手册
【1.fopen()】
#include &stdio.h&
FILE *fopen(const char *path,const char *mode)
#include ...
1、完成字符串拷贝可以使用 sprintf、strcpy 及 memcpy 函数,请问这些函数
有什么区别,你喜欢使用哪个,为什么?
2、变量的声明和定义有什么区别?
3、请写出下面代码在 32 ...
IT公司面试手册
29.请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入abc4EFg,则应输出aBc4EFg。
IT公司面试手册
int checkCPU()
IT公司面试手册
31.若有定义:int x=3,y=2;float a=2.5,b=3.5; 则下面表达式的值为_____________。
(x+y)%2+(int)a/(int)b
32.若x和n...
IT公司面试手册
78.请编写函数fun,其功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为ABCDEFGl2345,其中字符B的AS...
IT公司面试手册
把C语言面试题库的相关信息分享到:
C语言相关职位工资
暂无相关职位工资
C语言面试题目推荐
相关职位招聘
暂无数据。
微信公众号
手机适配版c语言问题,不知道下面代码是哪里错了_百度知道
c语言问题,不知道下面代码是哪里错了
),v); scanf(&quot.0/%f&quot#include&lt.14159; float c.h&3*PI*r*r*r
printf(&void main(){
,v.2f;%10;n& printf(&quot:\ v=4;; c=2*PI*r,&r);#define PI 3;n&quot,%10,c.2f&#92
提问者采纳
%f&与scanf(&quot,&r);
提问者评价
其他类似问题
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁您还未登陆,请登录后操作!
接收机和PDA设备。该地区中有5个特殊的区域:A区、B区、C区、D区、O区。该地区的示意地图如下图所示。(略,不影响程序)
其中,A区为雷区,B区中有陷阱,C区中有埋伏,D区为武器库,O区为人质区。
该战士携带的GPS接收机,可以告诉他降落地点的经纬度坐标(用X, Y表示)。若将由GPS接收机显示的坐标值输入到他的PDA中,PDA中会显示出他所在的区域。
如果他的位置在A区,则PDA上会显示&你现在在A区,小心地雷!&;
如果他的位置在B区,则PDA上会显示&你现在在B区,小心有陷阱!&;
如果他的位置在C区,则PDA上会显示&你现在在C区,小心敌人埋伏!&;
如果他的位置在D区,则PDA上会显示&你现在在D区,可以补充武器!&;
如果他的位置在O区,则PDA上会显示&你现在在O区,快去解救人质!&;
如果他在上述5个区之外,则PDA上会显示&你现在在任务区外!&;
如果落在两个区域的边界线上,则PDA上会显示&你现在在两个区域的边界线上!&;
请你用C语言编程实现上面的PDA中的程序功能。
我的程序:
#include &stdafx.h&
#include &stdio.h&
int main(int argc, char* argv[])
float x,y;
printf(&请输入超级战士所在的X坐标:\n\n&);
scanf(&%f&,&x);
printf(&请输入超级战士所在的Y坐标:\n\n&);
scanf(&%f&,&y);
if (x==20,45,60||y==20,50,75){
//在边界上s
else if(x&75||y&60){
//任务区外t
else if(y&60&&y&45){
else if(y&20&&y&0){
else if(x&20&&x&0){
else if(x&50&&x&20){
else if(x&75&&x&50){
switch(zone){
case&1&:printf(&你现在在A区,小心地雷!\n&);
case&2&:printf(&你现在在B区,小心有陷阱!\n&);
case&3&:printf(&你现在在C区,小心敌人埋伏!\n&);
case&4&:printf(&你现在在D区,可以补充武器!\n&);
case&0&:printf(&你现在在O区,快去解救人质!\n&);
case&5&:printf(&你现在在任务区外!\n&);
case&6&:printf(&你现在在两个区域的边界线上!\n&);
return 0;
}
LZ的代码的确有问题,但是仍然会运行结束,只不过在界面上没有任何输出罢了,因为没有满足输出的任何一个条件。
1、首先变量x和y声明类型最好为int整型,因为代码中关系表达式用的是整数,而且输入时一般也都是整型数据。
2、变量zone为char型,但是后面的赋值语句如:zone=6;不正确,应该写为:zone='6';
3、第一个IF条件 if (x==20,45,60||y==20,50,75)存在严重的逻辑错误。括号之中是两个逗号表达式,前面的表达式x==20,45,60 最终结果是60,当然这个结果没有赋给任何变量,但它是一个非0值,为真,满足逻辑条件,逻辑或||后面的表达式,程序不会计算。所以这个条件永远满足,不管你输入什么,zone值都是'6',所以一直会输出这句话:"你现在在两个区域的边界线上!"。
大家还关注收藏,1.8k 浏览
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
C语言指针问题
下面代码为什么第二个数字是5呢?
int a[5] = {1,2,3,4,5};
int *p = (int *)(&a+1);
NSLog(@"%d,%d", *(a+1), *(p-1));
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
&a得出来的是指向数组的指针,所以&a+1其实是以数组的长度为单位来移动的。如果你只是想要得到数组的第二个元素的话,那么就用*(&a[0]+1),因为&a[0]的数据类型是int*。画个图先:
假设有以下数组
int a[5] = {1,2,3,4,5};
int *x = &a+1;
虽然上面的程序可以编译通过,但是,编译器会出警告,因为x和a的类型不匹配,要想把警告去掉,有两种方法
1、通过强制类型转换
int *x = (int *)(&a+1);
print("%d\n",*(x-1));
2、为它寻找合适的类型 &a的类型是int (*)[5]
int (*x)[5] = &a+1;
printf("%d\n",**(x-1));
这里就牵涉到了如何写出适当的数据类型,这在赋值和参数传递中很重要!
所以,首先我得总结一下a,&a和&a[0]这三个数据的数据类型
a是数组名,是指向数组第一个元素的指针,毫无疑问,在这里,数组第一个元素的数据类型是int所以a的数据类型是就是int*。
&a是对一个一维数组取地址,得出来的是指向数组的指针(在这里是pointer to array of int), 也就是int(*)[5]。
&a[0]就很简单,首先a[0]得到的是一个整形数int,然后对它取地址,所以它的数据类型就是int*。
知道了数据类型,那么对指针运算看起来就清晰多了!
先看看通过强制类型转换的那部分代码,它会输出什么数字呢?
通过刚才对数据类型的总结可以知道,&a的数据类型是int (*)[5],所以&a+1其实是已经移动了5*sizeof(int)个字节了
现在指针是指到了数组最后一个元素的后一个元素(图1),也就是说,已经越界了!但是因为x的数据类型其实是int *
所以对于x-1,其实是向左移动了1*sizeof(int)个字节,也就是指向了最后一个元素,所以*(x-1)得出来的
值就是数组的最后一个元素:5
好了,现在再看第二部分,它又会输出什么数字呢?先不说答案,刚才也说了,在这里
x的数据类型是int (*)[5],是一个指向含有5个int元素的一维数组的指针,对它进行加减运算的话就会以
sizeof(int)*5个字节为单位进行移动,所以x-1其实是向左移动了sizeof(int)*5个字节,在我的机器上是移动了
20个字节,也就是回到了数组的第一个元素,所以得出来的答案就是:1
以上是一维数组的,下面我想说说二维数组的情况,有以下一段代码:
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
?? = // int (*b)[3] =
?? = a[0]; // int *c = a[0];
?? = a[0][0] // int d = a[0][0];
?? = &a; // int (*e)[3][3] = &a;
?? &a[0]; // int (*f)[3] = &a[0]
?? &a[0][0]; // int *g = &a[0][0]
还是先看看a,a[0],&a,&a[0],&a[0][0]这几者的数据类型:
注意上面加粗了的文字,数组名是指向数组第一个元素的指针!
a的数据类型是??int *?不是,这句加粗了的文字的核心就是第一个元素这五个字,
a的第一个元素不就是a[0][0]吗?严格来说,不是,a的第一个元素其实是a[0],那么a[0]的数据类型是什么呢?a[0]
是一个包含三个int元素的数组,所以a[0]的类型就和int t[3]中t的类型一样,是int*,既然第一个元素 的数据类型是
int*,那把这个二维数组看成一维数组的话,实际上它就是一个含有三个int*元素的
数组,也就是指针数组,所以a的数据类型就是int (*)[3]
再来看看&a,在一维数组的时候说了,对一个数组名取地址得出来的是指向数组的指针,所以&a的数据类型 就是int (*)[3][3]
&a[0]这个看上去有点蛋疼,但是在上上段文字中也说了,a[0]是一个包含三个int元素的数组,和int t[3]
中的t的数据类型一样,是int*,自然,&a[0]的数据类型就和&t的数据类型一样,也就是int (*)[3]
到这里,二维数组中关于数据类型就写得差不多了,既然知道了数据类型,那么运算起来就可以准确知道指针会移动到哪里!
看看下面这段代码:
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
int (*x)[3] =
int *k = a[0];
int (*y)[3][3] = &a;
int (*q)[3] = &a[0];
int *z = &a[0][0];
printf("%d\n",(*(x+1))[0]);
printf("%d\n",*(k+1));
printf("%d\n",(*(*(y+1)))[0]);
printf("%d\n",(*(q+1))[0]);
printf("%d\n",*(z+1));
int *p = (int *)(y+1);
printf("%d\n",*(p-1));
x的数据类型是int (*)[3],所以,x+1实际上是移动了3*sizeof(int)个字节,如图所示:
k的数据类型是int *,所以,k+1实际上是移动了sizeof(int)个字节。
y的数据类型是int
(*)[3][3],所以y+1实际上是移动了3*3*sizeof(int)个字节,也就是到了数组最后一个
元素的后面的一个元素。如图所示:
q的数据类型是int (*)[3],所以,q+1实际上也是移动了3*sizeof(int)个字节。
z的数据类型是int *,所以z+1实际上是移动了sizeof(int)个字节。
所以对数组指针进行加减运算,最重要的是知道它的步长,而步长又是由数据类型决定的!
同步到新浪微博
不要错过该问题的后续解决方案
如果你没找到答案,记得登录关注哦,大家会尽全力帮你解决的 ^___^
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
内容质量差,或不适合在本网站出现
无意义讨论型问题
其他原因(请补充说明)
举报理由:
推广(招聘、广告、SEO 等)方面的内容
带有人身攻击、辱骂、仇恨等违反条款的内容
与已有问题重复(请编辑该提问指向已有相同问题)
内容质量差,或不适合在本网站出现
答非所问,不符合答题要求
其他原因(请补充说明)
补充说明:当前位置: >
> c语言中结构体可以作为引用传递吗?如果可以为什么以下程序老出错(来自严蔚敏的数据结构)急求如题代码
c语言中结构体可以作为引用传递吗?如果可以为什么以下程序老出错(来自严蔚敏的数据结构)急求如题代码
gushwe & at
c语言中结构体可以作为引用传递吗?如果可以为什么以下程序老出错(来自严蔚敏的数据结构)!急求如题 代码如下希望那个高手帮忙解决其中错误#include&stdio.h&#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef struct Wsqlist& { & int* & &
& }Sint Initlist_Sq(Sqlist& Li);int ListInsert_Sq(Sqlist& L,int i,int e);int ListDelete_Sq(Sqlist& L,int i,int &e);int Initlist_Sq(Sqlist& Li){ & Li.elem=(int *) malloc(sizeof(int)*LIST_INIT_SIZE ); & printf(&OK!\n&); & if(Li.elem==NULL) exit(1); & Li.length = 0; & Li.listsize = LIST_INIT_SIZE; & printf(&OK!\n&); & return 0;}int ListInsert_Sq(Sqlist& L,int i,int e){ & int *p,*q; & if(i&1||i&L.length+1) exit(1); & if(L.length&=L.listsize) & { &
newbase = (int *)realloc(L.elem,sizeof(int)*(L.listsize+LISTINCREMENT)); &
if(!newbase) exit(1); &
L.elem = &
L.listsize+=LISTINCREMENT;&
& if(L.length==0)&
& L.elem[0]= & else & { & q = &(L.elem[i-1]); & for(p=&(L.elem[L.length-1]);p&=q;--p) &
*(p+1) = *p; & &
& *q = & }&
& ++L. & return 0;& }int ListDelete_Sq(Sqlist& L,int i,int &e){ & int *p,*q; & if(i&1||i&L.length+1) exit(1);
& p = &(L.elem[i-1]); & e = *p; & q = L.elem+L.length-1; & for(;p&q;++p) *p = *(p+1); & --L. && }int main(){ & S & int m=0,n=0; & Initlist_Sq(list); & ListInsert_Sq(list,1,12); & m = ListDelete_Sq(list,1,&n); &
& printf(&%d\n&,list.length);&
& getch();&
& return 0;
不可以,因为C中根本没有引用。呵呵如果在C++中,结构体是可以有引用的
guueyy & &
& & (0)(0)  C/C++ code  #include &stdio.h&
#include &stdlib.h&
#include &malloc.h&
#include &conio.h&
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct Wsqlist
int Initlist_Sq(Sqlist& Li);
int ListInsert_Sq(Sqlist& L,int i,int e);
int ListDelete_Sq(Sqlist& L,int i,int &e);
int Initlist_Sq(Sqlist& Li)
Li.elem=(int *) malloc(sizeof(int)*LIST_INIT_SIZE );
printf(&OK!\n&);
if(Li.elem==NULL) exit(1);
Li.length = 0;
Li.listsize = LIST_INIT_SIZE;
printf(&OK!\n&);
int ListInsert_Sq(Sqlist& L,int i,int e)
int *p,*q;
if(i &1 ||i &L.length+1) exit(1);
if(L.length &=L.listsize)
newbase = (int *)realloc(L.elem,sizeof(int)*(L.listsize+LISTINCREMENT));
if(!newbase) exit(1);
L.listsize+=LISTINCREMENT;
if(L.length==0)
L.elem[0]=
q = &(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p &=q;--p)
*(p+1) = *p;
int ListDelete_Sq(Sqlist& L,int i,int &e)
int *p,*q;
if(i &1 ||i &L.length+1) exit(1);
p = &(L.elem[i-1]);
q = L.elem+L.length-1;
for(;p &q;++p) *p = *(p+1);
int main()
int m=0,n=0;
Initlist_Sq(list);
ListInsert_Sq(list,1,12);
m = ListDelete_Sq(list,1,n);
printf(&%d\n&,list.length);
}gutong1980 & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-}

我要回帖

更多关于 c语言代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信