算法实现c语言--02
- 从键盘上输入字符,将小写字母转换成大写字母。输入“ctl + z” 结束 。
#include<stdio.h>
#include<stdlib.h>
//从键盘上输入字符,将小写字母转换成大写字母。输入“ctl + z” 结束 int main()
{
char c;
while (fflush(stdin),scanf_s("%c", &c) != EOF)
{
if (c >= 'a'&&c<='z' )
{
c = c - ;
printf("%c", c);
continue;
}
if (c >= 'A'&&c < ='Z')
{
printf("%c", c);
continue;
}
else printf("error,input agian\n");
} printf("\n");
system("pause");
return ;
}
- 从键盘上输入字符,(1)分别统计一下其中字母,数字,其他字符的个数, (2)将统计的字母,数字,其他字符的个数以柱状图的形式打印。例如
5
*****
***** 3
***** ***** 2
***** ***** *****
***** ***** *****
alp num oth
#include<stdio.h>
#include<stdlib.h>
typedef struct {
int n;
char *name;
}elem;
elem alp, num, oth, print[], tmp;
void paixu(elem *print)
{
if ((print[].n < print[].n) == )
{
tmp = print[];
print[] = print[];
print[] = tmp;
}
if ((print[].n < print[].n) == )
{
tmp = print[];
print[] = print[];
print[] = tmp;
}
if ((print[].n < print[].n) == )
{
tmp = print[];
print[] = print[];
print[] = tmp;
}
}
int main()
{
char c;
int cnt[] = { };
int i = , j = ;
int maxc;
alp.n = ;
num.n = ;
oth.n = ;
alp.name = "alp";
num.name = "num";
oth.name = "oth"; int flag = ;
while (fflush(stdin), scanf_s("%c", &c) != EOF)
{
if (c >= 'a'&&c <= 'z' || c >= 'A'&&c <= 'Z')
{
alp.n++;
printf("%c", c);
continue;
}
else if (c >= && c <= )
{
num.n++;
printf("%c", c);
continue;
}
else if (c != '\0') {
oth.n++;
printf("%c", c);
}
if (c == '\n')break;
}
oth.n--; print[] = alp;
print[] = num;
print[] = oth;
paixu(print); for (i = ; i <= print[].n; i++)
{
printf("\n");
if (print[].n - i <= print[].n)
{ if (print[].n - i == print[].n)
{
if (print[].n == print[].n)
{
if (print[].n == print[].n)
printf("%s\t%s\t%s", print[].name, print[].name, print[].name);
else printf("%s\t%s", print[].name, print[].name);
}
else printf("%s", print[].name);
continue;
}
printf("*****\t");
//////////////////////////////////
if (print[].n - i <= print[].n)
{
if (print[].n - i == print[].n)
{
if (print[].n == print[].n)
printf("%s\t%s", print[].name, print[].name);
else printf("%s", print[].name);
continue;
}
printf("*****\t");
/////////////////////////////////////
if (print[].n - i <= print[].n)
{
if (print[].n - i == print[].n)
{
printf("%s", print[].name);
continue;
}
printf("*****\t");
}
}
}
}
printf("\n"); printf("%d\t", print[].n);
printf("%d\t", print[].n);
printf("%d\t", print[].n);
printf("\n"); printf("\n");
system("pause");
return ;
}
3.进制转换。
(1) 将十进制数转换成二进制数。输入十进制数输出对应的二进制数,输入“ctl + z”结束。
#include<stdio.h>
#include<stdlib.h> #define N 8
void fun(int num, int k)
{
int arr[N], i;
for (i = ; i <N; i++)
{
arr[i] = num % k;
num = num / k;
if (num == )
break;
}
for (; i >= ; i--)
printf("%d", arr[i]);
printf("\n\n\n");
} int main()
{
int n; while (fflush(stdin), scanf_s("%d", &n) != EOF)
{
fun(n, );
}
printf("\n");
system("pause");
return ;
}
(2)将二进制转换成十进制数。输入二进制数输出对应的十进制数,输入“ctl + z”结束
#include<stdio.h>
#include<stdlib.h>
#include<string.h> int main()
{
char *p, s[]; int n;
p = s;
gets(p);
n = ;
while (*p != '\0')
{
n = n * + *p - '';
p++;
}
printf("%d", n);
system("pause");
return ;
}
(3) 将十进制数转换成十六进制数。输入十进制数输出对应的十六进制数。输入“ctl + z” 结束。
#include<stdio.h>
#include<stdlib.h> #define N 8
void fun(int num)
{
int arr[N], i;
for (i = ; i <N; i++)
{
arr[i] = num % ;
num = num / ;
if (num == )
break;
}
for (; i >= ; i--)
switch (arr[i])
{
case : printf("A"); break;
case : printf("B"); break;
case : printf("C"); break;
case : printf("D"); break;
case : printf("E"); break;
case : printf("F"); break;
default: printf("%d", arr[i]);
}
printf("\n\n\n");
} int main()
{
int n; while (fflush(stdin), scanf_s("%d", &n) != EOF)
{
fun(n);
}
printf("\n");
system("pause");
return ;
}
(4) 将十六进制数转换成十进制数。输入十六进制数输出对应的十进制数。输入“ctl + z” 结束。
#include<stdio.h>
#include<stdlib.h>
#include<string.h> int main()
{
char *p, s[]; int n;
p = s;
gets(p);
n = ; while (*p != '\0')
{
switch (*p)
{
case '':n = ; break;
case '':n = ; break;
case '':n = ; break;
case '':n = ; break;
case '':n = ; break;
case '':n = ; break;
case '':n = ; break;
case '':n = ; break;
case '':n = ; break;
case '':n = ; break;
case 'A':n = ; break;
case 'B':n = ; break;
case 'C':n = ; break;
case 'D':n = ; break;
case 'E':n = ; break;
case 'F':n = ; break;
default:break; }
n = n * + *p - '';
p++;
}
printf("%d", n);
system("pause");
return ;
}
4.统计一个整数对应的二进制数的1的个数。输入一个整数(可正可负), 输出该整数的二进制包含1的个数, “ctl+ z” 结束。
#include<stdio.h>
#include<stdlib.h> #define N 8
void fun(int num, int k)
{
int arr[N], i, cnt = ;
for (i = ; i <N; i++)
{
arr[i] = num % k;
num = num / k;
if (num == )
break;
}
for (; i >= ; i--)
{
if (arr[i] == )cnt++;
printf("%d", arr[i]);
}
printf("共有%d个1",cnt);
printf("\n\n\n");
} int main()
{
int n; while (fflush(stdin), scanf_s("%d", &n) != EOF)
{
fun(n, );
}
printf("\n");
system("pause");
return ;
}
5.有101个整数,其中有50个数出现了两次,1个数出现了一次, 找出出现了一次的那个数。
#include<stdio.h>
#include<stdlib.h>
#include<string.h> int main()
{
int a[];
int i, ret = ;
for (i = ; i < ; i++) a[i] = i + ;
for (i = ; i <= ; i++) a[i] = i - ;
scanf_s("%d", &a[]);
for (i = ; i <= ; ++i)
{
ret = ret ^ a[i];
}
printf("%d\n", ret);
printf("\n");
system("pause");
return ;
}
6.
(1)输入年月日,输出该日期是当年的第几天。
#include<stdio.h>
#include<stdlib.h> int main()
{
int a[] = {,,,,,,,,,,, };
int year, mon, day,sum=;
scanf_s("%d%d%d", &year, &mon, &day);
for (int i = ; i < mon - ; i++)sum += a[i];
sum += day;
if (mon > )sum =sum+(year % && year % || year % );
printf("%d", sum); printf("\n");
system("pause");
return ;
};
(2)输入两个日期(年 月 日 年 月 日), 输出这两个日期之间差多少天
#include<stdio.h>
#include<stdlib.h> int isleap(int year)
{
return year % == && year % == || year % ==;
}
int main()
{
int a[] = { ,,,,,,,,,,, };
int year1 = , mon1 = , day1 = , year2 = , mon2 = , day2 = , sum1 = , sum2 = , sum = , gap = ; scanf_s("%d %d %d", &year1, &mon1, &day1);
scanf_s("%d %d %d", &year2, &mon2, &day2); for (int i = ; i < mon1 - ; i++)sum1 += a[i];
sum1 += day1;
if (mon1 > )sum1 = sum1 + isleap(year1);
printf("%d天", sum1); for (int i = ; i < mon2 - ; i++)sum2 += a[i];
sum2 += day2;
if (mon2 > )sum2 = sum2 + isleap(year2);
printf("%d天", sum2); gap = abs(year2 - year1);
sum = sum2 - sum1 + gap * + gap / ; printf("%d天", sum); printf("\n");
system("pause");
return ;
}
(3)输入一个日期,输出该日期是星期几。
#include<stdio.h>
#include<stdlib.h> int isleap(int year)
{
return year % == && year % == || year % ==;
}
int main()
{
int a[] = { ,,,,,,,,,,, };
int year1 = , mon1 = , day1 = , year2 = , mon2 = , day2 = , sum1 = , sum2 = , sum = , gap = ;
int week = ; scanf_s("%d %d %d", &year2, &mon2, &day2); for (int i = ; i < mon1 - ; i++)sum1 += a[i];
sum1 += day1;
if (mon1 > )sum1 = sum1 + isleap(year1);
for (int i = ; i < mon2 - ; i++)sum2 += a[i];
sum2 += day2; if (mon2 > )sum2 = sum2 + isleap(year2); gap = abs(year1 - year2);
sum = sum2 + gap * + gap / - sum1;
week = sum;
while (week /!=)
{
week %= ;
}
if(week==||week==)
printf("星期日", week);
else
printf("星期%d", week); printf("\n");
system("pause");
return ;
}
4.输入 一个日期 和一个整数 n,输出从该日期起经过n天以后的日期。
-> date -> tomorrow of the date
#include<stdio.h>
#include<stdlib.h> int isleap(int year)
{
return year % == && year % == || year % == ;
}
int main()
{
int a[] = { ,,,,,,,,,,, };
int year1 = , mon1 = , day1 = , year2 = , mon2 = , day2 = , sum1 = , sum2 = , sum = ,
gap = , days = ;
int week = ;
int i;
scanf_s("%d", &days); for (i = ; i < mon1 - ; i++)sum1 += a[i];
sum1 += day1;
if (mon1 > )sum1 = sum1 + isleap(year1); sum = sum1 + days;
year2 = year1; while (sum > + isleap(year2))
{
year2 = year2 + gap;
sum -= - isleap(year2); } ; if (sum < + isleap(year2))
{
for (i = ; sum > a[i]; i++)
{
sum -= a[i];
}
i++;
mon2 = i;
day2 = sum;
printf("%d年%d月%d日", year2, mon2, day2);
} printf("\n");
system("pause");
return ;
}
算法实现c语言--02的更多相关文章
- 魔方阵算法及C语言实现
1 魔方阵概念 填充的,每一行.每一列.对角线之和均相等的方阵,阶数n = 3,4,5….魔方阵也称为幻方阵. 例如三阶魔方阵为: 魔方阵有什么的规律呢? 魔方阵分为奇幻方和偶幻方.而偶幻方又分为是4 ...
- 一个UUID生成算法的C语言实现 --- WIN32版本 .
一个UUID生成算法的C语言实现——WIN32版本 cheungmine 2007-9-16 根据定义,UUID(Universally Unique IDentifier,也称GUID)在时 ...
- 无限大整数相加算法的C语言源代码
忙里偷闲,终于完成了无限大整数相加算法的C语言代码,无限大整数相加算法的算法分析在这里. 500位的加法运行1000次,不打印结果的情况下耗时0.036秒,打印结果的情况下耗时16.285秒. 下面是 ...
- 数据结构算法集---C++语言实现
//数据结构算法集---C++语言实现 //各种类都使用模版设计,可以对各种数据类型操作(整形,字符,浮点) /////////////////////////// // // // 堆栈数据结构 s ...
- 1164: 零起点学算法71——C语言合法标识符(存在问题)
1164: 零起点学算法71——C语言合法标识符 Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lldSubmitted: 10 ...
- 【最全】经典排序算法(C语言)
算法复杂度比较: 算法分类 一.直接插入排序 一个插入排序是另一种简单排序,它的思路是:每次从未排好的序列中选出第一个元素插入到已排好的序列中. 它的算法步骤可以大致归纳如下: 从未排好的序列中拿出首 ...
- PID算法(c 语言)(转)
PID算法(c 语言)(来自老外) #include <stdio.h> #include<math.h> //定义PID 的结构体 struct _pid { int pv; ...
- 一个UUID生成算法的C语言实现——WIN32版本
源: 一个UUID生成算法的C语言实现——WIN32版本
- 排序算法总结(C语言版)
排序算法总结(C语言版) 1. 插入排序 1.1 直接插入排序 1.2 Shell排序 2. 交换排序 2.1 冒泡排序 2.2 快速排序 3. 选择 ...
随机推荐
- Geometry Shader 【转】
Geometry shader – receives as its input complete primitives as a collection of vertices, and these i ...
- Servlet 3.0的AsyncListener接口
Servlet 3.0的AsyncListener接口 作者:chszs,转载需注明. 博客主页:http://blog.csdn.net/chszs 一.Servlet 3.0介绍 Servlet ...
- 无向图的点双连通分量(tarjan模板)
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #i ...
- 树莓派 Zero W——随身钥匙扣
前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文使用Markdown写成,为获得更好的阅读体验和正确的格式显示,请访问我的博客原文: http://www.cnblogs.c ...
- Maven - 下载JAR包
进入Spring官网http://projects.spring.io/spring-framework/假设我们想下载Spring发现仅仅能 通过Maven或Cradle进行下载了. 以下以Spri ...
- ElasticSearch 分页检索
在ElasticSearch的多索引和多类别里说到我们在集群中有14个文档匹配我们的(空)搜索语句.单数仅仅有10个文档在hits数组中.我们怎样看到其它文档? 和SQL使用LIMITkeyword返 ...
- MongoDB 操作手冊CRUD 事务 两步提交
运行两步提交 概述 这部分提供了多记录更新或者多记录事务.使用两步提交来完毕多记录写入的模板. 另外.能够扩展此方法来提供rollback-like功能. 背景 MongoDB对于单条记录的操作是原子 ...
- angular cannot get /
每次遇到这问题都一脸懵逼,好像自己啥都没改咋就悲剧了 目前知道的办法是在命令行运行ng serve,它会告诉你详细错误 因为我是通过asp.net core的集成环境运行的,它没显示出详细错误
- ios 常见错误整理 持续更新
本文转载至 http://blog.csdn.net/yesjava/article/details/8086185 1. mutating method sent to immutable obj ...
- src/github.com/mongodb/mongo-go-driver/mongo/cursor.go 游标的简洁实用
src/github.com/mongodb/mongo-go-driver/mongo/cursor.go // Copyright (C) MongoDB, Inc. 2017-present./ ...