首页 > 编程语言 >实验3 C语言函数应用编程

实验3 C语言函数应用编程

时间:2024-04-27 16:22:06浏览次数:29  
标签:10 函数 int 编程 long C语言 func printf include

1. 实验任务1

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<time.h>
 4 #include<windows.h>
 5 #define N 80
 6 
 7 void print_text(int line,int col,char text[]);
 8 void print_spaces(int n);
 9 void print_blank_lines(int n);//函数声明
10 
11 int main()
12 {
13     int line,col,i;
14     char text[N]="hi,April~";
15 
16     srand(time(0));//以当前系统时间作为随机种子
17 
18     for(i=1;i<=10;++i)
19     {
20         line=rand()%25;
21         col=rand()%80;
22         print_text(line,col,text);
23         Sleep(1000);//暂停1000ms
24     }
25     system("pause");
26     return 0;
27 }
28 // 打印n个空格 
29 void print_spaces(int n) {
30     int i;
31     
32     for(i = 1; i <= n; ++i)
33         printf(" ");
34 }
35 
36 // 打印n行空白行
37 void print_blank_lines(int n) {
38     int i;
39     
40     for(i = 1; i <= n; ++i)
41         printf("\n");
42  } 
43 
44 // 在第line行第col列打印一段文本 
45 void print_text(int line, int col, char text[]) {
46     print_blank_lines(line-1);      // 打印(line-1)行空行 
47     print_spaces(col-1);            // 打印(col-1)列空格
48     printf("%s", text);         // 在第line行、col列输出text中字符串
49 }
50 //功能:随机在第m行第n列打印输出一段文字(0<m<24,0<n<79),输完一次,暂停1秒,循环10次

 

功能:随机在第m行第n列打印输出一段文字(0<m<24,0<n<79),输完一次,暂停1秒,循环10次
2. 实验任务2
task2_1.c
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 long long fac(int n);
 4 
 5 int main()
 6 {
 7     int i,n;
 8 
 9     printf("Enter n:");
10     scanf("%d",&n);
11 
12     for(i=1;i<=n;++i)
13         printf("%d! = %lld\n",i,fac(i));
14 
15     system("pause");
16     return 0;
17 }
18 long long fac(int n)
19 {
20     static long long p=1;//静态局部变量:保留上次结果
21     printf("p=%lld\n",p);
22     p=p*n;
23 
24     return p;
25 }

增加一行代码:printf("p = %lld\n", p);

task2_2.c

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int func(int ,int );
 4 
 5 int main()
 6 {
 7     int k=4,m=1,p1,p2;
 8 
 9     p1=func(k,m);
10     p2=func(k,m);
11     printf("%d,%d\n",p1,p2);
12 
13 system("pause");
14     return 0;
15 }
16 int func(int a,int b)
17 {
18     static int m=0,i=2;
19 
20     i+=m+1;//  i=i+m+1  i=3 i= 3+8+1=12
21     m=i+a+b;//m=3+4+1 m=12+4+1
22 
23     return m;
24 }
25 //p1=8  p2=17

static 的功能:保留变量的值,再次进入函数,static 变量值为上次函数运行终止时的值

3. 实验任务3

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 long long  func(int n);
 4 int main()
 5 {
 6      int n;
 7     long long f;
 8     while(scanf("%d",&n)!=EOF)    
 9     {
10         f=func(n);
11         printf("n=%d,f=%lld\n",n,f);
12     }
13     system("pause");
14     return 0;
15 }
16 
17 long long func(int x)
18 {
19     long long ans=0;
20     
21     if(x==1)
22         ans=1;
23     
24     if(x>0&&x<33)
25         ans=2*func(x-1)+1;
26         
27     return ans;
28 }

 

4. 实验任务4

递归:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int func(int n,int m);
 4 int main()
 5 {
 6     int n,m;
 7 
 8     while(scanf("%d%d",&n,&m)!=EOF)
 9         printf("n= %d,m= %d,ans= %d\n",n,m,func(n,m));
10 
11     system("pause");
12     return 0;
13 }
//func 代码 14 int func(int n,int m) 15 { 16 int ans; 17 18 if(n<m) 19 ans=0; 20 else if(m==n) 21 ans=1; 22 else if(m==1) 23 ans=n; 24 else if(m==0) 25 ans=1; 26 else 27 ans=func(n-1,m)+func(n-1,m-1); 28 29 return ans; 30 }

迭代:

 

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int func(int n,int m);
 4 int main()
 5 {
 6     int n,m;
 7 
 8     while(scanf("%d%d",&n,&m)!=EOF)
 9         printf("n= %d,m= %d,ans= %d\n",n,m,func(n,m));
10 
11     system("pause");
12     return 0;
13 }
//func代码 14 int func(int n,int m) 15 { 16 int s=1,j=0,a=1,b=1,c=1; 17 18 if(m==0) 19 s=1; 20 else if(m>n) 21 s=0; 22 else 23 { 24 for(j=n-m;n>0;) 25 { 26 a*=n--; 27 if(m>0) 28 b*=m--; 29 if(j>0) 30 c*=j--; 31 } 32 s=a/(b*c); 33 } 34 return s; 35 }

 

5. 实验任务5

 1  #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<math.h>
 4 void plate(char from,char to,char temp ,unsigned int n,int *p);
 5 void trans(char from,char to,unsigned int n,int *p);
 6 int main()
 7 {
 8     unsigned int n;
 9     while(scanf("%d",&n)!=EOF)
10         {
11             int s=0;
12             plate('A','C','B',n,&s);
13             printf("\n一共移动了%d次\n\n",s);
14         }    
15     system("pause");
16     return 0;
17 }
18 void plate(char from,char to,char temp ,unsigned int n,int *p)
19 {
20     if(n==1)
21             trans(from,to,n,p);
22     else 
23         {
24             plate(from,temp,to,n-1,p);
25             trans(from,to,n,p);
26             plate(temp,to,from,n-1,p);
27     }
28 
29 }
30 void trans(char from,char to,unsigned int n,int *p)
31 {
32     printf("%d: %c --> %c\n",n,from,to);
33      *p=*p+1;
34 }

 

 

6. 实验任务6

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 long func(long s);
 4 int main()
 5 {
 6      long s, t;
 7 
 8     printf("Enter a number: ");
 9     while (scanf("%ld", &s) != EOF) {
10         t = func(s); // 函数调用
11         printf("new number is: %ld\n\n", t);
12         printf("Enter a number: ");
13     }
14 
15     system("pause");
16     return 0;
17 }
18 long func(long s)
19 {
20     int i=1,m=0,j=1;
21     while(s!=0)
22     {
23         i=s%10;
24         if(i%2!=0)
25         {
26             m=m+i*j;
27             j=j*10;
28             
29         }
30         s=s/10;
31     }
32 
33     return m;
34 }

 

7. 实验任务7

 

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include <time.h>
 4 int main()
 5 {
 6     int i,j,k,a,b,y[10];
 7 
 8     srand (time(0));
 9     i=rand()%10+1;
10     printf("初始值:%d\n",i);
11 
12         for(i,k=1;k!=0;++i)
13         {
14             a=i*i;
15             b=i*i*i;
16             for(j=0;j<10;++j)
17             {
18                 if(a)
19                     {
20                         y[j]=a%10;
21                         a/=10;
22                 }
23                 else if(b)
24                 {
25                     y[j]=b%10;
26                     b/=10;
27                 }
28                 else 
29                     break;
30             }
31             if(j<10)
32                 continue;
33             else 
34                 for(j=0;j<10;++j)
35                 {
36                     for(a=0;a<10;++a)
37                         if(y[j]==y[a]&&j!=a)
38                             break;
39                     if(a<10)
40                         break;        
41                 }        
42                      if(j==10)
43                     {
44                         printf("满足条件:%d",i);
45                         k--;                
46                     }                
47         }
48 
49     system("pause");
50     return 0;
51 }

 

 

 

 

 

 

 

标签:10,函数,int,编程,long,C语言,func,printf,include
From: https://www.cnblogs.com/zbb07/p/18162184

相关文章

  • Python (GUI编程)模块 使用方法
    GraphicalUserInterface,简称GUI,中文名为图形用户界面,又称图形用户接口,是一种通过图形元素(如按钮、文本框、图像等)来与计算机程序进行交互的方式。与传统的命令行界面相比,GUI更加直观和易于使用,因为用户可以直接通过点击、拖拽等方式来完成任务,而无需记忆和输入复杂的命令。GUI......
  • C语言函数编程
    实验1点击查看代码#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明voidprint_spaces(intn);//函数声明voidprint_blank_lines(intn);/......
  • HIVE SQL 聚合函数与 rows between / range between详解
    HIVESQL聚合函数与rowsbetween/rangebetween详解名词解释unbounded:无边界preceding:根据排序后的结果集选定的当前数据行往前following:根据排序后的结果集选定的当前数据行往后unboundedpreceding:根据排序后的结果集选定的当前数据行往前,即到初始行结束npreceding:往......
  • 实验3 C语言函数应用编程
    实验任务1#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明voidprint_spaces(intn);//函数声明voidprint_blank_lines(intn);//函数声......
  • 面向对象编程
    在面向对象编程的世界里,程序中的数据和操作数据的函数是一个逻辑上的整体,我们称之为对象,对象可以接收消息,解决问题的方法就是创建对象并向对象发出各种各样的消息;通过消息传递,程序中的多个对象可以协同工作,这样就能构造出复杂的系统并解决现实中的问题面向对象编程:把一组数据和处......
  • 编程心得
    在没进一中信息学竞赛班之前,我并不觉得自己是一个菜鸟,但当我第一次接触它时,我妥协了。。。前面的代码还可以,样例基本都是随便过的,直到学到循环开始,我蒙圈了。什么“for()”“while()”“多重循环”等等等等,让我不知所以然,但也没办法,只能依靠老师和伙伴这么凑活着学。在放寒假的第......
  • access数据库批量更新中无法使用replace,出现“表达式中 'replace' 函数未定义”的替代
    如果我们想要批量修改数据库table_name表中aa字段中数据,将“|bbbb”删除sql的批量更新中,通用语法是:UPDATEtable_nameSETaa=REPLACE(aa,'|bbbb','')但是,如果是access数据库,就可能出现以下的报错信息:MicrosoftJETDatabaseEngine错误'80040e14'表达式中'replace'函......
  • 数据结构_链表_双向循环链表的初始化、插入、删除、修改、查询打印(基于C语言实现)
    版本:2024年4月26日V1.0发布于博客园/***@filename:DoubleLinkedList.c*@brief:实现双向循环链表的相关功能*@author:[email protected]*@date:2024/04/26*@version:1.0*@note:*CopyRight(c)2023-2024RISE_AND......
  • 实验3 C语言函数应用编程
    task1.c1#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN8067voidprint_text(intline,intcol,chartext[]);//函数声明8voidprint_spaces(intn);//函数声明9voidpri......
  • 自定义单链表队列的基本接口函数(非循环队列)
    单链表构建队列的接口函数/********************************************************************文件名称: 单链表构建队列的接口函数文件作者:[email protected]创建日期:2024/04/26文件功能:对单链表循环队列的增删改查功能的定义注意事项:NoneCop......