C 语言练习题总结
2015-10-10 18:51
399 查看
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void printBinary(int number);
char upper(char ch);
void arrayWinthBig(char ch[],int lenth);
int arrayMax(int a[],int count);
int arraySum(int a[],int n);
void reverseOder(int a[],int number);
int includeStr(char str[],char ch);
void changeNumber(int*p);
void changeValue(int *v1,int *v2);
int huiWen(char*s);
void strlink2(char s[],char t[]);
int jieCheng2(int n);
void game();
void maoPao(int a[],int number);
void xuanZe(int a[],int len);
int zheBan(int a[],int len,int number);
int searchChar(char ch[],char a);
void nixuArray(int arry[],int len);
void paiXuArray(char *ch[],int len);
#define MAX(a,b) a>b ? a:b;
int main()
{
return 0;
}
//文件操作
void test20()
{
FILE *p = fopen("one.txt",
"r+");
char*s = {"hello"};
char ch[6];
if (p!=NULL)
{
fputs(s,p);
}else
{
printf("写入失败!");
}
fpurge(p);
if (p)
{
fgets(ch,
6, p);
}else
{
printf(&q
20000
uot;读取失败!");
}
printf("%s\n",ch);
fclose(p);
}
void paiXuArray(char *ch[],int len)
{
char *temp;
for(int i =
0;i<len-1;i++)
{
for(int j =
0;j<len-1-i;j++)
{
if(strcmp(ch[j],ch[j+1])>0)
{
temp = ch[j];
ch[j] = ch[j+1];
ch[j+1] = temp;
}
}
}
}
void nixuArray(int arry[],int len)
{
int *p=arry;
for(int i =
0;i<=len-i;i++)
{
int temp = *(p+i);
*(p+i) = *(p+len-1-i);
*(p+len-1-i)=temp;
}
}
//统计单词的个数
void test19()
{
char ch[100];
printf("请输入单词中间以空格隔开:\n");
gets(ch);
int words = 0;
int count = 0;
for(int i =
0;i<strlen(ch);i++)
{
if(ch[i]==' ')
{
words = 0;
}else if(words ==
0)
{
count++;
ch[i]=ch[i]-32;
words=1;
}
}
printf("%d\n",count);
puts(ch);
}
//判断某个字符是否在字符串中,如果在返回所在的下标,如果不在则返回-1
int searchChar(char ch[],char a)
{
for(int i =
0;i<strlen(ch);i++)
{
if(ch[i]==a)
{
return i;
}
}
return -1;
}
//求二维数组的最大值和最大值的下标
int test18()
{
int score[5][3]=
{
{59,90,68},
{69,95,73},
{99,70,78},
{39,50,75},
{50,80,100},
};
int max=score[0][0];
for(int i =
0;i<5;i++)
{
for(int j =
0;j<3;j++)
{
if(score[i][j]>max)
{
max=score[i][j];
}
}
}
printf("%d\n",max);
for(int i =
0;i<5;i++)
{
for(int j =
0;j<3;j++)
{
if(score[i][j]==max)
{
printf("score[%d][%d]",i,j);
return
0;
}
}
}
return 0;
}
void test17()
{
//求多人多门课程的平均成绩
float score[5][3]=
{
{59,90,68},
{69,95,73},
{99,70,78},
{39,50,75},
{50,80,88},
};
for(int i =
0;i<5;i++)
{
float temp=0;
for(int j =
0;j<3;j++)
{
temp+=score[i][j];
}
printf("%.2f\t",temp/3);
}
printf("\n");
for(int i =
0;i<3;i++)
{
float temp=0;
for(int j =
0;j<5;j++)
{
temp+=score[i][j];
}
printf("%.2f\t",temp/5);
}
}
void test16()
{
//21选5彩票
int ca[5];
for(int i =
0;i<5;i++)
{
for(int j =
0;j<5;j++)
{
ca[j]=arc4random_uniform(21)+1;
for(int k =
0;k<j;k++)
while(ca[j]==ca[k])
{
ca[j]=arc4random_uniform(21)+1;
}
printf("%d\t",ca[j]);
}
printf("\n");
}
}
//折半查找
int zheBan(int a[],int len,int number)
{
int low = 0;
int high = len -1;
while(low<=high)
{
int mid = (low+high)/2;
if(a[mid]<number)
{
low = mid+1;
}else if(a[mid]>number)
{
high = mid-1;
}else if(a[mid]==number)
{
return mid;
}
}
return -1;
}
//选择排序
void xuanZe(int a[],int len)
{
for(int i =
0;i<len;i++)
{
for(int j = i+1;j<len;j++)
{
if(a[i]>a[j])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
//冒泡排序
void maoPao(int a[],int number)
{
int temp;
for(int i =
0;i<number;i++)
{
for(int j =
0;j<number-i;j++)
{
if(a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
//打印图形
钻石
void test14()
{
for(int i =
0;i<4;i++)
{
for(int j =
0;j<4-i;j++)
{
printf(" ");
}
for(int x =
0;x<2*i+21;x++)
{
printf("* ");
}
printf("\n");
}
for(int i =
0;i<15;i++)
{
for(int j =
0;j<i;j++)
{
printf(" ");
}
for(int x =
0;x<2*(15-i)-1;x++)
{
printf("* ");
}
printf("\n");
}
}
//剪刀
石头 布
的游戏
void game()
{
//0-剪刀 1-石头 2-布
int person=-1,computer=-1;
while(person!=0&&person!=1&&person!=2)
{
printf("请输入(提示:0-剪刀
1-石头 2-布):\n");
scanf("%d",&person);
}
computer = arc4random_uniform(3);
if((person ==
0&&computer==2)||(person ==
1&&computer==0)||(person ==
2&&computer==1))
{
if(person==0)
{
printf("你出的是:剪刀\n");
}else if(person==1)
{
printf("你出的是:石头\n");
}else if(person==2)
{
printf("你出的是:布\n");
}
switch(computer)
{
case 0:
printf("电脑出的是:剪刀\n");
break;
case 1:
printf("电脑出的是:石头\n");
break;
case 2:
printf("电脑出的是:布\n");
break;
}
printf("恭喜你赢了!\n");
}else if((person ==
0&&computer==0)||(person ==
1&&computer==1)||(person ==
2&&computer==2))
{
if(person==0)
{
printf("你出的是:剪刀\n");
}else if(person==1)
{
printf("你出的是:石头\n");
}else if(person==2)
{
printf("你出的是:布\n");
}
switch(computer)
{
case 0:
printf("电脑出的是:剪刀\n");
break;
case 1:
printf("电脑出的是:石头\n");
break;
case 2:
printf("电脑出的是:布\n");
break;
}
printf("平局!\n");
}else
{
if(person==0)
{
printf("你出的是:剪刀\n");
}else if(person==1)
{
printf("你出的是:石头\n");
}else if(person==2)
{
printf("你出的是:布\n");
}
switch(computer)
{
case 0:
printf("电脑出的是:剪刀\n");
break;
case 1:
printf("电脑出的是:石头\n");
break;
case 2:
printf("电脑出的是:布\n");
break;
}
printf("很遗憾!你输了!\n");
}
}
//输入一个数判断月份
void test15()
{
int month = 0;
while(month<1||month>12)
{
printf("请输入1~12之间的数字:\n");
scanf("%d",&month);
}
switch(month)
{
case 3:
case 4:
case 5:
printf("春季\n");
break;
case 6:
case 7:
case 8:
printf("夏季\n");
break;
case 9:
case 10:
case 11:
printf("秋季\n");
break;
case 12:
case 1:
case 2:
printf("冬季\n");
break;
}
}
void test12()
{
/*
提示用户输入一个正整数n,求出并输出其阶乘值n! = 1*2*3*4*...n
要求:用递归的方式编写一个函数实现n的阶乘
*/
//定义变量n来接收用户输入的值
int n = 0;
//提示用户输入
printf("请输入一个正整数:\n");
scanf("%d",&n);
//计算结果并且输出
int result = jieCheng2(n);
printf("%d\n",result);
}
int jieCheng2(int n)
{
if(n<=0)
{
return 1;
}
return jieCheng2(n-1)*n;
}
int cityNumber()
{ //河北省邯郸市的身份证是以130481开头;以1和3结尾是男士;写一个程序来通过身份证号码判断是否是邯郸人和性别
//定义一个变量cityNumber来存储判断城市的号码130481
//提示用户输入18位身份证号码
printf("请输入18位身份证号码:\n");
//定义数组用来存放用户输入的值
char ID[19];
scanf("%s",ID);
char *cityNumber =
"130481";
for(int i =
0;i < 6;i++)
{
if(ID[i]!=cityNumber[i])
{
printf("这不是邯郸人!");
return
0;
}
}
printf("这是邯郸人!");
if(ID[17]=='1'||ID[17]=='3')
{
printf("这位是男性");
}else
{
printf("这位是女性");
}
return 0 ;
}
/*
编写一个函数void strlink(char s[], char t[])
将字符串t连接到字符串s的尾部
*/
void strlink2(char s[],char t[])
{
for(int i =0 ;i<=strlen(s);i++)
{
if(s[i]=='\0')
{
for(int j =
0;j<=strlen(t);j++)
{
s[i]=t[j];
i++;
}
}
}
}
void strlink(char s[],char t[])
{
int i = 0;
while(s[i]!='\0')
{
i++;
}
int j = 0;
while(t[j]!='\0')
{
s[i]=t[j];
j++;
i++;
}
}
/*
编写一个函数,判断某个字符串是否为回文。
回文就是从左边开始读
和 从右边开始读
都是一样的,比如"abcba"
*/
int huiWen(char*s)
{
for(int i =
0;i<strlen(s)-1;i++)
{
if(s[i]!=s[strlen(s)-1-i])
{
printf("这不是回文!\n");
return
0;
}
}
printf("这是回文!\n");
return 1;
}
//定义一个函数实现两个值的交换
void changeValue(int *v1,int *v2)
{
int temp = *v1;
*v1 = *v2;
*v2 = temp;
}
//定义一个函数实现出啊如一个值改变其内容(利用指针)
void changeNumber(int*p)
{
*p=10;
}
//设计一个函数判断一个字符是否在字符串内
int includeStr(char str[],char ch)
{
for(int i =
0;i<strlen(str);i++)
{
if(str[i]==ch)
{
return
1;
}
}
return 0;
}
//设计一个函数逆序一维数组
void reverseOder(int a[],int number)
{
for(int i =
0;i<(number/2);i++)
{
int temp = a[i];
a[i] = a[number-i-1];
a[number-i-1] = temp;
}
for(int i =
0;i<5;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
}
//设计一个函数求前N个元素的和
int arraySum(int a[],int n)
{
int sum;
for(int i =
0;i<n;i++)
{
sum+=a[i];
}
return sum;
}
//设计一个函数找出数组元素的最大值
int arrayMax(int a[],int count)
{
int max=a[0] ;
for(int i =
0;i<count;i++)
{
if(a[i]>max)
{
max = a[i];
}
}
return max;
}
int test11()
{
//提示输入吴哥学生的成绩然后算出,最高分,最低分,平均分,总分,然后输出结果
//定义数组来接收用户输入的值
int score[5];
//提示也难怪乎输入吴哥分数
printf("请您分别输入5个分数:\n");
for(int i =
0;i<sizeof(score)/sizeof(int);i++)
{
scanf("%d",&score[i]);
if(score[i]<0)
{
printf("输入错误请重新运行程序!");
return
0;
}
}
int topScore=score[0];//最高分
int lowScore=score[0];//最低分
int totalScore;//总分
int averageScore;//平均分
for(int i =
0;i<sizeof(score)/sizeof(int);i++)
{
totalScore+=score[i];
if(score[i]>topScore)
{
topScore=score[i];
}else if(score[i]<lowScore)
{
lowScore=score[i];
}
}
averageScore=totalScore/(sizeof(score)/sizeof(int));
printf("最高分是:%d\n最低分是:%d\n总分是:%d\n平均分是:%d\n",topScore,lowScore,totalScore,averageScore);
return 0;
}
void arrayWinthBig(char ch[],int lenth)
{
char temp;
int max ;
for(int i =
0;i<lenth;i++)
{
max = i;
for(int j = i+1;j<lenth;j++)
{
if(ch[max]<ch[j])
{
max=j;
}
}
if(i!=max)
{
temp = ch[i];
ch[i] = ch[max];
ch[max] = temp;
}
}
puts(ch);
// for(int n = 0;n<lenth&&ch
!='\0';n++)
// {
// printf("%c",ch
);
// }
}
//设计一个函数将小写字母转换成大写
char upper(char ch)
{
if(97<=ch&&ch<=122)
{
return ch-32;
}
return ch;
}
//利用位运算符来输出一个数的二进制格式
void printBinary(int number)
{
int temp =sizeof(number)*8;
for(int i =
1;i <=temp ;i++)
{
if((1&(number>>(temp-i)))==0)
{
printf("0");
}else if((1&(number>>(temp-i)))==1)
{
printf("1");
}
if(i%4==0)
{
printf(" ");
}
}
printf("\n");
}
void test10()
{
//利用位运算符来判断一个数的奇偶性
int a = 12;
a&1 ? printf("奇数\n") :
printf("偶数\n");
}
void test9()
{
//在不使用其他变量的情况下实现两个值的转化
int a = 10;
int b = 20;
printf("转换前a = %d,b = %d\n",a,b);
// a = a^b;
// b = a^b;
// a = a^b;
a = a+b;
b = a-b;
a = a-b;
printf("转化后a = %d,b = %d\n",a,b);
}
void test8()
{
/*
题目:程序运行的时候提示下列信息
请输入相应数字选择需要执行的运算:
1 加法
2 减法
3 乘法
4 除法
用户选择运算后,再提示用户输入两个需要进行运算的整数,输入完毕后就输出运算结果
*/
//1:提示用户输入 1
加法 2
减法
printf("
请输入相应数字选择需要执行的运算:\n1
加法\n2
减法\n3 乘法\n4
除法\n");
//2:定义变量cal接收用户输入的数值并判断
int cal = 0;
while(cal!=1 && cal!=2&& cal!=3&& cal!=4)
{
scanf("%d",&cal);
if(cal!=1 && cal!=2&& cal!=3&& cal!=4)
{
printf("error\n");
}
}
//3:提示用户输入两个数中间由","隔开
loop:printf("请您输入要计算的两个整数,中间用“,”隔开(例如1,2):\n");
//4:定义变量numA,numB用来接收用户输入的数据
int numA = 0,numB =
0;
//5:接收用户输入的数据
scanf("%d,%d",&numA,&numB);
//6:计算结果并输出
if(cal==1)
{
printf("%d + %d = %d\n",numA,numB,numA+numB);
}else if(cal==2)
{
printf("%d - %d = %d\n",numA,numB,numA-numB);
}else if(cal==3)
{
printf("%d × %d = %d\n",numA,numB,numA*numB);
}else if(cal==4)
{
float temp =
1;
temp*=numA;
if(numB!=0)
{
printf("%d / %d = %f\n",numA,numB,temp/numB);
}else
{
goto loop;
}
}
}
//printf和scanf,运算符的使用
void caTime()
{
//printf("%d\n",10%3);//取余
//1:提示用户输入几秒
printf("请您输入要计算的秒数:\n");
//2:定义一个变量接收
int m = 0 ;
scanf("%d",&m);
//3:计算输出结果
printf("计算结果是:%d分%d秒\n",m/60,m%60);
}
void caScore ()
{
//
分数>=0 && 分数<=59 E
//
分数 >=60&& 分数<=69 D
//
分数>=70&&分数<=79 C
//
分数>=80&&分数<=89 B
//
分数>=90&&分数<=100 A
//
分数<0||分数>100
不合法
int score = 0;
printf("请输入分数:\n");
scanf("%d",&score);
if (score>=0 && score<=59)
{
printf("等级是:E\n");
}else if (score>=60 && score<=69)
{
printf("等级是:D\n");
}else if (score>=70 && score<=79)
{
printf("等级是:C\n");
}else if (score>=80 && score<=89)
{
printf("等级是:B\n");
}else if (score>=90 && score<=100)
{
printf("等级是:A\n");
}else
{
printf("您输入的不合法!\n");
}
}
void test1()
{
printf("请输入一个1-7的数字:\n");
int a = 0;
scanf("%d",&a);
switch (a)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期日\n");
break;
default:
printf("error\n");
break;
}
}
void test2()
{
//使用随机数随机产生一个1-100之间的数,给用户10次竞猜的机
会,效果如下
int num =
arc4random_uniform(100)+1;
int n = 0;
for (int i =
1; i <= 10; i++)
{
printf("请输入:\n");
scanf("%d",&n);
if (num == n)
{
printf("你猜对了!你还剩%d次机会!\n",10-i);
break;
}else if (n<num)
{
printf("你猜小了!你还剩%d次机会!\n",10-i);
}else
{
printf("你猜大了!你还剩%d次机会!\n",10-i);
}
if (i==10)
{
printf("你的机会用完了!");
}
}
}
void test3()
{
//乘法口诀
for (int i =
1; i <= 9; i++)
{
for (int j =
1; j <= i; j++)
{
printf("%dx%d=%d\t",j,i,i*j);
}
printf("\n");
}
}
void test4()
{
//统计从键盘输入一行字符的个数
int num = 0;
char ch;
printf("请输入字符:\n");
while (ch!='\n') {
scanf("%c",&ch);
num++;
}
printf("%d",num);
}
void test5()
{
//输入一个正数n计算从1+2+3+.......+n的值。
printf("请输入一个正数:\n");
int n = 0,sum =
0;
scanf("%d",&n);
for (int i =
1; i <= n; i++)
{
sum = sum + i;
}
printf("%d",sum);
}
//定义一个函数来计算两个数的大小返回最大的那个
int comp(int a,int b)
{
return a>b ? a:b;
}
//n的阶乘
int jieCheng(int a)
{
int result;
if (a == 1)
{
result = a;
}else
{
result = jieCheng(a-1)*a;
}
return result;
}
void test6()
{
char ch[100]="hello world!";
char ch2[50]=
" hello c!";
printf("%s\n",strcat(ch, ch2));
printf("%s\n",strcpy(ch,
" hello oc!"));
printf("%lu\n",strlen(ch2));
printf("%d\n",strcmp(ch, ch2));
//puts(ch);
}
void swap(int *p,int *q)
{
int temp= *p;
*p = *q;
*q = temp;
}
void test7()
{
//int a = 10,b = 20;
// printf("转换前:a = %d,b = %d\n",a,b);
// swap(&a, &b);
// printf("转换后:a = %d,b = %d\n",a,b);
// int ch = a>b ? a:b;
// printf("%d\n",ch);
//
int x = 1,y =
1;
// if(x++==2 && ++y==2) {
// x =7;
// }
// printf("x=%d, y=%d\n", x, y);//2,1
// int x = 1,y = 1;
// if(x++==2 || ++y==2) {
// x =7;
// }
printf("x=%d, y=%d\n", x, y);//7,2
}
#include <stdlib.h>
#include <string.h>
void printBinary(int number);
char upper(char ch);
void arrayWinthBig(char ch[],int lenth);
int arrayMax(int a[],int count);
int arraySum(int a[],int n);
void reverseOder(int a[],int number);
int includeStr(char str[],char ch);
void changeNumber(int*p);
void changeValue(int *v1,int *v2);
int huiWen(char*s);
void strlink2(char s[],char t[]);
int jieCheng2(int n);
void game();
void maoPao(int a[],int number);
void xuanZe(int a[],int len);
int zheBan(int a[],int len,int number);
int searchChar(char ch[],char a);
void nixuArray(int arry[],int len);
void paiXuArray(char *ch[],int len);
#define MAX(a,b) a>b ? a:b;
int main()
{
return 0;
}
//文件操作
void test20()
{
FILE *p = fopen("one.txt",
"r+");
char*s = {"hello"};
char ch[6];
if (p!=NULL)
{
fputs(s,p);
}else
{
printf("写入失败!");
}
fpurge(p);
if (p)
{
fgets(ch,
6, p);
}else
{
printf(&q
20000
uot;读取失败!");
}
printf("%s\n",ch);
fclose(p);
}
void paiXuArray(char *ch[],int len)
{
char *temp;
for(int i =
0;i<len-1;i++)
{
for(int j =
0;j<len-1-i;j++)
{
if(strcmp(ch[j],ch[j+1])>0)
{
temp = ch[j];
ch[j] = ch[j+1];
ch[j+1] = temp;
}
}
}
}
void nixuArray(int arry[],int len)
{
int *p=arry;
for(int i =
0;i<=len-i;i++)
{
int temp = *(p+i);
*(p+i) = *(p+len-1-i);
*(p+len-1-i)=temp;
}
}
//统计单词的个数
void test19()
{
char ch[100];
printf("请输入单词中间以空格隔开:\n");
gets(ch);
int words = 0;
int count = 0;
for(int i =
0;i<strlen(ch);i++)
{
if(ch[i]==' ')
{
words = 0;
}else if(words ==
0)
{
count++;
ch[i]=ch[i]-32;
words=1;
}
}
printf("%d\n",count);
puts(ch);
}
//判断某个字符是否在字符串中,如果在返回所在的下标,如果不在则返回-1
int searchChar(char ch[],char a)
{
for(int i =
0;i<strlen(ch);i++)
{
if(ch[i]==a)
{
return i;
}
}
return -1;
}
//求二维数组的最大值和最大值的下标
int test18()
{
int score[5][3]=
{
{59,90,68},
{69,95,73},
{99,70,78},
{39,50,75},
{50,80,100},
};
int max=score[0][0];
for(int i =
0;i<5;i++)
{
for(int j =
0;j<3;j++)
{
if(score[i][j]>max)
{
max=score[i][j];
}
}
}
printf("%d\n",max);
for(int i =
0;i<5;i++)
{
for(int j =
0;j<3;j++)
{
if(score[i][j]==max)
{
printf("score[%d][%d]",i,j);
return
0;
}
}
}
return 0;
}
void test17()
{
//求多人多门课程的平均成绩
float score[5][3]=
{
{59,90,68},
{69,95,73},
{99,70,78},
{39,50,75},
{50,80,88},
};
for(int i =
0;i<5;i++)
{
float temp=0;
for(int j =
0;j<3;j++)
{
temp+=score[i][j];
}
printf("%.2f\t",temp/3);
}
printf("\n");
for(int i =
0;i<3;i++)
{
float temp=0;
for(int j =
0;j<5;j++)
{
temp+=score[i][j];
}
printf("%.2f\t",temp/5);
}
}
void test16()
{
//21选5彩票
int ca[5];
for(int i =
0;i<5;i++)
{
for(int j =
0;j<5;j++)
{
ca[j]=arc4random_uniform(21)+1;
for(int k =
0;k<j;k++)
while(ca[j]==ca[k])
{
ca[j]=arc4random_uniform(21)+1;
}
printf("%d\t",ca[j]);
}
printf("\n");
}
}
//折半查找
int zheBan(int a[],int len,int number)
{
int low = 0;
int high = len -1;
while(low<=high)
{
int mid = (low+high)/2;
if(a[mid]<number)
{
low = mid+1;
}else if(a[mid]>number)
{
high = mid-1;
}else if(a[mid]==number)
{
return mid;
}
}
return -1;
}
//选择排序
void xuanZe(int a[],int len)
{
for(int i =
0;i<len;i++)
{
for(int j = i+1;j<len;j++)
{
if(a[i]>a[j])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
//冒泡排序
void maoPao(int a[],int number)
{
int temp;
for(int i =
0;i<number;i++)
{
for(int j =
0;j<number-i;j++)
{
if(a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
//打印图形
钻石
void test14()
{
for(int i =
0;i<4;i++)
{
for(int j =
0;j<4-i;j++)
{
printf(" ");
}
for(int x =
0;x<2*i+21;x++)
{
printf("* ");
}
printf("\n");
}
for(int i =
0;i<15;i++)
{
for(int j =
0;j<i;j++)
{
printf(" ");
}
for(int x =
0;x<2*(15-i)-1;x++)
{
printf("* ");
}
printf("\n");
}
}
//剪刀
石头 布
的游戏
void game()
{
//0-剪刀 1-石头 2-布
int person=-1,computer=-1;
while(person!=0&&person!=1&&person!=2)
{
printf("请输入(提示:0-剪刀
1-石头 2-布):\n");
scanf("%d",&person);
}
computer = arc4random_uniform(3);
if((person ==
0&&computer==2)||(person ==
1&&computer==0)||(person ==
2&&computer==1))
{
if(person==0)
{
printf("你出的是:剪刀\n");
}else if(person==1)
{
printf("你出的是:石头\n");
}else if(person==2)
{
printf("你出的是:布\n");
}
switch(computer)
{
case 0:
printf("电脑出的是:剪刀\n");
break;
case 1:
printf("电脑出的是:石头\n");
break;
case 2:
printf("电脑出的是:布\n");
break;
}
printf("恭喜你赢了!\n");
}else if((person ==
0&&computer==0)||(person ==
1&&computer==1)||(person ==
2&&computer==2))
{
if(person==0)
{
printf("你出的是:剪刀\n");
}else if(person==1)
{
printf("你出的是:石头\n");
}else if(person==2)
{
printf("你出的是:布\n");
}
switch(computer)
{
case 0:
printf("电脑出的是:剪刀\n");
break;
case 1:
printf("电脑出的是:石头\n");
break;
case 2:
printf("电脑出的是:布\n");
break;
}
printf("平局!\n");
}else
{
if(person==0)
{
printf("你出的是:剪刀\n");
}else if(person==1)
{
printf("你出的是:石头\n");
}else if(person==2)
{
printf("你出的是:布\n");
}
switch(computer)
{
case 0:
printf("电脑出的是:剪刀\n");
break;
case 1:
printf("电脑出的是:石头\n");
break;
case 2:
printf("电脑出的是:布\n");
break;
}
printf("很遗憾!你输了!\n");
}
}
//输入一个数判断月份
void test15()
{
int month = 0;
while(month<1||month>12)
{
printf("请输入1~12之间的数字:\n");
scanf("%d",&month);
}
switch(month)
{
case 3:
case 4:
case 5:
printf("春季\n");
break;
case 6:
case 7:
case 8:
printf("夏季\n");
break;
case 9:
case 10:
case 11:
printf("秋季\n");
break;
case 12:
case 1:
case 2:
printf("冬季\n");
break;
}
}
void test12()
{
/*
提示用户输入一个正整数n,求出并输出其阶乘值n! = 1*2*3*4*...n
要求:用递归的方式编写一个函数实现n的阶乘
*/
//定义变量n来接收用户输入的值
int n = 0;
//提示用户输入
printf("请输入一个正整数:\n");
scanf("%d",&n);
//计算结果并且输出
int result = jieCheng2(n);
printf("%d\n",result);
}
int jieCheng2(int n)
{
if(n<=0)
{
return 1;
}
return jieCheng2(n-1)*n;
}
int cityNumber()
{ //河北省邯郸市的身份证是以130481开头;以1和3结尾是男士;写一个程序来通过身份证号码判断是否是邯郸人和性别
//定义一个变量cityNumber来存储判断城市的号码130481
//提示用户输入18位身份证号码
printf("请输入18位身份证号码:\n");
//定义数组用来存放用户输入的值
char ID[19];
scanf("%s",ID);
char *cityNumber =
"130481";
for(int i =
0;i < 6;i++)
{
if(ID[i]!=cityNumber[i])
{
printf("这不是邯郸人!");
return
0;
}
}
printf("这是邯郸人!");
if(ID[17]=='1'||ID[17]=='3')
{
printf("这位是男性");
}else
{
printf("这位是女性");
}
return 0 ;
}
/*
编写一个函数void strlink(char s[], char t[])
将字符串t连接到字符串s的尾部
*/
void strlink2(char s[],char t[])
{
for(int i =0 ;i<=strlen(s);i++)
{
if(s[i]=='\0')
{
for(int j =
0;j<=strlen(t);j++)
{
s[i]=t[j];
i++;
}
}
}
}
void strlink(char s[],char t[])
{
int i = 0;
while(s[i]!='\0')
{
i++;
}
int j = 0;
while(t[j]!='\0')
{
s[i]=t[j];
j++;
i++;
}
}
/*
编写一个函数,判断某个字符串是否为回文。
回文就是从左边开始读
和 从右边开始读
都是一样的,比如"abcba"
*/
int huiWen(char*s)
{
for(int i =
0;i<strlen(s)-1;i++)
{
if(s[i]!=s[strlen(s)-1-i])
{
printf("这不是回文!\n");
return
0;
}
}
printf("这是回文!\n");
return 1;
}
//定义一个函数实现两个值的交换
void changeValue(int *v1,int *v2)
{
int temp = *v1;
*v1 = *v2;
*v2 = temp;
}
//定义一个函数实现出啊如一个值改变其内容(利用指针)
void changeNumber(int*p)
{
*p=10;
}
//设计一个函数判断一个字符是否在字符串内
int includeStr(char str[],char ch)
{
for(int i =
0;i<strlen(str);i++)
{
if(str[i]==ch)
{
return
1;
}
}
return 0;
}
//设计一个函数逆序一维数组
void reverseOder(int a[],int number)
{
for(int i =
0;i<(number/2);i++)
{
int temp = a[i];
a[i] = a[number-i-1];
a[number-i-1] = temp;
}
for(int i =
0;i<5;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
}
//设计一个函数求前N个元素的和
int arraySum(int a[],int n)
{
int sum;
for(int i =
0;i<n;i++)
{
sum+=a[i];
}
return sum;
}
//设计一个函数找出数组元素的最大值
int arrayMax(int a[],int count)
{
int max=a[0] ;
for(int i =
0;i<count;i++)
{
if(a[i]>max)
{
max = a[i];
}
}
return max;
}
int test11()
{
//提示输入吴哥学生的成绩然后算出,最高分,最低分,平均分,总分,然后输出结果
//定义数组来接收用户输入的值
int score[5];
//提示也难怪乎输入吴哥分数
printf("请您分别输入5个分数:\n");
for(int i =
0;i<sizeof(score)/sizeof(int);i++)
{
scanf("%d",&score[i]);
if(score[i]<0)
{
printf("输入错误请重新运行程序!");
return
0;
}
}
int topScore=score[0];//最高分
int lowScore=score[0];//最低分
int totalScore;//总分
int averageScore;//平均分
for(int i =
0;i<sizeof(score)/sizeof(int);i++)
{
totalScore+=score[i];
if(score[i]>topScore)
{
topScore=score[i];
}else if(score[i]<lowScore)
{
lowScore=score[i];
}
}
averageScore=totalScore/(sizeof(score)/sizeof(int));
printf("最高分是:%d\n最低分是:%d\n总分是:%d\n平均分是:%d\n",topScore,lowScore,totalScore,averageScore);
return 0;
}
void arrayWinthBig(char ch[],int lenth)
{
char temp;
int max ;
for(int i =
0;i<lenth;i++)
{
max = i;
for(int j = i+1;j<lenth;j++)
{
if(ch[max]<ch[j])
{
max=j;
}
}
if(i!=max)
{
temp = ch[i];
ch[i] = ch[max];
ch[max] = temp;
}
}
puts(ch);
// for(int n = 0;n<lenth&&ch
!='\0';n++)
// {
// printf("%c",ch
);
// }
}
//设计一个函数将小写字母转换成大写
char upper(char ch)
{
if(97<=ch&&ch<=122)
{
return ch-32;
}
return ch;
}
//利用位运算符来输出一个数的二进制格式
void printBinary(int number)
{
int temp =sizeof(number)*8;
for(int i =
1;i <=temp ;i++)
{
if((1&(number>>(temp-i)))==0)
{
printf("0");
}else if((1&(number>>(temp-i)))==1)
{
printf("1");
}
if(i%4==0)
{
printf(" ");
}
}
printf("\n");
}
void test10()
{
//利用位运算符来判断一个数的奇偶性
int a = 12;
a&1 ? printf("奇数\n") :
printf("偶数\n");
}
void test9()
{
//在不使用其他变量的情况下实现两个值的转化
int a = 10;
int b = 20;
printf("转换前a = %d,b = %d\n",a,b);
// a = a^b;
// b = a^b;
// a = a^b;
a = a+b;
b = a-b;
a = a-b;
printf("转化后a = %d,b = %d\n",a,b);
}
void test8()
{
/*
题目:程序运行的时候提示下列信息
请输入相应数字选择需要执行的运算:
1 加法
2 减法
3 乘法
4 除法
用户选择运算后,再提示用户输入两个需要进行运算的整数,输入完毕后就输出运算结果
*/
//1:提示用户输入 1
加法 2
减法
printf("
请输入相应数字选择需要执行的运算:\n1
加法\n2
减法\n3 乘法\n4
除法\n");
//2:定义变量cal接收用户输入的数值并判断
int cal = 0;
while(cal!=1 && cal!=2&& cal!=3&& cal!=4)
{
scanf("%d",&cal);
if(cal!=1 && cal!=2&& cal!=3&& cal!=4)
{
printf("error\n");
}
}
//3:提示用户输入两个数中间由","隔开
loop:printf("请您输入要计算的两个整数,中间用“,”隔开(例如1,2):\n");
//4:定义变量numA,numB用来接收用户输入的数据
int numA = 0,numB =
0;
//5:接收用户输入的数据
scanf("%d,%d",&numA,&numB);
//6:计算结果并输出
if(cal==1)
{
printf("%d + %d = %d\n",numA,numB,numA+numB);
}else if(cal==2)
{
printf("%d - %d = %d\n",numA,numB,numA-numB);
}else if(cal==3)
{
printf("%d × %d = %d\n",numA,numB,numA*numB);
}else if(cal==4)
{
float temp =
1;
temp*=numA;
if(numB!=0)
{
printf("%d / %d = %f\n",numA,numB,temp/numB);
}else
{
goto loop;
}
}
}
//printf和scanf,运算符的使用
void caTime()
{
//printf("%d\n",10%3);//取余
//1:提示用户输入几秒
printf("请您输入要计算的秒数:\n");
//2:定义一个变量接收
int m = 0 ;
scanf("%d",&m);
//3:计算输出结果
printf("计算结果是:%d分%d秒\n",m/60,m%60);
}
void caScore ()
{
//
分数>=0 && 分数<=59 E
//
分数 >=60&& 分数<=69 D
//
分数>=70&&分数<=79 C
//
分数>=80&&分数<=89 B
//
分数>=90&&分数<=100 A
//
分数<0||分数>100
不合法
int score = 0;
printf("请输入分数:\n");
scanf("%d",&score);
if (score>=0 && score<=59)
{
printf("等级是:E\n");
}else if (score>=60 && score<=69)
{
printf("等级是:D\n");
}else if (score>=70 && score<=79)
{
printf("等级是:C\n");
}else if (score>=80 && score<=89)
{
printf("等级是:B\n");
}else if (score>=90 && score<=100)
{
printf("等级是:A\n");
}else
{
printf("您输入的不合法!\n");
}
}
void test1()
{
printf("请输入一个1-7的数字:\n");
int a = 0;
scanf("%d",&a);
switch (a)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期日\n");
break;
default:
printf("error\n");
break;
}
}
void test2()
{
//使用随机数随机产生一个1-100之间的数,给用户10次竞猜的机
会,效果如下
int num =
arc4random_uniform(100)+1;
int n = 0;
for (int i =
1; i <= 10; i++)
{
printf("请输入:\n");
scanf("%d",&n);
if (num == n)
{
printf("你猜对了!你还剩%d次机会!\n",10-i);
break;
}else if (n<num)
{
printf("你猜小了!你还剩%d次机会!\n",10-i);
}else
{
printf("你猜大了!你还剩%d次机会!\n",10-i);
}
if (i==10)
{
printf("你的机会用完了!");
}
}
}
void test3()
{
//乘法口诀
for (int i =
1; i <= 9; i++)
{
for (int j =
1; j <= i; j++)
{
printf("%dx%d=%d\t",j,i,i*j);
}
printf("\n");
}
}
void test4()
{
//统计从键盘输入一行字符的个数
int num = 0;
char ch;
printf("请输入字符:\n");
while (ch!='\n') {
scanf("%c",&ch);
num++;
}
printf("%d",num);
}
void test5()
{
//输入一个正数n计算从1+2+3+.......+n的值。
printf("请输入一个正数:\n");
int n = 0,sum =
0;
scanf("%d",&n);
for (int i =
1; i <= n; i++)
{
sum = sum + i;
}
printf("%d",sum);
}
//定义一个函数来计算两个数的大小返回最大的那个
int comp(int a,int b)
{
return a>b ? a:b;
}
//n的阶乘
int jieCheng(int a)
{
int result;
if (a == 1)
{
result = a;
}else
{
result = jieCheng(a-1)*a;
}
return result;
}
void test6()
{
char ch[100]="hello world!";
char ch2[50]=
" hello c!";
printf("%s\n",strcat(ch, ch2));
printf("%s\n",strcpy(ch,
" hello oc!"));
printf("%lu\n",strlen(ch2));
printf("%d\n",strcmp(ch, ch2));
//puts(ch);
}
void swap(int *p,int *q)
{
int temp= *p;
*p = *q;
*q = temp;
}
void test7()
{
//int a = 10,b = 20;
// printf("转换前:a = %d,b = %d\n",a,b);
// swap(&a, &b);
// printf("转换后:a = %d,b = %d\n",a,b);
// int ch = a>b ? a:b;
// printf("%d\n",ch);
//
int x = 1,y =
1;
// if(x++==2 && ++y==2) {
// x =7;
// }
// printf("x=%d, y=%d\n", x, y);//2,1
// int x = 1,y = 1;
// if(x++==2 || ++y==2) {
// x =7;
// }
printf("x=%d, y=%d\n", x, y);//7,2
}
相关文章推荐
- 杭电 2097
- discuz社区与java web的钉钉手机版整合(二)
- squid代理服务的配置
- ARM8位位图--第二操作数的立即数表示
- Java Json Html ajax数据传递
- 为什么主引导记录的内存地址是0x7C00?
- 初学者git的使用教程
- [原创] Fragment的添加、移除问题
- HDU 1700 复数应用
- 【解决】kettle启动时出现的Java Runtime Environment异常
- 1.JS设计模式-this,call&apply
- Swift开放StatsD后上传数据的出现,出现退换货503的Bug
- Nginx出现413 Request Entity Too Large错误解决方法
- jquery的使用
- 一道数列的规律题(使用递归解决)
- git与IDE开发[git for windows & TortoiseGit]
- ural 2046 The First Day at School
- MyEclipse创建HelloWeb
- CVPR 2015 Oral概览 - 第一天上午
- GTK+浅谈之十五GObject面向对象的继承