您的位置:首页 > 其它

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: