//对两个整型数组排序,将排序结果放入一个大数组中.
void demo1 () {
int array1[5];
int array2[5];
int array3[10];
for (int i =0; i < 5; i++) {
array1[i] = arc4random() %101;
array2[i] = arc4random() %101;
}
for (int i =0; i < 4; i++) {
for (int j =0; j < 4 - i; j++) {
if (array1[j] > array1[j +1]) {
int temp = array1[j];
array1[j] = array1[j + 1];
array1[j + 1] = temp;
}
if (array2[j] > array2[j+1]) {
int temp2 = array2[j];
array2[j] = array2[j + 1];
array2[j + 1] = temp2;
}
}
}
for (int i =0; i < 10; i++) {
if (i <5) {
array3[i] = array1[i];
}else array3[i] = array2[i -5];
printf("%d ", array3[i]);
}
}
//输入一个日期,判断是一年中的第几天(使用switch语句实现
void demo2() {
enum month{
一月 =1,
二月,
三月,
四月,
五月,
六月,
七月,
八月,
九月,
十月,
十一月,
十二月,
};
int year =0;
int month =0;
int day =0;
int total =0;
int a =0;//记录31天的月份
int b =0;//记录30天的月份
int c =0;//记录是否包含二月
printf("请输入年月日,计算这一天是这一年的第几天。\n");
scanf("%d%d%d", &year,&month,&day);
if (year <0 && month < 0 && month >12 & day > 31 && day <0) {
printf("输入错误");
}else{
for (int i = month -1; i > 0; i--) {
switch (i) {
//31天
case一月:
a++;
break;
case三月:
a++;
break;
case五月:
a++;
break;
case七月:
a++;
break;
case八月:
a++;
break;
case十月:
a++;
break;
case十二月:
a++;
break;
case二月:
if (day >29) {
printf("输入有误");
break;
}
// 判断是否是闰年
if (year %400 == 0 || (year %4 ==0 && year %100 != 0)) {
//闰年
//28天
c = 29;
break;
}else {
c = 28;
break;
}
//30天
case四月:
if (day >30) {
printf("输入有误");
break;
}
b++;
break;
case六月:
if (day >30) {
printf("输入有误");
break;
}
b++;
break;
case九月:
if (day >30) {
printf("输入有误");
break;
}
b++;
break;
case十一月:
if (day >30) {
printf("输入有误");
break;
}
b++;
break;
default:
printf("输入有误!!");
break;
}
}
total = a*31 + b*30 + c + day;
printf("是%d的第%d天", year,total);
}
}
//switch 中case倒叙 不加break不需要使用循环
/*
int day = 0;
int month = 0;
int year = 0;
int total = 0;
printf("请输入年份\n");
scanf("%d", &year);
printf("请输入月份\n");
scanf("%d", &month);
printf("请输入日期\n");
int isping = 0;
scanf("%d", &day);
if(((year % 4 == 0) && (year % 100 != 0))|| (year % 400 == 0)){
isping = 0;
}else{
isping = 1;
}
switch (month) {
case 12:
if (day < 0 || day >31) {
printf("输入有错误\n");
break;
}
total += 31;
case 11:
if (day < 0 || day >30) {
printf("输入有错误\n");
break;
}
total += 30;
case 10:
if (day < 0 || day >31) {
printf("输入有错误\n");
break;
}
total += 31;
case 9:
if (day < 0 || day >30) {
printf("输入有错误\n");
break;
}
total += 30;
case 8:
if (day < 0 || day >31) {
printf("输入有错误\n");
break;
}
total += 31;
case 7:
if (day < 0 || day >31) {
printf("输入有错误\n");
break;
}
total += 31;
case 6:
if (day < 0 || day >30) {
printf("输入有错误\n");
break;
}
total += 30;
case 5:
if (day < 0 || day >31) {
printf("输入有错误\n");
break;
}
total += 31;
case 4:
if (day < 0 || day >30) {
printf("输入有错误\n");
break;
}
total += 30;
case 3:
if (day < 0 || day >31) {
printf("输入有错误\n");
break;
}
total += 31;
case 2:
if (((isping == 1) && (day < 0 || day > 29))|| ((isping == 0) && (day < 0 || day > 28))) {
printf("输入有错误\n");
break;
}
total += 28 + isping;
case 1:
if (day < 0 || day >31) {
printf("输入有错误\n");
break;
}
total += 31;
total += day;
printf("%d年%d月%d日是一年中的第%d天\n",year,month,day,total);
break;
default:
printf("输入有错误\n");
break;
}
*/
//定义一个枚举(查找英文完成),枚举名是水果,有5个枚举值(苹果,橘子,鸭梨,香蕉,菠萝);
//从键盘输入一个数,如果和苹果的枚举值相同,打印“我是苹果”,其他以此类推。
//
//(switch和枚举类型连用实现)
void demo3(){
enum fruits{
Apple = 1,
Orange,
Pear,
Banana,
Ananas,
};
int i =0;
printf("请输入1-5之间的数\n");
scanf("%d",&i);
switch (i) {
caseApple:
printf("我是苹果");
break;
caseOrange:
printf("我是橘子");
break;
casePear:
printf("我是鸭梨");
break;
caseBanana:
printf("我是香蕉");
break;
caseAnanas:
printf("我是菠萝");
break;
default:
printf("规则是:输入1-5之间的数");
break;
}
}
//编程在一个已知的字符串中找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。比如:"ni hao world”,最长单词是world。
void demo4 () {
// 求最长字符串 先找出最长的串有max个字符再次遍历 找出有max个字符的串
/*
char arr[90] = "todasssy idsdsadd feedseel saaeee ";
char a[20] = {0};
// char b[20] = {0};
int num = 0;
int max = 0;
int length =(int) strlen(arr);
for (int i = 0; i < length+1; i++) {
if (arr[i] != ' ' && arr[i] != '\0') {
a[num] = arr[i];
num++;
}else{
if (max < num) {
max = num;
// strcpy(b, a);
}
num = 0;
}
}
// printf("%d %s", max, b);
for (int i = 0; i < length+1; i++) {
if (arr[i] != ' ' && arr[i] != '\0') {
a[num] = arr[i];
num++;
}else num = 0;
if (num == max) {
printf("%d %s ", max,a);
}
}
*/
/*
char str[] = "ni hassso world";
char t[10][10] = {0};//分解字符串存放到二维数组中
int max_location = 0;//最长字符串的存放位置
int max = 0;//最长的值
//定义两个常量 用于循环解析字符串存放到二维数组中
int j = 0, k = 0;
for (int i = 0; i < strlen(str); i++) {
if (str[i] == ' ') {
j++;
k=0;
}else{
t[j][k++] = str[i];
}
}
//存放完成后遍历二维数组的第一层 找出最大的那一个的位置
for (int i = 0; i < j+1; i++) {
if (strlen(t[i]) > max) {
max = (int)strlen(t[i]);
max_location = i;
}
}
for (int i = 0; i < j+1; i++) {
if (max == strlen(t[i])) {
printf("最长的字符串为:%s", t[i]);
}
}
*/
//没优化有两个最长字符串的情况
/*
// 比如:"ni hao world”,最长单词是world。
// char a[255] = "ni dsao worl sd";
// int p = 0,q = 0;//后行下标和先行下标
// int count = 0; //单词的字母个数
// int max = 0; //最长单词的字母数
//
// while (a[q] != '\0') {
// if (a[q] != ' ') {
// count++;
// }else{
// if (max <= count) {
// max = count;
// p = q - count;
// }
// count = 0;
// }
// q++;
// }
//
// //如果最后一个单词后没有空格,也需要判断
// if (max < count) {
// max = count;
// p = q - count;
// }
// printf("最长的单词是:");
// for (int i = p;i < p+max ; i++) {
// printf("%c",a[i]);
// }
*/
}
//打印空心菱形 和 实心菱形
//输入n,分别用*输出边长为n的实心菱形和空心菱形。
//例如:n = 3时,输出:
// *
// ***
//*****
// ***
// *
//
// *
// * *
//* *
// * *
// *
void demo5(){
//打印实心菱形
/*
int n = 3;
printf("请输入:\n");
scanf("%d",&n);
for (int i = 0; i < n-1; i++) {
for (int j =0; j < n*2-1; j++) {
if (j < n-i-1 || j > n+i-1) {
printf(" ");
}else printf("*");
}
printf("\n");
}
for (int i = n-1 ; i >= 0; i--) {
for (int j = 0; j < n*2-1 ; j++) {
if (j < n - i -1 || j > n + i-1) {
printf(" ");
}else printf("*");
}
printf("\n");
}
*/
//打印空心菱形
/*
int n = 3;
printf("请输入:\n");
scanf("%d",&n);
for (int i = 0; i < n-1; i++) {
for (int j =0; j < n*2-1; j++) {
if (j == n-i-1 || j == n+i-1) {
printf("*");
}else printf(" ");
}
printf("\n");
}
for (int i = n-1 ; i >= 0; i--) {
for (int j = 0; j < n*2-1 ; j++) {
if (j == n - i -1 || j == n + i-1) {
printf("*");
}else printf(" ");
}
printf("\n");
}
*/
//打印实心菱形
/*
int n = 3;
int t = 0;
//printf("请输入:\n");
// scanf("%d",&n);
for (int i = 0; i < n*2-1; i++) {
for (int j =0; j < n*2-1; j++) {
t = i > (n- 1) ? n * 2 - i-2 :i;
if (j < n-t-1 || j > n+t-1) {
printf(" ");
}else printf("*");
}
printf("\n");
}
// 打印空心菱形
// int n=3;
for (int i=1; i<=2*n-1; i++) {
for (int j=1; j<=2*n-1; j++) {
int t=i>3?2*n-i:i;
if(j==(n+1-t)||j==(n+t-1)){
printf("*");
}else{
printf(" ");
}
}
printf("\n");
}
*/
}
//
void demo6(){
// //上三角
// //行数 空格数 星号数 换行
// //1 2 1 1
// //2 1 3 1
// //3 0 5 1
// //空格与行数的关系是:空格 = n(边长) -行数
// //星号与行数的关系是:星号 = 行数*2 - 1
// //换行始终是一个
// int n = 0;
// printf("请输入一个边长,我们将为你打印n边菱形:");
// scanf("%d",&n);
// for (int i = 1; i <= n; i++) {
// //打印空格
// for (int j = 0; j < n - i; j++) {
// printf(" ");
// }
// //打印星号
// for (int k = 0; k < 2 * i - 1; k++) {
// printf("*");
// }
// //打印换行
// printf("\n");
// }
// //下三角
// //行数 空格数 星号数 换行
// //1 1 3 1
// //2 2 1 1
// //空格与行数的关系是:空格 = 行数
// //星号与行数的关系是:星号 = (n - 行数)*2 - 1
// //换行始终是一个
// for (int i = 1; i < n; i++) {
// //打印空格
// for (int j = 0; j < i; j++) {
// printf(" ");
// }
// //打印星号
// for (int k = 0; k < (n - i) * 2 - 1; k++) {
// printf("*");
// }
// //打印换行
// printf("\n");
// }
}
C语言-5
最新推荐文章于 2022-02-12 05:32:44 发布