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);
/*****************************/
}