回顾大一·C语言编程10.1(1)(2)+10.2+10.3+10.4(1)(2)

来源:互联网 发布:仙剑奇侠传 知乎 编辑:程序博客网 时间:2024/06/04 20:11

以下两个程序的功能是输入三个整数,按由小到大的顺序输出。

#include <stdio.h> //程序Amain(){int a,b,c,*p1,*p2,*p3,*t;scanf("%d,%d,%d",&a,&b,&c);p1=&a;p2=&b;p3=&c;if(*p1>*p2) {t=p1;p1=p2;p2=t;}if(*p1>*p3) {t=p1;p1=p3;p3=t;}if(*p2>*p3) {t=p2;p2=p3;p3=t;}printf("%d,%d,%d\n",*p1,*p2,*p3);}

#include <stdio.h>  //程序Bmain(){int a,b,c,*p1,*p2,*p3,t;scanf("%d,%d,%d",&a,&b,&c);p1=&a;p2=&b;p3=&c;if(a>b) {t=*p1;*p1=*p2;*p2=t;}if(a>c) {t=*p1;*p1=*p3;*p3=t;}if(b>c) {t=*p2;*p2=*p3;*p3=t;}printf("%d,%d,%d\n",a,b,c);}

以下两个程序的功能是通过指针变量的操作输出数组元素的值。

#include <stdio.h>void main(){ int a[5];  int *p,i;  printf("enter 5 integer numbers:");  for(i=0;i<5;i++)    scanf("%d",&a[i]);  for(p=a;p<(a+5);p++)    printf("%d ",*p);   printf("\n");}

#include <stdio.h>void main(){ int i,a[5] ,*p=a;  printf("please enter 5 numbers:");  for(i=0;i<5;i++)scanf("%d",p++);p=a;  for(i=0;i<5;i++,p++)    printf("%d ",*p);  printf("\n");}

下列程序的功能为:通过调用函数实现对所输入的任意两个整数,交换它们的值


#include<stdio.h>swap(int *p1,int *p2)  //1{ int p;         //2p=*p1;       //3*p1=*p2;      //4*p2=p;       //5}main()             //6{int a,b;    //7scanf("%d%d",&a,&b); //8printf("a=%d\tb=%d\n",a,b); //9swap(&a,&b); //10printf("a=%d\tb=%d\n",a,b); //11}

下列程序的功能为:通过指针变量的自增运算,扫描一维数组中全部元素的地址,并引用它们各自的值,同时对数组中的正整数求和。


#include "stdio.h"#define N 10main(){  int i,k,a[N],sum,count,*p;  //所有变量和数组a的基类型都是int    count=sum=0;   do   { printf(" input k: \n");     scanf("%d",&k);      //  总共要求输入k个数   } while (k<=0||k>N);    //  直到型循环确保0≤k≤N   printf(" input a[0]~a[%d]:\n",k-1);  for (p=a;p<a+k;p++)   //  指针p指向数组a的首地址,p依次求出后继值  { scanf("%d",&a[p]);    //  此处的p等价于&a[i]    if (a[p]>0)     //  引用指针变量p所指变量的值    { sum+=*p;     //  指针p所指变量*p的值>0者相加      count++;     // 正整数个数统计    }  }   p=a;   // 指针复位,重新指向数组a 的首地址  while (p<a+k)    printf("%-5d",p);   // 先执行*p,取出所指变量的值,再指向数组的下一元素  printf("\n Numberof above >0 is : %d\n",count);  printf(" Sum of >0 is : %d\n",sum);}


先分析程序运行结果,然后通过单步执行方式,观察每一步执行情况及运行结果。


#include<stdio.h>main(){ int a[]={1,3,5,7,9},*p=a;printf("%d",(*p++));printf("%d",(*++p));printf("%d\n",(*++p)++); }


理解指针变量自加的作用,指针变量的值与指针变量所指向变量的值的区别


#include<stdio.h>main(){int a[10]={1,2,3,4,5,6,7,8,9,10}; int *p;for(p=a;p<a+10;p++){printf("address=%x\t",p);printf("value=%d\n",*p);}printf("%d\t",p);printf("%d\t",*p);}


原创粉丝点击