c语言-C语言小白提问```求大神

问题描述

C语言小白提问```求大神

float search(float (*p)[4]){
float *pt = NULL;
for (int i = 0; i < 4; i++) {
if (
(*p + i) < 60) {
pt = *p;
}
}
return pt;
}

int main(int argc, const char * argv[]) {

float score[][4] = {{60,70,80,90},{56,86,97,68},{57,58,98,95}};
float *p,*q;
q = score;
for (int i = 0; i< 3; i++) {
    p = search(q + i);
     printf("不及格成绩为n");
    if (p == *(q + i)) {   \ 此处报错,不知为何.为什么  p == *(score + i)  对? 

        for (int j = 0; j < 4; j ++) {
            printf("%ft", *(p + j));
        }
    }
}

return 0;

}

解决方案

p == *(q + i)类型不一样,要么p == q+i,要么*p == *(q+i)

解决方案二:

float (*q)[4];这样声明,才可以q=score
还有
if ( (*p)[i] < 60) {pt = *p;}这样才对
刚没仔细看,你把pq类型一样,所以我说你p == *(q + i)不对,
这里面牵扯二级指针和数组指针,比较麻烦

解决方案三:

再问一下 既然qp类型一样,为什么*p == *(q + i)就不对了? p == q + i就对了?

解决方案四:

 #include <stdio.h>
#include <stdlib.h>
float * search(float (*p)[4]){
    float *pt = NULL;
    for (int i = 0; i < 4; i++) {
        if ( (*p)[i] < 60) {
            pt = *p;
        }
    }
    return pt;
}
int main(int argc, const char * argv[]) {
float score[][4] = {{60,70,80,90},{56,86,97,68},{57,58,98,95}};
float *p;
float (*q)[4];
q = score;
for (int i = 0; i< 3; i++) {
    p = search(q + i);
    if (p == NULL)
        continue;
     printf("不及格成绩为n");
    if (p == *(q + i)) {   

        for (int j = 0; j < 4; j ++) {
            printf("%ft", *(p + j));
        }
    }
}
return 0;
}
时间: 2024-09-17 03:40:22

c语言-C语言小白提问```求大神的相关文章

c语言-C语言小白问题求大神指教

问题描述 C语言小白问题求大神指教 #include #include unsigned fun(int w) { int a; int i; i=1; a=w; while(a==0) { a=a/10; i++; } w=w%pow(10,i); return w; } unsigned main() { int w; printf("please enter a number:n"); scanf("%d",&w); printf("the

c语言-C语言的一个程序,求大神

问题描述 C语言的一个程序,求大神 三.实验内容 1.实验题目:手动输入10个0~100之内的整数,按从小到大排列输出.: (1)要求 排序算法: 使数组从小到大排序的规则如下: ⑴ 设数组为a[0],a[1],-,a[n-1],构造i循环从0,1,-,n-2变化,构造j循环从i+1,i+2,-,n-1变化,即j>i. ⑵ 对于任何一个a[i],如果a[i]>a[j],表面前面有一个元素a[i]比它后面的元素a[j]大,a[i]应该在后面,a[j]应该在前面,交换a[i]与a[j]. ⑶ 对于

基础-请问一个C语言奇怪的问题,求大神

问题描述 请问一个C语言奇怪的问题,求大神 //加了所有需要的头文件intmain(int argc char **argv){ struct event timeout; struct timeval tv; struct event_base *base; int flags; //printf(""pathvar=%s""getenv(""PATH"")); 注释1#ifdef WIN32 WORD wVersionRe

fanbao-c语言里面的问题,求大神解决

问题描述 c语言里面的问题,求大神解决 请问一下,如果用c编写了一个闹钟,那么怎么在电脑上运行这个程序时出现的是一个时钟的样子? 解决方案 用MFC或者WIN32来做 解决方案二: 可以去学习下VC的界面编程

strcpy-c语言比较细致的问题.求大神帮我解答.

问题描述 c语言比较细致的问题.求大神帮我解答. #include#includeint main(){ int sum=0; char array[20][200]={""""}; int m=0n; float k=0; int k1=0i; scanf(""%d""&n); for(i=0;i { scanf(""%d""&sum); scanf("&qu

不懂c语言基础的问题,求大神解答。

问题描述 不懂c语言基础的问题,求大神解答. for(j=0;j<=9;j++){ scanf(""%d""&i); a[j]=i;} 这样写为什么不行? 原代码:#includeint main(){ int a[10]ijz; printf(""请输入十个数值:""); for(j=0;j<=9;j++) scanf(""%d""&i); a[j]=i;

条件语句-c语言,打孔问题,求大神指导。

问题描述 c语言,打孔问题,求大神指导. 题目,s得到一个数,他想知道这个数每一位上的数字的孔数之和,其中,1,2,3,5,7这几个数字是没有孔的,0,4,6,9都只有一个孔,而8有两个孔. 解决方案 不知道是不是这个意思 #include <stdio.h> #include <stdlib.h> #include <string.h> int holeNum[10] = { 1, 0, 0, 0, 1, 0, 1, 7, 2, 1 } ; int getHoleNu

c-C语言小数点舍入问题,求大神!!

问题描述 C语言小数点舍入问题,求大神!! 若有定义:float n:int m:则以下能实现将 n 中的数值保留小数点后两位,第三位进行四舍五入的表达式 是( B ). A)n=(n*100+0.5)/100.0 B)m=n*100+0.5,n=m/100.0 C)n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.0 怎么理解怎么选的?? 解决方案 你首先要知道:float/int==float. float n要保留两位小数,就意味着要先把浮点向前移两位,即 int

c语言-C语言怎么会这样呢求大神

问题描述 C语言怎么会这样呢求大神 #include"stdio.h" int main() { float a[3][5],aver[3],zong=0; //aver存放各科目总分,zong存放总科目分数 int i,j; for(i=0;i<5;i++) { printf("请输入第%d个同学成绩(语文,数学,英语)",i+1); for(j=0;j<3;j++) scanf("%f",&a[i][j]); } for(