1. 从键盘上输入字符,将小写字母转换成大写字母。输入“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. 从键盘上输入字符,(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的更多相关文章

  1. 魔方阵算法及C语言实现

    1 魔方阵概念 填充的,每一行.每一列.对角线之和均相等的方阵,阶数n = 3,4,5….魔方阵也称为幻方阵. 例如三阶魔方阵为: 魔方阵有什么的规律呢? 魔方阵分为奇幻方和偶幻方.而偶幻方又分为是4 ...

  2. 一个UUID生成算法的C语言实现 --- WIN32版本 .

    一个UUID生成算法的C语言实现——WIN32版本   cheungmine 2007-9-16   根据定义,UUID(Universally Unique IDentifier,也称GUID)在时 ...

  3. 无限大整数相加算法的C语言源代码

    忙里偷闲,终于完成了无限大整数相加算法的C语言代码,无限大整数相加算法的算法分析在这里. 500位的加法运行1000次,不打印结果的情况下耗时0.036秒,打印结果的情况下耗时16.285秒. 下面是 ...

  4. 数据结构算法集---C++语言实现

    //数据结构算法集---C++语言实现 //各种类都使用模版设计,可以对各种数据类型操作(整形,字符,浮点) /////////////////////////// // // // 堆栈数据结构 s ...

  5. 1164: 零起点学算法71——C语言合法标识符(存在问题)

    1164: 零起点学算法71——C语言合法标识符 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 10 ...

  6. 【最全】经典排序算法(C语言)

    算法复杂度比较: 算法分类 一.直接插入排序 一个插入排序是另一种简单排序,它的思路是:每次从未排好的序列中选出第一个元素插入到已排好的序列中. 它的算法步骤可以大致归纳如下: 从未排好的序列中拿出首 ...

  7. PID算法(c 语言)(转)

    PID算法(c 语言)(来自老外) #include <stdio.h> #include<math.h> //定义PID 的结构体 struct _pid { int pv; ...

  8. 一个UUID生成算法的C语言实现——WIN32版本

    源: 一个UUID生成算法的C语言实现——WIN32版本

  9. 排序算法总结(C语言版)

    排序算法总结(C语言版) 1.    插入排序 1.1     直接插入排序 1.2     Shell排序 2.    交换排序 2.1     冒泡排序 2.2     快速排序 3.    选择 ...

随机推荐

  1. gvim的常用编辑快捷键

    gvim的快捷键很多,很难记全,但是入门初期应该找过几种基本的命令 下面结合自己常用到的介绍下 光标跳转: 0:行首 $:行尾 e:下一个单词的结尾 w:下一个单词的开头 b:上一个单词 H:当前页面 ...

  2. Swagger学习和实践

    Swagger学习和实践 学习了:https://www.cnblogs.com/zxtceq/p/5530396.html swagger 英 [ˈswægə(r)] 美 [ˈswæɡɚ] vi.昂 ...

  3. iOS经常使用设计模式——单例模式

    第一部分: 创建一个单例对象 单例的应用场景: 单例模式用于当一个类仅仅能有一个实例的时候. 通常情况下这个"单例"代表的是某一个物理设备比方打印机,或是某种不能够有多个实例同一时 ...

  4. PS 基础知识 CMYK全称是什么

    已解决 请问谁知道CMYK四色的英文全称? 悬赏分:20 - 解决时间:2006-9-6 16:23 C代表什么颜色?英文全称是什么? M代表什么颜色?英文全称是什么? Y代表什么颜色?英文全称是什么 ...

  5. 兔子-svnserver,client搭建

    http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html

  6. CAM350 10.5移动和叠层的用法

    1.快捷键 EC复制                                       IMO测量最近距离                             UZ放大,缩小尺寸 UC拷 ...

  7. openh264 在 osx 上的 nasm 问题

    先在 pc 上编译,熟悉一下. 编译遇到一个问题: nasm -DUNIX64 -DPREFIX -f macho64 -I./codec/common/x86/ -o codec/common/x8 ...

  8. iperf3 测试路由器吞吐率

    mini newifi 电脑端: iperf3 -s 路由器: root@OpenWrt:/# iperf3 -c 10.10.10.3 -t 20 Connecting to host 10.10. ...

  9. 从头认识java-15.1 填充容器(2)-利用Collection的addAll方式

    接着上一章节,我们继续介绍填充容器. 这一章节我们结束还有一种填充容器的方式:addAll 样例: package com.ray.ch15; import java.util.ArrayList; ...

  10. 使用无缓冲IO函数读写文件

    前言 本文介绍使用无缓冲IO函数进行文件读写. 所谓的无缓冲是指该IO函数通过调用系统调用实现,其实系统调用内部的读写实现也是使用了缓冲技术的. 读写步骤 1. 打开文件 open 函数 2. 读写文 ...