鱼C论坛

 找回密码
 立即注册
查看: 1654|回复: 10

[已解决]一个c语言问题,新手

[复制链接]
发表于 2017-12-18 13:36:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
        int i,j,k;
        char name[15][7] = {"周一清","任齐","唐经济","陈有秀","朱成","陈特","周凯","苏英华","徐英","周明成","赵中一","李新","李长表","朱清华","陈中俊"};
        int cj[15];        
        printf("输入成绩:");
        for(i=0;i<15;i++){
         scanf("%d",&cj); //{67,84,72,54,60,77,92,42,81,90,62,81,91,58,82};        
                }
        //查找
        char find;
                printf("输入查询学生的姓名:"); scanf("%s",&find);
        for(k=0;k<15;k++);{
                 if(name[k][0]==find)
                 i=k;
        {         j=i;
            printf("你的成绩是:%d\n",cj[j]);
        }        
                }
        return 0;
}
能看看我的哪里写错了吗,这程序按我的思路是:我先输入了67  84 72 54 60 77 92 42 81 90 62 81 91 58 82 这15个成绩,然后我输入要查询:朱成  ,按理说应该输出成绩是60啊,可是不对啊。
先拜谢了,
最佳答案
2017-12-18 16:21:00
因为你没有声明这是一个字符串,而只是一个字符指针
如果要达到你的目的,就用字符数组
char find[7] = {0};
scanf("%s",find)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-18 13:52:38 | 显示全部楼层
1 成绩录入应该依次写入,而不是全部交给&cj,改为:
scanf("%d",&cj[i]);

2 一个字符变量find如何能存放%s?你可以改为字符指针
char * find

3 scanf输入需要清除流里面的信息

4 最后的判断不能用==判断字符串的相等,用strcmp函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-18 15:06:11 | 显示全部楼层
BngThea 发表于 2017-12-18 13:52
1 成绩录入应该依次写入,而不是全部交给&cj,改为:
scanf("%d",&cj);

我还是不懂你的意思,我改了程序无法运行了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-18 15:24:18 | 显示全部楼层
只有汝丶 发表于 2017-12-18 15:06
我还是不懂你的意思,我改了程序无法运行了,

哪一句不理解
出错未必是件坏事,理解透就好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-18 15:31:14 | 显示全部楼层
BngThea 发表于 2017-12-18 15:24
哪一句不理解
出错未必是件坏事,理解透就好

我按你的意思就改成这样了,运行的输入名字就出错了,

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
        int i,j;
        char name[] = "'周一清','任齐','唐经济','陈有秀','朱成','陈特','周凯','苏英华','徐英','周明成','赵中一','李新','李长表','朱清华','陈中俊'";
        char cj[15];
        printf("输入成绩:"); scanf("%d",&cj); //{67,84,72,54,60,77,92,42,81,90,62,81,91,58,82};       
        //查找
        char * find;
                printf("输入查询学生的姓名:"); scanf("%s",&find);
        for(i=0;i<15;i++);{
                 if(strcmp(name,find)==0)
        {         
            printf("你的成绩是:%d\n",cj);
        }       
                }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-18 15:40:34 | 显示全部楼层
find已经是指针了,scanf中不需要再取地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-18 16:00:57 | 显示全部楼层
BngThea 发表于 2017-12-18 15:40
find已经是指针了,scanf中不需要再取地址

scanf("%s",find); 这样吗?
但是好像没什么用,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-18 16:21:00 | 显示全部楼层    本楼为最佳答案   
因为你没有声明这是一个字符串,而只是一个字符指针
如果要达到你的目的,就用字符数组
char find[7] = {0};
scanf("%s",find)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-18 16:51:17 | 显示全部楼层
BngThea 发表于 2017-12-18 16:21
因为你没有声明这是一个字符串,而只是一个字符指针
如果要达到你的目的,就用字符数组
char find[7] = { ...

谢谢指教了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-18 18:02:57 | 显示全部楼层

RE: 一个c语言问题,新手


我百度了很多,也试过了,还是不行,所以再来请教一下,
就是最后查询成绩那,不能返回成绩
应该怎么写呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-18 21:20:58 From FishC Mobile | 显示全部楼层
只有汝丶 发表于 2017-12-18 18:02
我百度了很多,也试过了,还是不行,所以再来请教一下,
就是最后查询成绩那,不能返回成绩
应该怎么写 ...


cj在录入的时候就要下标索引,我的第一条回复就说了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 17:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表