C语言 输入包含多组测试数据

输入的第一行是一个整数C,表示有C测试数据;
接下来是C组测试数据,每组数据先输入一个t表示字符串长度,再输入一个均为0,1字符串,保证串长为偶数位(串长<=50)。
输出要求
请为每组测试数据输出奇偶位互换后的结果;
每组输出占一行。
测试数据示例
输入
2
4
0110
4
1100
输出
1001
1100
请大神解析一下
#include<stdio.h>
int main(){
int n,m,i,t;
char a[55];
while(scanf("%d",&n) !=EOF){
for(i = 1;i <= n;i ++){
scanf("%d",&m);
getchar();
i = 1;
while(gets(a)){
if(i % 2 != 0){
t = a[i];
a[i] = a[i - 1];
a[i - 1] = t;
i = i + 2;
}
puts(a);
}
}
}
return 0;
}

第1个回答  2016-11-26
#include<stdio.h>
int main()
{
int C,t;
char s[60];
int i,j;
scanf("%d ",&C);
for (i=0;i<C;i++){
scanf("%d ",&t);
fgets(s,60,stdin);
for (j=0;j<t;j=j+2){
printf("%c%c",s[j+1],s[j]);
}
}
return 0;
}追问

兄弟能解析一下吗

追答

解释:
scanf("%d ",&C); // 读入数据组数
for (i=0;i<C;i++) //循环次数 为 组数
{
scanf("%d ",&t); // 数据长度,(几个 0 和 1)
fgets(s,60,stdin); // 从标准输入设备读入 一行字符,含回车换行
for (j=0;j<t;j=j+2) //2个2个数据输出,共有 t 个数字
{
printf("%c%c",s[j+1],s[j]); // 2个数字 (奇位,偶位 换次序输出)
}
printf("\n"); // 换行
}

追问

为什么我的只能输出4个数字啊

本回答被提问者采纳
相似回答