编写函数顺序输出一维数组的所有元素
直接引用方式和间接引用方式
来个for循环
void print1(int a[],int n)
{
for(int i=0;i<n;i++)
printf("%d ",a[i]);
}
void print2(int *a,int n)
{
for(int i=0;i<n;i++)
{
printf("%d ",*a);
a++;
}
}
基于new bing部分指引作答:
可以使用以下两种方式编写函数,顺序输出一维数组的所有元素:
直接引用方式是指函数通过传递数组名及数组长度来获得数组中的元素,并直接对数组进行引用。下面是一个使用直接引用方式输出数组元素的例子:
#include <stdio.h>
void printArray(int arr[], int len) {
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int myArr[] = {1, 2, 3, 4, 5};
int len = sizeof(myArr) / sizeof(myArr[0]);
printArray(myArr, len);
return 0;
}
在这个例子中,我们声明了一个名为 printArray
的函数,它有两个参数:arr
参数是一个整型数组,len
参数表示该数组的长度。然后,在 main
函数中,我们定义了一个名为 myArr
的整型数组,将其初始化为 {1, 2, 3, 4, 5}
,并求出了数组的长度。最后,我们调用 printArray
函数,将 myArr
数组及其长度作为参数传入,实现了依次输出数组中元素的功能。
间接引用方式是指函数通过传递数组的地址来获得数组中的元素,并通过指针对数组进行引用。下面是一个使用间接引用方式输出数组元素的例子:
#include <stdio.h>
void printArray(int *arrPtr, int len) {
for (int i = 0; i < len; i++) {
printf("%d ", *(arrPtr + i));
}
printf("\n");
}
int main() {
int myArr[] = {1, 2, 3, 4, 5};
int len = sizeof(myArr) / sizeof(myArr[0]);
printArray(myArr, len);
return 0;
}
在这个例子中,我们同样声明了一个名为 printArray
的函数,它有两个参数:arrPtr
参数是一个整型指针,len
参数表示该指针所指向的数组的长度。然后,在 main
函数中,我们定义了一个名为 myArr
的整型数组并初始化它。接下来,我们将 myArr
数组名作为参数传递给 `print
编写程序:从键盘任意输入一个字符串,输出该字符串。然后,将该字符串逆序存放后再输出,要求用字符指针完成。(提示:逆序存放的函数接口:void invstr(char *s))
#include<stdio.h>
#include<string.h>
void invstr(char *s)
{
char b;
int len;
len=strlen(s); /*获取该字符串的长度*/
for(int i=0;i<len/2;i++){ /*该循环的目的是每次将字符串的头和尾换一下位置*/
b=*(s+i); /*字符串的第i个元素的地址暂时放到b里*/
*(s+i)=*(s+len-1-i); /*将字符串的倒数第i个元素换到第i个元素*/
*(s+len-1-i)=b; /*再将b存放的地址放回倒数第i个元素*/
}
}
int main()
{
char a[1000];
gets(a); /*输入字符串*/
printf("%s\n",a); /*正序输出一次*/
invstr(a); /*运行函数*/
printf("%s",a); /*逆序输出*/
}
利用指针编程,用指针方法编写一函数,实现两个字符串的比较。编程点拨:即自己编写一个strcmp函数:strcmp(s1,s2),如果s1= s2,返回值为0,如果s1≠s2, 返回它们二者第一个不同字符的ASCII码差值(如"BOY"与"BAD", 第二个字母不同,"O"与"A"之差为79-65=14)。如果要s1>s2,则输出正值,如果s1<s2,则输出负值。
#include<stdio.h>
#include<string.h>
void strcmp(char *s1,char *s2)
{
int len,i=0,sum=0,lenmax;
lenmax = strlen(s1);
len = strlen(s2);
if(lenmax < len){
lenmax = len;
}
for(i=0;i<lenmax and sum==0;i++){
if(*(s1+i) > *(s1+i)){
sum = *(s1+i) - *(s2+i);
}
if(*(s1+i) < *(s2+i)){
sum = ( - (*(s1+i) - *(s2+i)));
}
}
printf("%d",sum);
}
int main()
{
char s1[1000],s2[1000];
gets(s1);
gets(s2);
strcmp(s1,s2);
}
def print_array(arr):
"""
顺序输出一维数组的所有元素,包括直接引用方式和间接引用方式
:param arr: 一维数组
:return:
"""
# 直接引用方式
for i in arr:
print(i)
# 间接引用方式
p = arr
for i in range(len(arr)):
print(p[i])