PTA考前练习错题集
1.对于已正确定义的二维数组a, *(a[i]+j)与a[i][j]的含义相同。
对
2.结构体成员的类型必须是基本数据类型。
错
3.设变量定义为 int a[2]={1,3}, p=&a[0]+1;,则p的值是( )。
3
4.在一个被调用函数中,关于 return 语句使用的描述,错误的是(D )。
被调用函数中可以不用 return 语句
被调用函数中可以使用多个 return 语句
被调用函数中,如果有返回值,就一定要有 return 语句
被调用函数中,一个 return 语句可以返回多个值给调用函数
5.若定义pf为指向float类型变量f的指针,下列语句中__是正确的。 B
float f, *pf = f;
float f, *pf = &f;
float *pf = &f, f;
float f, *pf =0.0;
6.将两个字符串连接起来组成一个字符串时,选用函数(C )。
strlen( )
strcpy( )
strcat( )
strcmp( )
7.有如下定义:
struct Student{
char name[10];
int age;
char gender;
}std[3], *p=std;
则以下各输入语句中错误的是: D
scanf("%d",&(*p).age);
scanf("%c",&std[0].gender);
scanf("%c",&(p->gender));
scanf("%s",&std.name);
6-1 在数组中查找指定元素 (20分)
本题要求实现一个在数组中查找指定元素的简单函数。
函数接口定义:
int search( int list[], int n, int x );
其中list[]是用户传入的数组;n(≥0)是list[]中元素的个数;x是待查找的元素。如果找到
则函数search返回相应元素的最小下标(下标从0开始),否则返回−1。
裁判测试程序样例:
#include <stdio.h>
#define MAXN 10
int search( int list[], int n, int x );
int main()
{
int i, index, n, x;
int a[MAXN];
scanf("%d", &n);
for( i = 0; i < n; i++ )
scanf("%d", &a[i]);
scanf("%d", &x);
index = search( a, n, x );
if( index != -1 )
printf("index = %d\n", index);
else
printf("Not found\n");
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例1:
5
1 2 2 5 4
2
输出样例1:
index = 1
输入样例2:
5
1 2 2 5 4
0
输出样例2:
Not found
int search(int list[], int n, int x)
{
int i;
for (i = 0; i < n; i++)
{
if (list[i] == x)
{
return i ;
break;
}
}
return -1;
}
我的答案
int search(int list[], int n, int x)
{
int i;
for (i = 0; i < n; i++)
{
if (list[i] == x)
{
return i ;
break;
}
}
return -1;
}
7-2 求分数序列前N项和 (15分)
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+… 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。
输入样例:
20
输出样例:
32.66
我的答案
#include<stdio.h>
int main()
{
double a=1.0,b=2.0;
double t;
int n;
double sum=0;
scanf("%d",&n);
int i;
for( i=0;i<n;i++)
{
sum+=b*1.0/a;
t=b;
b=a+b;
a=t;
}
printf("%.2f\n",sum);
return 0;
}
最开始在pta上这样写的,后来复习发现在Dev过不了
for(int i=0;i<n;i++)
编译错误
后来有大佬知道这个问题 @Young_2717
感谢大佬,第一次在这里写文章不知道怎样@他