1.这题应该还可以吧。
#include<stdio.h> void sum(int *p)//所有元素求和并输出结果 { int i,sum=0; for(i=0;i<5;i++) sum=sum+*p++; printf("求和结果为%d",sum); } int main() { int a[]={1,3,5,7,9}; int *p=a; sum(p); return 0; }
2.难度瞬间上升了好多。。。
#include<stdio.h> int main()////由小到大的顺序输出5个字符 { char a[5],t; char *p=a; int i,j; printf("请输入字符串(至多5个字符):"); for(i=0;i<5;i++) scanf("%c",&a[i]); for(j=0;j<5;j++) { for(i=4;i>0;i--) { if(a[i]<a[i-1]) { t=p[i]; p[i]=p[i-1]; p[i-1]=t; } } } printf("由小到大为:"); for(i=0;i<5;i++) printf("%c ",*p++); return 0; }
3.
#include<stdio.h> #include<stdlib.h> int main()//空间初始化同时打印输出空间内容 { int a[10],i; int *p=(int *)malloc(10*sizeof(int)); printf("请输入10个整数:"); for(i=0;i<10;i++) { scanf("%d",&p[i]); } printf("初始化空间内容:"); for(i=0;i<10;i++) { printf("%d ",p[i]); } free(p); return 0; }
4.这题不知道是程序自定还是用户输入,但考虑到要输入100个,还是自定吧。
#include<stdio.h> int main()//空间初始化,同时打印输出空间内容 { int a[10][10]; int *p[10]; int i,j; for(i=0;i<10;i++) p[i]=a[i]; for(i=0;i<10;i++) { for(j=0;j<10;j++) { p[i][j]=(i+1)*(j+1); } } for(i=0;i<10;i++) { for(j=0;j<10;j++) { printf("%d ",*(a[i]+j)); } printf("\n"); } return 0; }
啊~,有点混乱了呢。。。
(上了课之后思路清晰了点,希望能把指针这个重难点学的清楚点)