要求用C语言
一共3道题呀 我们的oj不允许gets函数
最近太忙了没时间完成,求帮助解答一下~
通过可追加酬金
试一下吧:
第一题:
#include<stdio.h>
int main()
{
int i, j, n, a[100] = {0}, b[100] = {0};
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
for(i = 0; i < n; i++)
{
for(j = 1; j <= 100; j++)
{
if(a[i] == j)
{
b[j]++;
break;
}
}
}
for(j = 1; j <= 100; j++)
{
if((b[j] % 2) == 1)
{
break;
}
}
printf("%d", j);
return 0;
}
第二题:(这个题要求有空格输入,但是你说用不了gets函数,所以scanf我做了一下处理,你先试下看看吧。我这试了半天要用getchar函数清一下回车符,否则一直能捕获到回车,不知道原因是啥)
#include<stdio.h>
int main()
{
int i;
char a[4][255] = {0}, b[255] = {0};
for(i = 0; i < 4; i++)
{
scanf("%[^\n]", a[i]);
getchar();
}
i = 0;
while((a[0][i] != '\0') && (a[1][i] != '\0') && (a[2][i] != '\0') && (a[3][i] != '\0'))
{
if((a[0][i] == a[1][i]) && (a[0][i] == a[2][i]) && (a[0][i] == a[3][i]))
{
b[i] = a[0][i];
i++;
}
else
{
break;
}
}
b[i] = '\0';
printf("%s", b);
return 0;
}
第三题:
#include<stdio.h>
#include<string.h>
int main()
{
int i, j, len, mid;
char a[255] = {0}, b[255] = {0}, temp;
scanf("%[^\n]", a);
len = strlen(a);
if((len % 2) == 0)
{
mid = (len / 2 - 1);
for(i = 0; i <= mid; i++)
{
b[i] = a[i];
}
for(i = 0; i < mid; i++)
{
for(j = i + 1; j <= mid; j++)
{
if(b[i] < b[j])
{
temp = b[i];
b[i] = b[j];
b[j] = temp;
}
}
}
for(i = 0; i < len; i++)
{
if(i <= mid)
{
a[i] = a[mid + i + 1];
}
else
{
a[i] = b[i - mid - 1];
}
}
}
else
{
mid = (len / 2);
for(i = 0; i < mid; i++)
{
b[i] = a[i];
}
for(i = 0; i < (mid - 1); i++)
{
for(j = i + 1; j < mid; j++)
{
if(b[i] < b[j])
{
temp = b[i];
b[i] = b[j];
b[j] = temp;
}
}
}
for(i = 0; i < len; i++)
{
if(i < mid)
{
a[i] = a[mid + i + 1];
}
else if(i == mid)
{
;
}
else
{
a[i] = b[i - mid - 1];
}
}
}
printf("%s", a);
return 0;
}