c语言实现cd
发布时间: 2025-04-01 21:19:00
1. 数组指针c语言的问题,这道题的cd选项等效成什么
知识点:
(1) int (*cp)[5], 这里有小括号,所以 cp 是1个指针,(又叫行指针),注意,是一个指针,后面[5]表示这个指针用于指向有5列的2维数组。 cp=c; 说明,c 是2维数组,它每行有5列元素,现在让cp指向了第一行。 cp=&c[0][0]; 若 cp+j 则指向 第 j 行。
(2) C语言中,方括号实际上也是运算符,记住衡等式 a[i] == *(a+i),用它,可以变换[] 与 *。 这里 *号 是求值。
好了。假定, int c[4][5]={0,1,2,3,4,10,11,12,13,14,
20,21,22,23,24,30,31,32,33,34},(*cp)[5]; cp=c;
变换 9.12 的 c,d:
*(cp+1)+3 = (c[1])+3= &c[1][3]; 是地址。 *(*(cp+1)+3) 是 c[1][3] 的值。
*(*cp+2)= *(*(cp+0)+2)=*(c[0]+2)=c[0][2]; 是元素c[0][2]的值。
我们来输出:
printf ("%d -- %d\n",*(*(cp+1)+3), c[1][3]);
printf ("%d -- %d\n",*(*cp+2),c[0][2]);
输出:
13 -- 13
2 -- 2
2. 用C语言编程序输出a,b,ab,c,d,ac,bc,abc,d,ad,bd,cd,abd,acd,
atmystate用的是递归方式实现,我用非递归实现如下:
#include<stdio.h>
#include<string.h>
#defineSTR "abcd" //可以换成abcdef或其他字符,只要不超过8
intmain()
{
inti=0;
intj=0;
inttemp=0;
char*p=STR;
intlen=strlen(STR); //不包括末尾的'