各位大侠,小弟遇到一C语言小问题,

作者&投稿:年牲 (若有异议请与网页底部的电邮联系)
各位大侠,小弟遇到一道C语言问题~

你开始的定义数组a[]="I am a student";电脑的编译器处理为:a[]={'I',' ','a','m',' ','a',' ','s','t','u','d','e','n','t','\0'};\0是字符常量,是字符的结束标志。
而括号中的语句第一次循环是:i=0;然后将a[0]的值也就是‘I’赋给b[0];下一句就是再将‘\0’赋给b[0],而每一次循环中,都是将‘\0’赋给b[i],而冲掉了原来的赋的a[i]的值,因为,'\0'是字符的结束标志,不输出到屏幕上,所以显示的结果就是什么都没有。
当把b[i]放到外面时对b[i]='\0'不会把原来b数组中的值冲掉,原来a[i]赋给b[i]的值仍保存在数组里,所以输出的就是正确的结果。
===================================================

(还有,最后指出一下小错误,多行的注释用:/*注释内容*/来注释,而不是两个双斜杠。)
/*我只是刚初学,以上均是个人的片面理解,如有不足,请高手指出。我一定虚心改正。*/
/*最后,希望你能理解、有所领悟。*/

===================================================

int x,y;
scanf("%d %d",&x,&y);//a b 换成x y

int max(int a ,int b); 声明应该写在MAIN的外面

int max (inta ,int b);//int 跟a之间有空格 定义的时候最后不要分号

int tenp; 改成 temp

请查看我的注释

#include<stdio.h>
#include <stdlib.h>
//这才是你需要的形参。而不是float* p[4]如果照你那么些实际上变成了1维数组,有四个元素。每个元素为float型指针
void search(float (*p)[4], int n);

int main()
{
//之前你这里的第二个数据有问题,写成58.87了
float score[3][4] = {{65, 57, 70, 60}, {58, 87, 90, 81}, {90, 99, 100, 98}}; /*定义3个学生,4门课*/
search(score, 3);
system("pause");
return 0;
}
void search(float (*p)[4], int n)
{
int i, j, flag;

for(i = 0; i < n; i++) /*n=3*/
{
flag = 0;

for(j = 0; j < 4; j++)
{
if(*(*(p + i) + j) < 60)
flag = 1;
}

if(flag == 1)
{
printf("N0.%d is not pass", i + 1);
printf("\n");
printf("He score is:");

for(j = 0; j < 4; j++)
{
printf("%5.1f\t", *(*(p + i) + j));
printf("\n");
}
}
}
}

写的还可以,你是有什么问题?是结果不对还是怎么的?具体现象是什么样子的?

#include<stdio.h>
#include <stdlib.h>

void search(float (*p)[4], int n);//这里宣告不对
int main()
{
float score[3][4] = {{65, 57, 70, 60}, {58.87, 90, 81}, {90, 99, 100, 98}}; /*定义3个学生,4门课*/
search(score, 3);
system("pause");
return 0;
}
void search(float (*p)[4], int n)
{
int i, j, flag;
for(i = 0; i < n; i++) /*n=3*/
{
flag = 0;

for(j = 0; j < 4; j++)
{
if(*(*(p + i) + j) < 60)
flag = 1;
}

if(flag == 1)
{
printf("N0.%d is not pass", i + 1);
printf("\n");
printf("He score is:");

for(j = 0; j < 4; j++)
{
printf("%5.1f\t", *(*(p + i) + j));
printf("\n");
}
}
}
}

二位数组传参应该使用数组指针,形式应该是(*p)[],而你写成了 *(p)[]。
修改:
第三、九行改为:
void search(float (*p)[4],int n);


各位大侠,小弟跪求两篇作文“与---同行,我更---”和“面对规则”800左 ...
记得小时候,爸妈经常捧着书看,俩人都蜷缩着窝在沙发里,沙发旁摆着两杯苦丁茶,香茗扑鼻。若是自己跌跌撞撞,硬是夹入两人之间,便也会给我一本小画书。家里有一种温馨的安静。自己那时虽不识几个大字,却也喜好当评论家,与爸妈评头论足,上至天文、下至地理,由浅入深,进行着我所谓的“...

各位大侠,小弟家刚贴完厨房墙砖,发现两面墙砖不一样齐,如何补救?装修...
这个办法可行

求救各位大侠~~~!!!
电脑中病毒了,用瑞星杀毒杀不掉,不知道是什么病毒.要重启后自己去删,可是试过了,没删掉病毒名是RootKit.Win32.Agent.nhj请各位大侠教教小弟进入安全模式杀不掉,直接删除也无用,结束进... 电脑中病毒了,用瑞星杀毒杀不掉,不知道是什么病毒.要重启后自己去删,可是试过了,没删掉病毒名是RootKit.Win32.Agent....

求一部欧美神话电影的名字~~~
◎译 名 人玩鬼\/魔界英豪\/黑暗军团 ◎片 名 Army Of Darkness ◎年 代 1992 ◎国 家 美国 ◎类 别 恐怖\/喜剧\/冒险\/动作\/奇幻 ◎片 长 81 Min ◎导 演 萨姆·莱米 Sam Raimi ◎主 演 布里奇特·方达 Bridget Fonda ... Linda ◎简 介 亚瑟是一位自小生长在美国的年轻人...

求各位大侠们帮帮小弟,解决我这个问题
http:\/\/search.gougou.com\/searchd?search=%e6%80%a7%e6%95%99%e8%82%b2&id=10000000 用讯雷下。

哪位大侠能提供一份恭维话大全或者集锦?
曾经有人问我...楼主的帖子算不算好贴...我没有回答...因为我想起了一位传说中的大师---古龙先生的一段话:"...天涯远不远?...天涯其实一点也不远...因为人已经在天涯...天涯还远吗..."好帖啊...难得一见的好贴...楼主的文章简直是惊天地...泣鬼神...图文并茂...嬉笑怒骂...指...

各位大侠,小弟是做皮革行业管理软件的,现在想到客户打印出来的单据里面...
汇山客户关系管理系统简称汇山CRM,是一套企业销售,营销工作的管理软件。汇山CRM可以帮助企业有效的解决以下问题。客户丢失和流失 销售人员的变动带来的客户丢失,销售过程中的客户流失是每个老板亟需避免的问题。效率和考核问题 如何考核和提高销售人员的工作效率,使您煞费苦心。销售预测问题 企业管理者不...

...不知道什么意思?如何解决?请给位大侠帮帮忙
基本是说,你在模型的第1层和第4层某个子系统里用常数模块constant作为一个反馈的Pi参数输入,估计你是直接写了"Pi"到constant模块里的值那一栏,但是"Pi"本身作为一个变量并没有定义过,也没有设定为子系统的输入。因此,在编译的时候就提示Pi没有定义。修改的方法,直接写数进去,或者按照教程,...

麻烦各位帮帮忙。小弟有一事不知如何解决,还望各位多给建议。谢谢。_百...
当你们闹矛盾之后,对方气消了,你主动示好,比如你可以买点东西到宿舍里和大家一起吃,顺便主动问他,这个吃吗?烟抽不抽啊?绝口不提之前的不愉快。这样不会让对方看不起你,反而会和你的友谊更进一步,大家都不是傻子对吧?(经验之谈,除非真遇到很二的人)最后送你一句话: 如果要让别人喜欢...

...512M的内存,我不知道它是多大频率。请哪位大侠能告诉我下!!!_百度...
4200除以8约等于533MHz。4200这是标准标注,指的是理论传输带宽,533MHz指的是工作频率(不是内存的标准的标准单位,但消费者都这么叫习惯了)。转换方法就是除以8。同理,PC2 5300就是DDR2代667MHz,PC2 6400就是DDR2代800MHz,PC2 8500就是DDR2代1066MHz。以此类推。

建德市19661548541: 各位大侠,小弟又遇一道C语言入门级的题目:"*to++=*from++"这个C语句的运算过程,就是先算什么后算什么~ -
项泰卓异: "*to++=*from++" 等价于 {*to = *from; to=to+1; from=from+1; } 字符串拷贝的典型写法.

建德市19661548541: 各位大侠,小弟又遇到一题C语言问题,还望各位大侠相助啊?
项泰卓异: 你这种情况比较复杂!*指针变量是用来存放地址的,而不是用来存放值的 int*x只是定义x是一个指针变量,x就用来存放需要存放的地址,在后面需要取x指向地址中的值用*x来取值,b是字符型,那不是变量,是一个数组,指针变量存放的只是这个数组的首地址. 如果解决了您的问题,还望采纳我的答案

建德市19661548541: 各位C语言的高手们,小弟今个遇到一道:将若干字符串按字母顺序(由小到大)输出,问题在下面
项泰卓异: 这个编译应该是对的啊,首先说一下那个字符串数组char * name[]吧,它是一个数组,里面存放的是字符串的首地址,sort(name,n);传递的仍然是数组,只不过数组里存的是指向字符串首地址的指针而已.再说一下你的那个疑问,strcmp(name[k],name[j]),strcmp的参数就是指向字符串的指针啊,比较过程是这样的,先比较每个指针指向的第一个字符,如果不相同则结束比较,如果相同,则都指向下一个字符再比较,知道出现不同字符或遇到结束符时结束,所以你这个函数,通过传递数组里字符串的首地址来比较,进而排序.不知听懂没有,有问题再追问

建德市19661548541: C语言程序编写遇到点小问题 请帮忙看下 -
项泰卓异: 原因在于你定义的这两个函数Fahrenheit和Celsius,你在这两个函数定...

建德市19661548541: C语言小问题,希望可以帮下小弟 -
项泰卓异: 实现一个数组的逆序变换.问题在于最后一个printf,a没有定义.改为arr就可以了.

建德市19661548541: 做C语言遇到的小问题 -
项泰卓异: word==0 不是赋值的意思,这里的0代表的是逻辑判断里面的 0和1;==是逻辑运算里面的符号,“==”号后面代表的是逻辑里面 yes 还有no=是赋值运算里面的符号, “=”号后面的是赋予的值 第二个就是最新赋值的

建德市19661548541: C语言编程问题请各位大侠帮忙看看我写的程序有什么问题?谢谢了!要
项泰卓异: 你的程序少写了一个字母,你把倒数第四行那个 printf 改成 fprintf 就好了. 我测试过了,没什么问题:) ---------------------------------------------- #include void main() { char str[5][60]; FILE *fp; fp=fopen("d:\\abc.dat","w+"); int i; for(i=0;i 全部

建德市19661548541: C语言编程的时候遇见的一个小问题.本人新手.请帮助我
项泰卓异: 字符串长度函数.for循环大括号后面是不是忘记了分号. 如果仅仅是去掉后面.那么找到第一个位置,直接赋值为0即可.

建德市19661548541: 各位C语言高手,小弟遇到一个常识想问一下大家啊,问题如下: -
项泰卓异: 简单的说 保存到磁盘的结构体是不能用int类型的 必须全部是字符串才能组成流文件不然会出现乱码

建德市19661548541: 请教各位一个C语言的程序小问题,运行时出错. -
项泰卓异: #include "stdio.h" int main()//规范 { float a[5],temp; int i,j; for(i=0;i<5;i++) scanf("%f",&a[i]);//%f & !!! for(i=0;i<5;i++) printf("%f",a[i]);//%f for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } for(i=0;i<5;i++) printf("%f ",a[i]);//%f printf("\n"); return 0;//规范 }

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