暑假作业第一周

c语言:

1.使用函数求奇数和:输入一批正整数(以零或负数为结束标志),求其中所有奇数的和。要求定义和调用函数even(n),判断整数的奇偶性,当n为偶数时返回1,否则返回0。
 #include<stdio.h> 
even(int n) 
{  if(n%2) 
return(1); 
else  return(0); 

main() {  int n,sum=0;  scanf("%d",&n);  while(n)  {  if(even(n))  sum+=n;  scanf("%d",&n);   }   printf("%d",sum); } 

2.使用函数计算两点间的距离:给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留两位小数)。要求定义和调用函数dist(x1,y1,x2,y2)计算两点间的距离。 

#include<stdio.h> #include<math.h> double dist(double x1,double y1,double x2,double y2) {  return(sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))); } main() {  int x1,y1,x2,y2;  scanf("%d%d%d%%d",&x1,&y1,&x2,&y2);  printf("%.2f",dist(x1,y1,x2,y2)); }

 3.使用函数判断完全平方数:输入一个正整数n,判断其是否为完全平方数,如果是,则输出”YES”,如果不是,则输出”NO”。要求定义并调用函数IsSquare(n),判断n是否为完全平方数。

 #include<stdio.h> lsleap(int n) {  int i,a=0;  for(i=0;i<=n;i++)  if(i*i==n)  a=1;  return(a); } main() {  int n;  scanf("%d",&n);  if(lsleap(n))  printf("yes");  else  printf("no"); } 

4.编写一个函数IsLeap(n),其功能是:检验一个输入的四位数字是否是闰年,如果是闰年则返回1,否则返回0。在主函数中从键盘输入一个四位数m,调用该函数进行判断,如果是则输出” yes”,否则输出”no”(提示:如果该四位数能被4整除但不能被100整除,则是闰年;如果该四位数能被400整除,则是闰年) 

#include<stdio.h> lsleap(int n) {  if(n%4==0&&n%100!=0||n%400==0)  return(1);  else  return(0); } main() {  int n;  scanf("%d",&n);  if(lsleap(n))  printf("yes");  else  printf("no"); }

 5.输入一个正整数n(1<n<10),再输入n个整数,存入第1个数组中;然后输入一个正整数m(1<m<10),再输入m个整数,存入第2 个数组中,试编写程序找出并输出所有不是这两个数组共有的元素。 

#include"stdio.h" main() {  int a[10],b[10],m,n,i,j,flag;  scanf("%d",&m);  for(i=0;i<=m;i++)  scanf("%d",&a[10]);  scanf("%d",&n);  for(i=0;i<n;i++)  scanf("%d",&b[i]);  for(i=0;i<m;i++)  {  flag=1;  for(j=0;j<n;j++)  if(a[i]==b[j])  flag=0;  if(flag)   printf("%d",a[i]);  }  for(i=0;i<n;i++)  {  flag=1;  for(j=0;j<m;j++)  if(a[j]==b[i])  flag==0;  if(flag)   printf("%d",b[i]);  } }

 6.任意输入两个字符串,逐个比较两个字符串对应位置上的字符,并把ASCII值大或相等的字符依次存放到新的数组c中,形成一个新的字符串并输出,要求用函数编程现。

 #include<stdio.h> char bi(char a,char b) {  return(a>b?a:b); } main() {  char a[10],b[10],c[10];  int i;  scanf("%s",&a);  scanf("%s",&b);  for(i=0;i<10;i++)  {  c[i]=bi(a[i],b[i]);  }  printf("%s",c); }

 7.通过键盘输入下面表格中学生的信息,编程计算并输出4门课程平均成绩最高的学生记录。其中,m表示男,f表示女。

 #include<stdio.h> struct student {  int num;  char name[10];  char xing;  struct birthday  {  int year;  int mouth;  int day;  }a;  int cheng[4]; }; main() {  struct student stu[4]={{1,"wanggang",'m',.a={1991,5,19},72,83,90,82},  {2,"liming",'m',.a={1992,8,20},88,92,78,78},  {3,"wangli",'f',.a={1991,9,19},98,72,89,66},  {4,"chenghong",'f',.a={1992,3,22},87,95,78,90},  };  int i,j;  int avger[4],sum[4]={0};  for(i=0;i<4;i++)  {  for(j=0;j<4;j++)  sum[i]+=stu[i].cheng[j];  avger[i]=sum[i]/4;  }  int max=0;  for(i=0;i<4;i++)  if(max<avger[i])  max=avger[i];  for(i=0;i<4;i++)  {  if(max==avger[i])  {  printf("%d %s %c %d %d %d %d %d %d %d",stu[i].num,stu[i].name,stu[i].xing,stu[i].a.year,stu[i].a.mouth,stu[i].a.day,stu[i].cheng[0],stu[i].cheng[1],stu[i].cheng[2],stu[i].cheng[3]);  }  } } 

8.编程统计候选人的得票数。设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个得票的候选人的名字,若选民输错候选人姓名,则按废票处理。选民投票结束后程序自动显示各候选人的得票结果和废票信息。要求用结构体数组candidate表示3个候选人的姓名和得票结果。

 #include<stdio.h> #include<string.h> struct man {  char name[10];  int shu; }m[3]={"zhang",0,"li",0,"wang",0}; main() {  int i,name[10],j;  for(i=0;i<10;i++)  {  scanf("%s",name);  for(j=0;j<3;j++)  {  if(strcmp(name,m[j].name)==0)  m[j].shu+=1;  }  }  for(i=0;i<3;i++)  printf("%s %d\n",m[i].name,m[i].shu); } 

9.编写程序,求出n1至n2自然数之和。要求使用递归方法。

 #include<stdio.h> he(int n,int m) {  int sum=0;  if(n==m)  return(n);  else  return(n+he(n+1,m)); } main() {  int n,m;  scanf("%d%d",&n,&m);  printf("%d",he(n,m)); } 

10.递归实现求Fibonacci数列。f(n)=f(n-2)+f(n-1)(n>1)其中f(0)=0,f(1)=1。

 #include<stdio.h> f(int n) {  if(n==0||n==1)  return(1);  else  return(f(n-2)+f(n-1)); } main() {  int n;  scanf("%d",&n);  printf("%d",f(n)); }

二级练习:

#include  <stdio.h>
#define    N    5
typedef struct  student {
  long  sno;
  char  name[10];
  float  score[3];
} STU;
void fun(char  *filename, STU  n)
{ FILE  *fp;
/**********found**********/
  fp = fopen(filename, "rb+");
/**********found**********/
  fseek(fp, -(long)sizeof(STU), SEEK_END);
/**********found**********/
  fwrite(&n, sizeof(STU), 1, fp);
  fclose(fp);
}
void main()
{ STU  t[N]={ {10001,"MaChao", 91, 92, 77}, {10002,"CaoKai", 75, 60, 88},
             {10003,"LiSi", 85, 70, 78},    {10004,"FangFang", 90, 82, 87},
             {10005,"ZhangSan", 95, 80, 88}};
  STU  n={10006,"ZhaoSi", 55, 70, 68}, ss[N];
  int  i,j;      FILE  *fp;
  fp = fopen("student.dat", "wb");
  fwrite(t, sizeof(STU), N, fp);
  fclose(fp);
  fp = fopen("student.dat", "rb");
  fread(ss, sizeof(STU), N, fp);
  fclose(fp);
  printf("\nThe original data :\n\n");
  for (j=0; j<N; j++)
  {  printf("\nNo: %ld  Name: %-8s      Scores:  ",ss[j].sno, ss[j].name);
     for (i=0; i<3; i++)  printf("%6.2f ", ss[j].score[i]);
     printf("\n");
  }
  fun("student.dat", n);
  printf("\nThe data after modifing :\n\n");
  fp = fopen("student.dat", "rb");
  fread(ss, sizeof(STU), N, fp);
  fclose(fp);
  for (j=0; j<N; j++)
  {  printf("\nNo: %ld  Name: %-8s      Scores:  ",ss[j].sno, ss[j].name);
     for (i=0; i<3; i++)  printf("%6.2f ", ss[j].score[i]);
     printf("\n");
  }
}
   


#include <stdio.h>
#include <stdlib.h>
typedef  struct  aa
{  int  data;
   struct  aa  *next;
} NODE;
NODE *Creatlink(int  n, int  m)
{  NODE  *h=NULL, *p, *s;
   int  i;
/**********found***********/
   p=(NODE *)malloc(sizeof(NODE));
   h=p;
   p->next=NULL;
   for(i=1; i<=n; i++)
   {  s=(NODE *)malloc(sizeof(NODE));
      s->data=rand()%m;      s->next=p->next;
      p->next=s;             p=p->next;
   }
/**********found***********/
   return  h;
}
void outlink(NODE  *h)
{  NODE  *p;
   p=h->next;
   printf("\n\nTHE  LIST :\n\n  HEAD ");
   while(p)
   {  printf("->%d ",p->data);
      p=p->next;
   }
   printf("\n");
}
void main()
{  NODE  *head;
   head=Creatlink(8,22);
   outlink(head);
}


 

#include<string.h>
#include<stdio.h>
#define N 80
int fun(char *s)
{
  int i,n=0;
  for(i=0;s[i]!='\0';i++)
  if(s[i]!=' '&&(s[i]!=' '||s[i]!='\0'))
  n++;
  return(n);
}
void main()

  FILE *wf;
  char line[N]; 
  int num=0;
  printf("Enter a string:\n "); 
  gets(line);
  num=fun(line);
  printf("The number of word is:%d\n\n ",num);
/******************************/
  wf=fopen("out.dat","w");
  fprintf(wf,"%d",fun("a big car"));
  fclose(wf);
/*****************************/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
暑假是一个很好的时间用来学习和实践STM32的采样技术。STM32是一系列基于ARM Cortex-M内核的微控制器,它具有丰富的外设和强大的性能,非常适合用于各种采样应用。 在开始之前,你可以先了解一些基本概念和原理,例如模拟信号、数字信号、采样定理等。然后,你可以选择一个适合你的STM32微控制器型号,并准备好开发工具,如Keil MDK或STM32CubeIDE。 接下来,你可以学习如何配置和使用STM32的模拟外设,如ADC(模数转换器)来进行采样。ADC可以将模拟信号转换为数字信号,以便微控制器进行处理和分析。你可以查阅相关的参考手册和用户指南,了解如何使用ADC的配置寄存器、DMA(直接内存访问)和中断等功能。 在学习过程中,你可以尝试一些简单的采样应用,例如读取电压、温度或其他传感器的数据。你还可以学习如何配置ADC的采样率、分辨率和参考电压等参数,以满足你的应用需求。 最后,你可以通过实践项目来巩固所学知识。例如,你可以设计一个数据采集系统,将采样数据存储到内存或外部存储器中,或者将数据通过串口、以太网或无线通信发送到其他设备。 总之,暑假是一个很好的时间窗口,你可以利用这段时间来学习和实践STM32的采样技术。希望你能够充分利用这个机会,学以致用!如果你有具体的问题,欢迎随时向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值