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. 文件系统之-JAVA Sftp远程操作:

    转载:http://blog.csdn.net/lee272616/article/details/52789018 java远程操作文件服务器(linux),使用sftp协议版本会持续更新,当前版本 ...

  2. Android系统开发(6)——Linux底层输入输出

    一.操作系统的体系结构 计算机是由一堆硬件组成的,操作系统是为了有效的控制这些硬件资源的软件.操作系统除了有效地控制这些硬件资源的分配.并提供计算机执行所须要的功能之外,为了提供程序猿更easy开发软 ...

  3. c语言知识点总结-------静态区、堆、栈、常量区等

    在C语言中地址占4个字节 1.编程语言发展 低级语言----->高级语言 机器语言 ---> 汇编---->高级语言(C语言.C++.JAVA等) 机器语言 :0101 0010 1 ...

  4. POI-----POI操作Excel-4、字体

  5. Install Server Backup Manager on CentOS, RHE, and Fedora

    Skip to end of metadata Added by Internal, last edited by Internal on Aug 25, 2014 Go to start of me ...

  6. C++ 中的几种初始化

    前言 阅读C++教材时,想必你听过复制初始化,直接初始化,值初始化这三个概念吧.笔者本人常将其混淆,遂在此记录下它们的具体含义以便日后查阅. 复制初始化( copy-initialization ) ...

  7. 果壳、推库、虎秀、知乎、it世界

    果壳.推库.虎秀.知乎.it世界

  8. 个人开发者帐号--我是如何实现在另一台mac上真机调试的

    本文转载至 : http://blog.csdn.net/chenyong05314/article/details/8689534   注:本人有一台mac电脑,之前申请开发者帐号的时候直接就是在这 ...

  9. Chisel辅助iOS 应用程序调试,MusicApp模仿酷狗4.0 UI框架

    本文转载至 http://www.cocoachina.com/ios/20140825/9446.html Chisel Chisel集合了大量的LLDB 命令来辅助iOS 应用程序调试,并支持添 ...

  10. php 静态成员(static)抽象类(abstract)和接口(interface)

    首先看一下静态成员(static)和普通成员(public; protect; private)的区别: 静态成员是属于类的,普通成员是属于对象的: 例如: <?php header(" ...