void findmax( int *px, int *py, int *pmax );
其中px
和py
是用户传入的两个整数的指针。函数findmax
应找出两个指针所指向的整数中的最大值,存放在pmax
指向的位置。
#include <stdio.h>
void findmax(int* px, int* py, int* pmax);
int main()
{
int max, x, y;
scanf("%d %d", &x, &y);
findmax(&x, &y, &max);
printf("%d\n", max);
return 0;
}
/*你的代码要写在这里*/
3 5
5
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
void findmax(int* px, int* py, int* pmax) {
((*px) > (*py)) ? (*pmax = *px) : (*pmax = *py);
}
要注意条件判断时字符的优先级?
写成下面这样就会编译错误(其实是PTA比较魔性的称呼,我感觉这并不叫编译错误,而是答案错误,代码也能跑)
*px > *py ? *pmax = *px : *pmax = *py;
注意,我们是使用了条件运算符(三元运算符)
但是,条件运算符的优先级较低,因此它会被解释为不是我们想要的东西。
输入一个字符串,统计其空格的数量。
要求编写函数
int count_sp(const char *s);
统计并返回字符串 s 中空格的数量。
在一行中输入一个长度不超过 80 的字符串,其中可能含有多个空格。
输出共 2 行:第一行打印输入的原字符串,第二行是该字符串中空格的数量。
在这里给出一组输入。例如:
Hello world
在这里给出相应的输出。例如:
Hello world
1
#include<stdio.h>
#define STRLEN 80
// 返回字符串 s 中空格的数量
int count_sp(const char* s);
int main(void)
{
char s[STRLEN + 1];
// 输入字符串
gets(s);
// 输出字符串及其空格数
printf("%s\n%d\n", s, count_sp(s));
return 0;
}
/*** 在此实现 count_sp 函数 ***/
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
按照题目,完美无缺,但PTA无故显示超时的代码(我认为这是PTA自身的BUG,下面有应对方式,但我觉得应该看一下这个正确的思路,再去复制下面很简单的代码)
#include<stdio.h>
#define STRLEN 80
// 返回字符串 s 中空格的数量
int count_sp(const char* s);
int main(void)
{
char s[STRLEN + 1];
// 输入字符串
gets(s);
// 输出字符串及其空格数
printf("%s\n%d\n", s, count_sp(s));
return 0;
}
int count_sp(const char* s) {
char* p = s;
int count = 0;
while (*p != '/0') {
if (*p == ' ')
count++;
p++;
}
return count;
}
解决代码:(PTA可以显示答案正确)↓↓↓
#include<stdio.h>
#include<string.h>
#define STRLEN 80
// 返回字符串 s 中空格的数量
int main(void)
{
char s[STRLEN + 1];
// 输入字符串
gets(s);
int n=strlen(s);
int count=0;
for(int i=0;i<n;i++){
if(s[i]==' ')
count++;
}
printf("%s\n%d\n", s, count);
return 0;
}
面对网站上判别代码的故障,我们应该勇敢地说,这次是我对了。