关于指针的习题
来自课堂练习
-
询问其输出结果
#include <stdio.h> void aout(int* b) { printf("%d", *b); } int main() { int m = 15; aout(&m); return 0; }
考点:指针的基本使用
思路:
给定一个变量,把其地址存放于函数中,函数定义指针,相当于把15的地址放入了b这个指针中,打印的是放 入的这个地址的变量,所以输出15
-
询问输出结果
#include <stdio.h> void asb(int x,int y,int *cp,int *dp) { *cp = x + y; *dp = x - y; } main() { int a = 4, b = 3, c, d; asb(a, b, &c, &d); printf("%d %d\n", c, d); return 0; }考点:函数和指针的应用
思路:
1.定义了四个整形,两个负责参与运算,给了详细的值,另外两个参与函数的指针运算;
2.定义了函数把a和b的数值放入,参与运算,然后把c和d取地址,放入函数中的两个指针*cp 和 *dp;
3.进行运算得出结果7和1。
来自未知
- 使用指针函数来进行冒泡排序
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#define N 5
void swap(int *x, int *y)
{
int t = *x;
*x = *y;
*y = t;
}
int main() {
int i, j;
int str[N];
for (i = 0; i < N; i++)
scanf("%d", &str[i]);
for (i = 0; i < N; i++)
for (j = 0; j < N - i - 1; j++)
if (str[j] > str[j + 1])
swap(&str[j], &str[j + 1]);
for (i = 0; i < N; i++)
printf("%d ", str[i]);
printf("\n");
return 0;
}
真题链接
31.下面程序的功能是:输入9个从大到小排序的整数存入一维数组a中,然后再输入1个整数插入数组a中,使其保持从大到小的顺序,输出插入后的 10 个整数。请在空格处补充程序。
#include <stdio.h>
int main()
{
int a[10],*pa,b,*pb;
pb=&b;
for(pa=a;pa<a+9;pa++)
scanf("%d",pa); //输入有序数据序列。
scanf("%d",pb); //输入被插入的数据。
pa-- ; //pa指针指向有序数据序列尾部。
while(*pb>*pa) //将被插入的数据与当前位置数据进行比较。
{
*(pa+1) =*pa;pa--;
}
*(pa+1)=*pb ; //插入当前位置的下一个位置。
for(pa=a;pa<a+10;pa++)
printf("%d,",*pa);
return 0;
}
2024-3编写程序,输入一个字符串和整数 m,n,将该字符串从第 m 个字符开始的 n
个字符复制到另一个字符数组中并输出。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
char str[100] = { '\0' }, new[100] = { '\0' };
int m, n, i;
printf("请输入字符串\n");
gets(str);
printf("请输入m和n\n");
scanf("%d %d", &m, &n);
char* ps = str;
char* pn = new;
for (i = 0; i < m-1; i++)
ps++;
for (i = 0; i < n; i++)
*pn++ = *ps++;
*pn = '\0';
puts(new);
printf("\n");
return 0;
}
(2021)判断回文数
#define _CRT_SECURE_NO_WARNINGS 1
#define True 1
#define False 0
#include <stdio.h>
#include <string.h>
int isHuiWen(char str[],int len) //起到布尔类型作用的函数
{
int i;
char* x = str, * y = str + len - 1; //x指向首位,y指向末位
for (i = 0; i < len / 2; i++)
{
if (*x == *y) //所有回文所对应项相同,但凡有一个不对应,则返回0
{
x++;
y--;
}
else
return False;
}
return True;
}
int main() {
char str[100];
gets(str);
int len=strlen(str);
if (isHuiWen(str,len))
printf("Yes\n");
else
printf("No\n");
return 0;
}
3339

被折叠的 条评论
为什么被折叠?



