充分相信自己
每一次不都是失落失望到绝望,然后置于绝地而后生吗?
- 1024参加线下C语言知识竞赛,到达现场本来都后悔想逃了,最后不还是拿了第一名?
- 阴差阳错旷了课,不还是直面过错,找同姐开了假条吗?
- 跑800体测,焦虑了快一个月,不还是按照预期跑完了吗?
- web蓝桥杯唯唯诺诺,内耗了很久,不还是硬着头皮去了,甚至去了两次吗?
- 器械健身平板卧推期末测试,犹犹豫豫,不还是一次就过了吗?
- 回声面试想了又想,最后不还是去面试了吗?
So,I'm the best!
The best!
BEST!
I'll pass all the courses!!!!
All I need is to calm down,do what I can,then the god will absolutely help me.
分值
判断10 /10
单选5 /10
程序填空4 /14
函数4 /54
编程1 /15
复习第二次测试
判断题
- while循环条件将会比循环体多执行一次。【T】
- 程序中一旦调用了某个函数,该函数就会完成特定的计算,然后返回到调用它的地方。【T】
- 数组长度一定为常量【T】
- c语言对数组下标越界不作检查【T】
- 在C语言中,如果我们声明了一个指针变量但没有给它赋值,那么它将自动指向程序的开始部分【F】
- 在if…else嵌套的语句中,else 总是与它上面最近的、可见的且尚未配对的 if 配对【T】
- continue语句一般放在条件语句中,条件成立时结束本次循环,直接进入下一次循环【T】
- 若读文件还未读到文件末尾, feof()函数的返回值是【非0】
单选题
- 数组与指针的关系
/*表示二维数组的地址的是*/
int main(void)
{
int k, t[3][2], *pt[3];
for ( k = 0; k < 3; k++) {
pt[k] = t[k];
}
printf("%x",&t[3][2]);//wrong,这种情况要考虑数组有没有越界
printf("%x",&t[2][2]);//right
printf("%x",&pt[2][2]);//right
printf("%x",*(pt+2)+2);//right
return 0;
}
- 值的等价
`pt[2][1] 等价于 *(*(pt+2)+1) 等价于 t[2][1]`
- 地址的等价
`&pt[2][1] 等价于 *(pt+2)+1 等价于 &t[2][1]`
字符串处理
**ASCII码A=65,Z=90,a=97,z=122
指针填空
1.交换实数
#include <stdio.h>
// void RealSwap(double *x, double *y);
int main()
{
double a, b;
scanf("%lg%lg", &a, &b);
printf("%g %g\n", a, b);
// void RealSwap(&x, &y);
printf("%g %g\n", a, b);
return 0;
}
void RealSwap(double *x, double *y)
{
double t = *x;
// *x = *y;
// *y = t;
}
2.指针输入/输出一维数组元素
#include <stdio.h>
int main(void)
{
int *ptr, arrA[5];
//读入数组元素
for ( ptr=arrA; ptr<arrA+5; ptr++)
{
scanf("%d",ptr);
}
//输出数组元素
ptr = arrA;
for(; ptr<arrA+5; ptr++)
{
printf("%d ",*ptr);
}
printf("\n");
return 0;
}
3.查找最大元素和最小元素的下标,是下标
#include <stdio.h>
void find(int *, int, int *, int *);
int main(void)
{
int maxsub, minsub, a[]={5, 3, 7, 9, 2, 0, 4, 1, 6, 8};
find(&a,10,maxsub,minsub);
printf("%d,%d\n", &maxsub, &minsub);
return 0;
}
void find(int *a, int n, int *maxsub, int *minsub)
{
int i;
*maxsub = *minsub = 0;
for (i = 1; i < n; i++){
if (a[i] > a [*maxsub]){
*maxsub = i ;
}
if (a[i] < a [*minsub]){
*minsub = i ;
}
}
return;
}
4.输入N个整数,用冒泡排序算法将它们按升序排序后输出。
#include <stdio.h>
#define N 10
void sort (int *p, int n);
int main(void)
{
int a[N],*pa ;
int i;
for( pa=a ;pa<a+N;pa++)
scanf("%d", pa);
// sort(&p,N);错误的,有数组,有指针,传数组名就好
sort(a,N);
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
void sort (int *p, int n)
{
int i,j,tmp;
for(j=0;j<n-1;j++)
{
for(i=0;i<n-j-1;i++)
{
if(p[i] > p[i+1])
{
tmp = p[i];
p[i] = p[i+1];
p[i+1] = tmp;
}
}
}
}
5.用指针将数组中的元素逆序存放
#include <stdio.h>
void Rev(int *x, int n);
int main()
{
int i,a[10]={3,7,9,11,0,6,7,5,4,2};
int *p;
//调用逆序函数
// void Rev(a, 10)
// void Rev(a, 10);
Rev(a, 10);
printf("The array has been reverted:\n");
for(p = a;p < a+10 ; p++)
printf("%d,",*p );
return 0;
}
void Rev(int *x, int n)
{
int t,*p,*i,*j,m=(n-1)/2;
i=x; j=x+n-1; p=x+m;
for(;i<=p;i++,j--)
{
t = *i;
*i = *j;
*j = t;
}
}
6.删除字符串中的数字字符
#include <stdio.h>
void deleDigits(char *s) {
int n = 0, i;
for (i = 0; s[i]; i++)
if (s[i]<'0' || s[i] >'9')
s[n++] = s[i];
s[n] = s[i];
}
int main()
{
char str[80];
scanf("%s", str);
deleDigits(str);
printf("%s\n", str);
return 0;
}
7.使用函数实现字符串复制
# include <stdio.h>
#define MAXS 80
void cpy( char *s, char *t );
int main( )
{
char s[MAXS], t[MAXS];
scanf("%s", t );
cpy (s, t);
printf("%s\n", s);
}
void cpy( char *s, char *t )
{
while (*t !='\0')
{
// *s = *t;
*(s ++) = *(t ++);
}
*s = '\0';
}
8.行指针表示二维数组元素
#include<stdio.h>
int main(void)
{
int a[2][3]={1, 2, 3, 4, 5, 6}, i, j;
int (*p)[3];
p = a;
for (i=0; i<2; i++)
{
for (j=0; j<3; j++)
{
printf("%d ", *(*(p+i)+j));
}
printf("\n");
}
return 0;
}
9.二维数组行指针找二维数组每一行的最大值
#include <stdio.h>
void findmax(int (*pArr)[4], int *pmax, int m, int n);
int main(void)
{
int arr[3][4], *pa, max[3], i;
pa = arr[0];
for (i=0; i<12; i++)
{
scanf("%d", pa++);
}
// findmax(arr[4], int &max, m, n);
// findmax(arr, &max, m, 4);
for (i=0; i<3; i++)
{
printf("line %d's max = %d\n", i, max[i]);
}
return 0;
}
void findmax(int (*pArr)[4], int *pmax, int m, int n)
{
int i, j;
for (i=0; i<m; i++, pmax++)
{
// *pmax = pArr[i][0];
for (j=1; j<n; j++)
{
// if (*pmax < pArr[i][j])
{
// *pmax = pArr[i][j];
}
}
}
}
10.计算二维数组中奇数元素之和
#include <stdio.h>
int sumOdd(int (*array)[5], int row)
{
// int sum=0;
for(int i=0; i<row; i++)
for(int j=0; j<5; j++)
// if(array[i][j] % 2 == 1) sum +=array[i][j];
return sum;
}
int main(){
int array[4][5];
for(int i=0; i<4; i++)
for(int j=0; j<5; j++)
// scanf("%d",&array[i][j]);
// printf("%d\n", sumOdd(array,4)); //注意:填空处两端均已有括号,只需填函数参数
return 0;
}
11.最小的字符串
#include <stdio.h>
#include <string.h>
int main()
{
const char *st[] = {"bag", "good", "This", "are", "Zoo", "park"};
const char *smin;
int i;
smin= "bag";
for(i = 1; i < 6; i++){
if(strcmp( st[i],smin ) < 0){
smin = st[i];
}
}
printf("%s\n", *smin );
return 0;
}
结构体
标签:10,复习,int,一周,C语言,char,printf,main,void
From: https://www.cnblogs.com/GJ504b/p/18634602