三大类
1、交换排序算法 冒泡(数据量小)-> 快速
2、插入 类排序
3、选择 类排序
求和 1-1/2+1/3-1/4……+1/99-1/100
int sign=1;
float deno=2.0,sum=1.0,term;
while(deno<=100)
{
sign=-sign;
term=sign/deno;
sum=sum+term;
deno=deno+1;
}
数据解析 数据排列和位运算
Fibonacci数列 斐波那契数列
算法和通信
五子棋(五子为胜,黑白棋 黑为先(三三、四四连)) 局域网的对战 (1、server和client两者的对战;2、多个client对战)
五子棋 画棋盘->数据(根据不同信息设置不同大小类型)
垂直 水平 斜方向(向左倾斜,向右倾斜)
练习:
1、回文查询 (123321) 读取一个txt
回文 input 1 2 3 4 4 3 2 1
12344321 abcddcba
#include <stdio.h>
#include "string.h"
void main(){
int x,i;
char str[100]={0};
gets(str);
x=strlen(str);
//printf("%d",x);
for(i=0;i<=x/2;i++){
if(str[i]!=str[x-i-1]){
break;
}
//printf("%d",i);
}
if(i>x/2)
printf("yes");
else
printf("no");
}
2、质数查询
素数 奇数 偶数
1、开根号 while
2、
for(i=2;i<n/2;++i)
{
if(n%i==0)
{
}
}
#include <stdio.h>
#include "string.h"
void main(){
int a=0,num=0,i;
scanf("%d",&num);
printf("%d",num);
if(num>2){
for(i=2;i<num;i++){
if(num%i==0){
a++;
}
}
}
if(a==0)
printf("yes");
else
printf("no");
}
3、简单的计算器(加 减 乘 除)
#include <stdio.h>
#include "string.h"
void main(){
float a,b,sum;
char flag;
char quit=1;
while(quit!=0){
printf("Please Enter");
scanf("%f%c%f",&a,&flag,&b);
switch(flag){
case '+':
sum=a+b;
break;
case '-':
sum=a-b;
break;
case '*':
sum=a*b;
break;
case '/':
sum=a/b;
break;
default:
break;
}
printf("%f+%f=%f\n",a,b,sum);
printf("Are You quit? Please Enter y/n");
scanf("%d",&quit);
printf("\n");
}
}
4、用递归的方式实现字符的颠倒
reverse()
{
char c;
scanf("%c",&c);
if(c!='\n')
{
reverse();
printf("%c",c);
}
}
int main(){
reverse();
}
5、实现二进制和十进制的互相转换
int decimal_binary()
{
int rem,i=1,binary=0;
while(n!=0)
{
rem=n%2;
n/=2;
binary+=rem*i;
i*=10;
}
return binary;
}
#include <stdio.h>
int main()
{
int Type,a,b[10],i=0,c=0;
printf("请输入转换类型,1:十进制转二进制;2:二进制转十进制\n");
scanf("%d",&Type);
printf("请输入原数据\n");
scanf("%d",&a);
switch(Type)
{
case 1:
while(a!=0)
{
b[i]=a%2;
a/=2;
i++;
}
printf("二进制为:");
i--;
for(;i>=0;i--)
printf("%d",b[i]);
printf("\n");
break;
case 2:
while(a!=0)
{
b[i]=a%10;
a/=10;
i++;
}
i--;
for(;i>=0;i--)
c=c*2+b[i];
printf("十进制为:%d\n",c);
break;
}
}
6、数组 实现多维数组的两个矩阵的值相加
二维数组
#include <stdio.h>
int main()
{
int i,j;
int a[3][3],b[3][3],c[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&b[i][j]);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
c[i][j]=a[i][j]+b[i][j];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("c[%d][%d]=%d\n",i,j,c[i][j]);
}
7、三天打鱼两天晒网 起始日期:1990.01.01 进行三天打鱼两天晒网,随机输入一个具体的天数 得到结果哪天具体做什么
typedef struct date{
int year;
int month
int day;
}date;
int Getdays(date *p)
{
月份
int days=0;
switch(p->month-1)
{
case 0: days=0;break;
case 1: days=31;break;
case 2: days=31+28;break;
case 3: days=31+28+31;break
case 4:
case 5:
case 11: days=31+28+31+30+31+30+31+31+30+31+30;break;
}
days=days+(p->day-1)+(p->year-1900)*365+(p->year-1988)/4-(p->year-1900)/100+(p->year-1600)/400
年份 闰年特点:四年一闰 百年不闰 四百年再闰
if((p->year%4==0)&&(p->year%100!=0)||(p->year%400==0)&&(p->month<=2))
{
days--;
return days;
}
/*若恰好此年为闰年但月份小于2月,则多加了一天。
if((p->year%4==0)&&(p->year%100!=0)||(p->year%400==0))
if(p->month<=2)
*/
}
网友评论