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 ;
}
05-11 11:13