c语言指针函数数组题 c语言指针数组编程例题

一个C语言指针数组问题 。求大佬解答?#includestdio.h
#includestring.h
#includemalloc.h
void stringinput(int N, char *s[]) {//字符串输入函数
int i;
char s_tem[80];//用于临时接收输入c语言指针函数数组题的字符串
for (i = 0; iN; i) {
scanf("%s", s_tem);//这个遇到空格停止c语言指针函数数组题 , 输入整行用gets(s_tem);
s[i] = (char*)malloc((strlen(s_tem)1) * sizeof(char)); //给字符串分配空间
strcpy(s[i], s_tem);
}
}
void stringoutput(int N, char *s[]) {
while (N--0)puts(*s);
}
void stringsort(int N, char *s[]) {//使用归并排序算法
int w, l, m, r, i, j, k;
char **s_tem = (char**)malloc(N * sizeof(char*)); //用于存放迭代c语言指针函数数组题的字符串
for (w = 1; wN; w = 1) {
//w是分割的最小有序区域的宽度
for (l = k = 0; lN; l = r) {
//l是被归并的靠左的有序区间的左端
m = lw; //m是归并的靠右的有序区间左端
r = mw; //r是下一个l
//如果只剩下一个有序区域c语言指针函数数组题,则直接复制
if (m = N)for (i = l; iN; i)s_tem[i] = s[i];
else {
//否则进行归并
if (rN)r = N;
i = l, j = m;
while (imjr) {
if (strcmp(s[i], s[j])0)s_tem[k] = s[i];
else s_tem[k] = s[j];
}
while (im)s_tem[k] = s[i];
while (jr)s_tem[k] = s[j];
}
}
//将迭代后的字符串数组赋值回s
for (i = 0; iN; i)s[i] = s_tem[i];
}
free(s_tem);
}
int main() {
int N;
scanf("%d", N);
char **s = (char**)malloc(N * sizeof(char*));
stringinput(N, s);
stringsort(N, s);
stringoutput(N,s);
while (N--0)free(s[N]);
free(s);
return 0;
【c语言指针函数数组题 c语言指针数组编程例题】}
C语言程序设计指针雨数组三道题?第1题
原程序不能实现pt1指向a和b的大者,pt2指向小者的目的,
应该把指向int型的指针p改成int型,只需改变相应的交换程序,其它不用变.
改正后的完整的C语言程序如下(改动的地方见注释)
#includestdio.h
void swap(int *p1,int *p2)
{
int p;//这里定义int型变量p
p=*p1;*p1=*p2;*p2=p;//这里改变相应的交换程序
}
void main(void)
{
int a,b;int *pt1,*pt2;
scanf("%d,%d",a,b);
pt1=a;pt2=b;
if(ab) swap(pt1,pt2);
printf("%d,%d \n",*pt1,*pt2);
}
第2题
第一空填 -1
第二空填 *sn
#includestdio.h
void fun(float *sn,int n)
{
float s=0.0,w,f=-1.0;
int i=0;
for(i=0;i=n;i)
{
f=-1*f;//这里第一空填 -1
w=f/(2*i 1);
s =w;
}
*sn=s;//这里第二空填 *sn
}
int main()//补充的主函数
{
float sn;
int n=10;
fun(sn,n);
printf("数列的前%d项计算结果S=%f",n 1,sn);
return 0;
}
第3题
分析 用二维数组指针p打印二维数组的每一行字符串
#include "stdio.h"
main()
{
char a[4][5]={"ABCD","EFGH","IJKL","MNOP"};
char (*p)[5];
int i,j;
p=a;
for(i=0;i4;i)
{
for(j=0;j4;j) printf("%c",*(*(p i) j));
printf("\n");
}
}
将程序第9行中的"%c"改成"%s",则改变后的程序如下(改动的地方见注释)
#include "stdio.h"
main()
{
char a[4][5]={"ABCD","EFGH","IJKL","MNOP"};
char (*p)[5];
int i,j;
p=a;
for(i=0;i4;i)
{
printf("%s",*(p i));//这里去掉for_j循环
printf("\n");
}
}
C语言问题 关于指针 数组问题这个建议你还是看书,首先你要知道char s[10][10]是什么意思
数组s有10个元素分别是s[0],s[1],s[2]...s[9].
这10个元素分别是指向行的地址 , 即s[0]指向s[0][0],s[0][1]...s[0][10]构成的数组
gets(s[0])就是从键盘读取字符把它放进s的第一行中 。s[0]是第一行的地址,类型为char *
fun函数的作用就是把s数组的字符全部放到p数组中,最后为了使p数组能以字符串的格式输出
需要在p数组最后一个有效元素以后追加‘\0’,而'\0'的值就是0嘛
c语言指针数组题A)int *b[ ]={1,3,5,7,9};//错,指针必须是指向一 个可控的已知内存地址
B)int a[5], *num[5]={a[0], a[1], a[2], a[3], a[4]};//正确
C)int a[ ]={1,3,5,7,9}; int *num[5]={a[0],a[1],a[2],a[3],a[4]};//错,和A一样
D)int a[3][4], (*num)[4]; num[1]=a[1][3];错,num[1]步长为4,代表整行地址,而a[1][3]是获取a的每一行第四列的地址,是单一元素的地址
关于C语言指针 函数 数组的问题/* 看样子你还没有入门呀 。问题分析在注释中了 。*/
// 分析: 依照提示 按部就班
#includestdio.h
#includestdlib.h
#define maxn 10
void swap(int *a, int *b)//② 定义一个交换指针值的过程(swap);
{
int *temp;
temp=(int *)malloc(sizeof(int *));//这里的temp指针不需要分配空间 。
temp=a; //temp的值在相应内存释放前被改变了,那么上一步申请的内存将成为僵尸内存 。
a=b;
b=temp;
free(temp); //前面已经把a的值赋给temp了,这里实际是释放a所指的空间,而这里你是无法知道a是不是动态分配的内存,因此程序不能写成这样 。
return ;
}
void print(int *A[] )//③ 定义一个打印过程(print);
{
int i;
for(i=0;i=maxn-1;i)
printf("%d\n",*A[i]); //A[i]是个指针,最好用 printf("0x%p\n", A[i]);
return ;
}
void fuzhi(int b[],int *a[] )//④ 定义过程(int)将数组b的值赋给a数组各元素所指向的各存储单元 。
{
int i;
for(i=0;i=maxn-1;i)
{
*a[i]=b[i];
}
return ;
}
void pixu(int *a[])//⑤ 过程pixu用交换指针值的方式 , 按a数组所指向的存储单元内容值从小到大地调整各元素指针值,实现"指针"排序;
{
int i;
int j;
for(i=0;i=maxn-2;i)
{
for(j=i 1;j=maxn-1;j)
{
if(*a[j]*a[i])
swap(a[j],a[i]);
}
}
return ;
} //这段代码似乎达不到排序效果吧 , 排序一般用递归来做比较好 。找个快速排序的源代码看看理解一下吧 。
int main()
{
int *a[maxn];
int b[maxn];
int i;
for(i=0;i=maxn-1;i)
b[i]=(maxn-1)-i;
fuzhi(b[maxn],*a[maxn]);
pixu(*a[maxn]);
print(*a[maxn]);
return 0;
}
C语言 数组和指针编程题?// ConsoleApplication3.cpp : 定义控制台应用程序的入口点 。
#include "stdafx.h"
void upCopy(char* new1, char* old)
{
while (*old)
{
if (65=*old*old= 90) *new1=*old;
old;
}
*new1=0;
}
int main()
{
char s1[140];//="";
char s0[]="foiwABEifjCDB";
upCopy(s1, s0);
printf("(%s%s",s1,")");
getchar();
return 0;
}
关于c语言指针函数数组题和c语言指针数组编程例题的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读