菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
151
0

C语言程序

原创
05/13 14:22
阅读数 10256

 

程序01                                                                                                                                             

实现功能:比较两个数组相同元素的个数

 

 1 #include<stdio.h>
 2 //#define min(a,b) (a>b)?b:a
 3 char i;
 4 int find(int s[], int m, int n)
 5 {
 6         int j,c=0,t[100];
 7 //      j = min(m, n);
 8         printf("输入数组t:");
 9         for (i = 0; i < n; i++)
10         {
11                 scanf("%d",&t[i]);
12                 for (j = 0; j < m; j++)
13                 {
14                         if (t[i] == s[j])
15                         {
16                                 c++;
17                         }
18                 }
19         }
20         return c;
21 
22 }
23 int main(void)
24 {
25         int s[100];
26         int C;
27         int  m,n;
28         printf("输入m:");
29         scanf("%d", &m);
30         printf("输入S:");
31         for (i = 0; i < m; i++)
32         {
33                 scanf("%d", &s[i]);
34         }
35         printf("输入n:");
36         scanf("%d",&n);
37         C=find(s, m, n);
38         printf("输出C=%d\n", C);
39         return 0;
40 }
View Code

 程序02                                                                                                                                        

int i, a[] = {3,4,5,6,7,3,7,4,4,6}; 
for (i = 0; i <= 9; i++) 
{ 
 printf("%d\n", a[i]); 
}



int i, a[] = {3,4,5,6,7,3,7,4,4,6}; 
for (i = 0; i <= 9; i++) 
{ 
 printf("%d\n", *(a+i)); 
} 
它的结果和作用完全一样
View Code
int i, *pa, a[] = {3,4,5,6,7,3,7,4,4,6}pa = a; 
for (i = 0; i <= 9; i++) 
{ 
printf("%d\n", *pa); 
pa++; /*注意这里,指针值被修改*/ 
}

你把循环体{}中的 pa改成 a 试试。你会发现程序编译出错,不能成功。看来指针和数组名还是不同的。其实上面的指针是指针变量,而数组名只是一个指针常量。这个代码与上面的代

码不同的是,指针 pa 在整个循环中,其值是不断递增的,即指针值被修改了。
数组名是指针常量,其值是不能修改的,因此不能类似这样操作:a++。

 程序03                                                                                                                                     

求最大字符串

 1 #include <stdio.h>  /*使用库函数printf和gets*/
 2 #include <string.h>/*使用库函数strcmp*/
 3 #include <malloc.h>/*使用库函数malloc和free*/
 4 #define N 5
 5 int main()
 6 {
 7     char *str[N];
 8     int index, i;
 9     printf("请输入%d个字符串,每个字符串以回车结束:\n", N);
10     for (i = 0; i < N; i++)
11     {
12         str[i] = (char *)malloc(80);
13         gets(str[i]);
14     }
15     index = 0;
16     for (i = 1; i < N; i++)
17     {
18         if (strcmp(str[i], str[index]) > 0)
19             index = i;
20     }
21     printf("最大的字符串是%s\n", str[index]);
22     for (i = 0; i < N; i++)
23     {
24         free(str[i]);
25     }
26 
27     return 0;
28 }
View Code

 程序04                                                                                                                                    

求平面上的距离

 1 #include<stdio.h>
 2 #include<math.h>
 3 struct point
 4 {
 5     double x;
 6     double y;
 7 };
 8 double distance(struct point p1,struct point p2)
 9 {
10     double x, y, d;
11     x = p2.x - p1.x;
12     y = p2.y - p1.y;
13     d = sqrt(x*x+y*y);
14     return d;
15 }
16 int main(void)
17 {
18     struct point pa, pb;
19     printf("Enter pa:");
20     scanf("%lf%lf",&pa.x,&pa.y);
21     printf("Enter pb:");
22     scanf("%lf%lf",&pb.x,&pb.y);
23     printf("distance:%lf\n",distance(pa,pb));
24 }
View Code

 程序05                                                                                                                                  

静态链表:用完后不能释放。大多数用动态链表。

 1 //建立一个存储三个学生信息的简单链表
 2 #include<stdio.h>
 3 #define NULL 0
 4 struct Student
 5 {
 6     int iNumber;//学号
 7     float score;//成绩
 8     struct Student *pNext;//指向下一个节点的指针
 9 };
10 int main()
11 {
12     struct Student stu1,stu2,stu3,*head,*p;
13     stu1.iNumber=101;stu1.score=97;
14     stu2.iNumber=102;stu2.score=89.5;
15     stu3.iNumber=103;stu3.score=78;
16     head=&stu1;//指定头结点
17     p=head;//给指针变量赋值
18     stu1.pNext=&stu2;
19     stu2.pNext=&stu3;
20     stu3.pNext=NULL;
21     do{
22         printf("%d%5.1f\n",p->iNumber,p->score);//输出当前p指向的结点的数据
23         p=p->pNext;//p指向下一个结点
24     }while(p!=NULL);
25     return 0;
26 }
View Code

 程序06

i=2

int a[3]={0,1,2};
int *p,*q;    
int i;
p = a;    
q = &a[2];
i = a[q-p];
printf("p=%d\n",p);
printf("q=%d\n",q);
printf("q-p=%d\n",q-p);
printf("i=%d\n",i);    
system("pause");   
 return 0;
View Code

 

 程序05                                                                                                                                  

发表评论

0/200
151 点赞
0 评论
收藏